@nyaruka/temba-components 0.141.0 → 0.141.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3070,6 +3070,15 @@ const{I:ac}=at,lc=()=>document.createComment(""),dc=(t,e,i)=>{const o=t._$AA.par
3070
3070
  opacity: 0.9;
3071
3071
  }
3072
3072
 
3073
+ .flow-footer {
3074
+ text-align: center;
3075
+ pointer-events: none;
3076
+ }
3077
+
3078
+ .flow-footer .in-flow {
3079
+ pointer-events: auto;
3080
+ }
3081
+
3073
3082
  .in-flow:hover {
3074
3083
  opacity: 1;
3075
3084
  }
@@ -3178,7 +3187,7 @@ const{I:ac}=at,lc=()=>document.createComment(""),dc=(t,e,i)=>{const o=t._$AA.par
3178
3187
  .showMessageLogsAfter=${this.showMessageLogsAfter}
3179
3188
  >
3180
3189
  ${t?H`
3181
- <div slot="footer" style="text-align:center;">
3190
+ <div slot="footer" class="flow-footer">
3182
3191
  <div class="in-flow">
3183
3192
  <div class="flow-name">
3184
3193
  <temba-icon name="flow" size="1.2"></temba-icon>
@@ -8398,29 +8407,29 @@ background: #ccc;
8398
8407
  ${this.renderUploader()}
8399
8408
  </div>
8400
8409
  </div>
8401
- </div>`}}function Oh(t){if(t.dependency){const e=t.dependency.name||t.dependency.key;return`Cannot find a ${t.dependency.type} for ${e}`}return t.description}t([mt({type:String,attribute:!1})],Ih.prototype,"endpoint",void 0),t([mt({type:Boolean})],Ih.prototype,"pendingDrop",void 0),t([mt({type:Boolean})],Ih.prototype,"ignoreDrops",void 0),t([mt({type:String})],Ih.prototype,"icon",void 0),t([mt({type:String})],Ih.prototype,"accept",void 0),t([mt({type:Number})],Ih.prototype,"max",void 0),t([mt({type:Array})],Ih.prototype,"attachments",void 0),t([mt({type:Boolean,attribute:!1})],Ih.prototype,"uploading",void 0);function Lh(t){const e=20*Math.round(t/20);return Math.max(e,0)}const zh=(t,e)=>H`<div style="display:flex;items-align:center;">
8410
+ </div>`}}t([mt({type:String,attribute:!1})],Ih.prototype,"endpoint",void 0),t([mt({type:Boolean})],Ih.prototype,"pendingDrop",void 0),t([mt({type:Boolean})],Ih.prototype,"ignoreDrops",void 0),t([mt({type:String})],Ih.prototype,"icon",void 0),t([mt({type:String})],Ih.prototype,"accept",void 0),t([mt({type:Number})],Ih.prototype,"max",void 0),t([mt({type:Array})],Ih.prototype,"attachments",void 0),t([mt({type:Boolean,attribute:!1})],Ih.prototype,"uploading",void 0);let Oh="dev";try{Oh="0.141.1"}catch(t){}const Lh=Oh;function zh(t){if(t.dependency){const e=t.dependency.name||t.dependency.key;return`Cannot find a ${t.dependency.type} for ${e}`}return t.description}function Ph(t){const e=20*Math.round(t/20);return Math.max(e,0)}const Rh=(t,e)=>H`<div style="display:flex;items-align:center;">
8402
8411
  ${e?H`<temba-icon name=${e} style="margin-right:0.5em"></temba-icon>`:null}
8403
8412
  <div
8404
8413
  style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 250px;"
8405
8414
  >
8406
8415
  ${t}
8407
8416
  </div>
8408
- </div>`,Ph=(t,e)=>Rh(t.map((t=>t.name)),e),Rh=(t,e)=>{const i=[],o=4===t.length?4:Math.min(3,t.length);for(let n=0;n<o;n++){const o=t[n];i.push(zh(o,e))}if(t.length>3&&4!==t.length){const o=t.length-3;i.push(H`<div
8417
+ </div>`,Nh=(t,e)=>Bh(t.map((t=>t.name)),e),Bh=(t,e)=>{const i=[],o=4===t.length?4:Math.min(3,t.length);for(let n=0;n<o;n++){const o=t[n];i.push(Rh(o,e))}if(t.length>3&&4!==t.length){const o=t.length-3;i.push(H`<div
8409
8418
  style="display:flex;items-align:center;margin-top:0.2em;"
8410
8419
  >
8411
8420
  ${e?H`<div style="margin-right:0.4em; width: 1em;"></div>`:null}
8412
8421
  <div style="font-size:0.8em">+${o} more</div>
8413
- </div>`)}return i},Nh=[{scheme:"tel",name:"SMS",path:"Phone Number"},{scheme:"whatsapp",name:"WhatsApp",path:"WhatsApp Number"},{scheme:"facebook",name:"Facebook",path:"Facebook ID"},{scheme:"instagram",name:"Instagram",path:"Instagram ID"},{scheme:"twitterid",name:"Twitter",path:"Twitter ID",excludeFromSplit:!0},{scheme:"telegram",name:"Telegram",path:"Telegram ID"},{scheme:"viber",name:"Viber",path:"Viber ID"},{scheme:"line",name:"Line",path:"Line ID"},{scheme:"wechat",name:"WeChat",path:"WeChat ID"},{scheme:"fcm",name:"Firebase",path:"Firebase ID"},{scheme:"jiochat",name:"JioChat",path:"JioChat ID"},{scheme:"freshchat",name:"Freshchat",path:"Freshchat ID"},{scheme:"mailto",name:"Email",path:"Email Address",excludeFromSplit:!0},{scheme:"twitter",name:"Twitter",path:"Twitter Handle",excludeFromSplit:!0},{scheme:"vk",name:"VK",path:"VK ID"},{scheme:"discord",name:"Discord",path:"Discord ID"},{scheme:"webchat",name:"Webchat",path:"Webchat ID",excludeFromSplit:!0},{scheme:"rocketchat",name:"RocketChat",path:"RocketChat ID"},{scheme:"ext",name:"External",path:"External ID"}],Bh=(t,e,i)=>{const o=i||document.querySelector(`[id="${t}"]`);if(!o)return null;const n=o.getBoundingClientRect(),s=n.width,r=n.height;return{uuid:t,left:e.left,top:e.top,right:e.left+s,bottom:e.top+r,width:s,height:r}},Fh=(t,e)=>!(t.right<=e.left-10||t.left>=e.right+10||t.bottom<=e.top-10||t.top>=e.bottom+10),qh=["down","up","right","left"],Uh=(t,e,i)=>({...t,left:e,top:i,right:e+t.width,bottom:i+t.height}),jh=(t,e,i)=>{switch(i){case"down":{const i=Math.max(...e.map((t=>t.bottom))),o=Lh(i+30);return{left:t.left,top:o}}case"up":{const i=Math.min(...e.map((t=>t.top))),o=Lh(i-t.height-30);return o<0?{left:t.left,top:0}:{left:t.left,top:o}}case"right":{const i=Math.max(...e.map((t=>t.right)));return{left:Lh(i+30),top:t.top}}case"left":{const i=Math.min(...e.map((t=>t.left))),o=Lh(i-t.width-30);return o<0?{left:0,top:t.top}:{left:o,top:t.top}}}},Vh="message",Hh="voice",Wh="background",Zh="ai",Yh="airtime",Gh={send:"send",contacts:"contacts",save:"save",services:"services",broadcast:"broadcast",trigger:"trigger"},Kh={wait:"wait",split:"split"},Xh={[Gh.send]:{color:"#3498db",title:"Send",description:"Actions that send messages or content to contacts"},[Gh.contacts]:{color:"#01c1af",title:"Contact",description:"Actions that update contact information"},[Gh.save]:{color:"#1a777c",title:"Save",description:"Actions that save or store data"},[Gh.services]:{color:"#f79035ff",title:"Services",description:"Call external services and APIs"},[Gh.broadcast]:{color:"#8e5ea7",title:"Other People",description:"Actions that apply to others instead of the contact"},[Gh.trigger]:{color:"#df419f",title:"Trigger",description:"Actions that trigger other behavior"}},Qh={[Kh.wait]:{color:"#4d7dad",title:"Wait",description:"Wait for user and split on their response"},[Kh.split]:{color:"#aaaaaa",title:"Split",description:"Split the flow based on conditions"}},Jh={name:"Add Input Labels",group:Gh.save,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>${Ph(e.labels,"label")}</div>`,toFormData:t=>({labels:t.labels||null,uuid:t.uuid}),form:{labels:{type:"select",label:"Labels",helpText:"Select labels to add to the input. Type a new label name to create it.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/labels.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for labels or type to create new ones...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_input_labels",labels:(t.labels||[]).map((t=>({uuid:t.uuid,name:t.name})))})},tu={name:"Add URN",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>{const i=Nh.find((t=>t.scheme===e.scheme)),o=(null==i?void 0:i.path)||e.scheme;return H`<div
8422
+ </div>`)}return i},Fh=[{scheme:"tel",name:"SMS",path:"Phone Number"},{scheme:"whatsapp",name:"WhatsApp",path:"WhatsApp Number"},{scheme:"facebook",name:"Facebook",path:"Facebook ID"},{scheme:"instagram",name:"Instagram",path:"Instagram ID"},{scheme:"twitterid",name:"Twitter",path:"Twitter ID",excludeFromSplit:!0},{scheme:"telegram",name:"Telegram",path:"Telegram ID"},{scheme:"viber",name:"Viber",path:"Viber ID"},{scheme:"line",name:"Line",path:"Line ID"},{scheme:"wechat",name:"WeChat",path:"WeChat ID"},{scheme:"fcm",name:"Firebase",path:"Firebase ID"},{scheme:"jiochat",name:"JioChat",path:"JioChat ID"},{scheme:"freshchat",name:"Freshchat",path:"Freshchat ID"},{scheme:"mailto",name:"Email",path:"Email Address",excludeFromSplit:!0},{scheme:"twitter",name:"Twitter",path:"Twitter Handle",excludeFromSplit:!0},{scheme:"vk",name:"VK",path:"VK ID"},{scheme:"discord",name:"Discord",path:"Discord ID"},{scheme:"webchat",name:"Webchat",path:"Webchat ID",excludeFromSplit:!0},{scheme:"rocketchat",name:"RocketChat",path:"RocketChat ID"},{scheme:"ext",name:"External",path:"External ID"}],qh=(t,e,i)=>{const o=i||document.querySelector(`[id="${t}"]`);if(!o)return null;const n=o.getBoundingClientRect(),s=n.width,r=n.height;return{uuid:t,left:e.left,top:e.top,right:e.left+s,bottom:e.top+r,width:s,height:r}},Uh=(t,e)=>!(t.right<=e.left-10||t.left>=e.right+10||t.bottom<=e.top-10||t.top>=e.bottom+10),jh=["down","up","right","left"],Vh=(t,e,i)=>({...t,left:e,top:i,right:e+t.width,bottom:i+t.height}),Hh=(t,e,i)=>{switch(i){case"down":{const i=Math.max(...e.map((t=>t.bottom))),o=Ph(i+30);return{left:t.left,top:o}}case"up":{const i=Math.min(...e.map((t=>t.top))),o=Ph(i-t.height-30);return o<0?{left:t.left,top:0}:{left:t.left,top:o}}case"right":{const i=Math.max(...e.map((t=>t.right)));return{left:Ph(i+30),top:t.top}}case"left":{const i=Math.min(...e.map((t=>t.left))),o=Ph(i-t.width-30);return o<0?{left:0,top:t.top}:{left:o,top:t.top}}}},Wh="message",Zh="voice",Yh="background",Gh="ai",Kh="airtime",Xh={send:"send",contacts:"contacts",save:"save",services:"services",broadcast:"broadcast",trigger:"trigger"},Qh={wait:"wait",split:"split"},Jh={[Xh.send]:{color:"#3498db",title:"Send",description:"Actions that send messages or content to contacts"},[Xh.contacts]:{color:"#01c1af",title:"Contact",description:"Actions that update contact information"},[Xh.save]:{color:"#1a777c",title:"Save",description:"Actions that save or store data"},[Xh.services]:{color:"#f79035ff",title:"Services",description:"Call external services and APIs"},[Xh.broadcast]:{color:"#8e5ea7",title:"Other People",description:"Actions that apply to others instead of the contact"},[Xh.trigger]:{color:"#df419f",title:"Trigger",description:"Actions that trigger other behavior"}},tu={[Qh.wait]:{color:"#4d7dad",title:"Wait",description:"Wait for user and split on their response"},[Qh.split]:{color:"#aaaaaa",title:"Split",description:"Split the flow based on conditions"}},eu={name:"Add Input Labels",group:Xh.save,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>${Nh(e.labels,"label")}</div>`,toFormData:t=>({labels:t.labels||null,uuid:t.uuid}),form:{labels:{type:"select",label:"Labels",helpText:"Select labels to add to the input. Type a new label name to create it.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/labels.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for labels or type to create new ones...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_input_labels",labels:(t.labels||[]).map((t=>({uuid:t.uuid,name:t.name})))})},iu={name:"Add URN",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>{const i=Fh.find((t=>t.scheme===e.scheme)),o=(null==i?void 0:i.path)||e.scheme;return H`<div
8414
8423
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto;"
8415
8424
  >
8416
8425
  Add ${o} <strong>${e.path}</strong>
8417
- </div>`},toFormData:t=>{const e=Nh.find((e=>e.scheme===t.scheme));return{uuid:t.uuid,scheme:e?[{name:e.path,value:t.scheme}]:null,path:t.path||""}},fromFormData:t=>{const e=Array.isArray(t.scheme)&&t.scheme.length>0?t.scheme[0].value:"tel";return{uuid:t.uuid,type:"add_contact_urn",scheme:e,path:t.path||""}},form:{scheme:{type:"select",label:"URN Type",helpText:"Select the type of URN to add to the contact",required:!0,searchable:!1,multi:!1,options:Nh.map((t=>({name:t.path,value:t.scheme})))},path:{type:"text",label:"URN Value",helpText:"Enter the URN value (e.g., phone number, Facebook ID, etc.)",required:!0,placeholder:"Enter the URN value...",evaluated:!0}},validate:t=>{const e={};return t.scheme&&0!==t.scheme.length||(e.scheme="URN type is required"),t.path&&""!==t.path.trim()||(e.path="URN value is required"),{valid:0===Object.keys(e).length,errors:e}}},eu={name:"Update Field",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>e.value?H`<div>
8426
+ </div>`},toFormData:t=>{const e=Fh.find((e=>e.scheme===t.scheme));return{uuid:t.uuid,scheme:e?[{name:e.path,value:t.scheme}]:null,path:t.path||""}},fromFormData:t=>{const e=Array.isArray(t.scheme)&&t.scheme.length>0?t.scheme[0].value:"tel";return{uuid:t.uuid,type:"add_contact_urn",scheme:e,path:t.path||""}},form:{scheme:{type:"select",label:"URN Type",helpText:"Select the type of URN to add to the contact",required:!0,searchable:!1,multi:!1,options:Fh.map((t=>({name:t.path,value:t.scheme})))},path:{type:"text",label:"URN Value",helpText:"Enter the URN value (e.g., phone number, Facebook ID, etc.)",required:!0,placeholder:"Enter the URN value...",evaluated:!0}},validate:t=>{const e={};return t.scheme&&0!==t.scheme.length||(e.scheme="URN type is required"),t.path&&""!==t.path.trim()||(e.path="URN value is required"),{valid:0===Object.keys(e).length,errors:e}}},ou={name:"Update Field",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>e.value?H`<div>
8418
8427
  Set <strong>${e.field.name}</strong> to
8419
8428
  <strong>${e.value}</strong>
8420
- </div>`:H`<div>Clear <strong>${e.field.name}</strong></div>`,form:{field:{type:"select",label:"Field",required:!0,searchable:!0,clearable:!1,placeholder:"Search for contact fields...",nameKey:"name",valueKey:"key",endpoint:"/api/v2/fields.json",helpText:"Select the contact field to update",allowCreate:!0,createArbitraryOption:t=>({key:t,name:t,type:"text"})},value:{type:"text",label:"Value",placeholder:"Enter field value...",evaluated:!0,helpText:"The new value for the contact field. You can use expressions like @contact.name"}},toFormData:t=>({uuid:t.uuid,field:t.field?[t.field]:null,value:t.value}),fromFormData:t=>{const e=t.field[0];return{uuid:t.uuid,type:"set_contact_field",field:{name:e.name,key:e.key},value:t.value}},sanitize:t=>{t.value&&"string"==typeof t.value&&(t.value=t.value.trim())}},iu={name:"Update Channel",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>Set to <strong>${e.channel.name}</strong></div>`,form:{channel:{type:"select",label:"Channel",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/channels.json",valueKey:"uuid",nameKey:"name",placeholder:"Select channel",helpText:"Select the channel to set for the contact"}},toFormData:t=>({uuid:t.uuid,channel:t.channel?[t.channel]:null}),fromFormData:t=>{var e;const i=null===(e=t.channel)||void 0===e?void 0:e[0];return{uuid:t.uuid,type:"set_contact_channel",channel:{uuid:i.uuid||i.value,name:i.name}}}},ou={name:"Update Language",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>{const i=new Intl.DisplayNames(["en"],{type:"language"});return H`<div>
8429
+ </div>`:H`<div>Clear <strong>${e.field.name}</strong></div>`,form:{field:{type:"select",label:"Field",required:!0,searchable:!0,clearable:!1,placeholder:"Search for contact fields...",nameKey:"name",valueKey:"key",endpoint:"/api/v2/fields.json",helpText:"Select the contact field to update",allowCreate:!0,createArbitraryOption:t=>({key:t,name:t,type:"text"})},value:{type:"text",label:"Value",placeholder:"Enter field value...",evaluated:!0,helpText:"The new value for the contact field. You can use expressions like @contact.name"}},toFormData:t=>({uuid:t.uuid,field:t.field?[t.field]:null,value:t.value}),fromFormData:t=>{const e=t.field[0];return{uuid:t.uuid,type:"set_contact_field",field:{name:e.name,key:e.key},value:t.value}},sanitize:t=>{t.value&&"string"==typeof t.value&&(t.value=t.value.trim())}},nu={name:"Update Channel",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>Set to <strong>${e.channel.name}</strong></div>`,form:{channel:{type:"select",label:"Channel",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/channels.json",valueKey:"uuid",nameKey:"name",placeholder:"Select channel",helpText:"Select the channel to set for the contact"}},toFormData:t=>({uuid:t.uuid,channel:t.channel?[t.channel]:null}),fromFormData:t=>{var e;const i=null===(e=t.channel)||void 0===e?void 0:e[0];return{uuid:t.uuid,type:"set_contact_channel",channel:{uuid:i.uuid||i.value,name:i.name}}}},su={name:"Update Language",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>{const i=new Intl.DisplayNames(["en"],{type:"language"});return H`<div>
8421
8430
  Set to <strong>${i.of(e.language)}</strong>
8422
- </div>`},form:{language:{type:"select",label:"Language",required:!0,searchable:!0,clearable:!1,valueKey:"value",nameKey:"name",helpText:"Select the language to set for the contact",getDynamicOptions:()=>{const t=Sd(),e=null==t?void 0:t.getState().workspace;if((null==e?void 0:e.languages)&&Array.isArray(e.languages)){const t=new Intl.DisplayNames(["en"],{type:"language"});return e.languages.map((e=>({value:e,name:t.of(e)||e})))}return[]}}},toFormData:t=>{if(t.language){const e=new Intl.DisplayNames(["en"],{type:"language"});return{language:[{value:t.language,name:e.of(t.language)||t.language}],uuid:t.uuid}}return{language:null,uuid:t.uuid}},fromFormData:t=>({uuid:t.uuid,type:"set_contact_language",language:t.language[0].value}),validate:t=>{const e={};return t.language||(e.language="Language is required"),{valid:0===Object.keys(e).length,errors:e}}},nu={name:"Update Status",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>Set to <strong>${ze(e.status)}</strong></div>`,toFormData:t=>({uuid:t.uuid,status:[{name:ze(t.status||"active"),value:t.status||"active"}]}),fromFormData:t=>({status:t.status[0].value,type:"set_contact_status",uuid:t.uuid}),form:{status:{type:"select",label:"Status",required:!0,searchable:!1,clearable:!1,options:[{value:"active",name:"Active"},{value:"archived",name:"Archived"},{value:"stopped",name:"Stopped"},{value:"blocked",name:"Blocked"}],helpText:"Select the status to set for the contact"}}},su={name:"Send Broadcast",group:Gh.broadcast,flowTypes:[Hh,Vh,Wh],render:(t,e)=>{const i=[...(e.contacts||[]).map((t=>t.name)),...(e.groups||[]).map((t=>t.name))];return H`<div>
8423
- <div>${Rh(i,_o.contacts)}</div>
8431
+ </div>`},form:{language:{type:"select",label:"Language",required:!0,searchable:!0,clearable:!1,valueKey:"value",nameKey:"name",helpText:"Select the language to set for the contact",getDynamicOptions:()=>{const t=Sd(),e=null==t?void 0:t.getState().workspace;if((null==e?void 0:e.languages)&&Array.isArray(e.languages)){const t=new Intl.DisplayNames(["en"],{type:"language"});return e.languages.map((e=>({value:e,name:t.of(e)||e})))}return[]}}},toFormData:t=>{if(t.language){const e=new Intl.DisplayNames(["en"],{type:"language"});return{language:[{value:t.language,name:e.of(t.language)||t.language}],uuid:t.uuid}}return{language:null,uuid:t.uuid}},fromFormData:t=>({uuid:t.uuid,type:"set_contact_language",language:t.language[0].value}),validate:t=>{const e={};return t.language||(e.language="Language is required"),{valid:0===Object.keys(e).length,errors:e}}},ru={name:"Update Status",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>Set to <strong>${ze(e.status)}</strong></div>`,toFormData:t=>({uuid:t.uuid,status:[{name:ze(t.status||"active"),value:t.status||"active"}]}),fromFormData:t=>({status:t.status[0].value,type:"set_contact_status",uuid:t.uuid}),form:{status:{type:"select",label:"Status",required:!0,searchable:!1,clearable:!1,options:[{value:"active",name:"Active"},{value:"archived",name:"Archived"},{value:"stopped",name:"Stopped"},{value:"blocked",name:"Blocked"}],helpText:"Select the status to set for the contact"}}},au={name:"Send Broadcast",group:Xh.broadcast,flowTypes:[Zh,Wh,Yh],render:(t,e)=>{const i=[...(e.contacts||[]).map((t=>t.name)),...(e.groups||[]).map((t=>t.name))];return H`<div>
8432
+ <div>${Bh(i,_o.contacts)}</div>
8424
8433
  <div style="margin-top: 0.5em">
8425
8434
  <div
8426
8435
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto;"
@@ -8428,9 +8437,9 @@ background: #ccc;
8428
8437
  ${e.text}
8429
8438
  </div>
8430
8439
  </div>
8431
- </div>`},form:{recipients:{type:"select",label:"Recipients",helpText:"Select the contacts or groups to receive the broadcast",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/contacts.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for contacts or groups...",required:!0},text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0}},layout:["recipients","text"],toFormData:t=>({uuid:t.uuid,recipients:[...t.contacts||[],...t.groups||[]],text:t.text||"",attachments:t.attachments||[]}),fromFormData:t=>{const e=t.recipients||[],i=e.filter((t=>!t.group)).map((t=>({uuid:t.uuid,name:t.name}))),o=e.filter((t=>t.group)).map((t=>({uuid:t.uuid,name:t.name}))),n={uuid:t.uuid,type:"send_broadcast",text:t.text||"",contacts:i,groups:o,attachments:t.attachments||[]};return 0===n.attachments.length&&delete n.attachments,n},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())}},ru={name:"Save Flow Result",group:Gh.save,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>
8440
+ </div>`},form:{recipients:{type:"select",label:"Recipients",helpText:"Select the contacts or groups to receive the broadcast",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/contacts.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for contacts or groups...",required:!0},text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0}},layout:["recipients","text"],toFormData:t=>({uuid:t.uuid,recipients:[...t.contacts||[],...t.groups||[]],text:t.text||"",attachments:t.attachments||[]}),fromFormData:t=>{const e=t.recipients||[],i=e.filter((t=>!t.group)).map((t=>({uuid:t.uuid,name:t.name}))),o=e.filter((t=>t.group)).map((t=>({uuid:t.uuid,name:t.name}))),n={uuid:t.uuid,type:"send_broadcast",text:t.text||"",contacts:i,groups:o,attachments:t.attachments||[]};return 0===n.attachments.length&&delete n.attachments,n},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())}},lu={name:"Save Flow Result",group:Xh.save,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>
8432
8441
  Save <strong>${e.value}</strong> as <strong>${e.name}</strong>
8433
- </div>`,form:{name:{type:"select",label:"Result Name",helpText:"Select an existing result name or type a new one",required:!0,placeholder:"Select or enter result name...",createArbitraryOption:(t,e)=>!e.some((e=>e.value.toLowerCase()===t.toLowerCase()||e.name.toLowerCase()===t.toLowerCase()))&&t.trim().length>0?{value:t,name:t}:null,searchable:!0,clearable:!1,getDynamicOptions:()=>{const t=Sd();return t?t.getState().getFlowResults().map((t=>({value:t.name,name:t.name}))):[]}},value:{type:"text",label:"Value",helpText:"The value to save for this result (can use expressions)",required:!1,evaluated:!0,placeholder:"Enter value..."},category:{type:"text",label:"Category",helpText:"Optional category for this result",required:!1,placeholder:"Enter category..."}},layout:["name","value","category"],toFormData:t=>({uuid:t.uuid,name:t.name?[{name:t.name,value:t.name}]:null,value:t.value||"",category:t.category||""}),fromFormData:t=>{let e=t.name||"";return Array.isArray(e)&&e.length>0&&(e=e[0]),"object"==typeof e&&e.value&&(e=e.value),"object"==typeof e&&e.name&&(e=e.name),{uuid:t.uuid,type:"set_run_result",name:String(e),value:t.value||"",category:t.category||""}}},au={name:"Send Message",group:Gh.send,flowTypes:[Hh,Vh,Wh],render:(t,e)=>{var i;const o=e.text.replace(/\n/g,"<br>");return H`
8442
+ </div>`,form:{name:{type:"select",label:"Result Name",helpText:"Select an existing result name or type a new one",required:!0,placeholder:"Select or enter result name...",createArbitraryOption:(t,e)=>!e.some((e=>e.value.toLowerCase()===t.toLowerCase()||e.name.toLowerCase()===t.toLowerCase()))&&t.trim().length>0?{value:t,name:t}:null,searchable:!0,clearable:!1,getDynamicOptions:()=>{const t=Sd();return t?t.getState().getFlowResults().map((t=>({value:t.name,name:t.name}))):[]}},value:{type:"text",label:"Value",helpText:"The value to save for this result (can use expressions)",required:!1,evaluated:!0,placeholder:"Enter value..."},category:{type:"text",label:"Category",helpText:"Optional category for this result",required:!1,placeholder:"Enter category..."}},layout:["name","value","category"],toFormData:t=>({uuid:t.uuid,name:t.name?[{name:t.name,value:t.name}]:null,value:t.value||"",category:t.category||""}),fromFormData:t=>{let e=t.name||"";return Array.isArray(e)&&e.length>0&&(e=e[0]),"object"==typeof e&&e.value&&(e=e.value),"object"==typeof e&&e.name&&(e=e.name),{uuid:t.uuid,type:"set_run_result",name:String(e),value:t.value||"",category:t.category||""}}},du={name:"Send Message",group:Xh.send,flowTypes:[Zh,Wh,Yh],render:(t,e)=>{var i;const o=e.text.replace(/\n/g,"<br>");return H`
8434
8443
  ${Ve(o)}
8435
8444
  ${(null===(i=e.quick_replies||[])||void 0===i?void 0:i.length)>0?H`<div class="quick-replies">
8436
8445
  ${(e.quick_replies||[]).map((t=>H`<div class="quick-reply">${t}</div>`))}
@@ -8441,8 +8450,8 @@ background: #ccc;
8441
8450
  <div style="margin-left:0.5em">${e.template.name}</div>
8442
8451
  </div>`:null}
8443
8452
  </div>`:null}
8444
- `},form:{text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},quick_replies:{type:"select",options:[],multi:!0,tags:!0,searchable:!0,placeholder:"Add quick replies...",maxItems:10,evaluated:!0},runtime_attachments:{type:"array",helpText:"Add dynamic attachments using expressions",itemLabel:"Attachment",sortable:!0,maxItems:10,isEmptyItem:t=>!t.expression||""===t.expression.trim(),itemConfig:{type:{type:"select",options:[{value:"image",name:"Image"},{value:"audio",name:"Audio"},{value:"video",name:"Video"},{value:"document",name:"Document"}],required:!0,searchable:!1},expression:{type:"text",placeholder:"Expression (e.g. @contact.photo)",required:!0,evaluated:!0}}}},layout:["text",{type:"group",label:"Quick Replies",items:["quick_replies"],collapsible:!0,collapsed:t=>!t.quick_replies||0===t.quick_replies.length,getGroupValueCount:t=>{var e;return(null===(e=t.quick_replies)||void 0===e?void 0:e.length)||0}},{type:"group",label:"Runtime Attachments",items:["runtime_attachments"],collapsible:!0,collapsed:!0,helpText:"Add dynamic attachments that are evaluated at runtime",getGroupValueCount:t=>{var e;return(null===(e=t.runtime_attachments)||void 0===e?void 0:e.filter((t=>t&&t.expression&&""!==t.expression.trim())).length)||0}}],toFormData:t=>{const e=[],i=[];return t.attachments&&Array.isArray(t.attachments)&&t.attachments.forEach((t=>{if("string"==typeof t&&t.includes(":")){const o=t.indexOf(":"),n=t.substring(0,o),s=t.substring(o+1);n.includes("/")?i.push(t):e.push({type:{name:ze(n),value:n},expression:s})}})),{uuid:t.uuid,text:t.text||"",attachments:i,runtime_attachments:e,quick_replies:(t.quick_replies||[]).map((t=>({name:t,value:t})))}},fromFormData:t=>{const e={uuid:t.uuid,type:"send_msg",text:t.text||"",attachments:[],quick_replies:(t.quick_replies||[]).map((t=>"string"==typeof t?t:t.value||t.name||t))},i=t.attachments||[],o=(t.runtime_attachments||[]).filter((t=>t&&t.type&&t.expression)).map((t=>`${t.type[0].value}:${t.expression}`));return e.attachments=[...i,...o],0===e.quick_replies.length&&delete e.quick_replies,e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},validate:t=>{const e={},i=t.attachments||[],o=(t.runtime_attachments||[]).filter((t=>t&&t.expression&&""!==t.expression.trim()));return i.length+o.length>10&&(o.length>0&&(e.runtime_attachments="Each message can only have up to 10 attachments"),i.length>0&&(e.text="Each message can only have up to 10 total attachments")),{valid:0===Object.keys(e).length,errors:e}},localizable:["text","quick_replies","attachments"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.attachments&&Array.isArray(e.attachments)&&(i.attachments=e.attachments),e.quick_replies&&Array.isArray(e.quick_replies)&&(i.quick_replies=e.quick_replies.map((t=>({name:t,value:t}))));const o=[],n=[];return i.attachments&&Array.isArray(i.attachments)&&i.attachments.forEach((t=>{if("string"==typeof t&&t.includes(":")){const e=t.indexOf(":"),i=t.substring(0,e),s=t.substring(e+1);i.includes("/")?n.push(t):o.push({type:{name:ze(i),value:i},expression:s})}})),i.attachments=n,i.runtime_attachments=o,i},fromLocalizationFormData:(t,e)=>{const i={};t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]);const o=(t.quick_replies||[]).map((t=>"string"==typeof t?t:t.value||t.name||t)).filter((t=>t&&""!==t.trim()));o.length>0&&JSON.stringify(o)!==JSON.stringify(e.quick_replies||[])&&(i.quick_replies=o);const n=[...(t.attachments||[]).filter((t=>t&&""!==t.trim())),...(t.runtime_attachments||[]).filter((t=>t&&t.type&&t.expression&&""!==t.expression.trim())).map((t=>`${t.type[0].value}:${t.expression}`))];return n.length>0&&JSON.stringify(n)!==JSON.stringify(e.attachments||[])&&(i.attachments=n),i}},lu={name:"Send Email",group:Gh.broadcast,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>
8445
- <div>${Rh(e.addresses,_o.email)}</div>
8453
+ `},form:{text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},quick_replies:{type:"select",options:[],multi:!0,tags:!0,searchable:!0,placeholder:"Add quick replies...",maxItems:10,evaluated:!0},runtime_attachments:{type:"array",helpText:"Add dynamic attachments using expressions",itemLabel:"Attachment",sortable:!0,maxItems:10,isEmptyItem:t=>!t.expression||""===t.expression.trim(),itemConfig:{type:{type:"select",options:[{value:"image",name:"Image"},{value:"audio",name:"Audio"},{value:"video",name:"Video"},{value:"document",name:"Document"}],required:!0,searchable:!1},expression:{type:"text",placeholder:"Expression (e.g. @contact.photo)",required:!0,evaluated:!0}}}},layout:["text",{type:"group",label:"Quick Replies",items:["quick_replies"],collapsible:!0,collapsed:t=>!t.quick_replies||0===t.quick_replies.length,getGroupValueCount:t=>{var e;return(null===(e=t.quick_replies)||void 0===e?void 0:e.length)||0}},{type:"group",label:"Runtime Attachments",items:["runtime_attachments"],collapsible:!0,collapsed:!0,helpText:"Add dynamic attachments that are evaluated at runtime",getGroupValueCount:t=>{var e;return(null===(e=t.runtime_attachments)||void 0===e?void 0:e.filter((t=>t&&t.expression&&""!==t.expression.trim())).length)||0}}],toFormData:t=>{const e=[],i=[];return t.attachments&&Array.isArray(t.attachments)&&t.attachments.forEach((t=>{if("string"==typeof t&&t.includes(":")){const o=t.indexOf(":"),n=t.substring(0,o),s=t.substring(o+1);n.includes("/")?i.push(t):e.push({type:{name:ze(n),value:n},expression:s})}})),{uuid:t.uuid,text:t.text||"",attachments:i,runtime_attachments:e,quick_replies:(t.quick_replies||[]).map((t=>({name:t,value:t})))}},fromFormData:t=>{const e={uuid:t.uuid,type:"send_msg",text:t.text||"",attachments:[],quick_replies:(t.quick_replies||[]).map((t=>"string"==typeof t?t:t.value||t.name||t))},i=t.attachments||[],o=(t.runtime_attachments||[]).filter((t=>t&&t.type&&t.expression)).map((t=>`${t.type[0].value}:${t.expression}`));return e.attachments=[...i,...o],0===e.quick_replies.length&&delete e.quick_replies,e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},validate:t=>{const e={},i=t.attachments||[],o=(t.runtime_attachments||[]).filter((t=>t&&t.expression&&""!==t.expression.trim()));return i.length+o.length>10&&(o.length>0&&(e.runtime_attachments="Each message can only have up to 10 attachments"),i.length>0&&(e.text="Each message can only have up to 10 total attachments")),{valid:0===Object.keys(e).length,errors:e}},localizable:["text","quick_replies","attachments"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.attachments&&Array.isArray(e.attachments)&&(i.attachments=e.attachments),e.quick_replies&&Array.isArray(e.quick_replies)&&(i.quick_replies=e.quick_replies.map((t=>({name:t,value:t}))));const o=[],n=[];return i.attachments&&Array.isArray(i.attachments)&&i.attachments.forEach((t=>{if("string"==typeof t&&t.includes(":")){const e=t.indexOf(":"),i=t.substring(0,e),s=t.substring(e+1);i.includes("/")?n.push(t):o.push({type:{name:ze(i),value:i},expression:s})}})),i.attachments=n,i.runtime_attachments=o,i},fromLocalizationFormData:(t,e)=>{const i={};t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]);const o=(t.quick_replies||[]).map((t=>"string"==typeof t?t:t.value||t.name||t)).filter((t=>t&&""!==t.trim()));o.length>0&&JSON.stringify(o)!==JSON.stringify(e.quick_replies||[])&&(i.quick_replies=o);const n=[...(t.attachments||[]).filter((t=>t&&""!==t.trim())),...(t.runtime_attachments||[]).filter((t=>t&&t.type&&t.expression&&""!==t.expression.trim())).map((t=>`${t.type[0].value}:${t.expression}`))];return n.length>0&&JSON.stringify(n)!==JSON.stringify(e.attachments||[])&&(i.attachments=n),i}},cu={name:"Send Email",group:Xh.broadcast,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>
8454
+ <div>${Bh(e.addresses,_o.email)}</div>
8446
8455
  <div style="margin-top: 0.5em">
8447
8456
  <div
8448
8457
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto;"
@@ -8450,7 +8459,7 @@ background: #ccc;
8450
8459
  ${e.subject}
8451
8460
  </div>
8452
8461
  </div>
8453
- </div>`,form:{addresses:{type:"select",label:"Recipients",multi:!0,searchable:!0,placeholder:"Search for contacts...",emails:!0},subject:{type:"text",label:"Subject",required:!0,placeholder:"Enter email subject",maxLength:255},body:{type:"textarea",required:!0,evaluated:!0,minHeight:175}},fromFormData:t=>({uuid:t.uuid,type:"send_email",addresses:t.addresses.map((t=>t.value)),subject:t.subject,body:t.body}),validate:t=>{const e={};return t.addresses&&0!==t.addresses.length||(e.addresses="At least one recipient email address is required"),{valid:0===Object.keys(e).length,errors:e}}},du={name:"Start Flow",group:Gh.broadcast,flowTypes:[Hh,Vh,Wh],render:(t,e)=>{const i=e.groups&&e.groups.length>0,o=e.contacts&&e.contacts.length>0,n=i||o;let s=H``;if(e.create_contact)s=H`Create a new contact`;else if(e.contact_query)s=H`${e.contact_query}`;else if(n){const t=[...e.contacts||[],...e.groups||[]];s=H`${Ph(t,i?"group":"contact")}`}return H`
8462
+ </div>`,form:{addresses:{type:"select",label:"Recipients",multi:!0,searchable:!0,placeholder:"Search for contacts...",emails:!0},subject:{type:"text",label:"Subject",required:!0,placeholder:"Enter email subject",maxLength:255},body:{type:"textarea",required:!0,evaluated:!0,minHeight:175}},fromFormData:t=>({uuid:t.uuid,type:"send_email",addresses:t.addresses.map((t=>t.value)),subject:t.subject,body:t.body}),validate:t=>{const e={};return t.addresses&&0!==t.addresses.length||(e.addresses="At least one recipient email address is required"),{valid:0===Object.keys(e).length,errors:e}}},hu={name:"Start Flow",group:Xh.broadcast,flowTypes:[Zh,Wh,Yh],render:(t,e)=>{const i=e.groups&&e.groups.length>0,o=e.contacts&&e.contacts.length>0,n=i||o;let s=H``;if(e.create_contact)s=H`Create a new contact`;else if(e.contact_query)s=H`${e.contact_query}`;else if(n){const t=[...e.contacts||[],...e.groups||[]];s=H`${Nh(t,i?"group":"contact")}`}return H`
8454
8463
  <div>
8455
8464
  <div
8456
8465
  style="padding: 3px 10px; background: #f5f5f5; padding-bottom: 0px; font-size: 11px; border-radius: var(--curvature); margin-bottom: 10px;"
@@ -8458,17 +8467,17 @@ background: #ccc;
8458
8467
  ${s}
8459
8468
  </div>
8460
8469
  <div style="padding: 0px 10px;">
8461
- ${Ph([e.flow],"flow")}
8470
+ ${Nh([e.flow],"flow")}
8462
8471
  </div>
8463
8472
  </div>
8464
- `},toFormData:t=>{var e;const i=t;let o="manual";t.create_contact?o="create":i.contact_query&&(o="query");const n=[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}],s=n.find((t=>t.value===o))||n[0];return{flow:t.flow?[t.flow]:null,recipients:[...t.contacts||[],...t.groups||[]],startType:[s],contactQuery:i.contact_query||"",skipContactsInFlow:(null===(e=i.exclusions)||void 0===e?void 0:e.in_a_flow)||!1,uuid:t.uuid}},form:{flow:{type:"select",label:"Flow",helpText:"Select the flow to start",required:!0,searchable:!0,endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",placeholder:"Select a flow..."},startType:{type:"select",label:"Start Type",helpText:"How should contacts be selected?",required:!0,options:[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}]},recipients:{type:"select",label:"Recipients",helpText:"Select who should be started in the flow",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/contacts.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for contacts or groups...",conditions:{visible:t=>{var e,i;return"manual"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},contactQuery:{type:"text",evaluated:!0,label:"Contact Query",helpText:"Only one matching contact will be started",placeholder:"household_id = @fields.household_id",conditions:{visible:t=>{var e,i;return"query"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},skipContactsInFlow:{type:"checkbox",label:"Skip contacts currently in a flow",helpText:"Avoid interrupting a contact who is already in a flow"}},layout:["flow","startType","recipients","contactQuery","skipContactsInFlow"],validate:t=>{var e,i;const o={},n=null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return"manual"!==n||t.recipients&&0!==t.recipients.length||(o.recipients="At least one contact or group must be selected"),"query"!==n||t.contactQuery&&t.contactQuery.trim()||(o.contactQuery="Contact query is required"),{valid:0===Object.keys(o).length,errors:o}},fromFormData:t=>{const e={uuid:t.uuid,type:"start_session",flow:{uuid:t.flow[0].uuid||t.flow[0].value,name:t.flow[0].name},groups:[],contacts:[]},i=t.startType[0].value;if("create"===i)e.create_contact=!0;else if("query"===i)e.contact_query=t.contactQuery||"";else{const i=t.recipients||[];e.contacts=i.filter((t=>!t.group)).map((t=>({uuid:t.uuid,name:t.name}))),e.groups=i.filter((t=>t.group)).map((t=>({uuid:t.uuid,name:t.name})))}return t.skipContactsInFlow&&(e.exclusions={in_a_flow:!0}),e}},cu={name:"Update Name",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>Set to <strong>${e.name}</strong></div>`,form:{name:{type:"text",label:"Name",placeholder:"Enter contact name...",required:!0,evaluated:!0,helpText:"The new name for the contact. You can use expressions like @contact.name"}},sanitize:t=>{t.name&&"string"==typeof t.name&&(t.name=t.name.trim())}},hu={name:"Add to Group",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`<div>${Ph(e.groups,"group")}</div>`,toFormData:t=>({groups:t.groups||null,uuid:t.uuid}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to add the contact to",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_contact_groups",groups:(t.groups||[]).map((t=>({uuid:t.uuid,name:t.name})))})},uu={name:"Remove from Group",group:Gh.contacts,flowTypes:[Hh,Vh,Wh],render:(t,e)=>e.all_groups?H`<div>Remove from all groups</div>`:H`<div>${Ph(e.groups,"group")}</div>`,toFormData:t=>({uuid:t.uuid,all_groups:t.all_groups||!1,groups:t.groups||null}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to remove the contact from",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",conditions:{visible:t=>!t.all_groups}},all_groups:{type:"checkbox",label:"Remove from All Groups",helpText:"Check this to remove the contact from all groups instead of specific ones"}},validate:t=>{const e={};return t.all_groups||t.groups&&0!==t.groups.length||(e.groups='At least one group must be selected or check "Remove from All Groups"'),{valid:0===Object.keys(e).length,errors:e}},fromFormData:t=>({uuid:t.uuid,type:"remove_contact_groups",groups:t.all_groups?[]:(t.groups||[]).map((t=>({uuid:t.uuid,name:t.name}))),all_groups:t.all_groups||!1})},pu={name:"Request Opt-in",group:Gh.send,flowTypes:[],render:(t,e)=>H`<div>Request Opt-in</div>`},mu=H`<svg
8473
+ `},toFormData:t=>{var e;const i=t;let o="manual";t.create_contact?o="create":i.contact_query&&(o="query");const n=[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}],s=n.find((t=>t.value===o))||n[0];return{flow:t.flow?[t.flow]:null,recipients:[...t.contacts||[],...t.groups||[]],startType:[s],contactQuery:i.contact_query||"",skipContactsInFlow:(null===(e=i.exclusions)||void 0===e?void 0:e.in_a_flow)||!1,uuid:t.uuid}},form:{flow:{type:"select",label:"Flow",helpText:"Select the flow to start",required:!0,searchable:!0,endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",placeholder:"Select a flow..."},startType:{type:"select",label:"Start Type",helpText:"How should contacts be selected?",required:!0,options:[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}]},recipients:{type:"select",label:"Recipients",helpText:"Select who should be started in the flow",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/contacts.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for contacts or groups...",conditions:{visible:t=>{var e,i;return"manual"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},contactQuery:{type:"text",evaluated:!0,label:"Contact Query",helpText:"Only one matching contact will be started",placeholder:"household_id = @fields.household_id",conditions:{visible:t=>{var e,i;return"query"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},skipContactsInFlow:{type:"checkbox",label:"Skip contacts currently in a flow",helpText:"Avoid interrupting a contact who is already in a flow"}},layout:["flow","startType","recipients","contactQuery","skipContactsInFlow"],validate:t=>{var e,i;const o={},n=null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return"manual"!==n||t.recipients&&0!==t.recipients.length||(o.recipients="At least one contact or group must be selected"),"query"!==n||t.contactQuery&&t.contactQuery.trim()||(o.contactQuery="Contact query is required"),{valid:0===Object.keys(o).length,errors:o}},fromFormData:t=>{const e={uuid:t.uuid,type:"start_session",flow:{uuid:t.flow[0].uuid||t.flow[0].value,name:t.flow[0].name},groups:[],contacts:[]},i=t.startType[0].value;if("create"===i)e.create_contact=!0;else if("query"===i)e.contact_query=t.contactQuery||"";else{const i=t.recipients||[];e.contacts=i.filter((t=>!t.group)).map((t=>({uuid:t.uuid,name:t.name}))),e.groups=i.filter((t=>t.group)).map((t=>({uuid:t.uuid,name:t.name})))}return t.skipContactsInFlow&&(e.exclusions={in_a_flow:!0}),e}},uu={name:"Update Name",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>Set to <strong>${e.name}</strong></div>`,form:{name:{type:"text",label:"Name",placeholder:"Enter contact name...",required:!0,evaluated:!0,helpText:"The new name for the contact. You can use expressions like @contact.name"}},sanitize:t=>{t.name&&"string"==typeof t.name&&(t.name=t.name.trim())}},pu={name:"Add to Group",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`<div>${Nh(e.groups,"group")}</div>`,toFormData:t=>({groups:t.groups||null,uuid:t.uuid}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to add the contact to",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_contact_groups",groups:(t.groups||[]).map((t=>({uuid:t.uuid,name:t.name})))})},mu={name:"Remove from Group",group:Xh.contacts,flowTypes:[Zh,Wh,Yh],render:(t,e)=>e.all_groups?H`<div>Remove from all groups</div>`:H`<div>${Nh(e.groups,"group")}</div>`,toFormData:t=>({uuid:t.uuid,all_groups:t.all_groups||!1,groups:t.groups||null}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to remove the contact from",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",conditions:{visible:t=>!t.all_groups}},all_groups:{type:"checkbox",label:"Remove from All Groups",helpText:"Check this to remove the contact from all groups instead of specific ones"}},validate:t=>{const e={};return t.all_groups||t.groups&&0!==t.groups.length||(e.groups='At least one group must be selected or check "Remove from All Groups"'),{valid:0===Object.keys(e).length,errors:e}},fromFormData:t=>({uuid:t.uuid,type:"remove_contact_groups",groups:t.all_groups?[]:(t.groups||[]).map((t=>({uuid:t.uuid,name:t.name}))),all_groups:t.all_groups||!1})},gu={name:"Request Opt-in",group:Xh.send,flowTypes:[],render:(t,e)=>H`<div>Request Opt-in</div>`},fu=H`<svg
8465
8474
  viewBox="0 0 24 24"
8466
8475
  width="16"
8467
8476
  height="16"
8468
8477
  fill="currentColor"
8469
8478
  >
8470
8479
  <polygon points="6,3 20,12 6,21" />
8471
- </svg>`;let gu=null,fu=null;function vu(t){const e=t.querySelector(".audio-play-btn"),i=t.querySelector(".audio-progress");e&&(e.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>'),i&&(i.style.width="0%")}function yu(t){t.stopPropagation(),t.preventDefault();const e=t.currentTarget.closest(".audio-player");if(!e)return;const i=e.dataset.url;if(!i)return;const o=e.querySelector(".audio-play-btn"),n=e.querySelector(".audio-progress");if(gu&&fu===e&&!gu.paused)return gu.pause(),void(o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>');gu&&(gu.pause(),gu.currentTime=0,fu&&vu(fu),gu=null,fu=null);const s=new Audio(i);gu=s,fu=e,o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><rect x="5" y="3" width="4" height="18"/><rect x="15" y="3" width="4" height="18"/></svg>',s.addEventListener("timeupdate",(()=>{if(s.duration&&n){const t=s.currentTime/s.duration*100;n.style.width=`${t}%`}})),s.addEventListener("ended",(()=>{vu(e),gu=null,fu=null})),s.addEventListener("error",(()=>{vu(e),gu=null,fu=null})),s.play().catch((()=>{vu(e),gu=null,fu=null}))}const bu={name:"Say Message",group:Gh.send,flowTypes:[Hh],render:(t,e)=>{const i=(e.text||"").replace(/\n/g,"<br>");return H`
8480
+ </svg>`;let vu=null,yu=null;function bu(t){const e=t.querySelector(".audio-play-btn"),i=t.querySelector(".audio-progress");e&&(e.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>'),i&&(i.style.width="0%")}function xu(t){t.stopPropagation(),t.preventDefault();const e=t.currentTarget.closest(".audio-player");if(!e)return;const i=e.dataset.url;if(!i)return;const o=e.querySelector(".audio-play-btn"),n=e.querySelector(".audio-progress");if(vu&&yu===e&&!vu.paused)return vu.pause(),void(o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>');vu&&(vu.pause(),vu.currentTime=0,yu&&bu(yu),vu=null,yu=null);const s=new Audio(i);vu=s,yu=e,o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><rect x="5" y="3" width="4" height="18"/><rect x="15" y="3" width="4" height="18"/></svg>',s.addEventListener("timeupdate",(()=>{if(s.duration&&n){const t=s.currentTime/s.duration*100;n.style.width=`${t}%`}})),s.addEventListener("ended",(()=>{bu(e),vu=null,yu=null})),s.addEventListener("error",(()=>{bu(e),vu=null,yu=null})),s.play().catch((()=>{bu(e),vu=null,yu=null}))}const _u={name:"Say Message",group:Xh.send,flowTypes:[Zh],render:(t,e)=>{const i=(e.text||"").replace(/\n/g,"<br>");return H`
8472
8481
  ${Ve(i)}
8473
8482
  ${e.audio_url?H`<div style="margin-top: 0.5em;">
8474
8483
  ${o=e.audio_url,H`
@@ -8481,10 +8490,10 @@ background: #ccc;
8481
8490
  >
8482
8491
  <div
8483
8492
  class="audio-play-btn"
8484
- @click=${yu}
8493
+ @click=${xu}
8485
8494
  style="cursor: pointer; color: #666; display: flex; align-items: center; flex-shrink: 0;"
8486
8495
  >
8487
- ${mu}
8496
+ ${fu}
8488
8497
  </div>
8489
8498
  <div
8490
8499
  style="flex: 1; height: 4px; background: #e0e0e0; border-radius: 2px; overflow: hidden; min-width: 40px;"
@@ -8497,7 +8506,7 @@ background: #ccc;
8497
8506
  </div>
8498
8507
  `}
8499
8508
  </div>`:null}
8500
- `;var o},form:{text:{type:"textarea",label:"Message",required:!0,evaluated:!0,placeholder:"Enter message to speak...",minHeight:80},audio_url:{type:"media",label:"Recording",required:!1,accept:"audio/*",optionalLink:"Add a recording"}},layout:["text","audio_url"],toFormData:t=>({uuid:t.uuid,text:t.text||"",audio_url:t.audio_url||""}),fromFormData:t=>{const e={uuid:t.uuid,type:"say_msg",text:t.text||""};return t.audio_url&&""!==t.audio_url.trim()&&(e.audio_url=t.audio_url.trim()),e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","audio_url"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.audio_url&&Array.isArray(e.audio_url)?i.audio_url=e.audio_url[0]||"":i.audio_url="",i},fromLocalizationFormData:(t,e)=>{const i={};return t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]),t.audio_url&&""!==t.audio_url.trim()&&t.audio_url!==e.audio_url&&(i.audio_url=[t.audio_url]),i}},xu={name:"Play Recording",group:Gh.send,flowTypes:[Hh],render:(t,e)=>H`
8509
+ `;var o},form:{text:{type:"textarea",label:"Message",required:!0,evaluated:!0,placeholder:"Enter message to speak...",minHeight:80},audio_url:{type:"media",label:"Recording",required:!1,accept:"audio/*",optionalLink:"Add a recording"}},layout:["text","audio_url"],toFormData:t=>({uuid:t.uuid,text:t.text||"",audio_url:t.audio_url||""}),fromFormData:t=>{const e={uuid:t.uuid,type:"say_msg",text:t.text||""};return t.audio_url&&""!==t.audio_url.trim()&&(e.audio_url=t.audio_url.trim()),e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","audio_url"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.audio_url&&Array.isArray(e.audio_url)?i.audio_url=e.audio_url[0]||"":i.audio_url="",i},fromLocalizationFormData:(t,e)=>{const i={};return t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]),t.audio_url&&""!==t.audio_url.trim()&&t.audio_url!==e.audio_url&&(i.audio_url=[t.audio_url]),i}},wu={name:"Play Recording",group:Xh.send,flowTypes:[Zh],render:(t,e)=>H`
8501
8510
  <div style="display: flex; align-items: center; gap: 0.3em;">
8502
8511
  <temba-icon name="recording" size="1"></temba-icon>
8503
8512
  <div
@@ -8507,43 +8516,43 @@ background: #ccc;
8507
8516
  ${e.audio_url||""}
8508
8517
  </div>
8509
8518
  </div>
8510
- `,form:{audio_url:{type:"text",label:"Recording URL",required:!0,evaluated:!0}},layout:["audio_url"],toFormData:t=>({uuid:t.uuid,audio_url:t.audio_url||""}),fromFormData:t=>({uuid:t.uuid,type:"play_audio",audio_url:(t.audio_url||"").trim()}),localizable:["audio_url"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.audio_url&&Array.isArray(e.audio_url)?i.audio_url=e.audio_url[0]||"":i.audio_url="",i},fromLocalizationFormData:(t,e)=>{const i={};return t.audio_url&&""!==t.audio_url.trim()&&t.audio_url!==e.audio_url&&(i.audio_url=[t.audio_url]),i}},_u={name:"Enter a Flow",group:Gh.trigger,hideFromActions:!0,flowTypes:[Hh,Vh,Wh],render:(t,e)=>H`${Ph([e.flow],"flow")}`,toFormData:t=>({uuid:t.uuid,flow:t.flow?[t.flow]:[]}),form:{flow:{type:"select",required:!0,placeholder:"Select a flow...",helpText:"The contact will enter this flow and not return",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name"}},layout:["flow"],fromFormData:t=>{const e=t.flow[0];return{uuid:t.uuid,type:"enter_flow",terminal:!0,flow:{uuid:e.uuid||e.value,name:e.name}}}},wu={ARS:{code:"ARS",name:"Argentine Peso"},AUD:{code:"AUD",name:"Australian Dollar"},BIF:{code:"BIF",name:"Burundi Franc"},BRL:{code:"BRL",name:"Brazilian Real"},CAD:{code:"CAD",name:"Canadian Dollar"},CDF:{code:"CDF",name:"Congolese Franc"},CLP:{code:"CLP",name:"Chilean Peso"},COP:{code:"COP",name:"Colombian Peso"},DJF:{code:"DJF",name:"Djibouti Franc"},DOP:{code:"DOP",name:"Dominican Peso"},DZD:{code:"DZD",name:"Algerian Dinar"},EUR:{code:"EUR",name:"Euro"},GBP:{code:"GBP",name:"Pound Sterling"},GHS:{code:"GHS",name:"Ghana Cedi"},GNF:{code:"GNF",name:"Guinean Franc"},KES:{code:"KES",name:"Kenyan Shilling"},LBP:{code:"LBP",name:"Lebanese Pound"},LKR:{code:"LKR",name:"Sri Lanka Rupee"},LRD:{code:"LRD",name:"Liberian Dollar"},MWK:{code:"MWK",name:"Malawian Kwacha"},MXN:{code:"MXN",name:"Mexican Peso"},MZN:{code:"MZN",name:"Mozambican Metical"},NAD:{code:"NAD",name:"Namibian Dollar"},NGN:{code:"NGN",name:"Nigerian Naira"},PEN:{code:"PEN",name:"Peruvian Sol"},PHP:{code:"PHP",name:"Philippine Peso"},RWF:{code:"RWF",name:"Rwandan Franc"},SZL:{code:"SZL",name:"Swazi Lilangeni"},TZS:{code:"TZS",name:"Tanzanian Shilling"},UGX:{code:"UGX",name:"Ugandan Shilling"},USD:{code:"USD",name:"US Dollar"},XAF:{code:"XAF",name:"Central African CFA Franc"},XOF:{code:"XOF",name:"West African CFA Franc"},ZAR:{code:"ZAR",name:"South African Rand"},ZMW:{code:"ZMW",name:"Zambian Kwacha"}},ku=Object.values(wu).map((t=>({value:t.code,name:`${t.name} (${t.code})`}))),Cu={type:"text",label:"Result Name",required:!1,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow",optionalLink:"Save result as..."};function Su(t,e){var i;const o=(null===(i=t.router)||void 0===i?void 0:i.categories)||[],n={};return o.forEach((t=>{const i=t.uuid,o=e[i];n[i]={originalName:t.name,localizedName:o&&o.name?Array.isArray(o.name)?o.name[0]||"":o.name:""}})),{categories:n}}function Au(t,e){const i={};return t.categories&&Object.keys(t.categories).forEach((e=>{var o,n;const s=t.categories[e],r=(null===(o=s.localizedName)||void 0===o?void 0:o.trim())||"",a=(null===(n=s.originalName)||void 0===n?void 0:n.trim())||"";r&&r!==a&&(i[e]={name:[r]})})),i}const Eu={type:"split_by_airtime",name:"Send Airtime",group:Gh.services,flowTypes:[Hh,Vh,Wh],features:[Yh],showAsAction:!0,form:{amounts:{type:"array",label:"Airtime Amounts",helpText:"Define the currencies and amounts to transfer",required:!0,itemLabel:"Amount",sortable:!1,minItems:1,maxItems:10,isEmptyItem:t=>!t.currency||!t.amount||""===t.amount.trim(),itemConfig:{currency:{type:"select",placeholder:"Select a currency",required:!0,options:ku,searchable:!0,multi:!1,width:"200px"},amount:{type:"text",placeholder:"Amount",required:!0}}},result_name:Cu},layout:["amounts","result_name"],validate:t=>{const e={};if(t.amounts&&Array.isArray(t.amounts)){const i=t.amounts.filter((t=>(null==t?void 0:t.currency)&&(null==t?void 0:t.amount)&&""!==t.amount.trim()));if(0===i.length)return e.amounts="At least one currency and amount is required",{valid:!1,errors:e};const o=new Set,n=[];i.forEach((t=>{var e;const i=Array.isArray(t.currency)&&t.currency.length>0?t.currency[0].value:"string"==typeof t.currency?t.currency:null===(e=t.currency)||void 0===e?void 0:e.value;o.has(i)?n.push(i):o.add(i)})),n.length>0&&(e.amounts=`Duplicate currencies found: ${n.join(", ")}`);for(const t of i){const i=t.amount.trim();if(isNaN(Number(i))||Number(i)<=0)return e.amounts="All amounts must be valid positive numbers",{valid:!1,errors:e}}}else e.amounts="At least one currency and amount is required";return{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"transfer_airtime"===t.type));if(!i||!i.amounts)return H`<div class="body">Configure airtime transfer</div>`;const o=i.amounts,n=Object.keys(o);if(0===n.length)return H`<div class="body">Configure airtime transfer</div>`;const s=n[0],r=o[s],a=n.length-1;return H`
8519
+ `,form:{audio_url:{type:"text",label:"Recording URL",required:!0,evaluated:!0}},layout:["audio_url"],toFormData:t=>({uuid:t.uuid,audio_url:t.audio_url||""}),fromFormData:t=>({uuid:t.uuid,type:"play_audio",audio_url:(t.audio_url||"").trim()}),localizable:["audio_url"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.audio_url&&Array.isArray(e.audio_url)?i.audio_url=e.audio_url[0]||"":i.audio_url="",i},fromLocalizationFormData:(t,e)=>{const i={};return t.audio_url&&""!==t.audio_url.trim()&&t.audio_url!==e.audio_url&&(i.audio_url=[t.audio_url]),i}},ku={name:"Enter a Flow",group:Xh.trigger,hideFromActions:!0,flowTypes:[Zh,Wh,Yh],render:(t,e)=>H`${Nh([e.flow],"flow")}`,toFormData:t=>({uuid:t.uuid,flow:t.flow?[t.flow]:[]}),form:{flow:{type:"select",required:!0,placeholder:"Select a flow...",helpText:"The contact will enter this flow and not return",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name"}},layout:["flow"],fromFormData:t=>{const e=t.flow[0];return{uuid:t.uuid,type:"enter_flow",terminal:!0,flow:{uuid:e.uuid||e.value,name:e.name}}}},Cu={ARS:{code:"ARS",name:"Argentine Peso"},AUD:{code:"AUD",name:"Australian Dollar"},BIF:{code:"BIF",name:"Burundi Franc"},BRL:{code:"BRL",name:"Brazilian Real"},CAD:{code:"CAD",name:"Canadian Dollar"},CDF:{code:"CDF",name:"Congolese Franc"},CLP:{code:"CLP",name:"Chilean Peso"},COP:{code:"COP",name:"Colombian Peso"},DJF:{code:"DJF",name:"Djibouti Franc"},DOP:{code:"DOP",name:"Dominican Peso"},DZD:{code:"DZD",name:"Algerian Dinar"},EUR:{code:"EUR",name:"Euro"},GBP:{code:"GBP",name:"Pound Sterling"},GHS:{code:"GHS",name:"Ghana Cedi"},GNF:{code:"GNF",name:"Guinean Franc"},KES:{code:"KES",name:"Kenyan Shilling"},LBP:{code:"LBP",name:"Lebanese Pound"},LKR:{code:"LKR",name:"Sri Lanka Rupee"},LRD:{code:"LRD",name:"Liberian Dollar"},MWK:{code:"MWK",name:"Malawian Kwacha"},MXN:{code:"MXN",name:"Mexican Peso"},MZN:{code:"MZN",name:"Mozambican Metical"},NAD:{code:"NAD",name:"Namibian Dollar"},NGN:{code:"NGN",name:"Nigerian Naira"},PEN:{code:"PEN",name:"Peruvian Sol"},PHP:{code:"PHP",name:"Philippine Peso"},RWF:{code:"RWF",name:"Rwandan Franc"},SZL:{code:"SZL",name:"Swazi Lilangeni"},TZS:{code:"TZS",name:"Tanzanian Shilling"},UGX:{code:"UGX",name:"Ugandan Shilling"},USD:{code:"USD",name:"US Dollar"},XAF:{code:"XAF",name:"Central African CFA Franc"},XOF:{code:"XOF",name:"West African CFA Franc"},ZAR:{code:"ZAR",name:"South African Rand"},ZMW:{code:"ZMW",name:"Zambian Kwacha"}},Su=Object.values(Cu).map((t=>({value:t.code,name:`${t.name} (${t.code})`}))),Au={type:"text",label:"Result Name",required:!1,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow",optionalLink:"Save result as..."};function Eu(t,e){var i;const o=(null===(i=t.router)||void 0===i?void 0:i.categories)||[],n={};return o.forEach((t=>{const i=t.uuid,o=e[i];n[i]={originalName:t.name,localizedName:o&&o.name?Array.isArray(o.name)?o.name[0]||"":o.name:""}})),{categories:n}}function $u(t,e){const i={};return t.categories&&Object.keys(t.categories).forEach((e=>{var o,n;const s=t.categories[e],r=(null===(o=s.localizedName)||void 0===o?void 0:o.trim())||"",a=(null===(n=s.originalName)||void 0===n?void 0:n.trim())||"";r&&r!==a&&(i[e]={name:[r]})})),i}const Tu={type:"split_by_airtime",name:"Send Airtime",group:Xh.services,flowTypes:[Zh,Wh,Yh],features:[Kh],showAsAction:!0,form:{amounts:{type:"array",label:"Airtime Amounts",helpText:"Define the currencies and amounts to transfer",required:!0,itemLabel:"Amount",sortable:!1,minItems:1,maxItems:10,isEmptyItem:t=>!t.currency||!t.amount||""===t.amount.trim(),itemConfig:{currency:{type:"select",placeholder:"Select a currency",required:!0,options:Su,searchable:!0,multi:!1,width:"200px"},amount:{type:"text",placeholder:"Amount",required:!0}}},result_name:Au},layout:["amounts","result_name"],validate:t=>{const e={};if(t.amounts&&Array.isArray(t.amounts)){const i=t.amounts.filter((t=>(null==t?void 0:t.currency)&&(null==t?void 0:t.amount)&&""!==t.amount.trim()));if(0===i.length)return e.amounts="At least one currency and amount is required",{valid:!1,errors:e};const o=new Set,n=[];i.forEach((t=>{var e;const i=Array.isArray(t.currency)&&t.currency.length>0?t.currency[0].value:"string"==typeof t.currency?t.currency:null===(e=t.currency)||void 0===e?void 0:e.value;o.has(i)?n.push(i):o.add(i)})),n.length>0&&(e.amounts=`Duplicate currencies found: ${n.join(", ")}`);for(const t of i){const i=t.amount.trim();if(isNaN(Number(i))||Number(i)<=0)return e.amounts="All amounts must be valid positive numbers",{valid:!1,errors:e}}}else e.amounts="At least one currency and amount is required";return{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"transfer_airtime"===t.type));if(!i||!i.amounts)return H`<div class="body">Configure airtime transfer</div>`;const o=i.amounts,n=Object.keys(o);if(0===n.length)return H`<div class="body">Configure airtime transfer</div>`;const s=n[0],r=o[s],a=n.length-1;return H`
8511
8520
  <div class="body">
8512
8521
  ${s}
8513
8522
  ${r}${a>0?H` <span style="color: #999;">+${a} more</span>`:""}
8514
8523
  </div>
8515
- `},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"transfer_airtime"===t.type)),n=[];return o&&o.amounts&&Object.entries(o.amounts).forEach((([t,e])=>{var i;n.push({currency:[{value:t,name:(null===(i=wu[t])||void 0===i?void 0:i.name)?`${wu[t].name} (${t})`:t}],amount:String(e)})})),{uuid:t.uuid,amounts:n,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s={};t.amounts&&Array.isArray(t.amounts)&&t.amounts.forEach((t=>{var e;if(!(null==t?void 0:t.currency)||!(null==t?void 0:t.amount)||""===t.amount.trim())return;let i;if(Array.isArray(t.currency)&&t.currency.length>0)i=t.currency[0].value;else if("string"==typeof t.currency)i=t.currency;else{if(!(null===(e=t.currency)||void 0===e?void 0:e.value))return;i=t.currency.value}const o=parseFloat(t.amount.trim());!isNaN(o)&&o>0&&(s[i]=o)}));const r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"transfer_airtime"===t.type)),a={type:"transfer_airtime",uuid:(null==r?void 0:r.uuid)||Xt(),amounts:s},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@locals._new_transfer",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},$u=[{type:"has_any_word",name:"has any of the words",operands:1},{type:"has_all_words",name:"has all of the words",operands:1},{type:"has_phrase",name:"has the phrase",operands:1},{type:"has_only_phrase",name:"has only the phrase",operands:1},{type:"has_beginning",name:"starts with",operands:1},{type:"has_text",name:"has some text",operands:0,categoryName:"Has Text"},{type:"has_number",name:"has a number",operands:0,categoryName:"Has Number"},{type:"has_number_between",name:"has a number between",operands:2},{type:"has_number_lt",name:"has a number below",operands:1},{type:"has_number_lte",name:"has a number at or below",operands:1},{type:"has_number_eq",name:"has a number equal to",operands:1},{type:"has_number_gte",name:"has a number at or above",operands:1},{type:"has_number_gt",name:"has a number above",operands:1},{type:"has_date",name:"has a date",operands:0,categoryName:"Has Date"},{type:"has_date_lt",name:"has a date before",operands:1},{type:"has_date_eq",name:"has a date equal to",operands:1},{type:"has_date_gt",name:"has a date after",operands:1},{type:"has_time",name:"has a time",operands:0,categoryName:"Has Time"},{type:"has_phone",name:"has a phone number",operands:0,categoryName:"Has Phone"},{type:"has_email",name:"has an email",operands:0,categoryName:"Has Email"},{type:"has_state",name:"has state",operands:0,categoryName:"Has State",filter:"HAS_LOCATIONS"},{type:"has_district",name:"has district",operands:1,categoryName:"Has District",filter:"HAS_LOCATIONS"},{type:"has_ward",name:"has ward",operands:2,categoryName:"Has Ward",filter:"HAS_LOCATIONS"},{type:"has_group",name:"is in the group",operands:1,visibility:"hidden"},{type:"has_category",name:"has the category",operands:0,visibility:"hidden"},{type:"has_error",name:"has an error",operands:0,categoryName:"Has Error",visibility:"hidden"},{type:"has_value",name:"is not empty",operands:0,categoryName:"Not Empty",visibility:"hidden"},{type:"has_pattern",name:"matches regex",operands:1}],Tu=()=>$u.filter((t=>"hidden"!==t.visibility&&!t.filter)),Du=new Set(["has_beginning","has_number","has_number_between","has_number_lt","has_number_lte","has_number_eq","has_number_gte","has_number_gt","has_pattern"]),Mu=t=>$u.find((e=>e.type===t)),Iu=t=>t.map((t=>({value:t.type,name:t.name}))),Ou=t=>{if("string"==typeof t)return t.trim();if(Array.isArray(t)&&t.length>0){const e=t[0];if(e&&"object"==typeof e&&e.value)return e.value.trim()}else if(t&&"object"==typeof t&&t.value)return t.value.trim();return""},Lu=t=>{const e=Ou(t.operator);if(!e||!t.category||""===t.category.trim())return!0;const i=Mu(e);return i&&1===i.operands?!t.value1||""===t.value1.trim():!(!i||2!==i.operands)&&(!t.value1||""===t.value1.trim()||!t.value2||""===t.value2.trim())},zu=t=>{const e=Ou(t.operator),i=Mu(e);return!i||i.operands>=1},Pu=t=>{const e=Ou(t.operator),i=Mu(e);return!!i&&2===i.operands},Ru=()=>({operator:{type:"select",required:!0,multi:!1,options:[],flavor:"xsmall",width:"220px"},value1:{type:"text",flavor:"xsmall",conditions:{visible:zu}},value2:{type:"text",flavor:"xsmall",conditions:{visible:Pu}},category:{type:"text",placeholder:"Category",required:!0,maxWidth:"120px",flavor:"xsmall"}}),Nu=t=>(t.rules||[]).filter((t=>{const e=Ou(null==t?void 0:t.operator);if(!e||!(null==t?void 0:t.category)||""===e||""===t.category.trim())return!1;const i=Mu(e);return i&&1===i.operands?(null==t?void 0:t.value1)&&""!==t.value1.trim():!i||2!==i.operands||(null==t?void 0:t.value1)&&""!==t.value1.trim()&&(null==t?void 0:t.value2)&&""!==t.value2.trim()})).map((t=>{const e=Ou(t.operator),i=Mu(e);let o="";if(i&&1===i.operands)o=t.value1?t.value1.trim():"";else if(i&&2===i.operands){o=`${t.value1?t.value1.trim():""} ${t.value2?t.value2.trim():""}`.trim()}else o="";return{operator:e,value:o,category:t.category.trim()}})),Bu=t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&(null===(i=t.router)||void 0===i?void 0:i.categories)&&t.router.cases.forEach((e=>{const i=t.router.categories.find((t=>t.uuid===e.category_uuid));if(i&&(n=i.name,!["No Response","Other","All Responses","Timeout"].includes(n))){const t=Mu(e.type),n=t?t.name:e.type;let s="",r="";t&&0===t.operands?(s="",r=""):t&&1===t.operands?(s=e.arguments.join(" "),r=""):t&&2===t.operands?(s=e.arguments[0]||"",r=e.arguments[1]||""):(s=e.arguments.join(" "),r=""),o.push({operator:{value:e.type,name:n},value1:s,value2:r,category:i.name})}var n})),o};const Fu=(t,e="Define rules to categorize responses")=>({type:"array",helpText:e,itemLabel:"Rule",minItems:0,maxItems:100,sortable:!0,maintainEmptyItem:!0,isEmptyItem:Lu,onItemChange:(t,e,i,o)=>{const n=[...o],s={...n[t]};s[e]=i;const r=o[t]||{},a=Ou("operator"===e?r.operator:s.operator),l=Ou(s.operator),d=Oe(a,Mu,"value1"===e?r.value1:s.value1,"value2"===e?r.value2:s.value2),c=Oe(l,Mu,s.value1,s.value2);return(!s.category||""===s.category.trim()||s.category===d)&&c&&(s.category=c),n[t]=s,n},itemConfig:{...Ru(),operator:{...Ru().operator,options:t}}}),qu={name:{id:"name",name:"Name",type:"property"},language:{id:"language",name:"Language",type:"property"},status:{id:"status",name:"Status",type:"property"},channel:{id:"channel",name:"Channel",type:"property"}},Uu={type:"split_by_contact_field",name:"Split by Contact Field",group:Kh.split,flowTypes:[Hh,Vh,Wh],dialogSize:"large",form:{field:{type:"select",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/fields.json",valueKey:"key",nameKey:"name",placeholder:"Select a field...",options:[...Object.values(qu).map((t=>({value:t.id,name:t.name,type:t.type}))),...Nh.filter((t=>!t.excludeFromSplit)).map((t=>({value:t.scheme,name:t.path,type:"scheme"})))]},rules:Fu(Iu(Tu()),""),result_name:Cu},layout:["field","rules","result_name"],validate:t=>{const e={};return t.field&&0!==t.field.length||(e.field="A field is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:(t,e)=>{var i,o;const n={...(null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand)||qu.name};"field"===n.type?n.key||(n.key=n.id):n.value||(n.value=n.id);const s=Bu(t);return{uuid:t.uuid,field:[n],rules:s,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=t.field)||void 0===i?void 0:i[0];if(!s)return e;const r=(t=>{if("scheme"===t.type)return`@(default(urn_parts(urns.${t.id||t.value}).path, ""))`;return"property"===t.type?`@contact.${t.id||t.value}`:`@fields.${t.key||t.id||t.value}`})(s),a=Nu(t),l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Le(r,a,Mu,l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{...e,router:p,exits:u}},toUIConfig:t=>{var e;const i=null===(e=t.field)||void 0===e?void 0:e[0];if(!i)return{};let o=i.id||i.value||i.key;"scheme"===i.type&&(o=i.value||i.id);let n=i.type;return"property"!==n&&"scheme"!==n&&(n="field"),{operand:{id:o,name:i.name||i.label,type:n}}},renderTitle:(t,e)=>H`<div>Split by ${e.config.operand.name}</div>`,localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},ju={type:"split_by_expression",name:"Split by Expression",group:Kh.split,flowTypes:[Hh,Vh,Wh],dialogSize:"large",form:{operand:{type:"text",label:"Expression",helpText:"The expression to evaluate and split on",required:!0,evaluated:!0,placeholder:"@fields.age"},rules:Fu(Iu(Tu()),""),result_name:Cu},layout:["operand","rules","result_name"],validate:t=>{const e={};return t.operand&&""!==t.operand.trim()||(e.operand="Expression is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=Bu(t);return{uuid:t.uuid,operand:(null===(e=t.router)||void 0===e?void 0:e.operand)||"@input.text",rules:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Nu(t),r=(null===(i=t.operand)||void 0===i?void 0:i.trim())||"@input.text",a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Le(r,s,Mu,a,l,d),u={...c};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:h}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Vu={type:"split_by_groups",name:"Split by Group",group:Kh.split,flowTypes:[Hh,Vh,Wh],form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to split contacts by. Contacts will be routed based on their group membership.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null},result_name:Cu},layout:["groups","result_name"],validate:t=>{const e={};return t.groups&&Array.isArray(t.groups)&&0!==t.groups.length||(e.groups="At least one group is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach((t=>{var e;"has_group"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>=2&&o.push({uuid:t.arguments[0],name:t.arguments[1]})})),{uuid:t.uuid,groups:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.groups||[]).filter((t=>(null==t?void 0:t.uuid)||(null==t?void 0:t.arbitrary))).map((t=>({uuid:t.uuid||Xt(),name:t.name}))),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=((t,e=[],i=[],o=[],n="")=>{const s=[],r=[],a=[];t.forEach((t=>{const n=e.find((e=>e.name===t.name)),l=n?i.find((t=>t.uuid===n.exit_uuid)):null,d=o.find((e=>{var i;return(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.uuid})),c=(null==l?void 0:l.uuid)||Xt(),h=(null==n?void 0:n.uuid)||Xt(),u=(null==d?void 0:d.uuid)||Xt();s.push({uuid:h,name:t.name,exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==l?void 0:l.destination_uuid)||null}),a.push({uuid:u,type:"has_group",arguments:[t.uuid,t.name],category_uuid:h})}));const l=e.find((e=>"Other"===e.name&&!t.some((t=>t.name===e.name)))),d=l?i.find((t=>t.uuid===l.exit_uuid)):null,c=(null==d?void 0:d.uuid)||Xt(),h=(null==l?void 0:l.uuid)||Xt();return s.push({uuid:h,name:"Other",exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==d?void 0:d.destination_uuid)||null}),{router:{type:"switch",cases:a,categories:s,default_category_uuid:h,operand:"@contact.groups",result_name:n},exits:r}})(n,s,r,a,t.result_name||"");return{uuid:e.uuid,actions:e.actions||[],router:l,exits:d}},router:{type:"switch",operand:"@contact.groups"},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Hu={type:"split_by_random",name:"Random Split",group:Kh.split,flowTypes:[Hh,Vh,Wh],form:{categories:{type:"array",helpText:"Define the buckets to randomly split contacts into",required:!0,itemLabel:"Bucket",sortable:!0,minItems:2,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Bucket name",required:!0}}}},layout:["categories"],validate:t=>{const e={};if(t.categories&&Array.isArray(t.categories)){const i=t.categories.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim()));i.length<2&&(e.categories="At least 2 buckets are required for random split");const o=[],n=new Map;if(i.forEach((t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())})),n.forEach((t=>{t.length>1&&o.push(...t)})),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate bucket names found: ${t.join(", ")}`}}return{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=(null===(i=null===(e=t.router)||void 0===e?void 0:e.categories)||void 0===i?void 0:i.map((t=>({name:t.name}))))||[];return{uuid:t.uuid,categories:o}},fromFormData:(t,e)=>{var i;const o=(t.categories||[]).filter((t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()})).map((t=>t.name.trim())),n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],{router:r,exits:a}=((t,e=[],i=[])=>{const o=[],n=[];return t.forEach((t=>{const s=e.find((e=>e.name===t)),r=s?i.find((t=>t.uuid===s.exit_uuid)):null,a=(null==r?void 0:r.uuid)||Xt(),l=(null==s?void 0:s.uuid)||Xt();o.push({uuid:l,name:t,exit_uuid:a}),n.push({uuid:a,destination_uuid:(null==r?void 0:r.destination_uuid)||null})})),{router:{type:"random",categories:o},exits:n}})(o,n,s);return{uuid:e.uuid,actions:e.actions||[],router:r,exits:a}},router:{type:"random"},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Wu=[{value:"0",name:"first result"},{value:"1",name:"second result"},{value:"2",name:"third result"},{value:"3",name:"fourth result"},{value:"4",name:"fifth result"},{value:"5",name:"sixth result"},{value:"6",name:"seventh result"},{value:"7",name:"eighth result"},{value:"8",name:"ninth result"},{value:"9",name:"tenth result"},{value:"10",name:"11th result"},{value:"11",name:"12th result"},{value:"12",name:"13th result"},{value:"13",name:"14th result"},{value:"14",name:"15th result"},{value:"15",name:"16th result"},{value:"16",name:"17th result"},{value:"17",name:"18th result"},{value:"18",name:"19th result"},{value:"19",name:"20th result"}],Zu=[{value:"",name:"Don't delimit result"},{value:" ",name:"Delimited by spaces"},{value:".",name:"Delimited by periods"},{value:"+",name:"Delimited by plusses"}],Yu={type:"split_by_run_result",name:"Split by Result",aliases:["split_by_run_result_delimited"],group:Kh.split,flowTypes:[Hh,Vh,Wh],dialogSize:"large",form:{result:{type:"select",required:!0,searchable:!1,clearable:!1,placeholder:"Select a result...",getDynamicOptions:()=>{const t=Sd();return t?t.getState().getFlowResults().map((t=>({value:t.key,name:t.name}))):[]},valueKey:"value",nameKey:"name"},delimit_by:{type:"select",required:!1,searchable:!1,clearable:!1,options:Zu,valueKey:"value",nameKey:"name",maxWidth:"180px"},delimit_index:{type:"select",required:!1,searchable:!1,clearable:!1,options:Wu,valueKey:"value",nameKey:"name",maxWidth:"140px",conditions:{visible:t=>{var e,i;const o=null===(i=null===(e=t.delimit_by)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return void 0!==o&&""!==o}}},rules:Fu(Iu(Tu()),""),result_name:Cu},layout:[{type:"row",label:"Flow Result",helpText:"Select a flow result and optionally delimit it to split on a specific part",items:["result","delimit_by","delimit_index"]},"rules","result_name"],validate:t=>{const e={};return t.result&&0!==t.result.length||(e.result="A flow result is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:(t,e)=>{var i,o,n;const s=null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand,r=s?{...s,value:s.value||s.id}:null,a=Bu(t),l=((null===(o=t.router)||void 0===o?void 0:o.operand)||"").match(/field\(results\.[\w]+,\s*(\d+),\s*"(.+?)"\)/),d=null!==l,c=d?parseInt(l[1],10):0,h=d?l[2]:"";return{uuid:t.uuid,result:r?[r]:[],delimit_by:d?[Zu.find((t=>t.value===h))]:[Zu[0]],delimit_index:d?[Wu.find((t=>t.value===String(c)))]:[Wu[0]],rules:a,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||""}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=null===(i=t.result)||void 0===i?void 0:i[0];if(!c)return e;let h;const u=c.value||c.id,p=null===(n=null===(o=t.delimit_by)||void 0===o?void 0:o[0])||void 0===n?void 0:n.value;if(void 0!==p&&""!==p){h=`@(field(results.${u}, ${null!==(a=null===(r=null===(s=t.delimit_index)||void 0===s?void 0:s[0])||void 0===r?void 0:r.value)&&void 0!==a?a:"0"}, "${p}"))`}else h=`@results.${u}`;const m=Nu(t),g=(null===(l=e.router)||void 0===l?void 0:l.categories)||[],f=e.exits||[],v=(null===(d=e.router)||void 0===d?void 0:d.cases)||[],{router:y,exits:b}=Le(h,m,Mu,g,f,v),x={...y};return t.result_name&&""!==t.result_name.trim()&&(x.result_name=t.result_name.trim()),{...e,router:x,exits:b}},toUIConfig:t=>{var e,i,o,n,s,r;const a=null===(e=t.result)||void 0===e?void 0:e[0];if(!a)return{};const l={operand:{id:a.value,name:a.name,type:"result"}},d=null===(o=null===(i=t.delimit_by)||void 0===i?void 0:i[0])||void 0===o?void 0:o.value,c=void 0!==d&&""!==d;return c&&(l.index=parseInt(null!==(r=null===(s=null===(n=t.delimit_index)||void 0===n?void 0:n[0])||void 0===s?void 0:s.value)&&void 0!==r?r:"0",10),l.delimiter=d),l.type=c?"split_by_run_result_delimited":"split_by_run_result",l},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Gu={type:"split_by_scheme",name:"Split by URN Type",group:Kh.split,flowTypes:[Hh,Vh,Wh],form:{schemes:{type:"select",label:"Channel Types",helpText:"The contact's URN is the address they used to reach you such as their phone number or a Facebook ID. Select which URN types to split by.",required:!0,options:Nh.map((t=>({value:t.scheme,name:t.name}))),multi:!0,searchable:!0,placeholder:"Select the channels to split by..."},result_name:Cu},layout:["schemes","result_name"],validate:t=>{const e={};return t.schemes&&Array.isArray(t.schemes)&&0!==t.schemes.length||(e.schemes="At least one channel type is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach((t=>{var e;"has_only_phrase"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&o.push(t.arguments[0])})),{uuid:t.uuid,schemes:o.map((t=>{const e=Nh.find((e=>e.scheme===t));return{value:t,name:(null==e?void 0:e.name)||t}})),result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.schemes||[]).filter((t=>t)).map((t=>"string"==typeof t?t:t.value)),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=((t,e=[],i=[],o=[],n="")=>{const s=[],r=[],a=[];t.forEach((t=>{const n=Nh.find((e=>e.scheme===t)),l=(null==n?void 0:n.name)||t,d=e.find((t=>t.name===l)),c=d?i.find((t=>t.uuid===d.exit_uuid)):null,h=o.find((e=>{var i;return(null===(i=e.arguments)||void 0===i?void 0:i[0])===t})),u=(null==c?void 0:c.uuid)||Xt(),p=(null==d?void 0:d.uuid)||Xt(),m=(null==h?void 0:h.uuid)||Xt();s.push({uuid:p,name:l,exit_uuid:u}),r.push({uuid:u,destination_uuid:(null==c?void 0:c.destination_uuid)||null}),a.push({uuid:m,type:"has_only_phrase",arguments:[t],category_uuid:p})}));const l=e.find((e=>{const i=t.some((t=>{const i=Nh.find((e=>e.scheme===t));return(null==i?void 0:i.name)===e.name}));return"Other"===e.name&&!i})),d=l?i.find((t=>t.uuid===l.exit_uuid)):null,c=(null==d?void 0:d.uuid)||Xt(),h=(null==l?void 0:l.uuid)||Xt();return s.push({uuid:h,name:"Other",exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==d?void 0:d.destination_uuid)||null}),{router:{type:"switch",cases:a,categories:s,default_category_uuid:h,operand:"@(urn_parts(contact.urn).scheme)",result_name:n},exits:r}})(n,s,r,a,t.result_name||"");return{uuid:e.uuid,actions:e.actions||[],router:l,exits:d}},router:{type:"switch",operand:"@(urn_parts(contact.urn).scheme)"},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Ku={type:"split_by_subflow",name:"Enter a Flow",group:Gh.trigger,flowTypes:[Hh,Vh,Wh],showAsAction:!0,form:{flow:{type:"select",required:!0,placeholder:"Select a flow...",helpText:"Once the subflow is complete or expires, the contact will return here",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name"}},layout:["flow"],render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"enter_flow"===t.type));return H`
8524
+ `},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"transfer_airtime"===t.type)),n=[];return o&&o.amounts&&Object.entries(o.amounts).forEach((([t,e])=>{var i;n.push({currency:[{value:t,name:(null===(i=Cu[t])||void 0===i?void 0:i.name)?`${Cu[t].name} (${t})`:t}],amount:String(e)})})),{uuid:t.uuid,amounts:n,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s={};t.amounts&&Array.isArray(t.amounts)&&t.amounts.forEach((t=>{var e;if(!(null==t?void 0:t.currency)||!(null==t?void 0:t.amount)||""===t.amount.trim())return;let i;if(Array.isArray(t.currency)&&t.currency.length>0)i=t.currency[0].value;else if("string"==typeof t.currency)i=t.currency;else{if(!(null===(e=t.currency)||void 0===e?void 0:e.value))return;i=t.currency.value}const o=parseFloat(t.amount.trim());!isNaN(o)&&o>0&&(s[i]=o)}));const r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"transfer_airtime"===t.type)),a={type:"transfer_airtime",uuid:(null==r?void 0:r.uuid)||Xt(),amounts:s},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@locals._new_transfer",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Du=[{type:"has_any_word",name:"has any of the words",operands:1},{type:"has_all_words",name:"has all of the words",operands:1},{type:"has_phrase",name:"has the phrase",operands:1},{type:"has_only_phrase",name:"has only the phrase",operands:1},{type:"has_beginning",name:"starts with",operands:1},{type:"has_text",name:"has some text",operands:0,categoryName:"Has Text"},{type:"has_number",name:"has a number",operands:0,categoryName:"Has Number"},{type:"has_number_between",name:"has a number between",operands:2},{type:"has_number_lt",name:"has a number below",operands:1},{type:"has_number_lte",name:"has a number at or below",operands:1},{type:"has_number_eq",name:"has a number equal to",operands:1},{type:"has_number_gte",name:"has a number at or above",operands:1},{type:"has_number_gt",name:"has a number above",operands:1},{type:"has_date",name:"has a date",operands:0,categoryName:"Has Date"},{type:"has_date_lt",name:"has a date before",operands:1},{type:"has_date_eq",name:"has a date equal to",operands:1},{type:"has_date_gt",name:"has a date after",operands:1},{type:"has_time",name:"has a time",operands:0,categoryName:"Has Time"},{type:"has_phone",name:"has a phone number",operands:0,categoryName:"Has Phone"},{type:"has_email",name:"has an email",operands:0,categoryName:"Has Email"},{type:"has_state",name:"has state",operands:0,categoryName:"Has State",filter:"HAS_LOCATIONS"},{type:"has_district",name:"has district",operands:1,categoryName:"Has District",filter:"HAS_LOCATIONS"},{type:"has_ward",name:"has ward",operands:2,categoryName:"Has Ward",filter:"HAS_LOCATIONS"},{type:"has_group",name:"is in the group",operands:1,visibility:"hidden"},{type:"has_category",name:"has the category",operands:0,visibility:"hidden"},{type:"has_error",name:"has an error",operands:0,categoryName:"Has Error",visibility:"hidden"},{type:"has_value",name:"is not empty",operands:0,categoryName:"Not Empty",visibility:"hidden"},{type:"has_pattern",name:"matches regex",operands:1}],Mu=()=>Du.filter((t=>"hidden"!==t.visibility&&!t.filter)),Iu=new Set(["has_beginning","has_number","has_number_between","has_number_lt","has_number_lte","has_number_eq","has_number_gte","has_number_gt","has_pattern"]),Ou=t=>Du.find((e=>e.type===t)),Lu=t=>t.map((t=>({value:t.type,name:t.name}))),zu=t=>{if("string"==typeof t)return t.trim();if(Array.isArray(t)&&t.length>0){const e=t[0];if(e&&"object"==typeof e&&e.value)return e.value.trim()}else if(t&&"object"==typeof t&&t.value)return t.value.trim();return""},Pu=t=>{const e=zu(t.operator);if(!e||!t.category||""===t.category.trim())return!0;const i=Ou(e);return i&&1===i.operands?!t.value1||""===t.value1.trim():!(!i||2!==i.operands)&&(!t.value1||""===t.value1.trim()||!t.value2||""===t.value2.trim())},Ru=t=>{const e=zu(t.operator),i=Ou(e);return!i||i.operands>=1},Nu=t=>{const e=zu(t.operator),i=Ou(e);return!!i&&2===i.operands},Bu=()=>({operator:{type:"select",required:!0,multi:!1,options:[],flavor:"xsmall",width:"220px"},value1:{type:"text",flavor:"xsmall",conditions:{visible:Ru}},value2:{type:"text",flavor:"xsmall",conditions:{visible:Nu}},category:{type:"text",placeholder:"Category",required:!0,maxWidth:"120px",flavor:"xsmall"}}),Fu=t=>(t.rules||[]).filter((t=>{const e=zu(null==t?void 0:t.operator);if(!e||!(null==t?void 0:t.category)||""===e||""===t.category.trim())return!1;const i=Ou(e);return i&&1===i.operands?(null==t?void 0:t.value1)&&""!==t.value1.trim():!i||2!==i.operands||(null==t?void 0:t.value1)&&""!==t.value1.trim()&&(null==t?void 0:t.value2)&&""!==t.value2.trim()})).map((t=>{const e=zu(t.operator),i=Ou(e);let o="";if(i&&1===i.operands)o=t.value1?t.value1.trim():"";else if(i&&2===i.operands){o=`${t.value1?t.value1.trim():""} ${t.value2?t.value2.trim():""}`.trim()}else o="";return{operator:e,value:o,category:t.category.trim()}})),qu=t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&(null===(i=t.router)||void 0===i?void 0:i.categories)&&t.router.cases.forEach((e=>{const i=t.router.categories.find((t=>t.uuid===e.category_uuid));if(i&&(n=i.name,!["No Response","Other","All Responses","Timeout"].includes(n))){const t=Ou(e.type),n=t?t.name:e.type;let s="",r="";t&&0===t.operands?(s="",r=""):t&&1===t.operands?(s=e.arguments.join(" "),r=""):t&&2===t.operands?(s=e.arguments[0]||"",r=e.arguments[1]||""):(s=e.arguments.join(" "),r=""),o.push({operator:{value:e.type,name:n},value1:s,value2:r,category:i.name})}var n})),o};const Uu=(t,e="Define rules to categorize responses")=>({type:"array",helpText:e,itemLabel:"Rule",minItems:0,maxItems:100,sortable:!0,maintainEmptyItem:!0,isEmptyItem:Pu,onItemChange:(t,e,i,o)=>{const n=[...o],s={...n[t]};s[e]=i;const r=o[t]||{},a=zu("operator"===e?r.operator:s.operator),l=zu(s.operator),d=Oe(a,Ou,"value1"===e?r.value1:s.value1,"value2"===e?r.value2:s.value2),c=Oe(l,Ou,s.value1,s.value2);return(!s.category||""===s.category.trim()||s.category===d)&&c&&(s.category=c),n[t]=s,n},itemConfig:{...Bu(),operator:{...Bu().operator,options:t}}}),ju={name:{id:"name",name:"Name",type:"property"},language:{id:"language",name:"Language",type:"property"},status:{id:"status",name:"Status",type:"property"},channel:{id:"channel",name:"Channel",type:"property"}},Vu={type:"split_by_contact_field",name:"Split by Contact Field",group:Qh.split,flowTypes:[Zh,Wh,Yh],dialogSize:"large",form:{field:{type:"select",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/fields.json",valueKey:"key",nameKey:"name",placeholder:"Select a field...",options:[...Object.values(ju).map((t=>({value:t.id,name:t.name,type:t.type}))),...Fh.filter((t=>!t.excludeFromSplit)).map((t=>({value:t.scheme,name:t.path,type:"scheme"})))]},rules:Uu(Lu(Mu()),""),result_name:Au},layout:["field","rules","result_name"],validate:t=>{const e={};return t.field&&0!==t.field.length||(e.field="A field is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:(t,e)=>{var i,o;const n={...(null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand)||ju.name};"field"===n.type?n.key||(n.key=n.id):n.value||(n.value=n.id);const s=qu(t);return{uuid:t.uuid,field:[n],rules:s,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=t.field)||void 0===i?void 0:i[0];if(!s)return e;const r=(t=>{if("scheme"===t.type)return`@(default(urn_parts(urns.${t.id||t.value}).path, ""))`;return"property"===t.type?`@contact.${t.id||t.value}`:`@fields.${t.key||t.id||t.value}`})(s),a=Fu(t),l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Le(r,a,Ou,l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{...e,router:p,exits:u}},toUIConfig:t=>{var e;const i=null===(e=t.field)||void 0===e?void 0:e[0];if(!i)return{};let o=i.id||i.value||i.key;"scheme"===i.type&&(o=i.value||i.id);let n=i.type;return"property"!==n&&"scheme"!==n&&(n="field"),{operand:{id:o,name:i.name||i.label,type:n}}},renderTitle:(t,e)=>H`<div>Split by ${e.config.operand.name}</div>`,localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Hu={type:"split_by_expression",name:"Split by Expression",group:Qh.split,flowTypes:[Zh,Wh,Yh],dialogSize:"large",form:{operand:{type:"text",label:"Expression",helpText:"The expression to evaluate and split on",required:!0,evaluated:!0,placeholder:"@fields.age"},rules:Uu(Lu(Mu()),""),result_name:Au},layout:["operand","rules","result_name"],validate:t=>{const e={};return t.operand&&""!==t.operand.trim()||(e.operand="Expression is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=qu(t);return{uuid:t.uuid,operand:(null===(e=t.router)||void 0===e?void 0:e.operand)||"@input.text",rules:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Fu(t),r=(null===(i=t.operand)||void 0===i?void 0:i.trim())||"@input.text",a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Le(r,s,Ou,a,l,d),u={...c};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:h}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Wu={type:"split_by_groups",name:"Split by Group",group:Qh.split,flowTypes:[Zh,Wh,Yh],form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to split contacts by. Contacts will be routed based on their group membership.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find((e=>e.name.toLowerCase().trim()===t.toLowerCase().trim()))&&t.trim()?{name:t.trim(),arbitrary:!0}:null},result_name:Au},layout:["groups","result_name"],validate:t=>{const e={};return t.groups&&Array.isArray(t.groups)&&0!==t.groups.length||(e.groups="At least one group is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach((t=>{var e;"has_group"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>=2&&o.push({uuid:t.arguments[0],name:t.arguments[1]})})),{uuid:t.uuid,groups:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.groups||[]).filter((t=>(null==t?void 0:t.uuid)||(null==t?void 0:t.arbitrary))).map((t=>({uuid:t.uuid||Xt(),name:t.name}))),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=((t,e=[],i=[],o=[],n="")=>{const s=[],r=[],a=[];t.forEach((t=>{const n=e.find((e=>e.name===t.name)),l=n?i.find((t=>t.uuid===n.exit_uuid)):null,d=o.find((e=>{var i;return(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.uuid})),c=(null==l?void 0:l.uuid)||Xt(),h=(null==n?void 0:n.uuid)||Xt(),u=(null==d?void 0:d.uuid)||Xt();s.push({uuid:h,name:t.name,exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==l?void 0:l.destination_uuid)||null}),a.push({uuid:u,type:"has_group",arguments:[t.uuid,t.name],category_uuid:h})}));const l=e.find((e=>"Other"===e.name&&!t.some((t=>t.name===e.name)))),d=l?i.find((t=>t.uuid===l.exit_uuid)):null,c=(null==d?void 0:d.uuid)||Xt(),h=(null==l?void 0:l.uuid)||Xt();return s.push({uuid:h,name:"Other",exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==d?void 0:d.destination_uuid)||null}),{router:{type:"switch",cases:a,categories:s,default_category_uuid:h,operand:"@contact.groups",result_name:n},exits:r}})(n,s,r,a,t.result_name||"");return{uuid:e.uuid,actions:e.actions||[],router:l,exits:d}},router:{type:"switch",operand:"@contact.groups"},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Zu={type:"split_by_random",name:"Random Split",group:Qh.split,flowTypes:[Zh,Wh,Yh],form:{categories:{type:"array",helpText:"Define the buckets to randomly split contacts into",required:!0,itemLabel:"Bucket",sortable:!0,minItems:2,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Bucket name",required:!0}}}},layout:["categories"],validate:t=>{const e={};if(t.categories&&Array.isArray(t.categories)){const i=t.categories.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim()));i.length<2&&(e.categories="At least 2 buckets are required for random split");const o=[],n=new Map;if(i.forEach((t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())})),n.forEach((t=>{t.length>1&&o.push(...t)})),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate bucket names found: ${t.join(", ")}`}}return{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=(null===(i=null===(e=t.router)||void 0===e?void 0:e.categories)||void 0===i?void 0:i.map((t=>({name:t.name}))))||[];return{uuid:t.uuid,categories:o}},fromFormData:(t,e)=>{var i;const o=(t.categories||[]).filter((t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()})).map((t=>t.name.trim())),n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],{router:r,exits:a}=((t,e=[],i=[])=>{const o=[],n=[];return t.forEach((t=>{const s=e.find((e=>e.name===t)),r=s?i.find((t=>t.uuid===s.exit_uuid)):null,a=(null==r?void 0:r.uuid)||Xt(),l=(null==s?void 0:s.uuid)||Xt();o.push({uuid:l,name:t,exit_uuid:a}),n.push({uuid:a,destination_uuid:(null==r?void 0:r.destination_uuid)||null})})),{router:{type:"random",categories:o},exits:n}})(o,n,s);return{uuid:e.uuid,actions:e.actions||[],router:r,exits:a}},router:{type:"random"},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Yu=[{value:"0",name:"first result"},{value:"1",name:"second result"},{value:"2",name:"third result"},{value:"3",name:"fourth result"},{value:"4",name:"fifth result"},{value:"5",name:"sixth result"},{value:"6",name:"seventh result"},{value:"7",name:"eighth result"},{value:"8",name:"ninth result"},{value:"9",name:"tenth result"},{value:"10",name:"11th result"},{value:"11",name:"12th result"},{value:"12",name:"13th result"},{value:"13",name:"14th result"},{value:"14",name:"15th result"},{value:"15",name:"16th result"},{value:"16",name:"17th result"},{value:"17",name:"18th result"},{value:"18",name:"19th result"},{value:"19",name:"20th result"}],Gu=[{value:"",name:"Don't delimit result"},{value:" ",name:"Delimited by spaces"},{value:".",name:"Delimited by periods"},{value:"+",name:"Delimited by plusses"}],Ku={type:"split_by_run_result",name:"Split by Result",aliases:["split_by_run_result_delimited"],group:Qh.split,flowTypes:[Zh,Wh,Yh],dialogSize:"large",form:{result:{type:"select",required:!0,searchable:!1,clearable:!1,placeholder:"Select a result...",getDynamicOptions:()=>{const t=Sd();return t?t.getState().getFlowResults().map((t=>({value:t.key,name:t.name}))):[]},valueKey:"value",nameKey:"name"},delimit_by:{type:"select",required:!1,searchable:!1,clearable:!1,options:Gu,valueKey:"value",nameKey:"name",maxWidth:"180px"},delimit_index:{type:"select",required:!1,searchable:!1,clearable:!1,options:Yu,valueKey:"value",nameKey:"name",maxWidth:"140px",conditions:{visible:t=>{var e,i;const o=null===(i=null===(e=t.delimit_by)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return void 0!==o&&""!==o}}},rules:Uu(Lu(Mu()),""),result_name:Au},layout:[{type:"row",label:"Flow Result",helpText:"Select a flow result and optionally delimit it to split on a specific part",items:["result","delimit_by","delimit_index"]},"rules","result_name"],validate:t=>{const e={};return t.result&&0!==t.result.length||(e.result="A flow result is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:(t,e)=>{var i,o,n;const s=null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand,r=s?{...s,value:s.value||s.id}:null,a=qu(t),l=((null===(o=t.router)||void 0===o?void 0:o.operand)||"").match(/field\(results\.[\w]+,\s*(\d+),\s*"(.+?)"\)/),d=null!==l,c=d?parseInt(l[1],10):0,h=d?l[2]:"";return{uuid:t.uuid,result:r?[r]:[],delimit_by:d?[Gu.find((t=>t.value===h))]:[Gu[0]],delimit_index:d?[Yu.find((t=>t.value===String(c)))]:[Yu[0]],rules:a,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||""}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=null===(i=t.result)||void 0===i?void 0:i[0];if(!c)return e;let h;const u=c.value||c.id,p=null===(n=null===(o=t.delimit_by)||void 0===o?void 0:o[0])||void 0===n?void 0:n.value;if(void 0!==p&&""!==p){h=`@(field(results.${u}, ${null!==(a=null===(r=null===(s=t.delimit_index)||void 0===s?void 0:s[0])||void 0===r?void 0:r.value)&&void 0!==a?a:"0"}, "${p}"))`}else h=`@results.${u}`;const m=Fu(t),g=(null===(l=e.router)||void 0===l?void 0:l.categories)||[],f=e.exits||[],v=(null===(d=e.router)||void 0===d?void 0:d.cases)||[],{router:y,exits:b}=Le(h,m,Ou,g,f,v),x={...y};return t.result_name&&""!==t.result_name.trim()&&(x.result_name=t.result_name.trim()),{...e,router:x,exits:b}},toUIConfig:t=>{var e,i,o,n,s,r;const a=null===(e=t.result)||void 0===e?void 0:e[0];if(!a)return{};const l={operand:{id:a.value,name:a.name,type:"result"}},d=null===(o=null===(i=t.delimit_by)||void 0===i?void 0:i[0])||void 0===o?void 0:o.value,c=void 0!==d&&""!==d;return c&&(l.index=parseInt(null!==(r=null===(s=null===(n=t.delimit_index)||void 0===n?void 0:n[0])||void 0===s?void 0:s.value)&&void 0!==r?r:"0",10),l.delimiter=d),l.type=c?"split_by_run_result_delimited":"split_by_run_result",l},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Xu={type:"split_by_scheme",name:"Split by URN Type",group:Qh.split,flowTypes:[Zh,Wh,Yh],form:{schemes:{type:"select",label:"Channel Types",helpText:"The contact's URN is the address they used to reach you such as their phone number or a Facebook ID. Select which URN types to split by.",required:!0,options:Fh.map((t=>({value:t.scheme,name:t.name}))),multi:!0,searchable:!0,placeholder:"Select the channels to split by..."},result_name:Au},layout:["schemes","result_name"],validate:t=>{const e={};return t.schemes&&Array.isArray(t.schemes)&&0!==t.schemes.length||(e.schemes="At least one channel type is required"),{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach((t=>{var e;"has_only_phrase"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&o.push(t.arguments[0])})),{uuid:t.uuid,schemes:o.map((t=>{const e=Fh.find((e=>e.scheme===t));return{value:t,name:(null==e?void 0:e.name)||t}})),result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.schemes||[]).filter((t=>t)).map((t=>"string"==typeof t?t:t.value)),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=((t,e=[],i=[],o=[],n="")=>{const s=[],r=[],a=[];t.forEach((t=>{const n=Fh.find((e=>e.scheme===t)),l=(null==n?void 0:n.name)||t,d=e.find((t=>t.name===l)),c=d?i.find((t=>t.uuid===d.exit_uuid)):null,h=o.find((e=>{var i;return(null===(i=e.arguments)||void 0===i?void 0:i[0])===t})),u=(null==c?void 0:c.uuid)||Xt(),p=(null==d?void 0:d.uuid)||Xt(),m=(null==h?void 0:h.uuid)||Xt();s.push({uuid:p,name:l,exit_uuid:u}),r.push({uuid:u,destination_uuid:(null==c?void 0:c.destination_uuid)||null}),a.push({uuid:m,type:"has_only_phrase",arguments:[t],category_uuid:p})}));const l=e.find((e=>{const i=t.some((t=>{const i=Fh.find((e=>e.scheme===t));return(null==i?void 0:i.name)===e.name}));return"Other"===e.name&&!i})),d=l?i.find((t=>t.uuid===l.exit_uuid)):null,c=(null==d?void 0:d.uuid)||Xt(),h=(null==l?void 0:l.uuid)||Xt();return s.push({uuid:h,name:"Other",exit_uuid:c}),r.push({uuid:c,destination_uuid:(null==d?void 0:d.destination_uuid)||null}),{router:{type:"switch",cases:a,categories:s,default_category_uuid:h,operand:"@(urn_parts(contact.urn).scheme)",result_name:n},exits:r}})(n,s,r,a,t.result_name||"");return{uuid:e.uuid,actions:e.actions||[],router:l,exits:d}},router:{type:"switch",operand:"@(urn_parts(contact.urn).scheme)"},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Qu={type:"split_by_subflow",name:"Enter a Flow",group:Xh.trigger,flowTypes:[Zh,Wh,Yh],showAsAction:!0,form:{flow:{type:"select",required:!0,placeholder:"Select a flow...",helpText:"Once the subflow is complete or expires, the contact will return here",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name"}},layout:["flow"],render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"enter_flow"===t.type));return H`
8516
8525
  <div class="body">
8517
- ${Ph([null==i?void 0:i.flow],"flow")}
8526
+ ${Nh([null==i?void 0:i.flow],"flow")}
8518
8527
  </div>
8519
- `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"enter_flow"===t.type));return{uuid:t.uuid,flow:(null==i?void 0:i.flow)?[{uuid:i.flow.uuid,name:i.flow.name}]:[]}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"enter_flow"===t.type)),a={type:"enter_flow",uuid:(null==r?void 0:r.uuid)||Xt(),flow:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""}},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],h=l.find((t=>"Complete"===t.name)),u=h?d.find((t=>t.uuid===h.exit_uuid)):null,p=h?c.find((t=>t.category_uuid===h.uuid)):null,m=(null==h?void 0:h.uuid)||Xt(),g=(null==u?void 0:u.uuid)||Xt(),f=(null==p?void 0:p.uuid)||Xt(),v=l.find((t=>"Expired"===t.name)),y=v?d.find((t=>t.uuid===v.exit_uuid)):null,b=(null==v?void 0:v.uuid)||Xt(),x=(null==y?void 0:y.uuid)||Xt(),_=[{uuid:m,name:"Complete",exit_uuid:g},{uuid:b,name:"Expired",exit_uuid:x}],w=[{uuid:g,destination_uuid:(null==u?void 0:u.destination_uuid)||null},{uuid:x,destination_uuid:(null==y?void 0:y.destination_uuid)||null}],k={type:"switch",categories:_,default_category_uuid:b,operand:"@child.status",cases:[{uuid:f,type:"has_only_text",arguments:["completed"],category_uuid:m}]};return{uuid:e.uuid,actions:[a],router:k,exits:w}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Xu={type:"split_by_ticket",name:"Open Ticket",group:Gh.trigger,flowTypes:[Hh,Vh,Wh],showAsAction:!0,form:{topic:{type:"select",label:"Topic",required:!0,placeholder:"Select a topic",options:[],endpoint:"/api/v2/topics.json",valueKey:"uuid",nameKey:"name",maxWidth:"200px"},assignee:{type:"select",label:"Assignee",required:!1,placeholder:"Select an agent (optional)",endpoint:"/api/v2/users.json",valueKey:"uuid",getName:t=>t.name||[t.first_name,t.last_name].join(" "),clearable:!0},note:{type:"textarea",label:"Note",required:!1,placeholder:"Enter a note for the ticket (optional)",minHeight:100}},layout:[{type:"row",items:["topic","assignee"]},"note"],render:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"open_ticket"===t.type));return H`
8528
+ `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"enter_flow"===t.type));return{uuid:t.uuid,flow:(null==i?void 0:i.flow)?[{uuid:i.flow.uuid,name:i.flow.name}]:[]}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"enter_flow"===t.type)),a={type:"enter_flow",uuid:(null==r?void 0:r.uuid)||Xt(),flow:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""}},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],h=l.find((t=>"Complete"===t.name)),u=h?d.find((t=>t.uuid===h.exit_uuid)):null,p=h?c.find((t=>t.category_uuid===h.uuid)):null,m=(null==h?void 0:h.uuid)||Xt(),g=(null==u?void 0:u.uuid)||Xt(),f=(null==p?void 0:p.uuid)||Xt(),v=l.find((t=>"Expired"===t.name)),y=v?d.find((t=>t.uuid===v.exit_uuid)):null,b=(null==v?void 0:v.uuid)||Xt(),x=(null==y?void 0:y.uuid)||Xt(),_=[{uuid:m,name:"Complete",exit_uuid:g},{uuid:b,name:"Expired",exit_uuid:x}],w=[{uuid:g,destination_uuid:(null==u?void 0:u.destination_uuid)||null},{uuid:x,destination_uuid:(null==y?void 0:y.destination_uuid)||null}],k={type:"switch",categories:_,default_category_uuid:b,operand:"@child.status",cases:[{uuid:f,type:"has_only_text",arguments:["completed"],category_uuid:m}]};return{uuid:e.uuid,actions:[a],router:k,exits:w}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},Ju={type:"split_by_ticket",name:"Open Ticket",group:Xh.trigger,flowTypes:[Zh,Wh,Yh],showAsAction:!0,form:{topic:{type:"select",label:"Topic",required:!0,placeholder:"Select a topic",options:[],endpoint:"/api/v2/topics.json",valueKey:"uuid",nameKey:"name",maxWidth:"200px"},assignee:{type:"select",label:"Assignee",required:!1,placeholder:"Select an agent (optional)",endpoint:"/api/v2/users.json",valueKey:"uuid",getName:t=>t.name||[t.first_name,t.last_name].join(" "),clearable:!0},note:{type:"textarea",label:"Note",required:!1,placeholder:"Enter a note for the ticket (optional)",minHeight:100}},layout:[{type:"row",items:["topic","assignee"]},"note"],render:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"open_ticket"===t.type));return H`
8520
8529
  <div class="body">
8521
8530
  ${(null===(i=null==o?void 0:o.topic)||void 0===i?void 0:i.name)||"Configure ticket"}
8522
8531
  </div>
8523
- `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"open_ticket"===t.type));return{uuid:t.uuid,topic:(null==i?void 0:i.topic)?[{uuid:i.topic.uuid,name:i.topic.name}]:[],assignee:(null==i?void 0:i.assignee)?[{uuid:i.assignee.uuid,name:i.assignee.name}]:[],note:(null==i?void 0:i.note)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"open_ticket"===t.type)),r={type:"open_ticket",uuid:(null==s?void 0:s.uuid)||Xt(),topic:t.topic&&t.topic.length>0?{uuid:t.topic[0].uuid,name:t.topic[0].name}:void 0,assignee:t.assignee&&t.assignee.length>0?{uuid:t.assignee[0].uuid,name:t.assignee[0].name||[t.assignee[0].first_name,t.assignee[0].last_name].join(" ")}:void 0,note:t.note||""},a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=De("@locals._new_ticket",{type:"has_text",arguments:[]},a,l,d);return{uuid:e.uuid,actions:[r],router:c,exits:h}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},Qu='@(json(object(\n "contact", object(\n "uuid", contact.uuid, \n "name", contact.name, \n "urn", contact.urn\n ),\n "flow", object(\n "uuid", run.flow.uuid, \n "name", run.flow.name\n ),\n "results", foreach_value(results, extract_object, "value", "category")\n)))',Ju={type:"split_by_webhook",name:"Call Webhook",group:Gh.services,flowTypes:[Hh,Vh,Wh],showAsAction:!0,form:{method:{type:"select",required:!0,options:["GET","POST","PUT","DELETE","HEAD","PATCH"],maxWidth:"120px",searchable:!1},url:{type:"text",required:!0,evaluated:!0,placeholder:"https://example.com/webhook"},headers:{type:"key-value",sortable:!0,keyPlaceholder:"Header name",valuePlaceholder:"Header value",minRows:0},body:{type:"textarea",evaluated:!0,placeholder:"Request body content (JSON, XML, etc.)",minHeight:200,dependsOn:["method"],computeValue:(t,e,i)=>{if("POST"===(Array.isArray(t.method)&&t.method.length>0?t.method[0].value||t.method[0].name:t.method)){if(!e||""===e.trim())return Qu}else{const t=(null==i?void 0:i.body)||"";if(!t||""===t.trim()||!e||""===e.trim()||e.trim()===Qu.trim())return""}return e}}},layout:[{type:"row",items:["method","url"]},{type:"group",label:"Headers",items:["headers"],collapsible:!0,collapsed:!0,helpText:"Configure authentication or custom headers",getGroupValueCount:t=>{var e;return(null===(e=t.headers)||void 0===e?void 0:e.length)||0}},{type:"group",label:"Body",items:["body"],collapsible:!0,collapsed:!0,helpText:"Configure the request payload",getGroupValueCount:t=>!(!t.body||""===t.body.trim()||t.body===Qu)}],render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_webhook"===t.type));return H`
8532
+ `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"open_ticket"===t.type));return{uuid:t.uuid,topic:(null==i?void 0:i.topic)?[{uuid:i.topic.uuid,name:i.topic.name}]:[],assignee:(null==i?void 0:i.assignee)?[{uuid:i.assignee.uuid,name:i.assignee.name}]:[],note:(null==i?void 0:i.note)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"open_ticket"===t.type)),r={type:"open_ticket",uuid:(null==s?void 0:s.uuid)||Xt(),topic:t.topic&&t.topic.length>0?{uuid:t.topic[0].uuid,name:t.topic[0].name}:void 0,assignee:t.assignee&&t.assignee.length>0?{uuid:t.assignee[0].uuid,name:t.assignee[0].name||[t.assignee[0].first_name,t.assignee[0].last_name].join(" ")}:void 0,note:t.note||""},a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=De("@locals._new_ticket",{type:"has_text",arguments:[]},a,l,d);return{uuid:e.uuid,actions:[r],router:c,exits:h}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},tp='@(json(object(\n "contact", object(\n "uuid", contact.uuid, \n "name", contact.name, \n "urn", contact.urn\n ),\n "flow", object(\n "uuid", run.flow.uuid, \n "name", run.flow.name\n ),\n "results", foreach_value(results, extract_object, "value", "category")\n)))',ep={type:"split_by_webhook",name:"Call Webhook",group:Xh.services,flowTypes:[Zh,Wh,Yh],showAsAction:!0,form:{method:{type:"select",required:!0,options:["GET","POST","PUT","DELETE","HEAD","PATCH"],maxWidth:"120px",searchable:!1},url:{type:"text",required:!0,evaluated:!0,placeholder:"https://example.com/webhook"},headers:{type:"key-value",sortable:!0,keyPlaceholder:"Header name",valuePlaceholder:"Header value",minRows:0},body:{type:"textarea",evaluated:!0,placeholder:"Request body content (JSON, XML, etc.)",minHeight:200,dependsOn:["method"],computeValue:(t,e,i)=>{if("POST"===(Array.isArray(t.method)&&t.method.length>0?t.method[0].value||t.method[0].name:t.method)){if(!e||""===e.trim())return tp}else{const t=(null==i?void 0:i.body)||"";if(!t||""===t.trim()||!e||""===e.trim()||e.trim()===tp.trim())return""}return e}}},layout:[{type:"row",items:["method","url"]},{type:"group",label:"Headers",items:["headers"],collapsible:!0,collapsed:!0,helpText:"Configure authentication or custom headers",getGroupValueCount:t=>{var e;return(null===(e=t.headers)||void 0===e?void 0:e.length)||0}},{type:"group",label:"Body",items:["body"],collapsible:!0,collapsed:!0,helpText:"Configure the request payload",getGroupValueCount:t=>!(!t.body||""===t.body.trim()||t.body===tp)}],render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_webhook"===t.type));return H`
8524
8533
  <div
8525
8534
  class="body"
8526
8535
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto;"
8527
8536
  >
8528
8537
  ${(null==i?void 0:i.url)||"Configure webhook"}
8529
8538
  </div>
8530
- `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_webhook"===t.type));return{uuid:t.uuid,method:(null==i?void 0:i.method)||"GET",url:(null==i?void 0:i.url)||"",headers:(null==i?void 0:i.headers)||[],body:(null==i?void 0:i.body)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.method)&&t.method.length>0?t.method[0]:{value:"GET",name:"GET"},r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_webhook"===t.type)),a={type:"call_webhook",uuid:(null==r?void 0:r.uuid)||Xt(),method:s.value,url:t.url||"",headers:t.headers||[],body:t.body||""},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@webhook.status",{type:"has_number_between",arguments:["200","299"]},l,d,c);return{uuid:e.uuid,actions:[a],router:h,exits:u}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},tp={type:"split_by_resthook",name:"Call Resthook",group:Gh.services,flowTypes:[Hh,Vh,Wh],showAsAction:!0,form:{resthook:{type:"select",label:"Resthook",required:!0,searchable:!0,clearable:!1,placeholder:"Select a resthook...",endpoint:"/api/v2/resthooks.json",valueKey:"resthook",nameKey:"resthook",helpText:"Select the resthook to call"},result_name:Cu},layout:["resthook","result_name"],validate:t=>{const e={};return t.resthook&&0!==t.resthook.length||(e.resthook="A resthook is required"),{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_resthook"===t.type));return H`
8539
+ `},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_webhook"===t.type));return{uuid:t.uuid,method:(null==i?void 0:i.method)||"GET",url:(null==i?void 0:i.url)||"",headers:(null==i?void 0:i.headers)||[],body:(null==i?void 0:i.body)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.method)&&t.method.length>0?t.method[0]:{value:"GET",name:"GET"},r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_webhook"===t.type)),a={type:"call_webhook",uuid:(null==r?void 0:r.uuid)||Xt(),method:s.value,url:t.url||"",headers:t.headers||[],body:t.body||""},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@webhook.status",{type:"has_number_between",arguments:["200","299"]},l,d,c);return{uuid:e.uuid,actions:[a],router:h,exits:u}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},ip={type:"split_by_resthook",name:"Call Resthook",group:Xh.services,flowTypes:[Zh,Wh,Yh],showAsAction:!0,form:{resthook:{type:"select",label:"Resthook",required:!0,searchable:!0,clearable:!1,placeholder:"Select a resthook...",endpoint:"/api/v2/resthooks.json",valueKey:"resthook",nameKey:"resthook",helpText:"Select the resthook to call"},result_name:Au},layout:["resthook","result_name"],validate:t=>{const e={};return t.resthook&&0!==t.resthook.length||(e.resthook="A resthook is required"),{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_resthook"===t.type));return H`
8531
8540
  <div
8532
8541
  class="body"
8533
8542
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto;"
8534
8543
  >
8535
8544
  ${(null==i?void 0:i.resthook)||"Configure resthook"}
8536
8545
  </div>
8537
- `},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_resthook"===t.type));return{uuid:t.uuid,resthook:(null==o?void 0:o.resthook)?[{resthook:o.resthook}]:[],result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.resthook)&&t.resthook.length>0?t.resthook[0]:null;if(!s)return e;const r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_resthook"===t.type)),a={type:"call_resthook",uuid:(null==r?void 0:r.uuid)||Xt(),resthook:s.resthook},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@webhook.json.status",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},ep={type:"split_by_llm",name:"Call AI",group:Gh.services,flowTypes:[Hh,Vh,Wh],features:[Zh],showAsAction:!0,render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return H`
8546
+ `},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_resthook"===t.type));return{uuid:t.uuid,resthook:(null==o?void 0:o.resthook)?[{resthook:o.resthook}]:[],result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.resthook)&&t.resthook.length>0?t.resthook[0]:null;if(!s)return e;const r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_resthook"===t.type)),a={type:"call_resthook",uuid:(null==r?void 0:r.uuid)||Xt(),resthook:s.resthook},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@webhook.json.status",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},op={type:"split_by_llm",name:"Call AI",group:Xh.services,flowTypes:[Zh,Wh,Yh],features:[Gh],showAsAction:!0,render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return H`
8538
8547
  <div
8539
8548
  class="body"
8540
8549
  style="word-wrap: break-word; overflow-wrap: break-word; hyphens: auto; max-width: 180px; max-height: 6.2em; margin-bottom:10px; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical;"
8541
8550
  >
8542
8551
  ${(null==i?void 0:i.instructions)||"Configure AI instructions"}
8543
8552
  </div>
8544
- `},form:{llm:{type:"select",label:"LLM",required:!0,options:[],endpoint:"/test-assets/select/llms.json",searchable:!0,valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM..."},input:{type:"text",label:"Input",helpText:"The input the AI will process",required:!0,evaluated:!0,placeholder:"@input"},instructions:{type:"textarea",label:"Instructions",helpText:"Tell the AI what to do with the input. The result can be referenced as **`@locals._llm_output`**",required:!0,evaluated:!0,placeholder:"Enter instructions for the AI model...",minHeight:130}},layout:["llm","input","instructions"],toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return{uuid:t.uuid,llm:(null==i?void 0:i.llm)?[{value:i.llm.uuid,name:i.llm.name}]:[],input:(null==i?void 0:i.input)||"@input",instructions:(null==i?void 0:i.instructions)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_llm"===t.type)),a={type:"call_llm",uuid:(null==r?void 0:r.uuid)||Xt(),llm:s?{uuid:s.value,name:s.name}:{uuid:"",name:""},input:t.input||"@input",instructions:t.instructions||"",output_local:"_llm_output"},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@locals._llm_output",{type:"has_text",arguments:[]},l,d,c);return{uuid:e.uuid,actions:[a],router:h,exits:u}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},ip={type:"split_by_llm_categorize",name:"Split by AI",group:Gh.services,flowTypes:[],features:[Zh],form:{llm:{type:"select",label:"LLM",helpText:"Select the LLM to use for categorization",required:!0,endpoint:"/test-assets/select/llms.json",valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM..."},input:{type:"text",label:"Input",helpText:"The input to categorize (usually @input)",required:!0,evaluated:!0,placeholder:"@input"},categories:{type:"array",helpText:"Define the categories for classification",required:!0,sortable:!0,itemLabel:"Category",minItems:1,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Category name",required:!0}}}},layout:["llm","input","categories"],validate:t=>{const e={};if(t.categories&&Array.isArray(t.categories)){const i=t.categories.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim())),o=[],n=new Map;if(i.forEach((t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())})),n.forEach((t=>{t.length>1&&o.push(...t)})),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate category names found: ${t.join(", ")}`}}return{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return H`
8553
+ `},form:{llm:{type:"select",label:"LLM",required:!0,options:[],endpoint:"/test-assets/select/llms.json",searchable:!0,valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM..."},input:{type:"text",label:"Input",helpText:"The input the AI will process",required:!0,evaluated:!0,placeholder:"@input"},instructions:{type:"textarea",label:"Instructions",helpText:"Tell the AI what to do with the input. The result can be referenced as **`@locals._llm_output`**",required:!0,evaluated:!0,placeholder:"Enter instructions for the AI model...",minHeight:130}},layout:["llm","input","instructions"],toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return{uuid:t.uuid,llm:(null==i?void 0:i.llm)?[{value:i.llm.uuid,name:i.llm.name}]:[],input:(null==i?void 0:i.input)||"@input",instructions:(null==i?void 0:i.instructions)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_llm"===t.type)),a={type:"call_llm",uuid:(null==r?void 0:r.uuid)||Xt(),llm:s?{uuid:s.value,name:s.name}:{uuid:"",name:""},input:t.input||"@input",instructions:t.instructions||"",output_local:"_llm_output"},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=De("@locals._llm_output",{type:"has_text",arguments:[]},l,d,c);return{uuid:e.uuid,actions:[a],router:h,exits:u}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},np={type:"split_by_llm_categorize",name:"Split by AI",group:Xh.services,flowTypes:[],features:[Gh],form:{llm:{type:"select",label:"LLM",helpText:"Select the LLM to use for categorization",required:!0,endpoint:"/test-assets/select/llms.json",valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM..."},input:{type:"text",label:"Input",helpText:"The input to categorize (usually @input)",required:!0,evaluated:!0,placeholder:"@input"},categories:{type:"array",helpText:"Define the categories for classification",required:!0,sortable:!0,itemLabel:"Category",minItems:1,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Category name",required:!0}}}},layout:["llm","input","categories"],validate:t=>{const e={};if(t.categories&&Array.isArray(t.categories)){const i=t.categories.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim())),o=[],n=new Map;if(i.forEach((t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())})),n.forEach((t=>{t.length>1&&o.push(...t)})),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate category names found: ${t.join(", ")}`}}return{valid:0===Object.keys(e).length,errors:e}},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type));return H`
8545
8554
  <div class="body">Categorize with ${i.llm.name}</div>
8546
- `},toFormData:t=>{var e,i,o;const n=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type)),s=(null===(o=null===(i=t.router)||void 0===i?void 0:i.categories)||void 0===o?void 0:o.filter((t=>"Other"!==t.name&&"Failure"!==t.name)).map((t=>({name:t.name}))))||[];return{uuid:t.uuid,llm:(null==n?void 0:n.llm)?[{value:n.llm.uuid,name:n.llm.name}]:[],input:(null==n?void 0:n.input)||"@input",categories:s}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=(t.categories||[]).filter((t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()})).map((t=>t.name.trim())),a=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_llm"===t.type)),l={type:"call_llm",uuid:(null==a?void 0:a.uuid)||Xt(),llm:s?{uuid:s.value,name:s.name}:{uuid:"",name:""},instructions:'@(prompt("categorize", slice(node.categories, 0, -2)))',input:t.input||"@input",output_local:"_llm_output"},d=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],c=e.exits||[],h=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:u,exits:p}=((t,e,i,o=[],n=[],s=[])=>{const r=[],a=[],l=[];e.forEach((t=>{const e=Te({name:t,existingCategories:o,existingExits:n,existingCases:s,caseConfig:i(t)});r.push(e.category),a.push(e.exit),e.case&&l.push(e.case)}));const d=Te({name:"Other",existingCategories:o,existingExits:n});r.push(d.category),a.push(d.exit);const c=Te({name:"Failure",existingCategories:o,existingExits:n,existingCases:s,caseConfig:{type:"has_only_text",arguments:["<ERROR>"]}});return r.push(c.category),a.push(c.exit),c.case&&l.push(c.case),{router:{type:"switch",categories:r,default_category_uuid:d.category.uuid,operand:t,cases:l},exits:a}})("@locals._llm_output",r,(t=>({type:"has_only_text",arguments:[t]})),d,c,h);return{uuid:e.uuid,actions:[l],router:u,exits:p}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},op={type:"wait_for_audio",name:"Make Recording",group:Kh.wait,flowTypes:[Hh],form:{result_name:{type:"text",label:"Result Name",required:!1,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow"}},layout:["result_name"],toFormData:t=>{var e;return{uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i;const o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],n=e.exits||[];let s,r=o.find((t=>"All Responses"===t.name));if(r)s=n.find((t=>t.uuid===r.exit_uuid))||{uuid:r.exit_uuid,destination_uuid:null};else{const t=Xt();r={uuid:Xt(),name:"All Responses",exit_uuid:t},s={uuid:t,destination_uuid:null}}const a={type:"switch",operand:"@input",default_category_uuid:r.uuid,cases:[],categories:[r],wait:{type:"msg",hint:{type:"audio"}}};return t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim()),{...e,router:a,exits:[s]}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},np=["Answered","No Answer","Busy","Failed"],sp=[{type:"has_only_text",arguments:["answered"],categoryName:"Answered"},{type:"has_only_text",arguments:["no_answer"],categoryName:"No Answer"},{type:"has_only_text",arguments:["busy"],categoryName:"Busy"}],rp={type:"wait_for_dial",name:"Redirect Call",group:Kh.wait,flowTypes:[Hh],router:{type:"switch",defaultCategory:"Failed",rules:sp.map((t=>({type:t.type,arguments:t.arguments,categoryName:t.categoryName})))},form:{phone:{type:"text",label:"Phone Number",required:!0,evaluated:!0,placeholder:"Phone number or expression"},dial_limit_seconds:{type:"text",label:"Dial Limit (seconds)",required:!1,placeholder:"60"},call_limit_seconds:{type:"text",label:"Call Limit (seconds)",required:!1,placeholder:"7200"},result_name:Cu},layout:["phone",{type:"row",items:["dial_limit_seconds","call_limit_seconds"]},"result_name"],toFormData:t=>{var e,i;const o=null===(e=t.router)||void 0===e?void 0:e.wait;return{uuid:t.uuid,phone:(null==o?void 0:o.phone)||"",dial_limit_seconds:(null==o?void 0:o.dial_limit_seconds)?String(o.dial_limit_seconds):"",call_limit_seconds:(null==o?void 0:o.call_limit_seconds)?String(o.call_limit_seconds):"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const t of np){const e=n.find((e=>e.name===t));if(e){a.push(e);const t=s.find((t=>t.uuid===e.exit_uuid));l.push(t||{uuid:e.exit_uuid,destination_uuid:null})}else{const e=Xt();a.push({uuid:Xt(),name:t,exit_uuid:e}),l.push({uuid:e,destination_uuid:null})}}for(const t of sp){const e=a.find((e=>e.name===t.categoryName));if(!e)continue;const i=r.find((e=>{var i;return e.type===t.type&&(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.arguments[0]}));d.push({uuid:(null==i?void 0:i.uuid)||Xt(),type:t.type,arguments:t.arguments,category_uuid:e.uuid})}const c=a.find((t=>"Failed"===t.name)),h=(t.phone||"").trim(),u=parseInt(t.dial_limit_seconds,10),p=parseInt(t.call_limit_seconds,10),m={type:"dial",phone:h};!isNaN(u)&&u>0&&(m.dial_limit_seconds=u),!isNaN(p)&&p>0&&(m.call_limit_seconds=p);const g={type:"switch",operand:'@(default(resume.dial.status, ""))',default_category_uuid:null==c?void 0:c.uuid,cases:d,categories:a,wait:m};return t.result_name&&""!==t.result_name.trim()&&(g.result_name=t.result_name.trim()),{...e,router:g,exits:l}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},ap={type:"wait_for_digits",name:"Wait for Digits",group:Kh.wait,flowTypes:[Hh],dialogSize:"large",form:{rules:Fu(Iu($u.filter((t=>Du.has(t.type)))),""),result_name:Cu},layout:[{type:"text",text:"Rules match against all digits pressed by the caller followed by the # sign."},"rules","result_name"],validate:t=>({valid:!0,errors:{}}),toFormData:t=>{var e;const i=Bu(t);return{uuid:t.uuid,rules:i,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=Nu(t),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=Le("@input.text",n,Mu,s,r,a),c={...l,wait:{type:"msg",hint:{type:"digits"}}};return t.result_name&&""!==t.result_name.trim()&&(c.result_name=t.result_name.trim()),{...e,router:c,exits:d}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},lp=["1","2","3","4","5","6","7","8","9","0"];function dp(t){return`digit_${t}`}const cp={type:"wait_for_menu",name:"Wait for Menu",group:Kh.wait,flowTypes:[Hh],form:{...Object.fromEntries(lp.map((t=>[dp(t),{type:"text",required:!1,placeholder:"",flavor:"xsmall"}]))),result_name:Cu},layout:[{type:"row",items:["digit_1","digit_2","digit_3"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_1:"1",digit_2:"2",digit_3:"3"}},{type:"row",items:["digit_4","digit_5","digit_6"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_4:"4",digit_5:"5",digit_6:"6"}},{type:"row",items:["digit_7","digit_8","digit_9"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_7:"7",digit_8:"8",digit_9:"9"}},{type:"row",items:[{type:"spacer"},"digit_0",{type:"spacer"}],gap:"2rem",inlineLabels:{digit_0:"0"}},"result_name"],toFormData:t=>{var e,i,o,n;const s={uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""};for(const t of lp)s[dp(t)]="";if((null===(i=t.router)||void 0===i?void 0:i.cases)&&(null===(o=t.router)||void 0===o?void 0:o.categories))for(const e of t.router.cases)if("has_number_eq"===e.type&&(null===(n=e.arguments)||void 0===n?void 0:n[0])){const i=e.arguments[0],o=t.router.categories.find((t=>t.uuid===e.category_uuid));o&&lp.includes(i)&&(s[dp(i)]=o.name)}return s},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const e of lp){const i=(t[dp(e)]||"").trim();if(!i)continue;let o=a.find((t=>t.name===i));if(!o){const t=n.find((t=>t.name===i));if(t){o=t;const e=s.find((e=>e.uuid===t.exit_uuid));a.push(o),l.push(e||{uuid:t.exit_uuid,destination_uuid:null})}else{const t=Xt();o={uuid:Xt(),name:i,exit_uuid:t},a.push(o),l.push({uuid:t,destination_uuid:null})}}const c=r.find((t=>{var i;return"has_number_eq"===t.type&&(null===(i=t.arguments)||void 0===i?void 0:i[0])===e}));d.push({uuid:(null==c?void 0:c.uuid)||Xt(),type:"has_number_eq",arguments:[e],category_uuid:o.uuid})}const c=n.find((t=>"Other"===t.name));let h;if(c){h=c;const t=s.find((t=>t.uuid===c.exit_uuid));l.push(t||{uuid:c.exit_uuid,destination_uuid:null})}else{const t=Xt();h={uuid:Xt(),name:"Other",exit_uuid:t},l.push({uuid:t,destination_uuid:null})}a.push(h);const u={type:"switch",operand:"@input.text",default_category_uuid:h.uuid,cases:d,categories:a,wait:{type:"msg",hint:{type:"digits",count:1}}};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:l}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},hp=[{value:"60",name:"1 minute"},{value:"120",name:"2 minutes"},{value:"180",name:"3 minutes"},{value:"240",name:"4 minutes"},{value:"300",name:"5 minutes"},{value:"600",name:"10 minutes"},{value:"900",name:"15 minutes"},{value:"1800",name:"30 minutes"},{value:"3600",name:"1 hour"},{value:"7200",name:"2 hours"},{value:"10800",name:"3 hours"},{value:"21600",name:"6 hours"},{value:"43200",name:"12 hours"},{value:"64800",name:"18 hours"},{value:"86400",name:"1 day"},{value:"172800",name:"2 days"},{value:"259200",name:"3 days"},{value:"604800",name:"1 week"}],up=(t,e=[],i=[],o=[])=>{const{router:n,exits:s}=Le("@input.text",t,Mu,e,i,o),r=e.find((t=>"No Response"===t.name||"Timeout"===t.name));if(r){const t=i.find((t=>t.uuid===r.exit_uuid));t&&(n.categories.push(r),s.push({uuid:t.uuid,destination_uuid:t.destination_uuid||null}))}return{router:n,exits:s}},pp={type:"wait_for_response",name:"Wait for Response",group:Kh.wait,flowTypes:[Vh],dialogSize:"large",form:{rules:Fu(Iu(Tu()),"If the message from the contact..."),timeout_enabled:{type:"checkbox",label:t=>t.timeout_enabled?"Continue when there is no response for":"Continue when there is no response..",labelPadding:"4px 8px"},timeout_duration:{type:"select",placeholder:"5 minutes",multi:!1,maxWidth:"100px",flavor:"xsmall",options:hp,conditions:{visible:t=>!0===t.timeout_enabled}},result_name:Cu},layout:["rules","result_name"],gutter:[{type:"row",items:["timeout_enabled","timeout_duration"],gap:"0.5rem"}],validate:t=>{const e={};return{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i,o,n;const s=Bu(t),r=null===(o=null===(i=null===(e=t.router)||void 0===e?void 0:e.wait)||void 0===i?void 0:i.timeout)||void 0===o?void 0:o.seconds;let a=hp.find((t=>t.value===String(r)));return a||(a={value:"300",name:"5 minutes"}),{uuid:t.uuid,rules:s,timeout_enabled:!!r,timeout_duration:a,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||""}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=Nu(t);if(0===c.length){let o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[];const n=[...e.exits||[]];if(t.timeout_enabled){let t=o.find((t=>"No Response"===t.name));if(!t){const e=Xt();t={uuid:Xt(),name:"No Response",exit_uuid:e},o=[...o,t],n.find((t=>t.uuid===e))||n.push({uuid:e,destination_uuid:null})}}else o=o.filter((t=>"No Response"!==t.name));const{router:s,exits:r}=up([],o,n,[]),a={...s,cases:[]};t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim());const l={type:"msg"};if(t.timeout_enabled){let e;e=t.timeout_duration?Array.isArray(t.timeout_duration)&&t.timeout_duration.length>0?parseInt(t.timeout_duration[0].value,10):"string"==typeof t.timeout_duration?parseInt(t.timeout_duration,10):t.timeout_duration&&"object"==typeof t.timeout_duration&&t.timeout_duration.value?parseInt(t.timeout_duration.value,10):300:300,(isNaN(e)||e<=0)&&(e=300);const i=a.categories.find((t=>"No Response"===t.name));i&&(l.timeout={seconds:e,category_uuid:i.uuid})}return a.wait=l,{...e,router:a,exits:r}}const h=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],u=e.exits||[],p=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:m,exits:g}=up(c,h,u,p),f={...m};t.result_name&&""!==t.result_name.trim()&&(f.result_name=t.result_name.trim());const v={type:"msg"};try{if(t.timeout_enabled){let i;if(t.timeout_duration)try{i=parseInt(t.timeout_duration[0].value,10)}catch(t){i=300}const o=null===(r=null===(s=e.router)||void 0===s?void 0:s.categories)||void 0===r?void 0:r.find((t=>"No Response"===t.name)),n=o||{uuid:Xt(),name:"No Response",exit_uuid:Xt()};if(v.timeout={seconds:i,category_uuid:n.uuid},!(null===(a=m.categories)||void 0===a?void 0:a.some((t=>"No Response"===t.name)))&&(m.categories=m.categories||[],m.categories.push(n),!g.some((t=>t.uuid===n.exit_uuid)))){const t={uuid:n.exit_uuid,destination_uuid:(null==o?void 0:o.exit_uuid)&&(null===(d=null===(l=e.exits)||void 0===l?void 0:l.find((t=>t.uuid===o.exit_uuid)))||void 0===d?void 0:d.destination_uuid)||null};g.push(t)}}else if(m.categories){const t=m.categories.findIndex((t=>"No Response"===t.name));if(-1!==t){const e=m.categories[t];m.categories.splice(t,1);const i=g.findIndex((t=>t.uuid===e.exit_uuid));-1!==i&&g.splice(i,1)}}}catch(t){console.error("Error processing timeout configuration:",t)}return f.wait=v,{...e,router:f,exits:g}},localizable:"categories",toLocalizationFormData:Su,fromLocalizationFormData:Au},mp=gp({say_msg:bu,play_audio:xu,set_contact_field:eu,send_broadcast:su,set_run_result:ru,send_msg:au,send_email:lu,start_session:du,set_contact_name:cu,add_contact_groups:hu,remove_contact_groups:uu,set_contact_channel:iu,set_contact_language:ou,set_contact_status:nu,add_contact_urn:tu,add_input_labels:Jh,request_optin:pu,enter_flow:_u});function gp(t){const e={...t};return Object.values(t).forEach((t=>{t.aliases&&t.aliases.forEach((i=>{e[i]=t}))})),e}const fp=gp({execute_actions:{type:"execute_actions"},split_by_contact_field:Uu,split_by_expression:ju,split_by_groups:Vu,split_by_llm:ep,split_by_llm_categorize:ip,split_by_random:Hu,split_by_run_result:Yu,split_by_scheme:Gu,split_by_subflow:Ku,split_by_ticket:Xu,split_by_webhook:Ju,split_by_resthook:tp,wait_for_menu:cp,wait_for_digits:ap,wait_for_audio:op,wait_for_dial:rp,wait_for_response:pp,split_by_airtime:Eu,terminal:{type:"terminal"}});function vp(t,e,i,o,n=20,s=10,r=5,a="top",l=0){const d=r;if("top"===a){const r=e+n,a=o-s;let c=`M ${t} ${e}`;if(t===i)c+=` L ${i} ${a}`;else{const o=i>t?1:-1,n=Math.max(e+d,Math.min(r,a-d)),s=Math.max(e+d,Math.min(n+l,a-d-3)),h=Math.min(d,s-e);h>=1?(c+=` L ${t} ${s-h}`,c+=` Q ${t} ${s}, ${t+o*h} ${s}`):c+=` L ${t} ${s}`;const u=3,p=Math.min(d,Math.max(0,a-s-u));p>=1?(c+=` L ${i-o*p} ${s}`,c+=` Q ${i} ${s}, ${i} ${s+p}`):c+=` L ${i} ${s}`,c+=` L ${i} ${a}`}return c+=` L ${i} ${o}`,c}if("left"===a||"right"===a){const r=e+(o<e?0:n),l="left"===a?-1:1,c=i+l*s,h=c>t?1:-1,u=3,p=h===l?r+2*d:Math.max(r+2*d,o);let m=`M ${t} ${e} L ${t} ${r}`;p-r>d&&(m+=` L ${t} ${p-d}`,m+=` Q ${t} ${p}, ${t+h*d} ${p}`);const g=Math.abs(p-o);if(g<1)m+=` L ${c} ${o}`,m+=` L ${i} ${o}`;else{const t=o<p?-1:1,e=Math.min(d,Math.max(0,Math.floor((g-u)/2)),Math.max(0,s-u));e>=1?(m+=` L ${c-h*e} ${p}`,m+=` Q ${c} ${p}, ${c} ${p+t*e}`,m+=` L ${c} ${o-t*e}`,m+=` Q ${c} ${o}, ${c-l*e} ${o}`):(m+=` L ${c} ${p}`,m+=` L ${c} ${o}`),m+=` L ${i} ${o}`}return m}return`M ${t} ${e} L ${i} ${o}`}class yp{constructor(t,e){this.connections=new Map,this.sources=new Map,this.pendingConnections=[],this.connectionWait=null,this.connectionListeners=new Map,this.dragState=null,this.retryCount=0,this.maxRetries=3,this.activityData=null,this.overlays=new Map,this.hoveredActivityKey=null,this.recentContactsPopup=null,this.recentContactsCache={},this.pendingFetches={},this.hideContactsTimeout=null,this.showContactsTimeout=null,this.connectionDragging=!1,this.canvas=t,this.editor=e}notifyListeners(t,e){(this.connectionListeners.get(t)||[]).forEach((t=>t(e)))}on(t,e){this.connectionListeners.has(t)||this.connectionListeners.set(t,[]),this.connectionListeners.get(t).push(e)}off(t,e){if(!this.connectionListeners.has(t))return;const i=this.connectionListeners.get(t),o=i.indexOf(e);-1!==o&&i.splice(o,1)}makeSource(t){const e=document.getElementById(t);if(!e)return;this.sources.has(t)&&this.sources.get(t)();let i=null;const o=o=>{if(0!==o.button)return;if(this.connections.has(t))return;const n=o.clientX,s=o.clientY,r=e.closest("temba-flow-node"),a=(null==r?void 0:r.getAttribute("uuid"))||"",l=e=>{const o=e.clientX-n,r=e.clientY-s;Math.sqrt(o*o+r*r)>5&&(document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),i=null,this.startDrag(t,a,null,e))},d=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),i=null};document.addEventListener("mousemove",l),document.addEventListener("mouseup",d),i={startX:n,startY:s,onMove:l,onUp:d}};e.addEventListener("mousedown",o),this.sources.set(t,(()=>{e.removeEventListener("mousedown",o),i&&(document.removeEventListener("mousemove",i.onMove),document.removeEventListener("mouseup",i.onUp),i=null)}))}makeTarget(t){}connectIds(t,e,i){this.pendingConnections.push({scope:t,fromId:e,toId:i}),this.processPendingConnections()}processPendingConnections(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.connectionWait=requestAnimationFrame((()=>{const t=[],e=new Set;if(this.pendingConnections.forEach((i=>{const{scope:o,fromId:n,toId:s}=i;this.removeConnectionSVG(n),this.createConnectionSVG(n,o,s)?e.add(s):t.push(i)})),this.pendingConnections=[],e.size>0){const t=new Set;this.connections.forEach((i=>{e.has(i.toId)&&t.add(i.scope)})),this.connections.forEach(((i,o)=>{(e.has(i.toId)||t.has(i.scope))&&this.updateConnectionSVG(o)}))}t.length>0&&this.retryCount<this.maxRetries?(this.retryCount++,this.pendingConnections=t,this.processPendingConnections()):this.retryCount=0}))}determineTargetFace(t,e,i,o){const n=i.left+i.width/2-o.left;return i.top-o.top-e>30?"top":t<n?"left":"right"}getConnectionEndpoints(t,e,i){const o=document.getElementById(t),n=document.getElementById(e);if(!o||!n)return null;const s=this.canvas.getBoundingClientRect(),r=o.getBoundingClientRect(),a=n.getBoundingClientRect();if(0===r.width||0===a.width)return null;const l=r.left+r.width/2-s.left,d=r.bottom-s.top,c=this.determineTargetFace(l,d,a,s),h=new Map;this.connections.forEach((t=>{if(t.toId===e){const e=document.getElementById(t.fromId);if(e){const i=e.getBoundingClientRect(),o=i.left+i.width/2-s.left,n=i.bottom-s.top,r=this.determineTargetFace(o,n,a,s);h.has(r)||h.set(r,[]);const l="top"===r?o:n;h.get(r).push({fromId:t.fromId,sortPos:l})}}})),h.has(c)||h.set(c,[]);const u=h.get(c);if(!u.find((e=>e.fromId===t))){const e="top"===c?l:d;u.push({fromId:t,sortPos:e})}u.sort(((t,e)=>t.sortPos-e.sortPos));const p=u.findIndex((e=>e.fromId===t)),m=u.length,g=a.left-s.left,f=a.top-s.top,v=a.width,y=a.height;let b,x;if("top"===c){b=1===m?g+v/2:g+.2*v+.6*v*(p+.5)/m,x=f}else if("left"===c){b=g;x=1===m?f+y/2:f+.2*y+.6*y*(p+.5)/m}else{b=g+v;x=1===m?f+y/2:f+.2*y+.6*y*(p+.5)/m}let _=0;if("top"===c&&i){const o=8,n=50,r=[];if(this.connections.forEach((t=>{if(t.scope===i&&t.toId!==e){const e=document.getElementById(t.fromId),i=document.getElementById(t.toId);if(e&&i){const o=e.getBoundingClientRect(),n=i.getBoundingClientRect(),a=o.left+o.width/2-s.left,l=o.bottom-s.top;if("top"===this.determineTargetFace(a,l,n,s)){const e=n.left-s.left,i=n.width;r.push({fromId:t.fromId,targetX:e+i/2})}}}})),r.length>0){r.push({fromId:t,targetX:b}),r.sort(((t,e)=>t.targetX-e.targetX));const e=r.findIndex((e=>e.fromId===t)),i=r.length;_=(e-(i-1)/2)*((i-1)*o>n?n/(i-1):o)}}return{sourceX:l,sourceY:d,targetX:b,targetY:x,targetFace:c,jogYOffset:_}}createSVGElement(){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.classList.add("plumb-connector"),t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.pointerEvents="none",t.style.overflow="visible";const e=document.createElementNS("http://www.w3.org/2000/svg","path");e.setAttribute("fill","none"),e.setAttribute("stroke","var(--color-connectors)"),e.setAttribute("stroke-width","3"),e.style.pointerEvents="stroke";const i=document.createElementNS("http://www.w3.org/2000/svg","polygon");i.setAttribute("fill","var(--color-connectors)"),i.classList.add("plumb-arrow"),i.style.pointerEvents="fill",i.style.cursor="pointer",t.appendChild(e),t.appendChild(i);const o=()=>t.classList.add("hover"),n=()=>t.classList.remove("hover");return e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",n),i.addEventListener("mouseenter",o),i.addEventListener("mouseleave",n),{svgEl:t,pathEl:e,arrowEl:i}}updateSVGPath(t,e,i,o,n,s,r="top",a=0){const l=6.5,d=13;let c=n,h=s;"top"===r?h=s-d:"left"===r?c=n-d:"right"===r&&(c=n+d);const u=vp(i,o,c,h,30,8,5,r,a);t.setAttribute("d",u),"top"===r?e.setAttribute("points",`${n},${s} ${n-l},${s-d} ${n+l},${s-d}`):"left"===r?e.setAttribute("points",`${n},${s} ${n-d},${s-l} ${n-d},${s+l}`):e.setAttribute("points",`${n},${s} ${n+d},${s-l} ${n+d},${s+l}`)}createConnectionSVG(t,e,i){const o=this.getConnectionEndpoints(t,i,e);if(!o)return!1;const{svgEl:n,pathEl:s,arrowEl:r}=this.createSVGElement();this.updateSVGPath(s,r,o.sourceX,o.sourceY,o.targetX,o.targetY,o.targetFace,o.jogYOffset),this.canvas.appendChild(n),this.connections.set(t,{scope:e,fromId:t,toId:i,svgEl:n,pathEl:s,arrowEl:r});r.addEventListener("mousedown",(o=>{if(0!==o.button)return;o.stopPropagation();const n=o.clientX,s=o.clientY,r=o=>{const l=o.clientX-n,d=o.clientY-s;Math.sqrt(l*l+d*d)>5&&(document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),this.startDrag(t,e,i,o))},a=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a)};document.addEventListener("mousemove",r),document.addEventListener("mouseup",a)}));const a=document.getElementById(t);if(a&&a.classList.add("connected"),this.activityData){const e=`${t}:${i}`,o=this.activityData.segments[e];if(o&&o>0){const i=this.createOverlayElement(o,e);this.canvas.appendChild(i),this.overlays.set(t,i),this.updateOverlayPosition(t)}}return!0}updateConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.getConnectionEndpoints(e.fromId,e.toId,e.scope);i&&(this.updateSVGPath(e.pathEl,e.arrowEl,i.sourceX,i.sourceY,i.targetX,i.targetY,i.targetFace,i.jogYOffset),this.updateOverlayPosition(t))}removeConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.overlays.get(t);i&&(i.remove(),this.overlays.delete(t)),e.svgEl.remove(),this.connections.delete(t)}repaintEverything(){this.connections.forEach(((t,e)=>{this.updateConnectionSVG(e)}))}revalidate(t){const e=[],i=new Set;this.connections.forEach(((o,n)=>{(t.includes(o.fromId)||t.includes(o.toId)||t.includes(o.scope))&&(e.push(n),i.add(o.toId))}));const o=new Set(e);this.connections.forEach(((t,e)=>{i.has(t.toId)&&o.add(e)})),o.forEach((t=>{this.updateConnectionSVG(t)}))}forgetNode(t){var e;const i=[];this.connections.forEach(((e,o)=>{e.scope!==t&&e.toId!==t||i.push(o)})),i.forEach((t=>this.removeConnectionSVG(t)));const o=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");o&&o.forEach((t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))}))}removeNodeConnections(t,e){var i;(e||Array.from((null===(i=document.getElementById(t))||void 0===i?void 0:i.querySelectorAll(".exit"))||[]).map((t=>t.id))).forEach((t=>this.removeConnectionSVG(t)))}removeExitConnection(t){return!!this.connections.has(t)&&(this.removeConnectionSVG(t),!0)}removeAllEndpoints(t){var e;const i=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");i&&i.forEach((t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))}))}setConnectionRemovingState(t,e){const i=this.connections.get(t);return!!i&&(e?i.svgEl.classList.add("removing"):i.svgEl.classList.remove("removing"),!0)}setActivityData(t){this.activityData=t,this.clearRecentContactsCache(),this.updateActivityOverlays()}updateActivityOverlays(){if(!this.activityData)return this.overlays.forEach((t=>t.remove())),void this.overlays.clear();const t=new Set;this.connections.forEach(((e,i)=>{const o=`${e.fromId}:${e.toId}`,n=this.activityData.segments[o];if(n&&n>0){t.add(i);let e=this.overlays.get(i);e?(e.textContent=n.toLocaleString(),e.setAttribute("data-activity-key",o)):(e=this.createOverlayElement(n,o),this.canvas.appendChild(e),this.overlays.set(i,e)),this.updateOverlayPosition(i)}})),this.overlays.forEach(((e,i)=>{t.has(i)||(e.remove(),this.overlays.delete(i))}))}createOverlayElement(t,e){const i=document.createElement("div");return i.className="activity-overlay",i.textContent=t.toLocaleString(),i.setAttribute("data-activity-key",e),i.addEventListener("mouseenter",(()=>{const t=this.getFlowUuid();t&&(this.fetchRecentContacts(e,t),this.showContactsTimeout=window.setTimeout((()=>{this.showRecentContacts(e,t)}),500))})),i.addEventListener("mouseleave",(()=>{this.showContactsTimeout&&(clearTimeout(this.showContactsTimeout),this.showContactsTimeout=null),this.hoveredActivityKey=null,this.hideRecentContacts()})),i}updateOverlayPosition(t){const e=this.overlays.get(t),i=this.connections.get(t);if(!e||!i)return;const o=this.getConnectionEndpoints(i.fromId,i.toId,i.scope);o&&(e.style.position="absolute",e.style.left=`${o.sourceX}px`,e.style.top=`${o.sourceY+15}px`,e.style.transform="translate(-50%, -50%)")}getFlowUuid(){var t,e;return(null===(e=null===(t=this.editor)||void 0===t?void 0:t.definition)||void 0===e?void 0:e.uuid)||null}async fetchRecentContacts(t,e){if(this.recentContactsCache[t]||this.pendingFetches[t])return;const i=new AbortController;this.pendingFetches[t]=i;try{const[o,n]=t.split(":"),s=`/flow/recent_contacts/${e}/${o}/${n}/`,r=await fetch(s,{signal:i.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const a=await r.json();this.recentContactsCache[t]=Array.isArray(a)?a:a.results||[]}catch(t){"AbortError"!==t.name&&console.error("Failed to fetch recent contacts:",t)}finally{delete this.pendingFetches[t]}}async showRecentContacts(t,e){const i=this.findOverlayForActivityKey(t);i&&(this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null),this.hoveredActivityKey=t,this.recentContactsPopup||(this.recentContactsPopup=document.createElement("div"),this.recentContactsPopup.className="recent-contacts-popup",this.recentContactsPopup.style.position="absolute",this.recentContactsPopup.style.zIndex="1015",this.recentContactsPopup.style.display="none",document.body.appendChild(this.recentContactsPopup),this.recentContactsPopup.onmouseenter=()=>{this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null)},this.recentContactsPopup.onmouseleave=()=>{this.hoveredActivityKey=null,this.hideRecentContacts()},this.recentContactsPopup.onclick=t=>{const e=t.target;if(e.classList.contains("contact-name")){this.hideRecentContacts(!1);const t=e.getAttribute("data-uuid");t&&this.editor.fireCustomEvent("temba-contact-clicked",{uuid:t})}}),this.recentContactsCache[t]?(this.renderRecentContactsPopup(this.recentContactsCache[t]),this.positionPopup(i)):(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">Loading...</div>',this.positionPopup(i),await this.fetchRecentContacts(t,e),this.hoveredActivityKey===t&&(this.renderRecentContactsPopup(this.recentContactsCache[t]||[]),this.positionPopup(i))))}findOverlayForActivityKey(t){for(const[,e]of this.overlays)if(e.getAttribute("data-activity-key")===t)return e;return null}positionPopup(t){if(!this.recentContactsPopup)return;const e=t.getBoundingClientRect();this.recentContactsPopup.style.left=`${e.left+window.scrollX}px`,this.recentContactsPopup.style.top=`${e.bottom+window.scrollY+5}px`,this.recentContactsPopup.style.display="",this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.offsetWidth,this.recentContactsPopup.classList.add("show")}renderRecentContactsPopup(t){if(!this.recentContactsPopup)return;if(0===t.length)return void(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">No Recent Contacts</div>');let e='<div class="popup-title">Recent Contacts</div>';t.forEach((t=>{if(e+='<div class="contact-row">',e+=`<div class="contact-name" data-uuid="${t.contact.uuid}">${t.contact.name}</div>`,t.operand&&(e+=`<div class="contact-operand">${t.operand}</div>`),t.time){const i=new Date(t.time),o=Date.now()-i.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),r=Math.floor(o/864e5);let a="";a=n<1?"just now":n<60?`${n}m ago`:s<24?`${s}h ago`:`${r}d ago`,e+=`<div class="contact-time">${a}</div>`}e+="</div>"})),this.recentContactsPopup.innerHTML=e}hideRecentContacts(t=!0){t?this.hideContactsTimeout=window.setTimeout((()=>{!this.hoveredActivityKey&&this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}),200):this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}clearRecentContactsCache(){this.recentContactsCache={},Object.values(this.pendingFetches).forEach((t=>t.abort())),this.pendingFetches={}}startDrag(t,e,i,o){this.removeConnectionSVG(t);const{svgEl:n,pathEl:s,arrowEl:r}=this.createSVGElement();n.classList.add("dragging"),s.style.pointerEvents="none",r.style.pointerEvents="none",this.canvas.appendChild(n);const a=document.getElementById(t);if(!a)return void n.remove();const l=this.canvas.getBoundingClientRect(),d=a.getBoundingClientRect(),c=d.left+d.width/2-l.left,h=d.bottom-l.top,u=6.5,p=(t,e)=>{const i=e<h;let o,n="top";i&&(n=t<c?"left":"right"),o=i?e+1+13:e-1;const a=vp(c,h,t,o,30,i?0:8,5,n);if(s.setAttribute("d",a),i){const i=e+1;r.setAttribute("points",`${t},${i} ${t-u},${o} ${t+u},${o}`)}else{const e=o+13;r.setAttribute("points",`${t},${e} ${t-u},${o} ${t+u},${o}`)}},m=o.clientX-l.left,g=o.clientY-l.top;p(m,g),this.connectionDragging=!0;const f=t=>{const e=t.clientX-l.left,i=t.clientY-l.top;p(e,i)},v=o=>{document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",v),n.remove(),this.connectionDragging=!1,this.dragState=null,this.notifyListeners("connection:abort",{source:a,sourceId:t,target:{id:i},data:{nodeId:e}})};document.addEventListener("mousemove",f),document.addEventListener("mouseup",v),this.dragState={sourceId:t,scope:e,originalTargetId:i,svgEl:n,pathEl:s,arrowEl:r,onMove:f,onUp:v},this.notifyListeners("connection:drag",{sourceId:t,sourceX:c,sourceY:h,data:{nodeId:e},target:{id:i}})}reset(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.pendingConnections=[],this.connections.forEach((t=>t.svgEl.remove())),this.connections.clear(),this.overlays.forEach((t=>t.remove())),this.overlays.clear(),this.hideRecentContacts(!1),this.recentContactsPopup&&(this.recentContactsPopup.remove(),this.recentContactsPopup=null),this.recentContactsCache={},Object.values(this.pendingFetches).forEach((t=>t.abort())),this.pendingFetches={},this.sources.forEach((t=>t())),this.sources.clear(),this.dragState&&(document.removeEventListener("mousemove",this.dragState.onMove),document.removeEventListener("mouseup",this.dragState.onUp),this.dragState.svgEl.remove(),this.dragState=null,this.connectionDragging=!1)}}class bp extends Ne{createRenderRoot(){return this}static get styles(){return a`
8555
+ `},toFormData:t=>{var e,i,o;const n=null===(e=t.actions)||void 0===e?void 0:e.find((t=>"call_llm"===t.type)),s=(null===(o=null===(i=t.router)||void 0===i?void 0:i.categories)||void 0===o?void 0:o.filter((t=>"Other"!==t.name&&"Failure"!==t.name)).map((t=>({name:t.name}))))||[];return{uuid:t.uuid,llm:(null==n?void 0:n.llm)?[{value:n.llm.uuid,name:n.llm.name}]:[],input:(null==n?void 0:n.input)||"@input",categories:s}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=(t.categories||[]).filter((t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()})).map((t=>t.name.trim())),a=null===(i=e.actions)||void 0===i?void 0:i.find((t=>"call_llm"===t.type)),l={type:"call_llm",uuid:(null==a?void 0:a.uuid)||Xt(),llm:s?{uuid:s.value,name:s.name}:{uuid:"",name:""},instructions:'@(prompt("categorize", slice(node.categories, 0, -2)))',input:t.input||"@input",output_local:"_llm_output"},d=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],c=e.exits||[],h=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:u,exits:p}=((t,e,i,o=[],n=[],s=[])=>{const r=[],a=[],l=[];e.forEach((t=>{const e=Te({name:t,existingCategories:o,existingExits:n,existingCases:s,caseConfig:i(t)});r.push(e.category),a.push(e.exit),e.case&&l.push(e.case)}));const d=Te({name:"Other",existingCategories:o,existingExits:n});r.push(d.category),a.push(d.exit);const c=Te({name:"Failure",existingCategories:o,existingExits:n,existingCases:s,caseConfig:{type:"has_only_text",arguments:["<ERROR>"]}});return r.push(c.category),a.push(c.exit),c.case&&l.push(c.case),{router:{type:"switch",categories:r,default_category_uuid:d.category.uuid,operand:t,cases:l},exits:a}})("@locals._llm_output",r,(t=>({type:"has_only_text",arguments:[t]})),d,c,h);return{uuid:e.uuid,actions:[l],router:u,exits:p}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},sp={type:"wait_for_audio",name:"Make Recording",group:Qh.wait,flowTypes:[Zh],form:{result_name:{type:"text",label:"Result Name",required:!1,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow"}},layout:["result_name"],toFormData:t=>{var e;return{uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i;const o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],n=e.exits||[];let s,r=o.find((t=>"All Responses"===t.name));if(r)s=n.find((t=>t.uuid===r.exit_uuid))||{uuid:r.exit_uuid,destination_uuid:null};else{const t=Xt();r={uuid:Xt(),name:"All Responses",exit_uuid:t},s={uuid:t,destination_uuid:null}}const a={type:"switch",operand:"@input",default_category_uuid:r.uuid,cases:[],categories:[r],wait:{type:"msg",hint:{type:"audio"}}};return t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim()),{...e,router:a,exits:[s]}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},rp=["Answered","No Answer","Busy","Failed"],ap=[{type:"has_only_text",arguments:["answered"],categoryName:"Answered"},{type:"has_only_text",arguments:["no_answer"],categoryName:"No Answer"},{type:"has_only_text",arguments:["busy"],categoryName:"Busy"}],lp={type:"wait_for_dial",name:"Redirect Call",group:Qh.wait,flowTypes:[Zh],router:{type:"switch",defaultCategory:"Failed",rules:ap.map((t=>({type:t.type,arguments:t.arguments,categoryName:t.categoryName})))},form:{phone:{type:"text",label:"Phone Number",required:!0,evaluated:!0,placeholder:"Phone number or expression"},dial_limit_seconds:{type:"text",label:"Dial Limit (seconds)",required:!1,placeholder:"60"},call_limit_seconds:{type:"text",label:"Call Limit (seconds)",required:!1,placeholder:"7200"},result_name:Au},layout:["phone",{type:"row",items:["dial_limit_seconds","call_limit_seconds"]},"result_name"],toFormData:t=>{var e,i;const o=null===(e=t.router)||void 0===e?void 0:e.wait;return{uuid:t.uuid,phone:(null==o?void 0:o.phone)||"",dial_limit_seconds:(null==o?void 0:o.dial_limit_seconds)?String(o.dial_limit_seconds):"",call_limit_seconds:(null==o?void 0:o.call_limit_seconds)?String(o.call_limit_seconds):"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const t of rp){const e=n.find((e=>e.name===t));if(e){a.push(e);const t=s.find((t=>t.uuid===e.exit_uuid));l.push(t||{uuid:e.exit_uuid,destination_uuid:null})}else{const e=Xt();a.push({uuid:Xt(),name:t,exit_uuid:e}),l.push({uuid:e,destination_uuid:null})}}for(const t of ap){const e=a.find((e=>e.name===t.categoryName));if(!e)continue;const i=r.find((e=>{var i;return e.type===t.type&&(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.arguments[0]}));d.push({uuid:(null==i?void 0:i.uuid)||Xt(),type:t.type,arguments:t.arguments,category_uuid:e.uuid})}const c=a.find((t=>"Failed"===t.name)),h=(t.phone||"").trim(),u=parseInt(t.dial_limit_seconds,10),p=parseInt(t.call_limit_seconds,10),m={type:"dial",phone:h};!isNaN(u)&&u>0&&(m.dial_limit_seconds=u),!isNaN(p)&&p>0&&(m.call_limit_seconds=p);const g={type:"switch",operand:'@(default(resume.dial.status, ""))',default_category_uuid:null==c?void 0:c.uuid,cases:d,categories:a,wait:m};return t.result_name&&""!==t.result_name.trim()&&(g.result_name=t.result_name.trim()),{...e,router:g,exits:l}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},dp={type:"wait_for_digits",name:"Wait for Digits",group:Qh.wait,flowTypes:[Zh],dialogSize:"large",form:{rules:Uu(Lu(Du.filter((t=>Iu.has(t.type)))),""),result_name:Au},layout:[{type:"text",text:"Rules match against all digits pressed by the caller followed by the # sign."},"rules","result_name"],validate:t=>({valid:!0,errors:{}}),toFormData:t=>{var e;const i=qu(t);return{uuid:t.uuid,rules:i,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=Fu(t),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=Le("@input.text",n,Ou,s,r,a),c={...l,wait:{type:"msg",hint:{type:"digits"}}};return t.result_name&&""!==t.result_name.trim()&&(c.result_name=t.result_name.trim()),{...e,router:c,exits:d}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},cp=["1","2","3","4","5","6","7","8","9","0"];function hp(t){return`digit_${t}`}const up={type:"wait_for_menu",name:"Wait for Menu",group:Qh.wait,flowTypes:[Zh],form:{...Object.fromEntries(cp.map((t=>[hp(t),{type:"text",required:!1,placeholder:"",flavor:"xsmall"}]))),result_name:Au},layout:[{type:"row",items:["digit_1","digit_2","digit_3"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_1:"1",digit_2:"2",digit_3:"3"}},{type:"row",items:["digit_4","digit_5","digit_6"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_4:"4",digit_5:"5",digit_6:"6"}},{type:"row",items:["digit_7","digit_8","digit_9"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_7:"7",digit_8:"8",digit_9:"9"}},{type:"row",items:[{type:"spacer"},"digit_0",{type:"spacer"}],gap:"2rem",inlineLabels:{digit_0:"0"}},"result_name"],toFormData:t=>{var e,i,o,n;const s={uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""};for(const t of cp)s[hp(t)]="";if((null===(i=t.router)||void 0===i?void 0:i.cases)&&(null===(o=t.router)||void 0===o?void 0:o.categories))for(const e of t.router.cases)if("has_number_eq"===e.type&&(null===(n=e.arguments)||void 0===n?void 0:n[0])){const i=e.arguments[0],o=t.router.categories.find((t=>t.uuid===e.category_uuid));o&&cp.includes(i)&&(s[hp(i)]=o.name)}return s},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const e of cp){const i=(t[hp(e)]||"").trim();if(!i)continue;let o=a.find((t=>t.name===i));if(!o){const t=n.find((t=>t.name===i));if(t){o=t;const e=s.find((e=>e.uuid===t.exit_uuid));a.push(o),l.push(e||{uuid:t.exit_uuid,destination_uuid:null})}else{const t=Xt();o={uuid:Xt(),name:i,exit_uuid:t},a.push(o),l.push({uuid:t,destination_uuid:null})}}const c=r.find((t=>{var i;return"has_number_eq"===t.type&&(null===(i=t.arguments)||void 0===i?void 0:i[0])===e}));d.push({uuid:(null==c?void 0:c.uuid)||Xt(),type:"has_number_eq",arguments:[e],category_uuid:o.uuid})}const c=n.find((t=>"Other"===t.name));let h;if(c){h=c;const t=s.find((t=>t.uuid===c.exit_uuid));l.push(t||{uuid:c.exit_uuid,destination_uuid:null})}else{const t=Xt();h={uuid:Xt(),name:"Other",exit_uuid:t},l.push({uuid:t,destination_uuid:null})}a.push(h);const u={type:"switch",operand:"@input.text",default_category_uuid:h.uuid,cases:d,categories:a,wait:{type:"msg",hint:{type:"digits",count:1}}};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:l}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},pp=[{value:"60",name:"1 minute"},{value:"120",name:"2 minutes"},{value:"180",name:"3 minutes"},{value:"240",name:"4 minutes"},{value:"300",name:"5 minutes"},{value:"600",name:"10 minutes"},{value:"900",name:"15 minutes"},{value:"1800",name:"30 minutes"},{value:"3600",name:"1 hour"},{value:"7200",name:"2 hours"},{value:"10800",name:"3 hours"},{value:"21600",name:"6 hours"},{value:"43200",name:"12 hours"},{value:"64800",name:"18 hours"},{value:"86400",name:"1 day"},{value:"172800",name:"2 days"},{value:"259200",name:"3 days"},{value:"604800",name:"1 week"}],mp=(t,e=[],i=[],o=[])=>{const{router:n,exits:s}=Le("@input.text",t,Ou,e,i,o),r=e.find((t=>"No Response"===t.name||"Timeout"===t.name));if(r){const t=i.find((t=>t.uuid===r.exit_uuid));t&&(n.categories.push(r),s.push({uuid:t.uuid,destination_uuid:t.destination_uuid||null}))}return{router:n,exits:s}},gp={type:"wait_for_response",name:"Wait for Response",group:Qh.wait,flowTypes:[Wh],dialogSize:"large",form:{rules:Uu(Lu(Mu()),"If the message from the contact..."),timeout_enabled:{type:"checkbox",label:t=>t.timeout_enabled?"Continue when there is no response for":"Continue when there is no response..",labelPadding:"4px 8px"},timeout_duration:{type:"select",placeholder:"5 minutes",multi:!1,maxWidth:"100px",flavor:"xsmall",options:pp,conditions:{visible:t=>!0===t.timeout_enabled}},result_name:Au},layout:["rules","result_name"],gutter:[{type:"row",items:["timeout_enabled","timeout_duration"],gap:"0.5rem"}],validate:t=>{const e={};return{valid:0===Object.keys(e).length,errors:e}},toFormData:t=>{var e,i,o,n;const s=qu(t),r=null===(o=null===(i=null===(e=t.router)||void 0===e?void 0:e.wait)||void 0===i?void 0:i.timeout)||void 0===o?void 0:o.seconds;let a=pp.find((t=>t.value===String(r)));return a||(a={value:"300",name:"5 minutes"}),{uuid:t.uuid,rules:s,timeout_enabled:!!r,timeout_duration:a,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||""}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=Fu(t);if(0===c.length){let o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[];const n=[...e.exits||[]];if(t.timeout_enabled){let t=o.find((t=>"No Response"===t.name));if(!t){const e=Xt();t={uuid:Xt(),name:"No Response",exit_uuid:e},o=[...o,t],n.find((t=>t.uuid===e))||n.push({uuid:e,destination_uuid:null})}}else o=o.filter((t=>"No Response"!==t.name));const{router:s,exits:r}=mp([],o,n,[]),a={...s,cases:[]};t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim());const l={type:"msg"};if(t.timeout_enabled){let e;e=t.timeout_duration?Array.isArray(t.timeout_duration)&&t.timeout_duration.length>0?parseInt(t.timeout_duration[0].value,10):"string"==typeof t.timeout_duration?parseInt(t.timeout_duration,10):t.timeout_duration&&"object"==typeof t.timeout_duration&&t.timeout_duration.value?parseInt(t.timeout_duration.value,10):300:300,(isNaN(e)||e<=0)&&(e=300);const i=a.categories.find((t=>"No Response"===t.name));i&&(l.timeout={seconds:e,category_uuid:i.uuid})}return a.wait=l,{...e,router:a,exits:r}}const h=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],u=e.exits||[],p=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:m,exits:g}=mp(c,h,u,p),f={...m};t.result_name&&""!==t.result_name.trim()&&(f.result_name=t.result_name.trim());const v={type:"msg"};try{if(t.timeout_enabled){let i;if(t.timeout_duration)try{i=parseInt(t.timeout_duration[0].value,10)}catch(t){i=300}const o=null===(r=null===(s=e.router)||void 0===s?void 0:s.categories)||void 0===r?void 0:r.find((t=>"No Response"===t.name)),n=o||{uuid:Xt(),name:"No Response",exit_uuid:Xt()};if(v.timeout={seconds:i,category_uuid:n.uuid},!(null===(a=m.categories)||void 0===a?void 0:a.some((t=>"No Response"===t.name)))&&(m.categories=m.categories||[],m.categories.push(n),!g.some((t=>t.uuid===n.exit_uuid)))){const t={uuid:n.exit_uuid,destination_uuid:(null==o?void 0:o.exit_uuid)&&(null===(d=null===(l=e.exits)||void 0===l?void 0:l.find((t=>t.uuid===o.exit_uuid)))||void 0===d?void 0:d.destination_uuid)||null};g.push(t)}}else if(m.categories){const t=m.categories.findIndex((t=>"No Response"===t.name));if(-1!==t){const e=m.categories[t];m.categories.splice(t,1);const i=g.findIndex((t=>t.uuid===e.exit_uuid));-1!==i&&g.splice(i,1)}}}catch(t){console.error("Error processing timeout configuration:",t)}return f.wait=v,{...e,router:f,exits:g}},localizable:"categories",toLocalizationFormData:Eu,fromLocalizationFormData:$u},fp=vp({say_msg:_u,play_audio:wu,set_contact_field:ou,send_broadcast:au,set_run_result:lu,send_msg:du,send_email:cu,start_session:hu,set_contact_name:uu,add_contact_groups:pu,remove_contact_groups:mu,set_contact_channel:nu,set_contact_language:su,set_contact_status:ru,add_contact_urn:iu,add_input_labels:eu,request_optin:gu,enter_flow:ku});function vp(t){const e={...t};return Object.values(t).forEach((t=>{t.aliases&&t.aliases.forEach((i=>{e[i]=t}))})),e}const yp=vp({execute_actions:{type:"execute_actions"},split_by_contact_field:Vu,split_by_expression:Hu,split_by_groups:Wu,split_by_llm:op,split_by_llm_categorize:np,split_by_random:Zu,split_by_run_result:Ku,split_by_scheme:Xu,split_by_subflow:Qu,split_by_ticket:Ju,split_by_webhook:ep,split_by_resthook:ip,wait_for_menu:up,wait_for_digits:dp,wait_for_audio:sp,wait_for_dial:lp,wait_for_response:gp,split_by_airtime:Tu,terminal:{type:"terminal"}});function bp(t,e,i,o,n=20,s=10,r=5,a="top",l=0){const d=r;if("top"===a){const r=e+n,a=o-s;let c=`M ${t} ${e}`;if(t===i)c+=` L ${i} ${a}`;else{const o=i>t?1:-1,n=Math.max(e+d,Math.min(r,a-d)),s=Math.max(e+d,Math.min(n+l,a-d-3)),h=Math.min(d,s-e);h>=1?(c+=` L ${t} ${s-h}`,c+=` Q ${t} ${s}, ${t+o*h} ${s}`):c+=` L ${t} ${s}`;const u=3,p=Math.min(d,Math.max(0,a-s-u));p>=1?(c+=` L ${i-o*p} ${s}`,c+=` Q ${i} ${s}, ${i} ${s+p}`):c+=` L ${i} ${s}`,c+=` L ${i} ${a}`}return c+=` L ${i} ${o}`,c}if("left"===a||"right"===a){const r=e+(o<e?0:n),l="left"===a?-1:1,c=i+l*s,h=c>t?1:-1,u=3,p=h===l?r+2*d:Math.max(r+2*d,o);let m=`M ${t} ${e} L ${t} ${r}`;p-r>d&&(m+=` L ${t} ${p-d}`,m+=` Q ${t} ${p}, ${t+h*d} ${p}`);const g=Math.abs(p-o);if(g<1)m+=` L ${c} ${o}`,m+=` L ${i} ${o}`;else{const t=o<p?-1:1,e=Math.min(d,Math.max(0,Math.floor((g-u)/2)),Math.max(0,s-u));e>=1?(m+=` L ${c-h*e} ${p}`,m+=` Q ${c} ${p}, ${c} ${p+t*e}`,m+=` L ${c} ${o-t*e}`,m+=` Q ${c} ${o}, ${c-l*e} ${o}`):(m+=` L ${c} ${p}`,m+=` L ${c} ${o}`),m+=` L ${i} ${o}`}return m}return`M ${t} ${e} L ${i} ${o}`}class xp{constructor(t,e){this.connections=new Map,this.sources=new Map,this.pendingConnections=[],this.connectionWait=null,this.connectionListeners=new Map,this.dragState=null,this.retryCount=0,this.maxRetries=3,this.activityData=null,this.overlays=new Map,this.hoveredActivityKey=null,this.recentContactsPopup=null,this.recentContactsCache={},this.pendingFetches={},this.hideContactsTimeout=null,this.showContactsTimeout=null,this.connectionDragging=!1,this.canvas=t,this.editor=e}notifyListeners(t,e){(this.connectionListeners.get(t)||[]).forEach((t=>t(e)))}on(t,e){this.connectionListeners.has(t)||this.connectionListeners.set(t,[]),this.connectionListeners.get(t).push(e)}off(t,e){if(!this.connectionListeners.has(t))return;const i=this.connectionListeners.get(t),o=i.indexOf(e);-1!==o&&i.splice(o,1)}makeSource(t){const e=document.getElementById(t);if(!e)return;this.sources.has(t)&&this.sources.get(t)();let i=null;const o=o=>{if(0!==o.button)return;if(this.connections.has(t))return;const n=o.clientX,s=o.clientY,r=e.closest("temba-flow-node"),a=(null==r?void 0:r.getAttribute("uuid"))||"",l=e=>{const o=e.clientX-n,r=e.clientY-s;Math.sqrt(o*o+r*r)>5&&(document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),i=null,this.startDrag(t,a,null,e))},d=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),i=null};document.addEventListener("mousemove",l),document.addEventListener("mouseup",d),i={startX:n,startY:s,onMove:l,onUp:d}};e.addEventListener("mousedown",o),this.sources.set(t,(()=>{e.removeEventListener("mousedown",o),i&&(document.removeEventListener("mousemove",i.onMove),document.removeEventListener("mouseup",i.onUp),i=null)}))}makeTarget(t){}connectIds(t,e,i){this.pendingConnections.push({scope:t,fromId:e,toId:i}),this.processPendingConnections()}processPendingConnections(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.connectionWait=requestAnimationFrame((()=>{const t=[],e=new Set;if(this.pendingConnections.forEach((i=>{const{scope:o,fromId:n,toId:s}=i;this.removeConnectionSVG(n),this.createConnectionSVG(n,o,s)?e.add(s):t.push(i)})),this.pendingConnections=[],e.size>0){const t=new Set;this.connections.forEach((i=>{e.has(i.toId)&&t.add(i.scope)})),this.connections.forEach(((i,o)=>{(e.has(i.toId)||t.has(i.scope))&&this.updateConnectionSVG(o)}))}t.length>0&&this.retryCount<this.maxRetries?(this.retryCount++,this.pendingConnections=t,this.processPendingConnections()):this.retryCount=0}))}determineTargetFace(t,e,i,o){const n=i.left+i.width/2-o.left;return i.top-o.top-e>30?"top":t<n?"left":"right"}getConnectionEndpoints(t,e,i){const o=document.getElementById(t),n=document.getElementById(e);if(!o||!n)return null;const s=this.canvas.getBoundingClientRect(),r=o.getBoundingClientRect(),a=n.getBoundingClientRect();if(0===r.width||0===a.width)return null;const l=r.left+r.width/2-s.left,d=r.bottom-s.top,c=this.determineTargetFace(l,d,a,s),h=new Map;this.connections.forEach((t=>{if(t.toId===e){const e=document.getElementById(t.fromId);if(e){const i=e.getBoundingClientRect(),o=i.left+i.width/2-s.left,n=i.bottom-s.top,r=this.determineTargetFace(o,n,a,s);h.has(r)||h.set(r,[]);const l="top"===r?o:n;h.get(r).push({fromId:t.fromId,sortPos:l})}}})),h.has(c)||h.set(c,[]);const u=h.get(c);if(!u.find((e=>e.fromId===t))){const e="top"===c?l:d;u.push({fromId:t,sortPos:e})}u.sort(((t,e)=>t.sortPos-e.sortPos));const p=u.findIndex((e=>e.fromId===t)),m=u.length,g=a.left-s.left,f=a.top-s.top,v=a.width,y=a.height;let b,x;if("top"===c){b=1===m?g+v/2:g+.2*v+.6*v*(p+.5)/m,x=f}else if("left"===c){b=g;x=1===m?f+y/2:f+.2*y+.6*y*(p+.5)/m}else{b=g+v;x=1===m?f+y/2:f+.2*y+.6*y*(p+.5)/m}let _=0;if("top"===c&&i){const o=8,n=50,r=[];if(this.connections.forEach((t=>{if(t.scope===i&&t.toId!==e){const e=document.getElementById(t.fromId),i=document.getElementById(t.toId);if(e&&i){const o=e.getBoundingClientRect(),n=i.getBoundingClientRect(),a=o.left+o.width/2-s.left,l=o.bottom-s.top;if("top"===this.determineTargetFace(a,l,n,s)){const e=n.left-s.left,i=n.width;r.push({fromId:t.fromId,targetX:e+i/2})}}}})),r.length>0){r.push({fromId:t,targetX:b}),r.sort(((t,e)=>t.targetX-e.targetX));const e=r.findIndex((e=>e.fromId===t)),i=r.length;_=(e-(i-1)/2)*((i-1)*o>n?n/(i-1):o)}}return{sourceX:l,sourceY:d,targetX:b,targetY:x,targetFace:c,jogYOffset:_}}createSVGElement(){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.classList.add("plumb-connector"),t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.pointerEvents="none",t.style.overflow="visible";const e=document.createElementNS("http://www.w3.org/2000/svg","path");e.setAttribute("fill","none"),e.setAttribute("stroke","var(--color-connectors)"),e.setAttribute("stroke-width","3"),e.style.pointerEvents="stroke";const i=document.createElementNS("http://www.w3.org/2000/svg","polygon");i.setAttribute("fill","var(--color-connectors)"),i.classList.add("plumb-arrow"),i.style.pointerEvents="fill",i.style.cursor="pointer",t.appendChild(e),t.appendChild(i);const o=()=>t.classList.add("hover"),n=()=>t.classList.remove("hover");return e.addEventListener("mouseenter",o),e.addEventListener("mouseleave",n),i.addEventListener("mouseenter",o),i.addEventListener("mouseleave",n),{svgEl:t,pathEl:e,arrowEl:i}}updateSVGPath(t,e,i,o,n,s,r="top",a=0){const l=6.5,d=13;let c=n,h=s;"top"===r?h=s-d:"left"===r?c=n-d:"right"===r&&(c=n+d);const u=bp(i,o,c,h,30,8,5,r,a);t.setAttribute("d",u),"top"===r?e.setAttribute("points",`${n},${s} ${n-l},${s-d} ${n+l},${s-d}`):"left"===r?e.setAttribute("points",`${n},${s} ${n-d},${s-l} ${n-d},${s+l}`):e.setAttribute("points",`${n},${s} ${n+d},${s-l} ${n+d},${s+l}`)}createConnectionSVG(t,e,i){const o=this.getConnectionEndpoints(t,i,e);if(!o)return!1;const{svgEl:n,pathEl:s,arrowEl:r}=this.createSVGElement();this.updateSVGPath(s,r,o.sourceX,o.sourceY,o.targetX,o.targetY,o.targetFace,o.jogYOffset),this.canvas.appendChild(n),this.connections.set(t,{scope:e,fromId:t,toId:i,svgEl:n,pathEl:s,arrowEl:r});r.addEventListener("mousedown",(o=>{if(0!==o.button)return;o.stopPropagation();const n=o.clientX,s=o.clientY,r=o=>{const l=o.clientX-n,d=o.clientY-s;Math.sqrt(l*l+d*d)>5&&(document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),this.startDrag(t,e,i,o))},a=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a)};document.addEventListener("mousemove",r),document.addEventListener("mouseup",a)}));const a=document.getElementById(t);if(a&&a.classList.add("connected"),this.activityData){const e=`${t}:${i}`,o=this.activityData.segments[e];if(o&&o>0){const i=this.createOverlayElement(o,e);this.canvas.appendChild(i),this.overlays.set(t,i),this.updateOverlayPosition(t)}}return!0}updateConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.getConnectionEndpoints(e.fromId,e.toId,e.scope);i&&(this.updateSVGPath(e.pathEl,e.arrowEl,i.sourceX,i.sourceY,i.targetX,i.targetY,i.targetFace,i.jogYOffset),this.updateOverlayPosition(t))}removeConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.overlays.get(t);i&&(i.remove(),this.overlays.delete(t)),e.svgEl.remove(),this.connections.delete(t)}repaintEverything(){this.connections.forEach(((t,e)=>{this.updateConnectionSVG(e)}))}revalidate(t){const e=[],i=new Set;this.connections.forEach(((o,n)=>{(t.includes(o.fromId)||t.includes(o.toId)||t.includes(o.scope))&&(e.push(n),i.add(o.toId))}));const o=new Set(e);this.connections.forEach(((t,e)=>{i.has(t.toId)&&o.add(e)})),o.forEach((t=>{this.updateConnectionSVG(t)}))}forgetNode(t){var e;const i=[];this.connections.forEach(((e,o)=>{e.scope!==t&&e.toId!==t||i.push(o)})),i.forEach((t=>this.removeConnectionSVG(t)));const o=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");o&&o.forEach((t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))}))}removeNodeConnections(t,e){var i;(e||Array.from((null===(i=document.getElementById(t))||void 0===i?void 0:i.querySelectorAll(".exit"))||[]).map((t=>t.id))).forEach((t=>this.removeConnectionSVG(t)))}removeExitConnection(t){return!!this.connections.has(t)&&(this.removeConnectionSVG(t),!0)}removeAllEndpoints(t){var e;const i=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");i&&i.forEach((t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))}))}setConnectionRemovingState(t,e){const i=this.connections.get(t);return!!i&&(e?i.svgEl.classList.add("removing"):i.svgEl.classList.remove("removing"),!0)}setActivityData(t){this.activityData=t,this.clearRecentContactsCache(),this.updateActivityOverlays()}updateActivityOverlays(){if(!this.activityData)return this.overlays.forEach((t=>t.remove())),void this.overlays.clear();const t=new Set;this.connections.forEach(((e,i)=>{const o=`${e.fromId}:${e.toId}`,n=this.activityData.segments[o];if(n&&n>0){t.add(i);let e=this.overlays.get(i);e?(e.textContent=n.toLocaleString(),e.setAttribute("data-activity-key",o)):(e=this.createOverlayElement(n,o),this.canvas.appendChild(e),this.overlays.set(i,e)),this.updateOverlayPosition(i)}})),this.overlays.forEach(((e,i)=>{t.has(i)||(e.remove(),this.overlays.delete(i))}))}createOverlayElement(t,e){const i=document.createElement("div");return i.className="activity-overlay",i.textContent=t.toLocaleString(),i.setAttribute("data-activity-key",e),i.addEventListener("mouseenter",(()=>{const t=this.getFlowUuid();t&&(this.fetchRecentContacts(e,t),this.showContactsTimeout=window.setTimeout((()=>{this.showRecentContacts(e,t)}),500))})),i.addEventListener("mouseleave",(()=>{this.showContactsTimeout&&(clearTimeout(this.showContactsTimeout),this.showContactsTimeout=null),this.hoveredActivityKey=null,this.hideRecentContacts()})),i}updateOverlayPosition(t){const e=this.overlays.get(t),i=this.connections.get(t);if(!e||!i)return;const o=this.getConnectionEndpoints(i.fromId,i.toId,i.scope);o&&(e.style.position="absolute",e.style.left=`${o.sourceX}px`,e.style.top=`${o.sourceY+15}px`,e.style.transform="translate(-50%, -50%)")}getFlowUuid(){var t,e;return(null===(e=null===(t=this.editor)||void 0===t?void 0:t.definition)||void 0===e?void 0:e.uuid)||null}async fetchRecentContacts(t,e){if(this.recentContactsCache[t]||this.pendingFetches[t])return;const i=new AbortController;this.pendingFetches[t]=i;try{const[o,n]=t.split(":"),s=`/flow/recent_contacts/${e}/${o}/${n}/`,r=await fetch(s,{signal:i.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const a=await r.json();this.recentContactsCache[t]=Array.isArray(a)?a:a.results||[]}catch(t){"AbortError"!==t.name&&console.error("Failed to fetch recent contacts:",t)}finally{delete this.pendingFetches[t]}}async showRecentContacts(t,e){const i=this.findOverlayForActivityKey(t);i&&(this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null),this.hoveredActivityKey=t,this.recentContactsPopup||(this.recentContactsPopup=document.createElement("div"),this.recentContactsPopup.className="recent-contacts-popup",this.recentContactsPopup.style.position="absolute",this.recentContactsPopup.style.zIndex="1015",this.recentContactsPopup.style.display="none",document.body.appendChild(this.recentContactsPopup),this.recentContactsPopup.onmouseenter=()=>{this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null)},this.recentContactsPopup.onmouseleave=()=>{this.hoveredActivityKey=null,this.hideRecentContacts()},this.recentContactsPopup.onclick=t=>{const e=t.target;if(e.classList.contains("contact-name")){this.hideRecentContacts(!1);const t=e.getAttribute("data-uuid");t&&this.editor.fireCustomEvent("temba-contact-clicked",{uuid:t})}}),this.recentContactsCache[t]?(this.renderRecentContactsPopup(this.recentContactsCache[t]),this.positionPopup(i)):(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">Loading...</div>',this.positionPopup(i),await this.fetchRecentContacts(t,e),this.hoveredActivityKey===t&&(this.renderRecentContactsPopup(this.recentContactsCache[t]||[]),this.positionPopup(i))))}findOverlayForActivityKey(t){for(const[,e]of this.overlays)if(e.getAttribute("data-activity-key")===t)return e;return null}positionPopup(t){if(!this.recentContactsPopup)return;const e=t.getBoundingClientRect();this.recentContactsPopup.style.left=`${e.left+window.scrollX}px`,this.recentContactsPopup.style.top=`${e.bottom+window.scrollY+5}px`,this.recentContactsPopup.style.display="",this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.offsetWidth,this.recentContactsPopup.classList.add("show")}renderRecentContactsPopup(t){if(!this.recentContactsPopup)return;if(0===t.length)return void(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">No Recent Contacts</div>');let e='<div class="popup-title">Recent Contacts</div>';t.forEach((t=>{if(e+='<div class="contact-row">',e+=`<div class="contact-name" data-uuid="${t.contact.uuid}">${t.contact.name}</div>`,t.operand&&(e+=`<div class="contact-operand">${t.operand}</div>`),t.time){const i=new Date(t.time),o=Date.now()-i.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),r=Math.floor(o/864e5);let a="";a=n<1?"just now":n<60?`${n}m ago`:s<24?`${s}h ago`:`${r}d ago`,e+=`<div class="contact-time">${a}</div>`}e+="</div>"})),this.recentContactsPopup.innerHTML=e}hideRecentContacts(t=!0){t?this.hideContactsTimeout=window.setTimeout((()=>{!this.hoveredActivityKey&&this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}),200):this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}clearRecentContactsCache(){this.recentContactsCache={},Object.values(this.pendingFetches).forEach((t=>t.abort())),this.pendingFetches={}}startDrag(t,e,i,o){this.removeConnectionSVG(t);const{svgEl:n,pathEl:s,arrowEl:r}=this.createSVGElement();n.classList.add("dragging"),s.style.pointerEvents="none",r.style.pointerEvents="none",this.canvas.appendChild(n);const a=document.getElementById(t);if(!a)return void n.remove();const l=this.canvas.getBoundingClientRect(),d=a.getBoundingClientRect(),c=d.left+d.width/2-l.left,h=d.bottom-l.top,u=6.5,p=(t,e)=>{const i=e<h;let o,n="top";i&&(n=t<c?"left":"right"),o=i?e+1+13:e-1;const a=bp(c,h,t,o,30,i?0:8,5,n);if(s.setAttribute("d",a),i){const i=e+1;r.setAttribute("points",`${t},${i} ${t-u},${o} ${t+u},${o}`)}else{const e=o+13;r.setAttribute("points",`${t},${e} ${t-u},${o} ${t+u},${o}`)}},m=o.clientX-l.left,g=o.clientY-l.top;p(m,g),this.connectionDragging=!0;const f=t=>{const e=t.clientX-l.left,i=t.clientY-l.top;p(e,i)},v=o=>{document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",v),n.remove(),this.connectionDragging=!1,this.dragState=null,this.notifyListeners("connection:abort",{source:a,sourceId:t,target:{id:i},data:{nodeId:e}})};document.addEventListener("mousemove",f),document.addEventListener("mouseup",v),this.dragState={sourceId:t,scope:e,originalTargetId:i,svgEl:n,pathEl:s,arrowEl:r,onMove:f,onUp:v},this.notifyListeners("connection:drag",{sourceId:t,sourceX:c,sourceY:h,data:{nodeId:e},target:{id:i}})}reset(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.pendingConnections=[],this.connections.forEach((t=>t.svgEl.remove())),this.connections.clear(),this.overlays.forEach((t=>t.remove())),this.overlays.clear(),this.hideRecentContacts(!1),this.recentContactsPopup&&(this.recentContactsPopup.remove(),this.recentContactsPopup=null),this.recentContactsCache={},Object.values(this.pendingFetches).forEach((t=>t.abort())),this.pendingFetches={},this.sources.forEach((t=>t())),this.sources.clear(),this.dragState&&(document.removeEventListener("mousemove",this.dragState.onMove),document.removeEventListener("mouseup",this.dragState.onUp),this.dragState.svgEl.remove(),this.dragState=null,this.connectionDragging=!1)}}class _p extends Ne{createRenderRoot(){return this}static get styles(){return a`
8547
8556
 
8548
8557
  .node {
8549
8558
  background-color: #fff;
@@ -8935,7 +8944,7 @@ background: #ccc;
8935
8944
  color: #9ca3af;
8936
8945
  font-size: 0.9em;
8937
8946
  }
8938
- }`}constructor(){super(),this.exitRemovalTimeouts=new Map,this.connectionTimeout=null,this.exitRemovingState=new Set,this.actionRemovalTimeouts=new Map,this.actionRemovingState=new Set,this.actionClickStartPos=null,this.pendingActionClick=null,this.nodeClickStartPos=null,this.pendingNodeClick=null,this.draggedActionHeight=0,this.externalDragInfo=null,this.showLastActionPlaceholder=!1,this.lastActionPlaceholderHeight=60,this.handleActionOrderChanged=this.handleActionOrderChanged.bind(this),this.handleActionDragStart=this.handleActionDragStart.bind(this),this.handleActionDragExternal=this.handleActionDragExternal.bind(this),this.handleActionDragInternal=this.handleActionDragInternal.bind(this),this.handleActionDragStop=this.handleActionDragStop.bind(this),this.handleExternalActionDragOver=this.handleExternalActionDragOver.bind(this),this.handleExternalActionDrop=this.handleExternalActionDrop.bind(this),this.handleExternalActionDragLeave=this.handleExternalActionDragLeave.bind(this),this.handleActionShowGhost=this.handleActionShowGhost.bind(this),this.handleActionHideGhost=this.handleActionHideGhost.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("action-drag-over",this.handleExternalActionDragOver),this.addEventListener("action-drop",this.handleExternalActionDrop),this.addEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.addEventListener("action-show-ghost",this.handleActionShowGhost),this.addEventListener("action-hide-ghost",this.handleActionHideGhost)}updated(t){var e;if(super.updated(t),t.get("ui")&&t.has("ui"))for(let t=25;t<=350;t+=25)setTimeout((()=>{this.plumber.revalidate([this.node.uuid])}),t);if(t.has("node")){if(this.plumber){this.connectionTimeout&&clearTimeout(this.connectionTimeout);const t=this.node.exits.map((t=>t.uuid));this.plumber.removeNodeConnections(this.node.uuid,t),this.connectionTimeout=window.setTimeout((()=>{var t;if("terminal"!==(null===(t=this.ui)||void 0===t?void 0:t.type))for(const t of this.node.exits)this.plumber.makeSource(t.uuid),t.destination_uuid&&this.plumber.connectIds(this.node.uuid,t.uuid,t.destination_uuid);this.connectionTimeout=null,this.plumber.revalidate([this.node.uuid])}),0)}const t=this.parentElement;if(t){const i=t.getBoundingClientRect();null===(e=Sd())||void 0===e||e.getState().expandCanvas(this.ui.position.left+i.width,this.ui.position.top+i.height)}}}disconnectedCallback(){this.plumber&&this.node&&(this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.plumber.forgetNode(this.node.uuid)),super.disconnectedCallback(),this.removeEventListener("action-drag-over",this.handleExternalActionDragOver),this.removeEventListener("action-drop",this.handleExternalActionDrop),this.removeEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.removeEventListener("action-show-ghost",this.handleActionShowGhost),this.removeEventListener("action-hide-ghost",this.handleActionHideGhost),this.exitRemovalTimeouts.forEach((t=>{clearTimeout(t)})),this.exitRemovalTimeouts.clear(),this.actionRemovalTimeouts.forEach((t=>{clearTimeout(t)})),this.actionRemovalTimeouts.clear(),this.exitRemovingState.clear(),this.actionRemovingState.clear(),this.plumber&&this.plumber.removeNodeConnections(this.node.uuid,this.node.exits.map((t=>t.uuid)))}handleExitClick(t,e){t.preventDefault(),t.stopPropagation();const i=e.uuid;if(!e.destination_uuid)return;if(this.exitRemovingState.has(i))return void this.disconnectExit(e);this.exitRemovingState.add(i),this.requestUpdate(),this.plumber.setConnectionRemovingState(i,!0),this.exitRemovalTimeouts.has(i)&&clearTimeout(this.exitRemovalTimeouts.get(i));const o=window.setTimeout((()=>{this.exitRemovingState.delete(i),this.exitRemovalTimeouts.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.requestUpdate()}),1500);this.exitRemovalTimeouts.set(i,o)}disconnectExit(t){var e;const i=t.uuid;this.exitRemovingState.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.exitRemovalTimeouts.has(i)&&(clearTimeout(this.exitRemovalTimeouts.get(i)),this.exitRemovalTimeouts.delete(i)),this.plumber.removeExitConnection(i);const o={...t,destination_uuid:null},n=this.node.exits.map((t=>t.uuid===i?o:t)),s={...this.node,exits:n};null===(e=Sd())||void 0===e||e.getState().updateNode(this.node.uuid,s),this.requestUpdate()}handleActionRemoveClick(t,e,i){t.preventDefault(),t.stopPropagation();const o=e.uuid;if(this.actionRemovingState.has(o))return void this.removeAction(e,i);this.actionRemovingState.add(o),this.requestUpdate(),this.actionRemovalTimeouts.has(o)&&clearTimeout(this.actionRemovalTimeouts.get(o));const n=window.setTimeout((()=>{this.actionRemovingState.delete(o),this.actionRemovalTimeouts.delete(o),this.requestUpdate()}),1e3);this.actionRemovalTimeouts.set(o,n)}removeAction(t,e){var i;const o=t.uuid;this.actionRemovingState.delete(o),this.actionRemovalTimeouts.has(o)&&(clearTimeout(this.actionRemovalTimeouts.get(o)),this.actionRemovalTimeouts.delete(o));const n=this.node.actions.filter((t=>t.uuid!==o));if(0===n.length)this.fireCustomEvent(Mo.NodeDeleted,{uuid:this.node.uuid});else{const t={...this.node,actions:n};null===(i=Sd())||void 0===i||i.getState().updateNode(this.node.uuid,t),this.requestUpdate()}}handleNodeRemoveClick(t){t.preventDefault(),t.stopPropagation();const e=this.node.uuid;if(this.actionRemovingState.has(e))return void this.removeNode();this.actionRemovingState.add(e),this.requestUpdate(),this.actionRemovalTimeouts.has(e)&&clearTimeout(this.actionRemovalTimeouts.get(e));const i=window.setTimeout((()=>{this.actionRemovingState.delete(e),this.actionRemovalTimeouts.delete(e),this.requestUpdate()}),1e3);this.actionRemovalTimeouts.set(e,i)}removeNode(){const t=this.node.uuid;this.actionRemovingState.delete(t),this.actionRemovalTimeouts.has(t)&&(clearTimeout(this.actionRemovalTimeouts.get(t)),this.actionRemovalTimeouts.delete(t)),this.fireCustomEvent(Mo.NodeDeleted,{uuid:this.node.uuid})}handleActionOrderChanged(t){var e;const[i,o]=t.detail.swap;if(this.externalDragInfo)return;const n=[...this.node.actions],s=n.splice(i,1)[0];n.splice(o,0,s),this.node={...this.node,actions:n},null===(e=Sd())||void 0===e||e.getState().updateNode(this.node.uuid,{...this.node,actions:n})}handleActionDragStart(t){const e=t.detail.id,i=this.querySelector(`#${e}`);if(i){const t=i.getBoundingClientRect();this.draggedActionHeight=t.height}else this.draggedActionHeight=60;1===this.node.actions.length&&(this.showLastActionPlaceholder=!0,this.lastActionPlaceholderHeight=this.draggedActionHeight,this.requestUpdate())}handleActionDragExternal(t){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(parseInt(e[1],10)))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Mo.DragExternal,{action:o,nodeUuid:this.node.uuid,actionIndex:i,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY,actionHeight:this.draggedActionHeight,isLastAction:n})}handleActionDragInternal(t){t.stopPropagation(),this.fireCustomEvent(Mo.DragInternal,{})}handleActionDragStop(t){const e=t.detail.isExternal;if(this.showLastActionPlaceholder=!1,e){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(Number(e[1])))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Mo.DragStop,{action:o,nodeUuid:this.node.uuid,actionIndex:i,isExternal:!0,isLastAction:n,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY})}this.requestUpdate()}getTopCenter(t){const e=t.getBoundingClientRect();return{x:e.left+e.width/2,y:e.top}}handleActionMouseDown(t,e){const i=t.target;i.closest(".remove-button")||i.closest(".drag-handle")||this.actionRemovingState.has(e.uuid)||(this.actionClickStartPos={x:t.clientX,y:t.clientY},this.pendingActionClick={action:e,event:t})}handleActionMouseUp(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);if(this.actionClickStartPos){const i=t.clientX-this.actionClickStartPos.x,o=t.clientY-this.actionClickStartPos.y,n=Math.sqrt(i*i+o*o),s=this.closest("temba-flow-editor"),r=null==s?void 0:s.dragging;if(n<=5&&(!s||!r)){const i=t.currentTarget,o=i?this.getTopCenter(i):{x:t.clientX,y:t.clientY};this.fireCustomEvent(Mo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:o.x,originY:o.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionClick(t,e){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(e.uuid)||this.fireCustomEvent(Mo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid})}handleNodeEditClick(t){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(this.node.uuid)||this.node.router&&(this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Mo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid}):this.fireCustomEvent(Mo.NodeEditRequested,{node:this.node,nodeUI:this.ui}))}handleNodeMouseDown(t){const e=t.target;e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.actionRemovingState.has(this.node.uuid)||(this.nodeClickStartPos={x:t.clientX,y:t.clientY},this.pendingNodeClick={event:t})}handleNodeMouseUp(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);if(this.nodeClickStartPos){const e=t.clientX-this.nodeClickStartPos.x,i=t.clientY-this.nodeClickStartPos.y,o=Math.sqrt(e*e+i*i),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Mo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Mo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleAddActionClick(t){t.preventDefault(),t.stopPropagation(),this.fireCustomEvent(Mo.AddActionRequested,{nodeUuid:this.node.uuid})}calculateDropIndex(t){var e,i;const o=this.querySelector("temba-sortable-list");if(!o||!this.node.actions)return null!==(i=null===(e=this.node.actions)||void 0===e?void 0:e.length)&&void 0!==i?i:0;const n=Array.from(o.querySelectorAll(".action.sortable"));if(0===n.length)return 0;for(let e=0;e<n.length;e++){const i=n[e].getBoundingClientRect();if(t<i.top+i.height/2)return e}return n.length}handleExternalActionDragOver(t){if("execute_actions"!==this.ui.type)return;const{action:e,sourceNodeUuid:i,actionIndex:o,mouseY:n,actionHeight:s}=t.detail;if(i===this.node.uuid)return;const r=this.calculateDropIndex(n);this.externalDragInfo={action:e,sourceNodeUuid:i,actionIndex:o,dropIndex:r,actionHeight:s||60},this.requestUpdate()}handleExternalActionDragLeave(t){this.externalDragInfo=null,this.requestUpdate()}handleActionShowGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="block")}}handleActionHideGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="none")}}handleExternalActionDrop(t){var e,i,o,n,s,r;if("execute_actions"!==this.ui.type)return;const{action:a,sourceNodeUuid:l,actionIndex:d}=t.detail;if(l===this.node.uuid)return;const c=null!==(n=null!==(i=null===(e=this.externalDragInfo)||void 0===e?void 0:e.dropIndex)&&void 0!==i?i:null===(o=this.node.actions)||void 0===o?void 0:o.length)&&void 0!==n?n:0;this.externalDragInfo=null;const h=Sd();if(!h)return;const u=h.getState().flowDefinition;if(!u)return;const p=u.nodes.find((t=>t.uuid===l));if(!p)return;const m=[...this.node.actions];m.splice(c,0,a);const g={...this.node,actions:m};null===(s=Sd())||void 0===s||s.getState().updateNode(this.node.uuid,g);const f=p.actions.filter(((t,e)=>e!==d));if(0===f.length)this.fireCustomEvent(Mo.NodeDeleted,{uuid:l});else{const t={...p,actions:f};null===(r=Sd())||void 0===r||r.getState().updateNode(l,t)}this.requestUpdate()}renderTitle(t,e,i,o=!1){var n,s,r,a,l;const d=t.group?null===(n=Xh[t.group])||void 0===n?void 0:n.color:"#aaaaaa",c="terminal"===(null===(s=this.ui)||void 0===s?void 0:s.type);return H`<div class="cn-title" style="background:${d}">
8947
+ }`}constructor(){super(),this.exitRemovalTimeouts=new Map,this.connectionTimeout=null,this.exitRemovingState=new Set,this.actionRemovalTimeouts=new Map,this.actionRemovingState=new Set,this.actionClickStartPos=null,this.pendingActionClick=null,this.nodeClickStartPos=null,this.pendingNodeClick=null,this.draggedActionHeight=0,this.externalDragInfo=null,this.showLastActionPlaceholder=!1,this.lastActionPlaceholderHeight=60,this.handleActionOrderChanged=this.handleActionOrderChanged.bind(this),this.handleActionDragStart=this.handleActionDragStart.bind(this),this.handleActionDragExternal=this.handleActionDragExternal.bind(this),this.handleActionDragInternal=this.handleActionDragInternal.bind(this),this.handleActionDragStop=this.handleActionDragStop.bind(this),this.handleExternalActionDragOver=this.handleExternalActionDragOver.bind(this),this.handleExternalActionDrop=this.handleExternalActionDrop.bind(this),this.handleExternalActionDragLeave=this.handleExternalActionDragLeave.bind(this),this.handleActionShowGhost=this.handleActionShowGhost.bind(this),this.handleActionHideGhost=this.handleActionHideGhost.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("action-drag-over",this.handleExternalActionDragOver),this.addEventListener("action-drop",this.handleExternalActionDrop),this.addEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.addEventListener("action-show-ghost",this.handleActionShowGhost),this.addEventListener("action-hide-ghost",this.handleActionHideGhost)}updated(t){var e;if(super.updated(t),t.get("ui")&&t.has("ui"))for(let t=25;t<=350;t+=25)setTimeout((()=>{this.plumber.revalidate([this.node.uuid])}),t);if(t.has("node")){if(this.plumber){this.connectionTimeout&&clearTimeout(this.connectionTimeout);const t=this.node.exits.map((t=>t.uuid));this.plumber.removeNodeConnections(this.node.uuid,t),this.connectionTimeout=window.setTimeout((()=>{var t;if("terminal"!==(null===(t=this.ui)||void 0===t?void 0:t.type))for(const t of this.node.exits)this.plumber.makeSource(t.uuid),t.destination_uuid&&this.plumber.connectIds(this.node.uuid,t.uuid,t.destination_uuid);this.connectionTimeout=null,this.plumber.revalidate([this.node.uuid])}),0)}const t=this.parentElement;if(t){const i=t.getBoundingClientRect();null===(e=Sd())||void 0===e||e.getState().expandCanvas(this.ui.position.left+i.width,this.ui.position.top+i.height)}}}disconnectedCallback(){this.plumber&&this.node&&(this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.plumber.forgetNode(this.node.uuid)),super.disconnectedCallback(),this.removeEventListener("action-drag-over",this.handleExternalActionDragOver),this.removeEventListener("action-drop",this.handleExternalActionDrop),this.removeEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.removeEventListener("action-show-ghost",this.handleActionShowGhost),this.removeEventListener("action-hide-ghost",this.handleActionHideGhost),this.exitRemovalTimeouts.forEach((t=>{clearTimeout(t)})),this.exitRemovalTimeouts.clear(),this.actionRemovalTimeouts.forEach((t=>{clearTimeout(t)})),this.actionRemovalTimeouts.clear(),this.exitRemovingState.clear(),this.actionRemovingState.clear(),this.plumber&&this.plumber.removeNodeConnections(this.node.uuid,this.node.exits.map((t=>t.uuid)))}handleExitClick(t,e){t.preventDefault(),t.stopPropagation();const i=e.uuid;if(!e.destination_uuid)return;if(this.exitRemovingState.has(i))return void this.disconnectExit(e);this.exitRemovingState.add(i),this.requestUpdate(),this.plumber.setConnectionRemovingState(i,!0),this.exitRemovalTimeouts.has(i)&&clearTimeout(this.exitRemovalTimeouts.get(i));const o=window.setTimeout((()=>{this.exitRemovingState.delete(i),this.exitRemovalTimeouts.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.requestUpdate()}),1500);this.exitRemovalTimeouts.set(i,o)}disconnectExit(t){var e;const i=t.uuid;this.exitRemovingState.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.exitRemovalTimeouts.has(i)&&(clearTimeout(this.exitRemovalTimeouts.get(i)),this.exitRemovalTimeouts.delete(i)),this.plumber.removeExitConnection(i);const o={...t,destination_uuid:null},n=this.node.exits.map((t=>t.uuid===i?o:t)),s={...this.node,exits:n};null===(e=Sd())||void 0===e||e.getState().updateNode(this.node.uuid,s),this.requestUpdate()}handleActionRemoveClick(t,e,i){t.preventDefault(),t.stopPropagation();const o=e.uuid;if(this.actionRemovingState.has(o))return void this.removeAction(e,i);this.actionRemovingState.add(o),this.requestUpdate(),this.actionRemovalTimeouts.has(o)&&clearTimeout(this.actionRemovalTimeouts.get(o));const n=window.setTimeout((()=>{this.actionRemovingState.delete(o),this.actionRemovalTimeouts.delete(o),this.requestUpdate()}),1e3);this.actionRemovalTimeouts.set(o,n)}removeAction(t,e){var i;const o=t.uuid;this.actionRemovingState.delete(o),this.actionRemovalTimeouts.has(o)&&(clearTimeout(this.actionRemovalTimeouts.get(o)),this.actionRemovalTimeouts.delete(o));const n=this.node.actions.filter((t=>t.uuid!==o));if(0===n.length)this.fireCustomEvent(Mo.NodeDeleted,{uuid:this.node.uuid});else{const t={...this.node,actions:n};null===(i=Sd())||void 0===i||i.getState().updateNode(this.node.uuid,t),this.requestUpdate()}}handleNodeRemoveClick(t){t.preventDefault(),t.stopPropagation();const e=this.node.uuid;if(this.actionRemovingState.has(e))return void this.removeNode();this.actionRemovingState.add(e),this.requestUpdate(),this.actionRemovalTimeouts.has(e)&&clearTimeout(this.actionRemovalTimeouts.get(e));const i=window.setTimeout((()=>{this.actionRemovingState.delete(e),this.actionRemovalTimeouts.delete(e),this.requestUpdate()}),1e3);this.actionRemovalTimeouts.set(e,i)}removeNode(){const t=this.node.uuid;this.actionRemovingState.delete(t),this.actionRemovalTimeouts.has(t)&&(clearTimeout(this.actionRemovalTimeouts.get(t)),this.actionRemovalTimeouts.delete(t)),this.fireCustomEvent(Mo.NodeDeleted,{uuid:this.node.uuid})}handleActionOrderChanged(t){var e;const[i,o]=t.detail.swap;if(this.externalDragInfo)return;const n=[...this.node.actions],s=n.splice(i,1)[0];n.splice(o,0,s),this.node={...this.node,actions:n},null===(e=Sd())||void 0===e||e.getState().updateNode(this.node.uuid,{...this.node,actions:n})}handleActionDragStart(t){const e=t.detail.id,i=this.querySelector(`#${e}`);if(i){const t=i.getBoundingClientRect();this.draggedActionHeight=t.height}else this.draggedActionHeight=60;1===this.node.actions.length&&(this.showLastActionPlaceholder=!0,this.lastActionPlaceholderHeight=this.draggedActionHeight,this.requestUpdate())}handleActionDragExternal(t){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(parseInt(e[1],10)))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Mo.DragExternal,{action:o,nodeUuid:this.node.uuid,actionIndex:i,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY,actionHeight:this.draggedActionHeight,isLastAction:n})}handleActionDragInternal(t){t.stopPropagation(),this.fireCustomEvent(Mo.DragInternal,{})}handleActionDragStop(t){const e=t.detail.isExternal;if(this.showLastActionPlaceholder=!1,e){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(Number(e[1])))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Mo.DragStop,{action:o,nodeUuid:this.node.uuid,actionIndex:i,isExternal:!0,isLastAction:n,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY})}this.requestUpdate()}getTopCenter(t){const e=t.getBoundingClientRect();return{x:e.left+e.width/2,y:e.top}}handleActionMouseDown(t,e){const i=t.target;i.closest(".remove-button")||i.closest(".drag-handle")||this.actionRemovingState.has(e.uuid)||(this.actionClickStartPos={x:t.clientX,y:t.clientY},this.pendingActionClick={action:e,event:t})}handleActionMouseUp(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);if(this.actionClickStartPos){const i=t.clientX-this.actionClickStartPos.x,o=t.clientY-this.actionClickStartPos.y,n=Math.sqrt(i*i+o*o),s=this.closest("temba-flow-editor"),r=null==s?void 0:s.dragging;if(n<=5&&(!s||!r)){const i=t.currentTarget,o=i?this.getTopCenter(i):{x:t.clientX,y:t.clientY};this.fireCustomEvent(Mo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:o.x,originY:o.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionClick(t,e){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(e.uuid)||this.fireCustomEvent(Mo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid})}handleNodeEditClick(t){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(this.node.uuid)||this.node.router&&(this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Mo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid}):this.fireCustomEvent(Mo.NodeEditRequested,{node:this.node,nodeUI:this.ui}))}handleNodeMouseDown(t){const e=t.target;e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.actionRemovingState.has(this.node.uuid)||(this.nodeClickStartPos={x:t.clientX,y:t.clientY},this.pendingNodeClick={event:t})}handleNodeMouseUp(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);if(this.nodeClickStartPos){const e=t.clientX-this.nodeClickStartPos.x,i=t.clientY-this.nodeClickStartPos.y,o=Math.sqrt(e*e+i*i),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Mo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Mo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleAddActionClick(t){t.preventDefault(),t.stopPropagation(),this.fireCustomEvent(Mo.AddActionRequested,{nodeUuid:this.node.uuid})}calculateDropIndex(t){var e,i;const o=this.querySelector("temba-sortable-list");if(!o||!this.node.actions)return null!==(i=null===(e=this.node.actions)||void 0===e?void 0:e.length)&&void 0!==i?i:0;const n=Array.from(o.querySelectorAll(".action.sortable"));if(0===n.length)return 0;for(let e=0;e<n.length;e++){const i=n[e].getBoundingClientRect();if(t<i.top+i.height/2)return e}return n.length}handleExternalActionDragOver(t){if("execute_actions"!==this.ui.type)return;const{action:e,sourceNodeUuid:i,actionIndex:o,mouseY:n,actionHeight:s}=t.detail;if(i===this.node.uuid)return;const r=this.calculateDropIndex(n);this.externalDragInfo={action:e,sourceNodeUuid:i,actionIndex:o,dropIndex:r,actionHeight:s||60},this.requestUpdate()}handleExternalActionDragLeave(t){this.externalDragInfo=null,this.requestUpdate()}handleActionShowGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="block")}}handleActionHideGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="none")}}handleExternalActionDrop(t){var e,i,o,n,s,r;if("execute_actions"!==this.ui.type)return;const{action:a,sourceNodeUuid:l,actionIndex:d}=t.detail;if(l===this.node.uuid)return;const c=null!==(n=null!==(i=null===(e=this.externalDragInfo)||void 0===e?void 0:e.dropIndex)&&void 0!==i?i:null===(o=this.node.actions)||void 0===o?void 0:o.length)&&void 0!==n?n:0;this.externalDragInfo=null;const h=Sd();if(!h)return;const u=h.getState().flowDefinition;if(!u)return;const p=u.nodes.find((t=>t.uuid===l));if(!p)return;const m=[...this.node.actions];m.splice(c,0,a);const g={...this.node,actions:m};null===(s=Sd())||void 0===s||s.getState().updateNode(this.node.uuid,g);const f=p.actions.filter(((t,e)=>e!==d));if(0===f.length)this.fireCustomEvent(Mo.NodeDeleted,{uuid:l});else{const t={...p,actions:f};null===(r=Sd())||void 0===r||r.getState().updateNode(l,t)}this.requestUpdate()}renderTitle(t,e,i,o=!1){var n,s,r,a,l;const d=t.group?null===(n=Jh[t.group])||void 0===n?void 0:n.color:"#aaaaaa",c="terminal"===(null===(s=this.ui)||void 0===s?void 0:s.type);return H`<div class="cn-title" style="background:${d}">
8939
8948
  ${c?H`<div class="title-spacer"></div>`:"execute_actions"===(null===(r=this.ui)||void 0===r?void 0:r.type)||(null===(l=null===(a=this.node)||void 0===a?void 0:a.actions)||void 0===l?void 0:l.length)>1?H`<temba-icon
8940
8949
  class="drag-handle ${this.isReadOnly()?"read-only-hidden":""}"
8941
8950
  name="sort"
@@ -8949,7 +8958,7 @@ background: #ccc;
8949
8958
  >
8950
8959
 
8951
8960
  </div>
8952
- </div>`}renderNodeTitle(t,e,i,o=!1){var n,s;const r=t.group?(null===(n=Xh[t.group])||void 0===n?void 0:n.color)||(null===(s=Qh[t.group])||void 0===s?void 0:s.color):"#aaaaaa";return H`<div
8961
+ </div>`}renderNodeTitle(t,e,i,o=!1){var n,s;const r=t.group?(null===(n=Jh[t.group])||void 0===n?void 0:n.color)||(null===(s=tu[t.group])||void 0===s?void 0:s.color):"#aaaaaa";return H`<div
8953
8962
  class="cn-title ${o?"removing":""}"
8954
8963
  style="background:${r}"
8955
8964
  >
@@ -8967,7 +8976,7 @@ background: #ccc;
8967
8976
  </div>`}renderDropPlaceholder(){var t;const e=(null===(t=this.externalDragInfo)||void 0===t?void 0:t.actionHeight)||60;return H`<div
8968
8977
  class="action sortable drop-placeholder"
8969
8978
  style="height: ${e}px; background: #f3f4f6; border: 2px dashed #d1d5db; border-radius: var(--curvature);"
8970
- ></div>`}getLocalizedAction(t){var e,i,o;if(!this.isTranslating||!this.flowDefinition||!this.languageCode||this.languageCode===this.flowDefinition.language)return t;const n=null===(o=null===(i=null===(e=this.flowDefinition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t.uuid];if(!n)return t;const s={...t};return Object.keys(n).forEach((e=>{const i=n[e];Array.isArray(i)&&i.length>0&&(Array.isArray(t[e])?s[e]=i:s[e]=i[0])})),s}renderAction(t,e,i){var o,n,s,r;const a=mp[e.type],l=this.actionRemovingState.has(e.uuid),d=(null==a?void 0:a.localizable)&&a.localizable.length>0,c=this.isTranslating&&!d,h=this.isTranslating&&(null===(s=null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||void 0===s?void 0:s[e.uuid]),u=this.getLocalizedAction(e);if(a){const o=null===(r=this.issuesByAction)||void 0===r?void 0:r.has(e.uuid),n=["action","sortable",e.type,l?"removing":"",d&&this.isTranslating?"localizable":"",h?"has-localization":"",c?"non-localizable":""].filter(Boolean).join(" ");return H`<div class="${n}" id="action-${i}">
8979
+ ></div>`}getLocalizedAction(t){var e,i,o;if(!this.isTranslating||!this.flowDefinition||!this.languageCode||this.languageCode===this.flowDefinition.language)return t;const n=null===(o=null===(i=null===(e=this.flowDefinition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t.uuid];if(!n)return t;const s={...t};return Object.keys(n).forEach((e=>{const i=n[e];Array.isArray(i)&&i.length>0&&(Array.isArray(t[e])?s[e]=i:s[e]=i[0])})),s}renderAction(t,e,i){var o,n,s,r;const a=fp[e.type],l=this.actionRemovingState.has(e.uuid),d=(null==a?void 0:a.localizable)&&a.localizable.length>0,c=this.isTranslating&&!d,h=this.isTranslating&&(null===(s=null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||void 0===s?void 0:s[e.uuid]),u=this.getLocalizedAction(e);if(a){const o=null===(r=this.issuesByAction)||void 0===r?void 0:r.has(e.uuid),n=["action","sortable",e.type,l?"removing":"",d&&this.isTranslating?"localizable":"",h?"has-localization":"",c?"non-localizable":""].filter(Boolean).join(" ");return H`<div class="${n}" id="action-${i}">
8971
8980
  <div
8972
8981
  class="action-content ${o?"has-issues":""}"
8973
8982
  @mousedown=${t=>!c&&this.handleActionMouseDown(t,e)}
@@ -8991,7 +9000,7 @@ background: #ccc;
8991
9000
 
8992
9001
  </div>
8993
9002
  ${e.type}
8994
- </div>`}renderActionsWithPlaceholder(){if(!this.externalDragInfo)return this.node.actions.map(((t,e)=>this.renderAction(this.node,t,e)));const t=[];for(let e=0;e<this.node.actions.length;e++)e===this.externalDragInfo.dropIndex&&t.push(this.renderDropPlaceholder()),t.push(this.renderAction(this.node,this.node.actions[e],e));return this.externalDragInfo.dropIndex>=this.node.actions.length&&t.push(this.renderDropPlaceholder()),t}renderRouter(t,e){if(fp[e.type])return H`<div class="router" style="position: relative;">
9003
+ </div>`}renderActionsWithPlaceholder(){if(!this.externalDragInfo)return this.node.actions.map(((t,e)=>this.renderAction(this.node,t,e)));const t=[];for(let e=0;e<this.node.actions.length;e++)e===this.externalDragInfo.dropIndex&&t.push(this.renderDropPlaceholder()),t.push(this.renderAction(this.node,this.node.actions[e],e));return this.externalDragInfo.dropIndex>=this.node.actions.length&&t.push(this.renderDropPlaceholder()),t}renderRouter(t,e){if(yp[e.type])return H`<div class="router" style="position: relative;">
8995
9004
  ${t.result_name?H`<div
8996
9005
  class="body"
8997
9006
  @mousedown=${t=>this.handleNodeMouseDown(t)}
@@ -9001,7 +9010,7 @@ background: #ccc;
9001
9010
  Save as
9002
9011
  <div class="result-name">${t.result_name}</div>
9003
9012
  </div>`:null}
9004
- </div>`}renderCategories(t){var e;if(!t.router||!t.router.categories)return null;const i=fp[null===(e=this.ui)||void 0===e?void 0:e.type],o="categories"===(null==i?void 0:i.localizable);return H`<div class="categories">
9013
+ </div>`}renderCategories(t){var e;if(!t.router||!t.router.categories)return null;const i=yp[null===(e=this.ui)||void 0===e?void 0:e.type],o="categories"===(null==i?void 0:i.localizable);return H`<div class="categories">
9005
9014
  ${mc(t.router.categories,(t=>t.uuid),(e=>{var i,n;const s=t.exits.find((t=>t.uuid==e.exit_uuid));let r=e.name,a=!1;if(this.isTranslating&&"eng"!==this.languageCode&&o){const t=null===(n=null===(i=this.flowDefinition)||void 0===i?void 0:i.localization)||void 0===n?void 0:n[this.languageCode];if(t&&t[e.uuid]){const i=t[e.uuid];i.name&&i.name[0]&&(r=i.name[0],a=!0)}}const l=this.isTranslating&&"eng"!==this.languageCode&&o&&this.includeCategoriesInTranslation&&!a;return H`<div
9006
9015
  class=${ae({category:!0,localizable:l})}
9007
9016
  @mousedown=${t=>this.handleNodeMouseDown(t)}
@@ -9017,7 +9026,7 @@ background: #ccc;
9017
9026
  class=${ae({exit:!0,connected:!!t.destination_uuid,removing:this.exitRemovingState.has(t.uuid),"read-only":this.isReadOnly()})}
9018
9027
  @click=${e=>this.handleExitClick(e,t)}
9019
9028
  ></div>
9020
- </div>`}isReadOnly(){return this.viewingRevision||this.isTranslating}render(){var t,e,i,o;if(!this.node||!this.ui)return H`<div class="node">Loading...</div>`;const n=fp[this.ui.type],s="categories"===(null==n?void 0:n.localizable),r=this.isTranslating&&s&&!this.includeCategoriesInTranslation,a=(null===(t=this.activity)||void 0===t?void 0:t.nodes)&&this.activity.nodes[this.node.uuid]||0,l=(null===(e=this.issuesByNode)||void 0===e?void 0:e.has(this.node.uuid))||(null===(i=this.node.actions)||void 0===i?void 0:i.some((t=>{var e;return null===(e=this.issuesByAction)||void 0===e?void 0:e.has(t.uuid)})));return H`
9029
+ </div>`}isReadOnly(){return this.viewingRevision||this.isTranslating}render(){var t,e,i,o;if(!this.node||!this.ui)return H`<div class="node">Loading...</div>`;const n=yp[this.ui.type],s="categories"===(null==n?void 0:n.localizable),r=this.isTranslating&&s&&!this.includeCategoriesInTranslation,a=(null===(t=this.activity)||void 0===t?void 0:t.nodes)&&this.activity.nodes[this.node.uuid]||0,l=(null===(e=this.issuesByNode)||void 0===e?void 0:e.has(this.node.uuid))||(null===(i=this.node.actions)||void 0===i?void 0:i.some((t=>{var e;return null===(e=this.issuesByAction)||void 0===e?void 0:e.has(t.uuid)})));return H`
9021
9030
  <div
9022
9031
  id="${this.node.uuid}"
9023
9032
  class=${ae({node:!0,"execute-actions":"execute_actions"===this.ui.type,"non-localizable":r,"has-issues":l})}
@@ -9064,7 +9073,7 @@ background: #ccc;
9064
9073
  <temba-icon name="add"></temba-icon>
9065
9074
  </div>`}
9066
9075
  </div>
9067
- `}}t([mt({type:Object})],bp.prototype,"plumber",void 0),t([mt({type:Object})],bp.prototype,"node",void 0),t([mt({type:Object})],bp.prototype,"ui",void 0),t([kd(_d,(t=>t.isTranslating))],bp.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.languageCode))],bp.prototype,"languageCode",void 0),t([kd(_d,(t=>t.viewingRevision))],bp.prototype,"viewingRevision",void 0),t([kd(_d,(t=>t.flowDefinition))],bp.prototype,"flowDefinition",void 0),t([kd(_d,(t=>{var e,i,o;return(null===(o=null===(i=null===(e=t.flowDefinition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.translation_filters)||void 0===o?void 0:o.categories)||!1}))],bp.prototype,"includeCategoriesInTranslation",void 0),t([kd(_d,(t=>t.getCurrentActivity()))],bp.prototype,"activity",void 0),t([kd(_d,(t=>t.issuesByNode))],bp.prototype,"issuesByNode",void 0),t([kd(_d,(t=>t.issuesByAction))],bp.prototype,"issuesByAction",void 0);class xp extends Ne{createRenderRoot(){return this}get dragging(){return this.isDragging}getAvailableLanguages(){var t,e,i;if((null===(t=this.workspace)||void 0===t?void 0:t.languages)&&this.workspace.languages.length>0){const t=new Intl.DisplayNames(["en"],{type:"language"});return this.workspace.languages.map((e=>{try{const i=t.of(e);return i?{code:e,name:i}:{code:e,name:e}}catch(t){return{code:e,name:e}}})).filter((t=>t.code&&t.name))}return(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.languages)&&this.definition._ui.languages.length>0?this.definition._ui.languages.map((t=>({code:"string"==typeof t?t:t.iso||t.code,name:"string"==typeof t?t:t.name}))):[]}static get styles(){return a`
9076
+ `}}t([mt({type:Object})],_p.prototype,"plumber",void 0),t([mt({type:Object})],_p.prototype,"node",void 0),t([mt({type:Object})],_p.prototype,"ui",void 0),t([kd(_d,(t=>t.isTranslating))],_p.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.languageCode))],_p.prototype,"languageCode",void 0),t([kd(_d,(t=>t.viewingRevision))],_p.prototype,"viewingRevision",void 0),t([kd(_d,(t=>t.flowDefinition))],_p.prototype,"flowDefinition",void 0),t([kd(_d,(t=>{var e,i,o;return(null===(o=null===(i=null===(e=t.flowDefinition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.translation_filters)||void 0===o?void 0:o.categories)||!1}))],_p.prototype,"includeCategoriesInTranslation",void 0),t([kd(_d,(t=>t.getCurrentActivity()))],_p.prototype,"activity",void 0),t([kd(_d,(t=>t.issuesByNode))],_p.prototype,"issuesByNode",void 0),t([kd(_d,(t=>t.issuesByAction))],_p.prototype,"issuesByAction",void 0);class wp extends Ne{createRenderRoot(){return this}get dragging(){return this.isDragging}getAvailableLanguages(){var t,e,i;if((null===(t=this.workspace)||void 0===t?void 0:t.languages)&&this.workspace.languages.length>0){const t=new Intl.DisplayNames(["en"],{type:"language"});return this.workspace.languages.map((e=>{try{const i=t.of(e);return i?{code:e,name:i}:{code:e,name:e}}catch(t){return{code:e,name:e}}})).filter((t=>t.code&&t.name))}return(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.languages)&&this.definition._ui.languages.length>0?this.definition._ui.languages.map((t=>({code:"string"==typeof t?t:t.iso||t.code,name:"string"==typeof t?t:t.name}))):[]}static get styles(){return a`
9068
9077
  #editor-container {
9069
9078
  position: relative;
9070
9079
  flex: 1;
@@ -9615,10 +9624,10 @@ background: #ccc;
9615
9624
  .save-indicator.visible {
9616
9625
  opacity: 1;
9617
9626
  }
9618
- `}constructor(){super(),this.saveTimer=null,this.flowType="message",this.features=[],this.activityTimer=null,this.activityInterval=100,this.isDragging=!1,this.isMouseDown=!1,this.dragStartPos={x:0,y:0},this.currentDragItem=null,this.startPos={left:0,top:0},this.selectedItems=new Set,this.isSelecting=!1,this.selectionBox=null,this.targetId=null,this.sourceId=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null,this.isValidTarget=!0,this.connectionSourceX=null,this.connectionSourceY=null,this.issuesWindowHidden=!0,this.localizationWindowHidden=!0,this.translationFilters={categories:!1},this.translationSettingsExpanded=!1,this.autoTranslateDialogOpen=!1,this.autoTranslating=!1,this.autoTranslateModel=null,this.autoTranslateError=null,this.revisionsWindowHidden=!0,this.revisions=[],this.viewingRevision=null,this.isLoadingRevisions=!1,this.isSaving=!1,this.saveError=null,this.preRevertState=null,this.translationCache=new Map,this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.isCreatingNewNode=!1,this.pendingNodePosition=null,this.canvasDropPreview=null,this.addActionToNodeUuid=null,this.actionDragTargetNodeUuid=null,this.previousActionDragTargetNodeUuid=null,this.connectionPlaceholder=null,this.pendingCanvasConnection=null,this.canvasMouseDown=!1,this.boundMouseMove=this.handleMouseMove.bind(this),this.boundMouseUp=this.handleMouseUp.bind(this),this.boundGlobalMouseDown=this.handleGlobalMouseDown.bind(this),this.boundKeyDown=this.handleKeyDown.bind(this),this.boundCanvasContextMenu=this.handleCanvasContextMenu.bind(this)}firstUpdated(t){super.firstUpdated(t),this.plumber=new yp(this.querySelector("#canvas"),this),this.setupGlobalEventListeners(),t.has("flow")&&(Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`),this.fetchRevisions()),this.plumber.on("connection:drag",(t=>{this.dragFromNodeId=t.data.nodeId,this.sourceId=t.sourceId,this.connectionSourceX=t.sourceX,this.connectionSourceY=t.sourceY,this.originalConnectionTargetId=t.target.id})),this.plumber.on("connection:abort",(t=>{this.makeConnection(t)})),this.plumber.on("connection:detach",(t=>{this.makeConnection(t)}))}makeConnection(t){if(this.sourceId&&this.targetId&&this.isValidTarget)t.target.id===this.targetId?this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.targetId):Sd().getState().updateConnection(this.dragFromNodeId,this.sourceId,this.targetId);else if(this.connectionPlaceholder&&this.connectionPlaceholder.visible&&this.sourceId){const t={left:Lh(this.connectionPlaceholder.position.left),top:Lh(this.connectionPlaceholder.position.top)},e=!!this.connectionPlaceholder.dragUp;this.connectionPlaceholder.position=t,this.pendingCanvasConnection={fromNodeId:this.dragFromNodeId,exitId:this.sourceId,position:t};const i=this.querySelector("#canvas");if(i){const o=i.getBoundingClientRect(),n=o.left+t.left-40,s=e?o.top+t.top+74:o.top+t.top+80,r=this.querySelector("temba-canvas-menu");r&&r.show(n,s,{x:t.left,y:t.top},!1)}return void this.requestUpdate()}document.querySelectorAll("temba-flow-node").forEach((t=>{t.classList.remove("connection-target-valid","connection-target-invalid")})),this.pendingCanvasConnection||(this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.targetId=null,this.isValidTarget=!0}updated(t){var e,i,o,n;if(super.updated(t),t.has("canvasSize"),t.has("definition")){this.updateCanvasSize(),(null===(e=this.definition)||void 0===e?void 0:e.type)&&(this.flowType=this.getFlowTypeFromDefinition(this.definition.type));const t={categories:!!((null===(o=null===(i=this.definition)||void 0===i?void 0:i._ui)||void 0===o?void 0:o.translation_filters)||{categories:!1}).categories};this.translationFilters.categories!==t.categories&&(this.translationFilters=t),this.translationCache.clear(),(null===(n=this.definition)||void 0===n?void 0:n.uuid)&&this.startActivityFetching()}t.has("simulatorActive")&&(this.simulatorActive?this.stopActivityFetching():(this.activityInterval=100,this.startActivityFetching())),t.has("activityData")&&this.plumber&&this.plumber.setActivityData(this.activityData),t.has("dirtyDate")&&this.dirtyDate&&(this.isSaving=!0,this.debouncedSave()),t.has("saveError")&&this.saveError&&(this.showSaveErrorDialog(this.saveError),this.saveError=null),t.has("languageCode")&&this.translationCache.clear()}getFlowTypeFromDefinition(t){return"voice"===t?"voice":"messaging_background"===t||"messaging_offline"===t?"background":"message"}debouncedSave(){null!==this.saveTimer&&clearTimeout(this.saveTimer),this.saveTimer=window.setTimeout((()=>{(new Date).getTime()-this.dirtyDate.getTime()>=2e3?(this.saveChanges(),this.saveTimer=null):this.debouncedSave()}),2e3)}saveChanges(t){const e=t||this.definition;return this.isSaving=!0,Sd().postJSON(`/flow/revisions/${this.flow}/`,e).then((t=>{var e;if(t.status<200||t.status>=300)this.saveError=this.extractErrorMessage(t);else{if(t.json){const i=Sd().getState();t.json.info&&i.setFlowInfo(t.json.info),void 0!==(null===(e=t.json.revision)||void 0===e?void 0:e.revision)&&i.setRevision(t.json.revision.revision),this.fetchRevisions()}Sd().getState().setDirtyDate(null)}})).catch((t=>{console.error("Failed to save flow:",t),t instanceof Response?this.saveError=`Server error (${t.status}). Your changes have not been saved.`:this.saveError="Unable to reach the server. Please check your connection and try again."})).finally((()=>{this.isSaving=!1}))}extractErrorMessage(t){if(t.json){if("string"==typeof t.json.detail)return t.json.detail;if("string"==typeof t.json.error)return t.json.error;if("string"==typeof t.json.description)return t.json.description}return`Save failed with status ${t.status}.`}showSaveErrorDialog(t){const e=document.createElement("temba-dialog");e.header="Save Failed",e.primaryButtonName="",e.cancelButtonName="Dismiss";const i=document.createElement("div");i.style.cssText="padding: 20px; font-size: 14px; line-height: 1.5;",i.textContent=t,e.appendChild(i),document.body.appendChild(e),e.open=!0,e.addEventListener("temba-dialog-hidden",(()=>{document.body.removeChild(e)}))}startActivityFetching(){this.simulatorActive||this.fetchActivityData()}stopActivityFetching(){null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null)}fetchActivityData(){var t;if(!(null===(t=this.definition)||void 0===t?void 0:t.uuid))return;if(this.simulatorActive)return;const e=`/flow/activity/${this.definition.uuid}/`,i=Sd();if(!i)return;i.getState().fetchActivity(e).then((()=>{this.isConnected&&(this.activityInterval=Math.min(3e5,this.activityInterval+100),null!==this.activityTimer&&clearTimeout(this.activityTimer),this.activityTimer=window.setTimeout((()=>{this.fetchActivityData()}),this.activityInterval))}))}handleLanguageChange(t){_d.getState().setLanguageCode(t)}disconnectedCallback(){super.disconnectedCallback(),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null),document.removeEventListener("mousemove",this.boundMouseMove),document.removeEventListener("mouseup",this.boundMouseUp),document.removeEventListener("mousedown",this.boundGlobalMouseDown),document.removeEventListener("keydown",this.boundKeyDown);const t=this.querySelector("#canvas");t&&t.removeEventListener("contextmenu",this.boundCanvasContextMenu),_d.getState().clearFlowData()}setupGlobalEventListeners(){document.addEventListener("mousemove",this.boundMouseMove),document.addEventListener("mouseup",this.boundMouseUp),document.addEventListener("mousedown",this.boundGlobalMouseDown),document.addEventListener("keydown",this.boundKeyDown);const t=this.querySelector("#canvas");t&&t.addEventListener("contextmenu",this.boundCanvasContextMenu),this.addEventListener(Mo.ActionEditRequested,this.handleActionEditRequested.bind(this)),this.addEventListener(Mo.AddActionRequested,this.handleAddActionRequested.bind(this)),this.addEventListener(Mo.NodeEditRequested,this.handleNodeEditRequested.bind(this)),this.addEventListener(Mo.NodeDeleted,this.handleNodeDeleted.bind(this)),this.addEventListener(Mo.Selection,(t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuSelection(t):"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelection(t)})),this.addEventListener(Mo.Canceled,(t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuClosed():"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelectorClosed()})),this.addEventListener(Mo.DragExternal,this.handleActionDragExternal.bind(this)),this.addEventListener(Mo.DragInternal,this.handleActionDragInternal.bind(this)),this.addEventListener(Mo.DragStop,(t=>{t.detail.isExternal&&this.handleActionDropExternal(t)}))}getPosition(t,e){var i,o,n;return"node"===e?null===(i=this.definition._ui.nodes[t])||void 0===i?void 0:i.position:null===(n=null===(o=this.definition._ui.stickies)||void 0===o?void 0:o[t])||void 0===n?void 0:n.position}handleMouseDown(t){if(0!==t.button)return;if(this.isReadOnly())return;this.blurActiveContentEditable();const e=t.currentTarget,i=t.target;if(i.classList.contains("exit")||i.closest(".exit"))return;const o=e.getAttribute("uuid"),n="TEMBA-FLOW-NODE"===e.tagName?"node":"sticky",s=this.getPosition(o,n);s&&(this.selectedItems.has(o)||t.ctrlKey||t.metaKey?this.selectedItems.has(o)||this.selectedItems.add(o):this.selectedItems.clear(),this.isMouseDown=!0,this.dragStartPos={x:t.clientX,y:t.clientY},this.startPos={left:s.left,top:s.top},this.currentDragItem={uuid:o,position:s,element:e,type:n},t.preventDefault(),t.stopPropagation())}handleGlobalMouseDown(t){var e;if(0!==t.button)return;const i=null===(e=this.querySelector("#grid"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;if(!(t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom))return;t.target.closest(".draggable")||this.handleCanvasMouseDown(t)}blurActiveContentEditable(){var t;let e=document.activeElement;for(;null===(t=null==e?void 0:e.shadowRoot)||void 0===t?void 0:t.activeElement;)e=e.shadowRoot.activeElement;e instanceof HTMLElement&&"true"===e.getAttribute("contenteditable")&&e.blur()}handleCanvasMouseDown(t){var e;if(this.isReadOnly())return;this.blurActiveContentEditable();const i=t.target;if("canvas"===i.id||"grid"===i.id){this.canvasMouseDown=!0,this.dragStartPos={x:t.clientX,y:t.clientY};const i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(i){this.selectedItems.clear();const e=t.clientX-i.left,o=t.clientY-i.top;this.selectionBox={startX:e,startY:o,endX:e,endY:o}}t.preventDefault()}}handleKeyDown(t){"Delete"!==t.key&&"Backspace"!==t.key||this.selectedItems.size>0&&this.showDeleteConfirmation(),"Escape"===t.key&&(this.selectedItems.clear(),this.requestUpdate())}showDeleteConfirmation(){const t=this.selectedItems.size,e=1===t?"item":"items",i=document.createElement("temba-dialog");i.header="Delete Items",i.primaryButtonName="Delete",i.cancelButtonName="Cancel",i.destructive=!0,i.innerHTML=`<div style="padding: 20px;">Are you sure you want to delete ${t} ${e}?</div>`,i.addEventListener("temba-button-clicked",(t=>{"Delete"===t.detail.button.name&&(this.deleteSelectedItems(),i.open=!1)})),document.body.appendChild(i),i.open=!0,i.addEventListener("temba-dialog-hidden",(()=>{document.body.removeChild(i)}))}deleteNodes(t){t.length>0&&Sd().getState().removeNodes(t)}deleteSelectedItems(){const t=Array.from(this.selectedItems).filter((t=>this.definition.nodes.some((e=>e.uuid===t))));this.deleteNodes(Array.from(t));const e=Array.from(this.selectedItems).filter((t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]}));Sd().getState().removeStickyNotes(e),this.selectedItems.clear()}updateSelectionBox(t){var e;if(!this.selectionBox||!this.canvasMouseDown)return;const i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;const o=t.clientX-i.left,n=t.clientY-i.top;this.selectionBox={...this.selectionBox,endX:o,endY:n},this.updateSelectedItemsFromBox()}updateSelectedItemsFromBox(){var t,e,i;if(!this.selectionBox)return;const o=new Set,n=Math.min(this.selectionBox.startX,this.selectionBox.endX),s=Math.min(this.selectionBox.startY,this.selectionBox.endY),r=Math.max(this.selectionBox.startX,this.selectionBox.endX),a=Math.max(this.selectionBox.startY,this.selectionBox.endY);null===(t=this.definition)||void 0===t||t.nodes.forEach((t=>{var e,i,l;const d=this.querySelector(`[id="${t.uuid}"]`);if(d){const c=null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid])||void 0===i?void 0:i.position;if(c){const e=d.getBoundingClientRect();if(null===(l=this.querySelector("#canvas"))||void 0===l?void 0:l.getBoundingClientRect()){const i=c.left,l=c.top,d=i+e.width,h=l+e.height;n<d&&r>i&&s<h&&a>l&&o.add(t.uuid)}}}}));const l=(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.stickies)||{};Object.entries(l).forEach((([t,e])=>{if(e.position){const i=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(i){const l=i.clientWidth,d=i.clientHeight,c=e.position.left,h=e.position.top;n<c+l&&r>c&&s<h+d&&a>h&&o.add(t)}}})),this.selectedItems=o}renderSelectionBox(){if(!this.selectionBox||!this.isSelecting)return"";const t=Math.min(this.selectionBox.startX,this.selectionBox.endX),e=Math.min(this.selectionBox.startY,this.selectionBox.endY),i=Math.abs(this.selectionBox.endX-this.selectionBox.startX),o=Math.abs(this.selectionBox.endY-this.selectionBox.startY);return H`<div
9627
+ `}constructor(){super(),this.saveTimer=null,this.flowType="message",this.features=[],this.activityTimer=null,this.activityInterval=100,this.isDragging=!1,this.isMouseDown=!1,this.dragStartPos={x:0,y:0},this.currentDragItem=null,this.startPos={left:0,top:0},this.selectedItems=new Set,this.isSelecting=!1,this.selectionBox=null,this.targetId=null,this.sourceId=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null,this.isValidTarget=!0,this.connectionSourceX=null,this.connectionSourceY=null,this.issuesWindowHidden=!0,this.localizationWindowHidden=!0,this.translationFilters={categories:!1},this.translationSettingsExpanded=!1,this.autoTranslateDialogOpen=!1,this.autoTranslating=!1,this.autoTranslateModel=null,this.autoTranslateError=null,this.revisionsWindowHidden=!0,this.revisions=[],this.viewingRevision=null,this.isLoadingRevisions=!1,this.isSaving=!1,this.saveError=null,this.preRevertState=null,this.translationCache=new Map,this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.isCreatingNewNode=!1,this.pendingNodePosition=null,this.canvasDropPreview=null,this.addActionToNodeUuid=null,this.actionDragTargetNodeUuid=null,this.previousActionDragTargetNodeUuid=null,this.connectionPlaceholder=null,this.pendingCanvasConnection=null,this.canvasMouseDown=!1,this.boundMouseMove=this.handleMouseMove.bind(this),this.boundMouseUp=this.handleMouseUp.bind(this),this.boundGlobalMouseDown=this.handleGlobalMouseDown.bind(this),this.boundKeyDown=this.handleKeyDown.bind(this),this.boundCanvasContextMenu=this.handleCanvasContextMenu.bind(this)}firstUpdated(t){super.firstUpdated(t),this.plumber=new xp(this.querySelector("#canvas"),this),this.setupGlobalEventListeners(),t.has("flow")&&(Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`),this.fetchRevisions()),this.plumber.on("connection:drag",(t=>{this.dragFromNodeId=t.data.nodeId,this.sourceId=t.sourceId,this.connectionSourceX=t.sourceX,this.connectionSourceY=t.sourceY,this.originalConnectionTargetId=t.target.id})),this.plumber.on("connection:abort",(t=>{this.makeConnection(t)})),this.plumber.on("connection:detach",(t=>{this.makeConnection(t)}))}makeConnection(t){if(this.sourceId&&this.targetId&&this.isValidTarget)t.target.id===this.targetId?this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.targetId):Sd().getState().updateConnection(this.dragFromNodeId,this.sourceId,this.targetId);else if(this.connectionPlaceholder&&this.connectionPlaceholder.visible&&this.sourceId){const t={left:Ph(this.connectionPlaceholder.position.left),top:Ph(this.connectionPlaceholder.position.top)},e=!!this.connectionPlaceholder.dragUp;this.connectionPlaceholder.position=t,this.pendingCanvasConnection={fromNodeId:this.dragFromNodeId,exitId:this.sourceId,position:t};const i=this.querySelector("#canvas");if(i){const o=i.getBoundingClientRect(),n=o.left+t.left-40,s=e?o.top+t.top+74:o.top+t.top+80,r=this.querySelector("temba-canvas-menu");r&&r.show(n,s,{x:t.left,y:t.top},!1)}return void this.requestUpdate()}document.querySelectorAll("temba-flow-node").forEach((t=>{t.classList.remove("connection-target-valid","connection-target-invalid")})),this.pendingCanvasConnection||(this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.targetId=null,this.isValidTarget=!0}updated(t){var e,i,o,n;if(super.updated(t),t.has("canvasSize"),t.has("definition")){this.updateCanvasSize(),(null===(e=this.definition)||void 0===e?void 0:e.type)&&(this.flowType=this.getFlowTypeFromDefinition(this.definition.type));const t={categories:!!((null===(o=null===(i=this.definition)||void 0===i?void 0:i._ui)||void 0===o?void 0:o.translation_filters)||{categories:!1}).categories};this.translationFilters.categories!==t.categories&&(this.translationFilters=t),this.translationCache.clear(),(null===(n=this.definition)||void 0===n?void 0:n.uuid)&&this.startActivityFetching()}t.has("simulatorActive")&&(this.simulatorActive?this.stopActivityFetching():(this.activityInterval=100,this.startActivityFetching())),t.has("activityData")&&this.plumber&&this.plumber.setActivityData(this.activityData),t.has("dirtyDate")&&this.dirtyDate&&(this.isSaving=!0,this.debouncedSave()),t.has("saveError")&&this.saveError&&(this.showSaveErrorDialog(this.saveError),this.saveError=null),t.has("languageCode")&&this.translationCache.clear()}getFlowTypeFromDefinition(t){return"voice"===t?"voice":"messaging_background"===t||"messaging_offline"===t?"background":"message"}debouncedSave(){null!==this.saveTimer&&clearTimeout(this.saveTimer),this.saveTimer=window.setTimeout((()=>{(new Date).getTime()-this.dirtyDate.getTime()>=2e3?(this.saveChanges(),this.saveTimer=null):this.debouncedSave()}),2e3)}definitionForSave(t){return{...t,_ui:{...t._ui,editor:Lh}}}saveChanges(t){const e=this.definitionForSave(t||this.definition);return this.isSaving=!0,Sd().postJSON(`/flow/revisions/${this.flow}/`,e).then((t=>{var e;if(t.status<200||t.status>=300)this.saveError=this.extractErrorMessage(t);else{if(t.json){const i=Sd().getState();t.json.info&&i.setFlowInfo(t.json.info),void 0!==(null===(e=t.json.revision)||void 0===e?void 0:e.revision)&&i.setRevision(t.json.revision.revision),this.fetchRevisions()}Sd().getState().setDirtyDate(null)}})).catch((t=>{console.error("Failed to save flow:",t),t instanceof Response?this.saveError=`Server error (${t.status}). Your changes have not been saved.`:this.saveError="Unable to reach the server. Please check your connection and try again."})).finally((()=>{this.isSaving=!1}))}extractErrorMessage(t){if(t.json){if("string"==typeof t.json.detail)return t.json.detail;if("string"==typeof t.json.error)return t.json.error;if("string"==typeof t.json.description)return t.json.description}return`Save failed with status ${t.status}.`}showSaveErrorDialog(t){const e=document.createElement("temba-dialog");e.header="Save Failed",e.primaryButtonName="",e.cancelButtonName="Dismiss";const i=document.createElement("div");i.style.cssText="padding: 20px; font-size: 14px; line-height: 1.5;",i.textContent=t,e.appendChild(i),document.body.appendChild(e),e.open=!0,e.addEventListener("temba-dialog-hidden",(()=>{document.body.removeChild(e)}))}startActivityFetching(){this.simulatorActive||this.fetchActivityData()}stopActivityFetching(){null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null)}fetchActivityData(){var t;if(!(null===(t=this.definition)||void 0===t?void 0:t.uuid))return;if(this.simulatorActive)return;const e=`/flow/activity/${this.definition.uuid}/`,i=Sd();if(!i)return;i.getState().fetchActivity(e).then((()=>{this.isConnected&&(this.activityInterval=Math.min(3e5,this.activityInterval+100),null!==this.activityTimer&&clearTimeout(this.activityTimer),this.activityTimer=window.setTimeout((()=>{this.fetchActivityData()}),this.activityInterval))}))}handleLanguageChange(t){_d.getState().setLanguageCode(t)}disconnectedCallback(){super.disconnectedCallback(),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null),document.removeEventListener("mousemove",this.boundMouseMove),document.removeEventListener("mouseup",this.boundMouseUp),document.removeEventListener("mousedown",this.boundGlobalMouseDown),document.removeEventListener("keydown",this.boundKeyDown);const t=this.querySelector("#canvas");t&&t.removeEventListener("contextmenu",this.boundCanvasContextMenu),_d.getState().clearFlowData()}setupGlobalEventListeners(){document.addEventListener("mousemove",this.boundMouseMove),document.addEventListener("mouseup",this.boundMouseUp),document.addEventListener("mousedown",this.boundGlobalMouseDown),document.addEventListener("keydown",this.boundKeyDown);const t=this.querySelector("#canvas");t&&t.addEventListener("contextmenu",this.boundCanvasContextMenu),this.addEventListener(Mo.ActionEditRequested,this.handleActionEditRequested.bind(this)),this.addEventListener(Mo.AddActionRequested,this.handleAddActionRequested.bind(this)),this.addEventListener(Mo.NodeEditRequested,this.handleNodeEditRequested.bind(this)),this.addEventListener(Mo.NodeDeleted,this.handleNodeDeleted.bind(this)),this.addEventListener(Mo.Selection,(t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuSelection(t):"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelection(t)})),this.addEventListener(Mo.Canceled,(t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuClosed():"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelectorClosed()})),this.addEventListener(Mo.DragExternal,this.handleActionDragExternal.bind(this)),this.addEventListener(Mo.DragInternal,this.handleActionDragInternal.bind(this)),this.addEventListener(Mo.DragStop,(t=>{t.detail.isExternal&&this.handleActionDropExternal(t)}))}getPosition(t,e){var i,o,n;return"node"===e?null===(i=this.definition._ui.nodes[t])||void 0===i?void 0:i.position:null===(n=null===(o=this.definition._ui.stickies)||void 0===o?void 0:o[t])||void 0===n?void 0:n.position}handleMouseDown(t){if(0!==t.button)return;if(this.isReadOnly())return;this.blurActiveContentEditable();const e=t.currentTarget,i=t.target;if(i.classList.contains("exit")||i.closest(".exit"))return;const o=e.getAttribute("uuid"),n="TEMBA-FLOW-NODE"===e.tagName?"node":"sticky",s=this.getPosition(o,n);s&&(this.selectedItems.has(o)||t.ctrlKey||t.metaKey?this.selectedItems.has(o)||this.selectedItems.add(o):this.selectedItems.clear(),this.isMouseDown=!0,this.dragStartPos={x:t.clientX,y:t.clientY},this.startPos={left:s.left,top:s.top},this.currentDragItem={uuid:o,position:s,element:e,type:n},t.preventDefault(),t.stopPropagation())}handleGlobalMouseDown(t){var e;if(0!==t.button)return;const i=null===(e=this.querySelector("#grid"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;if(!(t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom))return;t.target.closest(".draggable")||this.handleCanvasMouseDown(t)}blurActiveContentEditable(){var t;let e=document.activeElement;for(;null===(t=null==e?void 0:e.shadowRoot)||void 0===t?void 0:t.activeElement;)e=e.shadowRoot.activeElement;e instanceof HTMLElement&&"true"===e.getAttribute("contenteditable")&&e.blur()}handleCanvasMouseDown(t){var e;if(this.isReadOnly())return;this.blurActiveContentEditable();const i=t.target;if("canvas"===i.id||"grid"===i.id){this.canvasMouseDown=!0,this.dragStartPos={x:t.clientX,y:t.clientY};const i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(i){this.selectedItems.clear();const e=t.clientX-i.left,o=t.clientY-i.top;this.selectionBox={startX:e,startY:o,endX:e,endY:o}}t.preventDefault()}}handleKeyDown(t){"Delete"!==t.key&&"Backspace"!==t.key||this.selectedItems.size>0&&this.showDeleteConfirmation(),"Escape"===t.key&&(this.selectedItems.clear(),this.requestUpdate())}showDeleteConfirmation(){const t=this.selectedItems.size,e=1===t?"item":"items",i=document.createElement("temba-dialog");i.header="Delete Items",i.primaryButtonName="Delete",i.cancelButtonName="Cancel",i.destructive=!0,i.innerHTML=`<div style="padding: 20px;">Are you sure you want to delete ${t} ${e}?</div>`,i.addEventListener("temba-button-clicked",(t=>{"Delete"===t.detail.button.name&&(this.deleteSelectedItems(),i.open=!1)})),document.body.appendChild(i),i.open=!0,i.addEventListener("temba-dialog-hidden",(()=>{document.body.removeChild(i)}))}deleteNodes(t){t.length>0&&Sd().getState().removeNodes(t)}deleteSelectedItems(){const t=Array.from(this.selectedItems).filter((t=>this.definition.nodes.some((e=>e.uuid===t))));this.deleteNodes(Array.from(t));const e=Array.from(this.selectedItems).filter((t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]}));Sd().getState().removeStickyNotes(e),this.selectedItems.clear()}updateSelectionBox(t){var e;if(!this.selectionBox||!this.canvasMouseDown)return;const i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;const o=t.clientX-i.left,n=t.clientY-i.top;this.selectionBox={...this.selectionBox,endX:o,endY:n},this.updateSelectedItemsFromBox()}updateSelectedItemsFromBox(){var t,e,i;if(!this.selectionBox)return;const o=new Set,n=Math.min(this.selectionBox.startX,this.selectionBox.endX),s=Math.min(this.selectionBox.startY,this.selectionBox.endY),r=Math.max(this.selectionBox.startX,this.selectionBox.endX),a=Math.max(this.selectionBox.startY,this.selectionBox.endY);null===(t=this.definition)||void 0===t||t.nodes.forEach((t=>{var e,i,l;const d=this.querySelector(`[id="${t.uuid}"]`);if(d){const c=null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid])||void 0===i?void 0:i.position;if(c){const e=d.getBoundingClientRect();if(null===(l=this.querySelector("#canvas"))||void 0===l?void 0:l.getBoundingClientRect()){const i=c.left,l=c.top,d=i+e.width,h=l+e.height;n<d&&r>i&&s<h&&a>l&&o.add(t.uuid)}}}}));const l=(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.stickies)||{};Object.entries(l).forEach((([t,e])=>{if(e.position){const i=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(i){const l=i.clientWidth,d=i.clientHeight,c=e.position.left,h=e.position.top;n<c+l&&r>c&&s<h+d&&a>h&&o.add(t)}}})),this.selectedItems=o}renderSelectionBox(){if(!this.selectionBox||!this.isSelecting)return"";const t=Math.min(this.selectionBox.startX,this.selectionBox.endX),e=Math.min(this.selectionBox.startY,this.selectionBox.endY),i=Math.abs(this.selectionBox.endX-this.selectionBox.startX),o=Math.abs(this.selectionBox.endY-this.selectionBox.startY);return H`<div
9619
9628
  class="selection-box"
9620
9629
  style="left: ${t}px; top: ${e}px; width: ${i}px; height: ${o}px;"
9621
- ></div>`}renderCanvasDropPreview(){var t;if(!this.canvasDropPreview)return"";const{action:e,position:i}=this.canvasDropPreview,o=mp[e.type];return o?H`<div
9630
+ ></div>`}renderCanvasDropPreview(){var t;if(!this.canvasDropPreview)return"";const{action:e,position:i}=this.canvasDropPreview,o=fp[e.type];return o?H`<div
9622
9631
  class="canvas-drop-preview"
9623
9632
  style="position: absolute; left: ${i.left}px; top: ${i.top}px; opacity: 0.6; pointer-events: none; z-index: 10000;"
9624
9633
  >
@@ -9630,7 +9639,7 @@ background: #ccc;
9630
9639
  <div class="action-content">
9631
9640
  <div
9632
9641
  class="cn-title"
9633
- style="background: ${o.group?null===(t=Xh[o.group])||void 0===t?void 0:t.color:"#aaaaaa"}"
9642
+ style="background: ${o.group?null===(t=Jh[o.group])||void 0===t?void 0:t.color:"#aaaaaa"}"
9634
9643
  >
9635
9644
  <div class="title-spacer"></div>
9636
9645
  <div class="name">${o.name}</div>
@@ -9647,7 +9656,7 @@ background: #ccc;
9647
9656
  </div>
9648
9657
  </div>
9649
9658
  </div>
9650
- </div>`:""}renderConnectionPlaceholder(){if(!this.connectionPlaceholder||!this.connectionPlaceholder.visible)return"";const{position:t,dragUp:e}=this.connectionPlaceholder;let i=null;if(this.sourceId&&this.dragFromNodeId&&this.pendingCanvasConnection&&null!=this.connectionSourceX&&null!=this.connectionSourceY){const o=this.connectionSourceX,n=this.connectionSourceY,s=t.left+100,r=e?t.top+64:t.top,a=vp(o,n,s,r,20,e?0:10,5,e?s<o?"left":"right":"top"),l=6.5,d=13;let c;c=e?`${s},${r-d} ${s-l},${r} ${s+l},${r}`:`${s},${r} ${s-l},${r-d} ${s+l},${r-d}`,i=H`
9659
+ </div>`:""}renderConnectionPlaceholder(){if(!this.connectionPlaceholder||!this.connectionPlaceholder.visible)return"";const{position:t,dragUp:e}=this.connectionPlaceholder;let i=null;if(this.sourceId&&this.dragFromNodeId&&this.pendingCanvasConnection&&null!=this.connectionSourceX&&null!=this.connectionSourceY){const o=this.connectionSourceX,n=this.connectionSourceY,s=t.left+100,r=e?t.top+64:t.top,a=bp(o,n,s,r,20,e?0:10,5,e?s<o?"left":"right":"top"),l=6.5,d=13;let c;c=e?`${s},${r-d} ${s-l},${r} ${s+l},${r}`:`${s},${r} ${s-l},${r-d} ${s+l},${r-d}`,i=H`
9651
9660
  <svg
9652
9661
  style="position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;"
9653
9662
  >
@@ -9678,7 +9687,7 @@ background: #ccc;
9678
9687
  </div>
9679
9688
  </div>
9680
9689
  </div>
9681
- </div>`}checkCollisionsAndReflow(t){var e;if(!this.definition)return;const i=[];for(const t of this.definition.nodes){const o=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==o?void 0:o.position))continue;const n=Bh(t.uuid,o.position);n&&i.push(n)}const o=((t,e)=>{const i=new Map,o=new Set(t),n=new Map;for(const t of e)n.set(t.uuid,{...t});for(const t of[...o]){const e=n.get(t);if(e)for(const[i,s]of n)if(i!==t&&!o.has(i)&&Fh(e,s)&&e.top>s.top&&s.top<30){o.delete(t),o.add(i);break}}const s=[],r=new Set;for(const t of o){const e=n.get(t);if(e)for(const[t,i]of n)o.has(t)||r.has(t)||Fh(e,i)&&(s.push(t),r.add(t))}const a=new Set;let l=0;for(;s.length>0&&l<200;){l++;const t=s.shift();if(a.has(t))continue;const e=n.get(t),d=[];for(const[i,s]of n)i!==t&&(o.has(i)||a.has(i))&&Fh(e,s)&&d.push(s);if(0===d.length)continue;const c=d.filter((t=>o.has(t.uuid))),h=[...qh];let u=null;if(c.length>0){for(const t of c){if(e.top>t.top){const t=h.indexOf("up");-1!==t&&h.splice(t,1)}if(e.left>t.left){const t=h.indexOf("left");-1!==t&&h.splice(t,1)}}let t=0,i=0;for(const o of c)t+=Math.min(e.right,o.right)-Math.max(e.left,o.left),i+=Math.min(e.bottom,o.bottom)-Math.max(e.top,o.top);t>i?u="vertical":i>t&&(u="horizontal")}let p=null,m=1/0;for(const i of h){const s=jh(e,d,i);if(!s)continue;const r=Uh(e,s.left,s.top);let l=!1,h=0;for(const[e,i]of n)if(e!==t&&Fh(r,i)){if(o.has(e)||a.has(e)){l=!0;break}h++}if(l)continue;const g=Math.abs(s.left-e.left)+Math.abs(s.top-e.top);let f;if(c.length>0){const t="up"===i||"down"===i;f=2e3*h+(null===u||"vertical"===u&&t||"horizontal"===u&&!t?0:5e3)+g}else f=1e4*h+g;f<m&&(m=f,p=s)}if(p){i.set(t,{left:p.left,top:p.top});const l=Uh(e,p.left,p.top);n.set(t,l),a.add(t);for(const[e,i]of n)e!==t&&(o.has(e)||a.has(e)||r.has(e)||Fh(l,i)&&(s.push(e),r.add(e)))}}return i})(t,i);if(o.size>0){const t={};for(const[e,i]of o.entries())t[e]=i;Sd().getState().updateCanvasPositions(t)}}handleMouseMove(t){if(this.canvasMouseDown&&!this.isMouseDown)return this.isSelecting=!0,this.updateSelectionBox(t),void this.requestUpdate();if(this.plumber.connectionDragging){const e=document.querySelector("temba-flow-node:hover");if(document.querySelectorAll("temba-flow-node").forEach((t=>{t.classList.remove("connection-target-valid","connection-target-invalid")})),e)this.targetId=e.getAttribute("uuid"),this.isValidTarget=this.targetId!==this.dragFromNodeId,this.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.connectionPlaceholder=null;else{this.targetId=null,this.isValidTarget=!0;const e=this.querySelector("#canvas");if(e){const i=e.getBoundingClientRect(),o=t.clientX-i.left,n=t.clientY-i.top,s=200,r=64,a=13,l=1,d=null!=this.connectionSourceY&&n<this.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}this.requestUpdate()}if(!this.isMouseDown||!this.currentDragItem)return;const e=t.clientX-this.dragStartPos.x,i=t.clientY-this.dragStartPos.y,o=Math.sqrt(e*e+i*i);if(!this.isDragging&&o>5&&(this.isDragging=!0),this.isDragging){const t=this.selectedItems.has(this.currentDragItem.uuid)&&this.selectedItems.size>1?Array.from(this.selectedItems):[this.currentDragItem.uuid];t.forEach((t=>{const o=this.querySelector(`[uuid="${t}"]`);if(o){const n="TEMBA-FLOW-NODE"===o.tagName?"node":"sticky",s=this.getPosition(t,n);if(s){const t=s.left+e,n=s.top+i;o.style.left=`${t}px`,o.style.top=`${n}px`,o.classList.add("dragging")}}})),this.plumber.revalidate(t)}}handleMouseUp(t){if(this.canvasMouseDown&&this.isSelecting)return this.isSelecting=!1,this.selectionBox=null,this.canvasMouseDown=!1,void this.requestUpdate();if(!this.canvasMouseDown||this.isSelecting){if(this.isMouseDown&&this.currentDragItem){if(this.isDragging){const e=t.clientX-this.dragStartPos.x,i=t.clientY-this.dragStartPos.y,o=this.selectedItems.has(this.currentDragItem.uuid)&&this.selectedItems.size>1?Array.from(this.selectedItems):[this.currentDragItem.uuid],n={};if(o.forEach((t=>{const o=this.definition.nodes.find((e=>e.uuid===t))?"node":"sticky",s=this.getPosition(t,o);if(s){const o=s.left+e,r=s.top+i,a=Lh(o),l=Lh(r),d={left:a,top:l};n[t]=d;const c=this.querySelector(`[uuid="${t}"]`);c&&(c.classList.remove("dragging"),c.style.left=`${a}px`,c.style.top=`${l}px`)}})),Object.keys(n).length>0){Sd().getState().updateCanvasPositions(n);const t=o.filter((t=>this.definition.nodes.find((e=>e.uuid===t))));t.length>0?setTimeout((()=>{this.checkCollisionsAndReflow(t)}),0):setTimeout((()=>{this.plumber.repaintEverything()}),0)}this.selectedItems.clear()}this.isDragging=!1,this.isMouseDown=!1,this.currentDragItem=null,this.canvasMouseDown=!1}}else this.canvasMouseDown=!1}updateCanvasSize(){var t;if(!this.definition)return;const e=Sd();if(!e)return;let i=0,o=0;this.definition.nodes.forEach((t=>{const e=this.definition._ui.nodes[t.uuid];if(e&&e.position){const n=this.querySelector(`[id="${t.uuid}"]`);if(n){const t=n.getBoundingClientRect();i=Math.max(i,e.position.left+t.width),o=Math.max(o,e.position.top+t.height)}}}));const n=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{};Object.entries(n).forEach((([t,e])=>{if(e.position){const n=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(n){const t=n.clientWidth,s=n.clientHeight;i=Math.max(i,e.position.left+t),o=Math.max(o,e.position.top+s)}else i=Math.max(i,e.position.left+200),o=Math.max(o,e.position.top+100)}})),e.getState().expandCanvas(i,o)}handleCanvasContextMenu(t){if(this.isReadOnly())return void t.preventDefault();if("canvas"!==t.target.id)return;t.preventDefault(),t.stopPropagation();const e=this.querySelector("#canvas");if(!e)return;const i=e.getBoundingClientRect(),o=t.clientX-i.left-10,n=t.clientY-i.top-10,s=Lh(o),r=Lh(n),a=this.querySelector("temba-canvas-menu");a&&a.show(t.clientX,t.clientY,{x:s,y:r})}handleEmptyFlowClick(t){const e=this.querySelector("#editor");if(!e)return;e.scrollTo({left:0,top:0,behavior:"smooth"});const i=this.querySelector("temba-canvas-menu");if(i){const e=t.currentTarget.getBoundingClientRect(),o=265,n=e.left+e.width/2-o/2,s=e.bottom+8;i.show(n,s,{x:0,y:0},!1)}}handleCanvasMenuSelection(t){const e=t.detail,i=Sd();if("sticky"===e.action)i.getState().createStickyNote({left:e.position.x,top:e.position.y}),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null;else{const t=this.querySelector("temba-node-type-selector");t&&t.show(e.action,e.position)}}cleanUpConnection(){this.isCreatingNewNode&&(this.isCreatingNewNode=!1,this.pendingNodePosition=null),this.originalConnectionTargetId&&(this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.originalConnectionTargetId),this.originalConnectionTargetId=null),this.pendingCanvasConnection&&(this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null)}handleCanvasMenuClosed(){this.cleanUpConnection()}handleNodeTypeSelectorClosed(){this.cleanUpConnection()}handleNodeTypeSelection(t){const e=t.detail;if(this.pendingCanvasConnection,this.addActionToNodeUuid){const t=this.definition.nodes.find((t=>t.uuid===this.addActionToNodeUuid)),i=this.definition._ui.nodes[this.addActionToNodeUuid];if(t&&i){const o=Xt();return this.editingAction={uuid:o,type:e.nodeType},this.editingNode=t,this.editingNodeUI=i,this.isCreatingNewNode=!1,void(this.addActionToNodeUuid=null)}this.addActionToNodeUuid=null}const i=Xt(),o=e.nodeType in mp,n=o?"execute_actions":e.nodeType,s=fp[n],r=(null==s?void 0:s.form)&&Object.keys(s.form).some((t=>{var e;return["rules","categories","cases"].includes(t)||"array"===(null===(e=s.form[t])||void 0===e?void 0:e.type)})),a={uuid:i,actions:[],exits:r?[]:[{uuid:Xt(),destination_uuid:null}]};r&&(a.router={type:"switch",categories:[],cases:[],operand:"@input.text",default_category_uuid:void 0});const l={position:this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},type:n,config:{}};if(this.isCreatingNewNode=!0,this.pendingNodePosition=this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},this.editingNode=a,this.editingNodeUI=l,o){const t=Xt();this.editingAction={uuid:t,type:e.nodeType}}}handleActionEditRequested(t){this.editingAction=t.detail.action,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null;const e=t.detail.nodeUuid,i=this.definition.nodes.find((t=>t.uuid===e));i&&(this.editingNode=i,this.editingNodeUI=this.definition._ui.nodes[e])}handleAddActionRequested(t){const e=t.detail.nodeUuid,i=this.definition.nodes.find((t=>t.uuid===e));if(!i)return;const o=this.definition._ui.nodes[e];if(!o)return;const n=this.querySelector("temba-node-type-selector");n&&(n.show("action-no-branching",{x:o.position.left,y:o.position.top}),this.addActionToNodeUuid=e)}handleNodeEditRequested(t){this.editingNode=t.detail.node,this.editingNodeUI=t.detail.nodeUI,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null}handleNodeDeleted(t){const e=t.detail.uuid;e&&this.deleteNodes([e])}handleActionSaved(t){var e,i;if(this.editingNode&&this.editingAction){let o;o=this.editingNode.actions.findIndex((t=>t.uuid===this.editingAction.uuid))>=0?this.editingNode.actions.map((e=>e.uuid===this.editingAction.uuid?t:e)):[...this.editingNode.actions,t];const n={...this.editingNode,actions:o};if(this.isCreatingNewNode){const t=Sd(),i={position:this.pendingNodePosition||{left:0,top:0},type:null===(e=this.editingNodeUI)||void 0===e?void 0:e.type,config:{}};t.getState().addNode(n,i),this.pendingCanvasConnection&&(t.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,n.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([n.uuid])}))}else{const t=this.editingNode.uuid;null===(i=Sd())||void 0===i||i.getState().updateNode(t,n),requestAnimationFrame((()=>{this.checkCollisionsAndReflow([t])}))}}this.closeNodeEditor()}closeNodeEditor(){this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null}handleActionEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}handleNodeSaved(t,e){var i,o,n;if(this.editingNode)if(this.isCreatingNewNode){const o=Sd(),n={position:this.pendingNodePosition||{left:0,top:0},type:null===(i=this.editingNodeUI)||void 0===i?void 0:i.type,config:e||{}};o.getState().addNode(t,n),this.pendingCanvasConnection&&(o.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,t.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([t.uuid])}))}else{if(this.plumber){const e=this.editingNode.exits||[],i=t.exits||[];e.filter((t=>!i.find((e=>e.uuid===t.uuid)))).forEach((t=>{this.plumber.removeExitConnection(t.uuid)}))}this.plumber.revalidate([t.uuid]),null===(o=Sd())||void 0===o||o.getState().updateNode(this.editingNode.uuid,t),e&&(null===(n=Sd())||void 0===n||n.getState().updateNodeUIConfig(t.uuid,e)),requestAnimationFrame((()=>{this.checkCollisionsAndReflow([this.editingNode.uuid])}))}this.closeNodeEditor()}handleNodeEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}getNodeAtPosition(t,e){const i=this.querySelectorAll("temba-flow-node");for(const o of Array.from(i)){const i=o.getBoundingClientRect();if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)return o.getAttribute("data-node-uuid")}return null}calculateCanvasDropPosition(t,e,i=!0){const o=this.querySelector("#canvas");if(!o)return{left:0,top:0};const n=o.getBoundingClientRect(),s=t-n.left-20,r=e-n.top-20;return i?{left:Lh(s),top:Lh(r)}:{left:s,top:r}}handleActionDragExternal(t){const{action:e,nodeUuid:i,actionIndex:o,mouseX:n,mouseY:s,actionHeight:r=60,isLastAction:a=!1}=t.detail,l=this.getNodeAtPosition(n,s);if(l&&l!==i){const t=this.definition._ui.nodes[l],a=this.definition.nodes.find((t=>t.uuid===l));if("execute_actions"===(null==t?void 0:t.type)&&a){if(this.previousActionDragTargetNodeUuid&&this.previousActionDragTargetNodeUuid!==l){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1}))}this.actionDragTargetNodeUuid=l,this.previousActionDragTargetNodeUuid=l,this.canvasDropPreview=null;const t=this.querySelector(`temba-flow-node[data-node-uuid="${i}"]`);t&&t.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1}));const a=this.querySelector(`temba-flow-node[data-node-uuid="${l}"]`);return a&&a.dispatchEvent(new CustomEvent("action-drag-over",{detail:{action:e,sourceNodeUuid:i,actionIndex:o,mouseX:n,mouseY:s,actionHeight:r},bubbles:!1})),void this.requestUpdate()}}if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.actionDragTargetNodeUuid=null;const d=this.querySelector(`temba-flow-node[data-node-uuid="${i}"]`);if(a)d&&d.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null;else{d&&d.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const t=this.calculateCanvasDropPosition(n,s,!1);this.canvasDropPreview={action:e,nodeUuid:i,actionIndex:o,position:t,actionHeight:r}}this.requestUpdate()}handleActionDragInternal(t){if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null}handleActionDropExternal(t){var e,i;const{action:o,nodeUuid:n,actionIndex:s,mouseX:r,mouseY:a,isLastAction:l=!1}=t.detail,d=this.actionDragTargetNodeUuid;if(d&&d!==n){const t=this.querySelector(`temba-flow-node[data-node-uuid="${d}"]`);return t&&t.dispatchEvent(new CustomEvent("action-drop",{detail:{action:o,sourceNodeUuid:n,actionIndex:s,mouseX:r,mouseY:a},bubbles:!1})),this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null)}if(l)return this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null);const c=this.calculateCanvasDropPosition(r,a,!0),h=this.definition.nodes.find((t=>t.uuid===n));if(!h)return;const u=h.actions.filter(((t,e)=>e!==s));if(0===u.length)this.deleteNodes([n]);else{const t={...h,actions:u};null===(e=Sd())||void 0===e||e.getState().updateNode(n,t)}const p={uuid:Xt(),actions:[o],exits:[{uuid:Xt(),destination_uuid:null}]},m={position:c,type:"execute_actions",config:{}};null===(i=Sd())||void 0===i||i.getState().addNode(p,m),this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([p.uuid])}))}getLocalizationLanguages(){if(!this.definition)return[];const t=this.definition.language;return this.getAvailableLanguages().filter((e=>e.code!==t))}getLocalizationProgress(t){if(!this.definition||!t||t===this.definition.language)return{total:0,localized:0};const e=this.buildTranslationBundles(this.translationFilters.categories,t);return this.getTranslationCounts(e)}getLanguageLocalization(t){var e;return(null===(e=this.definition)||void 0===e?void 0:e.localization)&&this.definition.localization[t]||{}}buildTranslationBundles(t,e=this.languageCode){if(!this.definition||!e||e===this.definition.language)return[];const i=this.getLanguageLocalization(e),o=[];return this.definition.nodes.forEach((e=>{var n,s,r,a,l;if(null===(n=e.actions)||void 0===n||n.forEach((t=>{const n=mp[t.type];if(!(null==n?void 0:n.localizable)||0===n.localizable.length)return;const s="send_msg"===t.type?n.localizable.filter((t=>"text"===t)):n.localizable,r=this.findTranslations("property",t.uuid,s,t,i);r.length>0&&o.push({nodeUuid:e.uuid,actionUuid:t.uuid,translations:r})})),!t)return;const d=null===(r=null===(s=this.definition._ui)||void 0===s?void 0:s.nodes)||void 0===r?void 0:r[e.uuid],c=null==d?void 0:d.type;if(!c)return;const h=fp[c];if("categories"===(null==h?void 0:h.localizable)&&(null===(l=null===(a=e.router)||void 0===a?void 0:a.categories)||void 0===l?void 0:l.length)){const t=e.router.categories.flatMap((t=>this.findTranslations("category",t.uuid,["name"],t,i)));t.length>0&&o.push({nodeUuid:e.uuid,translations:t})}})),o}findTranslations(t,e,i,o,n){const s=[];return i.forEach((i=>{if("quick_replies"===i)return;const r=i.split(".");let a=o,l=[];for(;r.length>0&&a;){a.uuid&&(l=n[a.uuid]);const t=r.shift();if(!t)break;l&&(l=l[t]),a=a[t]}if(!a)return;const d=this.formatTranslationValue(a);if(!d)return;const c=l?this.formatTranslationValue(l):null;s.push({uuid:e,type:t,attribute:i,from:d,to:c})})),s}formatTranslationValue(t){if(null==t)return null;if(Array.isArray(t)){const e=t.map((t=>this.formatTranslationValue(t))).filter((t=>!!t));return e.length>0?e.join(", "):null}if("object"==typeof t)return"name"in t&&t.name?String(t.name):"arguments"in t&&Array.isArray(t.arguments)?t.arguments.join(" "):null;if("number"==typeof t)return t.toString();if("string"==typeof t){const e=t.trim();return e.length>0?e:null}return null}getTranslationCounts(t){return t.reduce(((t,e)=>(e.translations.forEach((e=>{t.total+=1,e.to&&e.to.trim().length>0&&(t.localized+=1)})),t)),{total:0,localized:0})}handleLocalizationTabClick(){const t=this.getLocalizationLanguages();if(!t.length)return;this.localizationWindowHidden=!1,this.revisionsWindowHidden=!0,this.issuesWindowHidden=!0;t.some((t=>t.code===this.languageCode))||this.handleLanguageChange(t[0].code)}handleLocalizationLanguageSelect(t){t!==this.languageCode&&this.handleLanguageChange(t)}handleLocalizationLanguageSelectChange(t){var e,i;const o=t.target,n=null===(i=null===(e=null==o?void 0:o.values)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;n&&this.handleLocalizationLanguageSelect(n)}handleLocalizationWindowClosed(){var t;this.localizationWindowHidden=!0;const e=null===(t=this.definition)||void 0===t?void 0:t.language;e&&this.languageCode!==e&&this.handleLanguageChange(e)}toggleTranslationSettings(){this.translationSettingsExpanded=!this.translationSettingsExpanded}handleLocalizationProgressToggleClick(t){t.target.closest(".translation-settings-toggle")||this.toggleTranslationSettings()}handleLocalizationProgressToggleKeydown(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.toggleTranslationSettings())}handleIncludeCategoriesChange(t){var e,i;const o=t.target,n=null!==(e=null==o?void 0:o.checked)&&void 0!==e&&e;this.translationFilters={categories:n},null===(i=Sd())||void 0===i||i.getState().setTranslationFilters({categories:n}),this.requestUpdate()}async handleAutoTranslateClick(t){t.preventDefault(),t.stopPropagation(),this.autoTranslating?this.autoTranslating=!1:this.autoTranslateDialogOpen=!0}handleAutoTranslateDialogButton(t){var e;const i=null===(e=t.detail)||void 0===e?void 0:e.button;if(i)if("Translate"===i.name){if(!this.autoTranslateModel)return;this.autoTranslateDialogOpen=!1,this.autoTranslateError=null,this.autoTranslating=!0,this.runAutoTranslation().catch((t=>{console.error("Auto translation failed",t),this.autoTranslateError="Auto translation failed. Please try again.",this.autoTranslating=!1}))}else"Cancel"!==i.name&&"Close"!==i.name||(this.autoTranslateDialogOpen=!1)}handleAutoTranslateModelChange(t){var e;const i=t.target,o=(null===(e=null==i?void 0:i.values)||void 0===e?void 0:e[0])||null;this.autoTranslateModel=o}shouldTranslateValue(t){if(!t)return!1;const e=t.trim();return!(e.length<=1)&&!/^\d+$/.test(e)}async requestAutoTranslation(t){var e,i;if(!this.autoTranslateModel||!this.definition)return null;const o={text:t,lang:{from:this.definition.language,to:this.languageCode}},n=await pe(`/llm/translate/${this.autoTranslateModel.uuid}/`,o);if(200===(null==n?void 0:n.status)){const t=(null===(e=n.json)||void 0===e?void 0:e.result)||(null===(i=n.json)||void 0===i?void 0:i.text);return t?String(t):null}throw new Error("Auto translation request failed")}applyLocalizationUpdates(t,e=!1){if(!t.length||!this.definition)return;const i=Sd();i&&t.forEach((({uuid:t,translations:o})=>{var n,s;const r=Object.entries(o).reduce(((t,[e,i])=>i?(t[e]=Array.isArray(i)?i:[i],t):t),{}),a={...(null===(s=null===(n=this.definition.localization)||void 0===n?void 0:n[this.languageCode])||void 0===s?void 0:s[t])||{},...r};i.getState().updateLocalization(this.languageCode,t,a),e&&_d.getState().markAutoTranslated(this.languageCode,t,Object.keys(o))}))}async runAutoTranslation(){if(!this.definition||this.languageCode===this.definition.language||!this.autoTranslateModel)return void(this.autoTranslating=!1);const t=this.buildTranslationBundles(this.translationFilters.categories);for(const e of t){if(!this.autoTranslating)break;const t=e.translations.filter((t=>!t.to||0===t.to.trim().length));if(0===t.length)continue;const i=[];for(const e of t){if(!this.autoTranslating)break;if(!this.shouldTranslateValue(e.from))continue;const t=this.translationCache.get(e.from);if(t)i.push({uuid:e.uuid,translations:{[e.attribute]:t}});else try{const t=await this.requestAutoTranslation(e.from);t&&(this.translationCache.set(e.from,t),i.push({uuid:e.uuid,translations:{[e.attribute]:t}}))}catch(t){console.error("Auto translation request failed",t),this.autoTranslateError="Auto translation failed. Please try again.",this.autoTranslating=!1;break}}if(i.length>0&&this.applyLocalizationUpdates(i,!0),!this.autoTranslating)break}this.autoTranslating=!1}handleIssuesTabClick(){this.issuesWindowHidden=!1,this.revisionsWindowHidden=!0,this.localizationWindowHidden=!0}handleIssuesWindowClosed(){this.issuesWindowHidden=!0}handleIssueItemClick(t){var e;const i=document.getElementById("issues-window");null==i||i.handleClose(),this.issuesWindowHidden=!0,this.focusNode(t.node_uuid);const o=this.definition.nodes.find((e=>e.uuid===t.node_uuid));if(o)if(t.action_uuid){const i=null===(e=o.actions)||void 0===e?void 0:e.find((e=>e.uuid===t.action_uuid));i&&(this.editingAction=i,this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[t.node_uuid])}else this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[t.node_uuid]}handleRevisionsTabClick(){this.revisionsWindowHidden&&(this.fetchRevisions(),this.revisionsWindowHidden=!1,this.issuesWindowHidden=!0,this.localizationWindowHidden=!0)}handleRevisionsWindowClosed(){this.resetRevisionsScroll(),this.revisionsWindowHidden=!0,this.viewingRevision&&this.handleCancelRevisionView()}resetRevisionsScroll(){var t;const e=null===(t=this.querySelector("#revisions-window").shadowRoot)||void 0===t?void 0:t.querySelector(".body");e&&(e.scrollTop=0)}async fetchRevisions(){this.isLoadingRevisions=!0;try{const t=await de(`/flow/revisions/${this.flow}/?version=${fd}`);this.revisions=t.slice(1)}catch(t){console.error("Error fetching revisions",t)}finally{this.isLoadingRevisions=!1}}async handleRevisionClick(t){var e,i;if((null===(e=this.viewingRevision)||void 0===e?void 0:e.id)!==t.id){this.viewingRevision||(this.preRevertState={definition:this.definition,dirtyDate:this.dirtyDate}),this.viewingRevision=t,this.isLoadingRevisions=!0,null===(i=this.plumber)||void 0===i||i.reset();try{await Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`,t.id.toString())}catch(t){console.error("Error fetching revision details",t),this.handleCancelRevisionView()}finally{this.isLoadingRevisions=!1}}}handleCancelRevisionView(){var t;if(null===(t=this.plumber)||void 0===t||t.reset(),this.preRevertState){const t=Sd().getState().flowInfo;Sd().getState().setFlowContents({definition:this.preRevertState.definition,info:t}),this.preRevertState.dirtyDate&&Sd().getState().setDirtyDate(this.preRevertState.dirtyDate)}else Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`);this.viewingRevision=null,this.preRevertState=null}async handleRevertClick(){var t;if(!this.viewingRevision||!this.preRevertState)return;null===(t=this.plumber)||void 0===t||t.reset();const e={...this.definition,revision:this.preRevertState.definition.revision};await this.saveChanges(e),this.viewingRevision=null,this.preRevertState=null,this.revisionsWindowHidden=!0;document.getElementById("revisions-window").handleClose(),this.fetchRevisions(),Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`)}renderIssuesTab(){var t;return(null===(t=this.flowIssues)||void 0===t?void 0:t.length)&&this.revisionsWindowHidden?H`
9690
+ </div>`}checkCollisionsAndReflow(t){var e;if(!this.definition)return;const i=[];for(const t of this.definition.nodes){const o=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==o?void 0:o.position))continue;const n=qh(t.uuid,o.position);n&&i.push(n)}const o=((t,e)=>{const i=new Map,o=new Set(t),n=new Map;for(const t of e)n.set(t.uuid,{...t});for(const t of[...o]){const e=n.get(t);if(e)for(const[i,s]of n)if(i!==t&&!o.has(i)&&Uh(e,s)&&e.top>s.top&&s.top<30){o.delete(t),o.add(i);break}}const s=[],r=new Set;for(const t of o){const e=n.get(t);if(e)for(const[t,i]of n)o.has(t)||r.has(t)||Uh(e,i)&&(s.push(t),r.add(t))}const a=new Set;let l=0;for(;s.length>0&&l<200;){l++;const t=s.shift();if(a.has(t))continue;const e=n.get(t),d=[];for(const[i,s]of n)i!==t&&(o.has(i)||a.has(i))&&Uh(e,s)&&d.push(s);if(0===d.length)continue;const c=d.filter((t=>o.has(t.uuid))),h=[...jh];let u=null;if(c.length>0){for(const t of c){if(e.top>t.top){const t=h.indexOf("up");-1!==t&&h.splice(t,1)}if(e.left>t.left){const t=h.indexOf("left");-1!==t&&h.splice(t,1)}}let t=0,i=0;for(const o of c)t+=Math.min(e.right,o.right)-Math.max(e.left,o.left),i+=Math.min(e.bottom,o.bottom)-Math.max(e.top,o.top);t>i?u="vertical":i>t&&(u="horizontal")}let p=null,m=1/0;for(const i of h){const s=Hh(e,d,i);if(!s)continue;const r=Vh(e,s.left,s.top);let l=!1,h=0;for(const[e,i]of n)if(e!==t&&Uh(r,i)){if(o.has(e)||a.has(e)){l=!0;break}h++}if(l)continue;const g=Math.abs(s.left-e.left)+Math.abs(s.top-e.top);let f;if(c.length>0){const t="up"===i||"down"===i;f=2e3*h+(null===u||"vertical"===u&&t||"horizontal"===u&&!t?0:5e3)+g}else f=1e4*h+g;f<m&&(m=f,p=s)}if(p){i.set(t,{left:p.left,top:p.top});const l=Vh(e,p.left,p.top);n.set(t,l),a.add(t);for(const[e,i]of n)e!==t&&(o.has(e)||a.has(e)||r.has(e)||Uh(l,i)&&(s.push(e),r.add(e)))}}return i})(t,i);if(o.size>0){const t={};for(const[e,i]of o.entries())t[e]=i;Sd().getState().updateCanvasPositions(t)}}handleMouseMove(t){if(this.canvasMouseDown&&!this.isMouseDown)return this.isSelecting=!0,this.updateSelectionBox(t),void this.requestUpdate();if(this.plumber.connectionDragging){const e=document.querySelector("temba-flow-node:hover");if(document.querySelectorAll("temba-flow-node").forEach((t=>{t.classList.remove("connection-target-valid","connection-target-invalid")})),e)this.targetId=e.getAttribute("uuid"),this.isValidTarget=this.targetId!==this.dragFromNodeId,this.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.connectionPlaceholder=null;else{this.targetId=null,this.isValidTarget=!0;const e=this.querySelector("#canvas");if(e){const i=e.getBoundingClientRect(),o=t.clientX-i.left,n=t.clientY-i.top,s=200,r=64,a=13,l=1,d=null!=this.connectionSourceY&&n<this.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}this.requestUpdate()}if(!this.isMouseDown||!this.currentDragItem)return;const e=t.clientX-this.dragStartPos.x,i=t.clientY-this.dragStartPos.y,o=Math.sqrt(e*e+i*i);if(!this.isDragging&&o>5&&(this.isDragging=!0),this.isDragging){const t=this.selectedItems.has(this.currentDragItem.uuid)&&this.selectedItems.size>1?Array.from(this.selectedItems):[this.currentDragItem.uuid];t.forEach((t=>{const o=this.querySelector(`[uuid="${t}"]`);if(o){const n="TEMBA-FLOW-NODE"===o.tagName?"node":"sticky",s=this.getPosition(t,n);if(s){const t=s.left+e,n=s.top+i;o.style.left=`${t}px`,o.style.top=`${n}px`,o.classList.add("dragging")}}})),this.plumber.revalidate(t)}}handleMouseUp(t){if(this.canvasMouseDown&&this.isSelecting)return this.isSelecting=!1,this.selectionBox=null,this.canvasMouseDown=!1,void this.requestUpdate();if(!this.canvasMouseDown||this.isSelecting){if(this.isMouseDown&&this.currentDragItem){if(this.isDragging){const e=t.clientX-this.dragStartPos.x,i=t.clientY-this.dragStartPos.y,o=this.selectedItems.has(this.currentDragItem.uuid)&&this.selectedItems.size>1?Array.from(this.selectedItems):[this.currentDragItem.uuid],n={};if(o.forEach((t=>{const o=this.definition.nodes.find((e=>e.uuid===t))?"node":"sticky",s=this.getPosition(t,o);if(s){const o=s.left+e,r=s.top+i,a=Ph(o),l=Ph(r),d={left:a,top:l};n[t]=d;const c=this.querySelector(`[uuid="${t}"]`);c&&(c.classList.remove("dragging"),c.style.left=`${a}px`,c.style.top=`${l}px`)}})),Object.keys(n).length>0){Sd().getState().updateCanvasPositions(n);const t=o.filter((t=>this.definition.nodes.find((e=>e.uuid===t))));t.length>0?setTimeout((()=>{this.checkCollisionsAndReflow(t)}),0):setTimeout((()=>{this.plumber.repaintEverything()}),0)}this.selectedItems.clear()}this.isDragging=!1,this.isMouseDown=!1,this.currentDragItem=null,this.canvasMouseDown=!1}}else this.canvasMouseDown=!1}updateCanvasSize(){var t;if(!this.definition)return;const e=Sd();if(!e)return;let i=0,o=0;this.definition.nodes.forEach((t=>{const e=this.definition._ui.nodes[t.uuid];if(e&&e.position){const n=this.querySelector(`[id="${t.uuid}"]`);if(n){const t=n.getBoundingClientRect();i=Math.max(i,e.position.left+t.width),o=Math.max(o,e.position.top+t.height)}}}));const n=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{};Object.entries(n).forEach((([t,e])=>{if(e.position){const n=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(n){const t=n.clientWidth,s=n.clientHeight;i=Math.max(i,e.position.left+t),o=Math.max(o,e.position.top+s)}else i=Math.max(i,e.position.left+200),o=Math.max(o,e.position.top+100)}})),e.getState().expandCanvas(i,o)}handleCanvasContextMenu(t){if(this.isReadOnly())return void t.preventDefault();if("canvas"!==t.target.id)return;t.preventDefault(),t.stopPropagation();const e=this.querySelector("#canvas");if(!e)return;const i=e.getBoundingClientRect(),o=t.clientX-i.left-10,n=t.clientY-i.top-10,s=Ph(o),r=Ph(n),a=this.querySelector("temba-canvas-menu");a&&a.show(t.clientX,t.clientY,{x:s,y:r})}handleEmptyFlowClick(t){const e=this.querySelector("#editor");if(!e)return;e.scrollTo({left:0,top:0,behavior:"smooth"});const i=this.querySelector("temba-canvas-menu");if(i){const e=t.currentTarget.getBoundingClientRect(),o=265,n=e.left+e.width/2-o/2,s=e.bottom+8;i.show(n,s,{x:0,y:0},!1)}}handleCanvasMenuSelection(t){const e=t.detail,i=Sd();if("sticky"===e.action)i.getState().createStickyNote({left:e.position.x,top:e.position.y}),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null;else{const t=this.querySelector("temba-node-type-selector");t&&t.show(e.action,e.position)}}cleanUpConnection(){this.isCreatingNewNode&&(this.isCreatingNewNode=!1,this.pendingNodePosition=null),this.originalConnectionTargetId&&(this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.originalConnectionTargetId),this.originalConnectionTargetId=null),this.pendingCanvasConnection&&(this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null)}handleCanvasMenuClosed(){this.cleanUpConnection()}handleNodeTypeSelectorClosed(){this.cleanUpConnection()}handleNodeTypeSelection(t){const e=t.detail;if(this.pendingCanvasConnection,this.addActionToNodeUuid){const t=this.definition.nodes.find((t=>t.uuid===this.addActionToNodeUuid)),i=this.definition._ui.nodes[this.addActionToNodeUuid];if(t&&i){const o=Xt();return this.editingAction={uuid:o,type:e.nodeType},this.editingNode=t,this.editingNodeUI=i,this.isCreatingNewNode=!1,void(this.addActionToNodeUuid=null)}this.addActionToNodeUuid=null}const i=Xt(),o=e.nodeType in fp,n=o?"execute_actions":e.nodeType,s=yp[n],r=(null==s?void 0:s.form)&&Object.keys(s.form).some((t=>{var e;return["rules","categories","cases"].includes(t)||"array"===(null===(e=s.form[t])||void 0===e?void 0:e.type)})),a={uuid:i,actions:[],exits:r?[]:[{uuid:Xt(),destination_uuid:null}]};r&&(a.router={type:"switch",categories:[],cases:[],operand:"@input.text",default_category_uuid:void 0});const l={position:this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},type:n,config:{}};if(this.isCreatingNewNode=!0,this.pendingNodePosition=this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},this.editingNode=a,this.editingNodeUI=l,o){const t=Xt();this.editingAction={uuid:t,type:e.nodeType}}}handleActionEditRequested(t){this.editingAction=t.detail.action,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null;const e=t.detail.nodeUuid,i=this.definition.nodes.find((t=>t.uuid===e));i&&(this.editingNode=i,this.editingNodeUI=this.definition._ui.nodes[e])}handleAddActionRequested(t){const e=t.detail.nodeUuid,i=this.definition.nodes.find((t=>t.uuid===e));if(!i)return;const o=this.definition._ui.nodes[e];if(!o)return;const n=this.querySelector("temba-node-type-selector");n&&(n.show("action-no-branching",{x:o.position.left,y:o.position.top}),this.addActionToNodeUuid=e)}handleNodeEditRequested(t){this.editingNode=t.detail.node,this.editingNodeUI=t.detail.nodeUI,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null}handleNodeDeleted(t){const e=t.detail.uuid;e&&this.deleteNodes([e])}handleActionSaved(t){var e,i;if(this.editingNode&&this.editingAction){let o;o=this.editingNode.actions.findIndex((t=>t.uuid===this.editingAction.uuid))>=0?this.editingNode.actions.map((e=>e.uuid===this.editingAction.uuid?t:e)):[...this.editingNode.actions,t];const n={...this.editingNode,actions:o};if(this.isCreatingNewNode){const t=Sd(),i={position:this.pendingNodePosition||{left:0,top:0},type:null===(e=this.editingNodeUI)||void 0===e?void 0:e.type,config:{}};t.getState().addNode(n,i),this.pendingCanvasConnection&&(t.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,n.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([n.uuid])}))}else{const t=this.editingNode.uuid;null===(i=Sd())||void 0===i||i.getState().updateNode(t,n),requestAnimationFrame((()=>{this.checkCollisionsAndReflow([t])}))}}this.closeNodeEditor()}closeNodeEditor(){this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null}handleActionEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}handleNodeSaved(t,e){var i,o,n;if(this.editingNode)if(this.isCreatingNewNode){const o=Sd(),n={position:this.pendingNodePosition||{left:0,top:0},type:null===(i=this.editingNodeUI)||void 0===i?void 0:i.type,config:e||{}};o.getState().addNode(t,n),this.pendingCanvasConnection&&(o.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,t.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([t.uuid])}))}else{if(this.plumber){const e=this.editingNode.exits||[],i=t.exits||[];e.filter((t=>!i.find((e=>e.uuid===t.uuid)))).forEach((t=>{this.plumber.removeExitConnection(t.uuid)}))}this.plumber.revalidate([t.uuid]),null===(o=Sd())||void 0===o||o.getState().updateNode(this.editingNode.uuid,t),e&&(null===(n=Sd())||void 0===n||n.getState().updateNodeUIConfig(t.uuid,e)),requestAnimationFrame((()=>{this.checkCollisionsAndReflow([this.editingNode.uuid])}))}this.closeNodeEditor()}handleNodeEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}getNodeAtPosition(t,e){const i=this.querySelectorAll("temba-flow-node");for(const o of Array.from(i)){const i=o.getBoundingClientRect();if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)return o.getAttribute("data-node-uuid")}return null}calculateCanvasDropPosition(t,e,i=!0){const o=this.querySelector("#canvas");if(!o)return{left:0,top:0};const n=o.getBoundingClientRect(),s=t-n.left-20,r=e-n.top-20;return i?{left:Ph(s),top:Ph(r)}:{left:s,top:r}}handleActionDragExternal(t){const{action:e,nodeUuid:i,actionIndex:o,mouseX:n,mouseY:s,actionHeight:r=60,isLastAction:a=!1}=t.detail,l=this.getNodeAtPosition(n,s);if(l&&l!==i){const t=this.definition._ui.nodes[l],a=this.definition.nodes.find((t=>t.uuid===l));if("execute_actions"===(null==t?void 0:t.type)&&a){if(this.previousActionDragTargetNodeUuid&&this.previousActionDragTargetNodeUuid!==l){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1}))}this.actionDragTargetNodeUuid=l,this.previousActionDragTargetNodeUuid=l,this.canvasDropPreview=null;const t=this.querySelector(`temba-flow-node[data-node-uuid="${i}"]`);t&&t.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1}));const a=this.querySelector(`temba-flow-node[data-node-uuid="${l}"]`);return a&&a.dispatchEvent(new CustomEvent("action-drag-over",{detail:{action:e,sourceNodeUuid:i,actionIndex:o,mouseX:n,mouseY:s,actionHeight:r},bubbles:!1})),void this.requestUpdate()}}if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.actionDragTargetNodeUuid=null;const d=this.querySelector(`temba-flow-node[data-node-uuid="${i}"]`);if(a)d&&d.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null;else{d&&d.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const t=this.calculateCanvasDropPosition(n,s,!1);this.canvasDropPreview={action:e,nodeUuid:i,actionIndex:o,position:t,actionHeight:r}}this.requestUpdate()}handleActionDragInternal(t){if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null}handleActionDropExternal(t){var e,i;const{action:o,nodeUuid:n,actionIndex:s,mouseX:r,mouseY:a,isLastAction:l=!1}=t.detail,d=this.actionDragTargetNodeUuid;if(d&&d!==n){const t=this.querySelector(`temba-flow-node[data-node-uuid="${d}"]`);return t&&t.dispatchEvent(new CustomEvent("action-drop",{detail:{action:o,sourceNodeUuid:n,actionIndex:s,mouseX:r,mouseY:a},bubbles:!1})),this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null)}if(l)return this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null);const c=this.calculateCanvasDropPosition(r,a,!0),h=this.definition.nodes.find((t=>t.uuid===n));if(!h)return;const u=h.actions.filter(((t,e)=>e!==s));if(0===u.length)this.deleteNodes([n]);else{const t={...h,actions:u};null===(e=Sd())||void 0===e||e.getState().updateNode(n,t)}const p={uuid:Xt(),actions:[o],exits:[{uuid:Xt(),destination_uuid:null}]},m={position:c,type:"execute_actions",config:{}};null===(i=Sd())||void 0===i||i.getState().addNode(p,m),this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,requestAnimationFrame((()=>{this.checkCollisionsAndReflow([p.uuid])}))}getLocalizationLanguages(){if(!this.definition)return[];const t=this.definition.language;return this.getAvailableLanguages().filter((e=>e.code!==t))}getLocalizationProgress(t){if(!this.definition||!t||t===this.definition.language)return{total:0,localized:0};const e=this.buildTranslationBundles(this.translationFilters.categories,t);return this.getTranslationCounts(e)}getLanguageLocalization(t){var e;return(null===(e=this.definition)||void 0===e?void 0:e.localization)&&this.definition.localization[t]||{}}buildTranslationBundles(t,e=this.languageCode){if(!this.definition||!e||e===this.definition.language)return[];const i=this.getLanguageLocalization(e),o=[];return this.definition.nodes.forEach((e=>{var n,s,r,a,l;if(null===(n=e.actions)||void 0===n||n.forEach((t=>{const n=fp[t.type];if(!(null==n?void 0:n.localizable)||0===n.localizable.length)return;const s="send_msg"===t.type?n.localizable.filter((t=>"text"===t)):n.localizable,r=this.findTranslations("property",t.uuid,s,t,i);r.length>0&&o.push({nodeUuid:e.uuid,actionUuid:t.uuid,translations:r})})),!t)return;const d=null===(r=null===(s=this.definition._ui)||void 0===s?void 0:s.nodes)||void 0===r?void 0:r[e.uuid],c=null==d?void 0:d.type;if(!c)return;const h=yp[c];if("categories"===(null==h?void 0:h.localizable)&&(null===(l=null===(a=e.router)||void 0===a?void 0:a.categories)||void 0===l?void 0:l.length)){const t=e.router.categories.flatMap((t=>this.findTranslations("category",t.uuid,["name"],t,i)));t.length>0&&o.push({nodeUuid:e.uuid,translations:t})}})),o}findTranslations(t,e,i,o,n){const s=[];return i.forEach((i=>{if("quick_replies"===i)return;const r=i.split(".");let a=o,l=[];for(;r.length>0&&a;){a.uuid&&(l=n[a.uuid]);const t=r.shift();if(!t)break;l&&(l=l[t]),a=a[t]}if(!a)return;const d=this.formatTranslationValue(a);if(!d)return;const c=l?this.formatTranslationValue(l):null;s.push({uuid:e,type:t,attribute:i,from:d,to:c})})),s}formatTranslationValue(t){if(null==t)return null;if(Array.isArray(t)){const e=t.map((t=>this.formatTranslationValue(t))).filter((t=>!!t));return e.length>0?e.join(", "):null}if("object"==typeof t)return"name"in t&&t.name?String(t.name):"arguments"in t&&Array.isArray(t.arguments)?t.arguments.join(" "):null;if("number"==typeof t)return t.toString();if("string"==typeof t){const e=t.trim();return e.length>0?e:null}return null}getTranslationCounts(t){return t.reduce(((t,e)=>(e.translations.forEach((e=>{t.total+=1,e.to&&e.to.trim().length>0&&(t.localized+=1)})),t)),{total:0,localized:0})}handleLocalizationTabClick(){const t=this.getLocalizationLanguages();if(!t.length)return;this.localizationWindowHidden=!1,this.revisionsWindowHidden=!0,this.issuesWindowHidden=!0;t.some((t=>t.code===this.languageCode))||this.handleLanguageChange(t[0].code)}handleLocalizationLanguageSelect(t){t!==this.languageCode&&this.handleLanguageChange(t)}handleLocalizationLanguageSelectChange(t){var e,i;const o=t.target,n=null===(i=null===(e=null==o?void 0:o.values)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;n&&this.handleLocalizationLanguageSelect(n)}handleLocalizationWindowClosed(){var t;this.localizationWindowHidden=!0;const e=null===(t=this.definition)||void 0===t?void 0:t.language;e&&this.languageCode!==e&&this.handleLanguageChange(e)}toggleTranslationSettings(){this.translationSettingsExpanded=!this.translationSettingsExpanded}handleLocalizationProgressToggleClick(t){t.target.closest(".translation-settings-toggle")||this.toggleTranslationSettings()}handleLocalizationProgressToggleKeydown(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.toggleTranslationSettings())}handleIncludeCategoriesChange(t){var e,i;const o=t.target,n=null!==(e=null==o?void 0:o.checked)&&void 0!==e&&e;this.translationFilters={categories:n},null===(i=Sd())||void 0===i||i.getState().setTranslationFilters({categories:n}),this.requestUpdate()}async handleAutoTranslateClick(t){t.preventDefault(),t.stopPropagation(),this.autoTranslating?this.autoTranslating=!1:this.autoTranslateDialogOpen=!0}handleAutoTranslateDialogButton(t){var e;const i=null===(e=t.detail)||void 0===e?void 0:e.button;if(i)if("Translate"===i.name){if(!this.autoTranslateModel)return;this.autoTranslateDialogOpen=!1,this.autoTranslateError=null,this.autoTranslating=!0,this.runAutoTranslation().catch((t=>{console.error("Auto translation failed",t),this.autoTranslateError="Auto translation failed. Please try again.",this.autoTranslating=!1}))}else"Cancel"!==i.name&&"Close"!==i.name||(this.autoTranslateDialogOpen=!1)}handleAutoTranslateModelChange(t){var e;const i=t.target,o=(null===(e=null==i?void 0:i.values)||void 0===e?void 0:e[0])||null;this.autoTranslateModel=o}shouldTranslateValue(t){if(!t)return!1;const e=t.trim();return!(e.length<=1)&&!/^\d+$/.test(e)}async requestAutoTranslation(t){var e,i;if(!this.autoTranslateModel||!this.definition)return null;const o={text:t,lang:{from:this.definition.language,to:this.languageCode}},n=await pe(`/llm/translate/${this.autoTranslateModel.uuid}/`,o);if(200===(null==n?void 0:n.status)){const t=(null===(e=n.json)||void 0===e?void 0:e.result)||(null===(i=n.json)||void 0===i?void 0:i.text);return t?String(t):null}throw new Error("Auto translation request failed")}applyLocalizationUpdates(t,e=!1){if(!t.length||!this.definition)return;const i=Sd();i&&t.forEach((({uuid:t,translations:o})=>{var n,s;const r=Object.entries(o).reduce(((t,[e,i])=>i?(t[e]=Array.isArray(i)?i:[i],t):t),{}),a={...(null===(s=null===(n=this.definition.localization)||void 0===n?void 0:n[this.languageCode])||void 0===s?void 0:s[t])||{},...r};i.getState().updateLocalization(this.languageCode,t,a),e&&_d.getState().markAutoTranslated(this.languageCode,t,Object.keys(o))}))}async runAutoTranslation(){if(!this.definition||this.languageCode===this.definition.language||!this.autoTranslateModel)return void(this.autoTranslating=!1);const t=this.buildTranslationBundles(this.translationFilters.categories);for(const e of t){if(!this.autoTranslating)break;const t=e.translations.filter((t=>!t.to||0===t.to.trim().length));if(0===t.length)continue;const i=[];for(const e of t){if(!this.autoTranslating)break;if(!this.shouldTranslateValue(e.from))continue;const t=this.translationCache.get(e.from);if(t)i.push({uuid:e.uuid,translations:{[e.attribute]:t}});else try{const t=await this.requestAutoTranslation(e.from);t&&(this.translationCache.set(e.from,t),i.push({uuid:e.uuid,translations:{[e.attribute]:t}}))}catch(t){console.error("Auto translation request failed",t),this.autoTranslateError="Auto translation failed. Please try again.",this.autoTranslating=!1;break}}if(i.length>0&&this.applyLocalizationUpdates(i,!0),!this.autoTranslating)break}this.autoTranslating=!1}handleIssuesTabClick(){this.issuesWindowHidden=!1,this.revisionsWindowHidden=!0,this.localizationWindowHidden=!0}handleIssuesWindowClosed(){this.issuesWindowHidden=!0}handleIssueItemClick(t){var e;const i=document.getElementById("issues-window");null==i||i.handleClose(),this.issuesWindowHidden=!0,this.focusNode(t.node_uuid);const o=this.definition.nodes.find((e=>e.uuid===t.node_uuid));if(o)if(t.action_uuid){const i=null===(e=o.actions)||void 0===e?void 0:e.find((e=>e.uuid===t.action_uuid));i&&(this.editingAction=i,this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[t.node_uuid])}else this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[t.node_uuid]}handleRevisionsTabClick(){this.revisionsWindowHidden&&(this.fetchRevisions(),this.revisionsWindowHidden=!1,this.issuesWindowHidden=!0,this.localizationWindowHidden=!0)}handleRevisionsWindowClosed(){this.resetRevisionsScroll(),this.revisionsWindowHidden=!0,this.viewingRevision&&this.handleCancelRevisionView()}resetRevisionsScroll(){var t;const e=null===(t=this.querySelector("#revisions-window").shadowRoot)||void 0===t?void 0:t.querySelector(".body");e&&(e.scrollTop=0)}async fetchRevisions(){this.isLoadingRevisions=!0;try{const t=await de(`/flow/revisions/${this.flow}/?version=${fd}`);this.revisions=t.slice(1)}catch(t){console.error("Error fetching revisions",t)}finally{this.isLoadingRevisions=!1}}async handleRevisionClick(t){var e,i;if((null===(e=this.viewingRevision)||void 0===e?void 0:e.id)!==t.id){this.viewingRevision||(this.preRevertState={definition:this.definition,dirtyDate:this.dirtyDate}),this.viewingRevision=t,this.isLoadingRevisions=!0,null===(i=this.plumber)||void 0===i||i.reset();try{await Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`,t.id.toString())}catch(t){console.error("Error fetching revision details",t),this.handleCancelRevisionView()}finally{this.isLoadingRevisions=!1}}}handleCancelRevisionView(){var t;if(null===(t=this.plumber)||void 0===t||t.reset(),this.preRevertState){const t=Sd().getState().flowInfo;Sd().getState().setFlowContents({definition:this.preRevertState.definition,info:t}),this.preRevertState.dirtyDate&&Sd().getState().setDirtyDate(this.preRevertState.dirtyDate)}else Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`);this.viewingRevision=null,this.preRevertState=null}async handleRevertClick(){var t;if(!this.viewingRevision||!this.preRevertState)return;null===(t=this.plumber)||void 0===t||t.reset();const e={...this.definition,revision:this.preRevertState.definition.revision};await this.saveChanges(e),this.viewingRevision=null,this.preRevertState=null,this.revisionsWindowHidden=!0;document.getElementById("revisions-window").handleClose(),this.fetchRevisions(),Sd().getState().fetchRevision(`/flow/revisions/${this.flow}`)}renderIssuesTab(){var t;return(null===(t=this.flowIssues)||void 0===t?void 0:t.length)&&this.revisionsWindowHidden?H`
9682
9691
  <temba-floating-tab
9683
9692
  id="issues-tab"
9684
9693
  icon="alert_warning"
@@ -9706,7 +9715,7 @@ background: #ccc;
9706
9715
  @click=${()=>this.handleIssueItemClick(t)}
9707
9716
  >
9708
9717
  <temba-icon name="alert_warning" size="1.2"></temba-icon>
9709
- <span>${Oh(t)}</span>
9718
+ <span>${zh(t)}</span>
9710
9719
  </div>
9711
9720
  `))}
9712
9721
  </div>
@@ -9916,8 +9925,8 @@ background: #ccc;
9916
9925
  @temba-button-clicked=${this.handleLocalizationTabClick}
9917
9926
  ></temba-floating-tab>
9918
9927
  `:H``}focusNode(t){const e=this.querySelector(`temba-flow-node[uuid="${t}"]`);if(!e)return;const i=this.querySelector("#editor");if(!i)return;const o=i.getBoundingClientRect(),n=o.width/2,s=o.height/2,r=e.getBoundingClientRect(),a=e.offsetLeft+r.width/2-n,l=e.offsetTop+r.height/2-s;i.scrollTo({left:Math.max(0,a),top:Math.max(0,l),behavior:"smooth"})}isReadOnly(){return null!==this.viewingRevision||this.isTranslating}render(){var t,e;const i=H`<style>
9919
- ${r(xp.styles.cssText)}
9920
- ${r(bp.styles.cssText)}
9928
+ ${r(wp.styles.cssText)}
9929
+ ${r(_p.styles.cssText)}
9921
9930
  </style>`,o=(null===(e=null===(t=this.definition)||void 0===t?void 0:t._ui)||void 0===e?void 0:e.stickies)||{};return H`${i} ${this.renderIssuesWindow()}
9922
9931
  ${this.renderRevisionsWindow()} ${this.renderLocalizationWindow()}
9923
9932
  ${this.renderAutoTranslateDialog()}
@@ -9993,7 +10002,7 @@ background: #ccc;
9993
10002
  .features=${this.features}
9994
10003
  ></temba-node-type-selector>`}
9995
10004
  ${this.renderIssuesTab()} ${this.renderRevisionsTab()}
9996
- ${this.renderLocalizationTab()} `}}t([mt({type:String})],xp.prototype,"flow",void 0),t([mt({type:String})],xp.prototype,"version",void 0),t([mt({type:String})],xp.prototype,"flowType",void 0),t([mt({type:Array})],xp.prototype,"features",void 0),t([kd(_d,(t=>t.flowDefinition))],xp.prototype,"definition",void 0),t([kd(_d,(t=>t.simulatorActive))],xp.prototype,"simulatorActive",void 0),t([kd(_d,(t=>t.canvasSize))],xp.prototype,"canvasSize",void 0),t([kd(_d,(t=>t.dirtyDate))],xp.prototype,"dirtyDate",void 0),t([kd(_d,(t=>t.languageCode))],xp.prototype,"languageCode",void 0),t([kd(_d,(t=>t.isTranslating))],xp.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.workspace))],xp.prototype,"workspace",void 0),t([kd(_d,(t=>t.getCurrentActivity()))],xp.prototype,"activityData",void 0),t([kd(_d,(t=>{var e;return(null===(e=t.flowInfo)||void 0===e?void 0:e.issues)||[]}))],xp.prototype,"flowIssues",void 0),t([gt()],xp.prototype,"isDragging",void 0),t([gt()],xp.prototype,"currentDragItem",void 0),t([gt()],xp.prototype,"selectedItems",void 0),t([gt()],xp.prototype,"isSelecting",void 0),t([gt()],xp.prototype,"selectionBox",void 0),t([gt()],xp.prototype,"targetId",void 0),t([gt()],xp.prototype,"sourceId",void 0),t([gt()],xp.prototype,"dragFromNodeId",void 0),t([gt()],xp.prototype,"originalConnectionTargetId",void 0),t([gt()],xp.prototype,"isValidTarget",void 0),t([gt()],xp.prototype,"issuesWindowHidden",void 0),t([gt()],xp.prototype,"localizationWindowHidden",void 0),t([gt()],xp.prototype,"translationFilters",void 0),t([gt()],xp.prototype,"translationSettingsExpanded",void 0),t([gt()],xp.prototype,"autoTranslateDialogOpen",void 0),t([gt()],xp.prototype,"autoTranslating",void 0),t([gt()],xp.prototype,"autoTranslateModel",void 0),t([gt()],xp.prototype,"autoTranslateError",void 0),t([gt()],xp.prototype,"revisionsWindowHidden",void 0),t([gt()],xp.prototype,"revisions",void 0),t([gt()],xp.prototype,"viewingRevision",void 0),t([gt()],xp.prototype,"isLoadingRevisions",void 0),t([gt()],xp.prototype,"isSaving",void 0),t([gt()],xp.prototype,"saveError",void 0),t([gt()],xp.prototype,"editingNode",void 0),t([gt()],xp.prototype,"editingNodeUI",void 0),t([gt()],xp.prototype,"editingAction",void 0),t([gt()],xp.prototype,"isCreatingNewNode",void 0),t([gt()],xp.prototype,"pendingNodePosition",void 0),t([gt()],xp.prototype,"canvasDropPreview",void 0),t([gt()],xp.prototype,"addActionToNodeUuid",void 0),t([gt()],xp.prototype,"actionDragTargetNodeUuid",void 0),t([gt()],xp.prototype,"connectionPlaceholder",void 0);class _p extends Ne{constructor(){super(...arguments),this.dragging=!1,this.selected=!1,this.colorPickerExpanded=!1}static get styles(){return a`
10005
+ ${this.renderLocalizationTab()} `}}t([mt({type:String})],wp.prototype,"flow",void 0),t([mt({type:String})],wp.prototype,"version",void 0),t([mt({type:String})],wp.prototype,"flowType",void 0),t([mt({type:Array})],wp.prototype,"features",void 0),t([kd(_d,(t=>t.flowDefinition))],wp.prototype,"definition",void 0),t([kd(_d,(t=>t.simulatorActive))],wp.prototype,"simulatorActive",void 0),t([kd(_d,(t=>t.canvasSize))],wp.prototype,"canvasSize",void 0),t([kd(_d,(t=>t.dirtyDate))],wp.prototype,"dirtyDate",void 0),t([kd(_d,(t=>t.languageCode))],wp.prototype,"languageCode",void 0),t([kd(_d,(t=>t.isTranslating))],wp.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.workspace))],wp.prototype,"workspace",void 0),t([kd(_d,(t=>t.getCurrentActivity()))],wp.prototype,"activityData",void 0),t([kd(_d,(t=>{var e;return(null===(e=t.flowInfo)||void 0===e?void 0:e.issues)||[]}))],wp.prototype,"flowIssues",void 0),t([gt()],wp.prototype,"isDragging",void 0),t([gt()],wp.prototype,"currentDragItem",void 0),t([gt()],wp.prototype,"selectedItems",void 0),t([gt()],wp.prototype,"isSelecting",void 0),t([gt()],wp.prototype,"selectionBox",void 0),t([gt()],wp.prototype,"targetId",void 0),t([gt()],wp.prototype,"sourceId",void 0),t([gt()],wp.prototype,"dragFromNodeId",void 0),t([gt()],wp.prototype,"originalConnectionTargetId",void 0),t([gt()],wp.prototype,"isValidTarget",void 0),t([gt()],wp.prototype,"issuesWindowHidden",void 0),t([gt()],wp.prototype,"localizationWindowHidden",void 0),t([gt()],wp.prototype,"translationFilters",void 0),t([gt()],wp.prototype,"translationSettingsExpanded",void 0),t([gt()],wp.prototype,"autoTranslateDialogOpen",void 0),t([gt()],wp.prototype,"autoTranslating",void 0),t([gt()],wp.prototype,"autoTranslateModel",void 0),t([gt()],wp.prototype,"autoTranslateError",void 0),t([gt()],wp.prototype,"revisionsWindowHidden",void 0),t([gt()],wp.prototype,"revisions",void 0),t([gt()],wp.prototype,"viewingRevision",void 0),t([gt()],wp.prototype,"isLoadingRevisions",void 0),t([gt()],wp.prototype,"isSaving",void 0),t([gt()],wp.prototype,"saveError",void 0),t([gt()],wp.prototype,"editingNode",void 0),t([gt()],wp.prototype,"editingNodeUI",void 0),t([gt()],wp.prototype,"editingAction",void 0),t([gt()],wp.prototype,"isCreatingNewNode",void 0),t([gt()],wp.prototype,"pendingNodePosition",void 0),t([gt()],wp.prototype,"canvasDropPreview",void 0),t([gt()],wp.prototype,"addActionToNodeUuid",void 0),t([gt()],wp.prototype,"actionDragTargetNodeUuid",void 0),t([gt()],wp.prototype,"connectionPlaceholder",void 0);class kp extends Ne{constructor(){super(...arguments),this.dragging=!1,this.selected=!1,this.colorPickerExpanded=!1}static get styles(){return a`
9997
10006
  :host {
9998
10007
  --sticky-color: #fef08a;
9999
10008
  --sticky-border-color: #facc15;
@@ -10288,7 +10297,7 @@ background: #ccc;
10288
10297
  </div>
10289
10298
  </div>
10290
10299
  </div>
10291
- `}}t([mt({type:String})],_p.prototype,"uuid",void 0),t([mt({type:Object})],_p.prototype,"data",void 0),t([mt({type:Boolean})],_p.prototype,"dragging",void 0),t([mt({type:Boolean})],_p.prototype,"selected",void 0),t([mt({type:Boolean})],_p.prototype,"colorPickerExpanded",void 0),t([kd(_d,(t=>t.isTranslating))],_p.prototype,"isTranslating",void 0);class wp extends Ne{constructor(){super(...arguments),this.x=0,this.y=0,this.open=!1,this.showStickyNote=!0,this.clickPosition={x:0,y:0}}static get styles(){return a`
10300
+ `}}t([mt({type:String})],kp.prototype,"uuid",void 0),t([mt({type:Object})],kp.prototype,"data",void 0),t([mt({type:Boolean})],kp.prototype,"dragging",void 0),t([mt({type:Boolean})],kp.prototype,"selected",void 0),t([mt({type:Boolean})],kp.prototype,"colorPickerExpanded",void 0),t([kd(_d,(t=>t.isTranslating))],kp.prototype,"isTranslating",void 0);class Cp extends Ne{constructor(){super(...arguments),this.x=0,this.y=0,this.open=!1,this.showStickyNote=!0,this.clickPosition={x:0,y:0}}static get styles(){return a`
10292
10301
  :host {
10293
10302
  position: fixed;
10294
10303
  z-index: 10000;
@@ -10389,7 +10398,7 @@ background: #ccc;
10389
10398
  </div>
10390
10399
  `:""}
10391
10400
  </div>
10392
- `:H``}}t([mt({type:Number})],wp.prototype,"x",void 0),t([mt({type:Number})],wp.prototype,"y",void 0),t([mt({type:Boolean})],wp.prototype,"open",void 0),t([mt({type:Boolean})],wp.prototype,"showStickyNote",void 0),t([gt()],wp.prototype,"clickPosition",void 0);class kp extends Ne{constructor(){super(...arguments),this.open=!1,this.mode="action",this.flowType="message",this.features=[],this.clickPosition={x:0,y:0}}static get styles(){return a`
10401
+ `:H``}}t([mt({type:Number})],Cp.prototype,"x",void 0),t([mt({type:Number})],Cp.prototype,"y",void 0),t([mt({type:Boolean})],Cp.prototype,"open",void 0),t([mt({type:Boolean})],Cp.prototype,"showStickyNote",void 0),t([gt()],Cp.prototype,"clickPosition",void 0);class Sp extends Ne{constructor(){super(...arguments),this.open=!1,this.mode="action",this.flowType="message",this.features=[],this.clickPosition={x:0,y:0}}static get styles(){return a`
10393
10402
  :host {
10394
10403
  position: fixed;
10395
10404
  top: 0;
@@ -10584,7 +10593,7 @@ background: #ccc;
10584
10593
  --button-y: 0.5em;
10585
10594
  --button-x: 1.25em;
10586
10595
  }
10587
- `}show(t,e){this.mode=t,this.clickPosition=e,this.open=!0}close(t=!0){this.open&&(this.open=!1,t&&this.fireCustomEvent(Mo.Canceled,{}))}isConfigAvailable(t){if(void 0!==t.flowTypes){if(0===t.flowTypes.length)return!1;if(!t.flowTypes.includes(this.flowType))return!1}if(t.features&&t.features.length>0)for(const e of t.features)if(!this.features.includes(e))return!1;return!0}handleNodeTypeClick(t){this.fireCustomEvent(Mo.Selection,{nodeType:t,position:this.clickPosition}),this.close(!1)}handleOverlayClick(){this.close()}getCategories(){if("action"===this.mode||"action-no-branching"===this.mode){const t=new Map,e=new Map;Object.entries(mp).filter((([t,e])=>!(e.aliases&&e.aliases.includes(t))&&e.name&&!e.hideFromActions&&e.group&&this.isConfigAvailable(e))).forEach((([e,i])=>{const o=i.group;t.has(o)||t.set(o,[]),t.get(o).push({type:e,config:i})})),"action"===this.mode&&Object.entries(fp).filter((([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&e.showAsAction&&e.group&&this.isConfigAvailable(e))).forEach((([t,i])=>{const o=i.group;e.has(o)||e.set(o,[]),e.get(o).push({type:t,config:i})}));const i=[],o=Object.keys(Gh),n=Object.keys(mp);Array.from(t.entries()).sort((([t],[e])=>{const i=o.indexOf(t),n=o.indexOf(e);return(-1===i?999:i)-(-1===n?999:n)})).forEach((([t,e])=>{const o=Xh[t],s=e.sort(((t,e)=>{const i=n.indexOf(t.type),o=n.indexOf(e.type);return(-1===i?999:i)-(-1===o?999:o)}));i.push({name:o.title,description:o.description,color:o.color,items:s,isBranching:!1})}));const s=Object.keys(fp);return Array.from(e.entries()).sort((([t],[e])=>{const i=o.indexOf(t),n=o.indexOf(e);return(-1===i?999:i)-(-1===n?999:n)})).forEach((([t,e])=>{const o=Xh[t],n=e.sort(((t,e)=>{const i=s.indexOf(t.type),o=s.indexOf(e.type);return(-1===i?999:i)-(-1===o?999:o)}));i.push({name:o.title,description:o.description,color:o.color,items:n,isBranching:!0})})),i}{const t=new Map;Object.entries(fp).filter((([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&!e.showAsAction&&this.isConfigAvailable(e))).forEach((([e,i])=>{const o=i.group||Kh.split;t.has(o)||t.set(o,[]),t.get(o).push({type:e,config:i})}));const e=Object.keys(Kh),i=Object.keys(fp);return Array.from(t.entries()).map((([t,e])=>{const o=Qh[t]||Xh[t],n=e.sort(((t,e)=>{const o=i.indexOf(t.type),n=i.indexOf(e.type);return(-1===o?999:o)-(-1===n?999:n)}));return{name:o.title,description:o.description,color:o.color,items:n}})).sort(((t,i)=>{const o=Object.keys(Qh).find((e=>Qh[e].title===t.name)),n=Object.keys(Qh).find((t=>Qh[t].title===i.name)),s=e.indexOf(o),r=e.indexOf(n);return(-1===s?999:s)-(-1===r?999:r)}))}}render(){if(!this.open)return H``;const t=this.getCategories(),e="split"===this.mode?"Select a Split":"action-no-branching"===this.mode?"Add Action":"Select an Action",i=t.filter((t=>!t.isBranching)),o=t.filter((t=>t.isBranching)),n=o.length>0;return H`
10596
+ `}show(t,e){this.mode=t,this.clickPosition=e,this.open=!0}close(t=!0){this.open&&(this.open=!1,t&&this.fireCustomEvent(Mo.Canceled,{}))}isConfigAvailable(t){if(void 0!==t.flowTypes){if(0===t.flowTypes.length)return!1;if(!t.flowTypes.includes(this.flowType))return!1}if(t.features&&t.features.length>0)for(const e of t.features)if(!this.features.includes(e))return!1;return!0}handleNodeTypeClick(t){this.fireCustomEvent(Mo.Selection,{nodeType:t,position:this.clickPosition}),this.close(!1)}handleOverlayClick(){this.close()}getCategories(){if("action"===this.mode||"action-no-branching"===this.mode){const t=new Map,e=new Map;Object.entries(fp).filter((([t,e])=>!(e.aliases&&e.aliases.includes(t))&&e.name&&!e.hideFromActions&&e.group&&this.isConfigAvailable(e))).forEach((([e,i])=>{const o=i.group;t.has(o)||t.set(o,[]),t.get(o).push({type:e,config:i})})),"action"===this.mode&&Object.entries(yp).filter((([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&e.showAsAction&&e.group&&this.isConfigAvailable(e))).forEach((([t,i])=>{const o=i.group;e.has(o)||e.set(o,[]),e.get(o).push({type:t,config:i})}));const i=[],o=Object.keys(Xh),n=Object.keys(fp);Array.from(t.entries()).sort((([t],[e])=>{const i=o.indexOf(t),n=o.indexOf(e);return(-1===i?999:i)-(-1===n?999:n)})).forEach((([t,e])=>{const o=Jh[t],s=e.sort(((t,e)=>{const i=n.indexOf(t.type),o=n.indexOf(e.type);return(-1===i?999:i)-(-1===o?999:o)}));i.push({name:o.title,description:o.description,color:o.color,items:s,isBranching:!1})}));const s=Object.keys(yp);return Array.from(e.entries()).sort((([t],[e])=>{const i=o.indexOf(t),n=o.indexOf(e);return(-1===i?999:i)-(-1===n?999:n)})).forEach((([t,e])=>{const o=Jh[t],n=e.sort(((t,e)=>{const i=s.indexOf(t.type),o=s.indexOf(e.type);return(-1===i?999:i)-(-1===o?999:o)}));i.push({name:o.title,description:o.description,color:o.color,items:n,isBranching:!0})})),i}{const t=new Map;Object.entries(yp).filter((([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&!e.showAsAction&&this.isConfigAvailable(e))).forEach((([e,i])=>{const o=i.group||Qh.split;t.has(o)||t.set(o,[]),t.get(o).push({type:e,config:i})}));const e=Object.keys(Qh),i=Object.keys(yp);return Array.from(t.entries()).map((([t,e])=>{const o=tu[t]||Jh[t],n=e.sort(((t,e)=>{const o=i.indexOf(t.type),n=i.indexOf(e.type);return(-1===o?999:o)-(-1===n?999:n)}));return{name:o.title,description:o.description,color:o.color,items:n}})).sort(((t,i)=>{const o=Object.keys(tu).find((e=>tu[e].title===t.name)),n=Object.keys(tu).find((t=>tu[t].title===i.name)),s=e.indexOf(o),r=e.indexOf(n);return(-1===s?999:s)-(-1===r?999:r)}))}}render(){if(!this.open)return H``;const t=this.getCategories(),e="split"===this.mode?"Select a Split":"action-no-branching"===this.mode?"Add Action":"Select an Action",i=t.filter((t=>!t.isBranching)),o=t.filter((t=>t.isBranching)),n=o.length>0;return H`
10588
10597
  <div class="overlay" @click=${this.handleOverlayClick}></div>
10589
10598
  <div class="dialog" @click=${t=>t.stopPropagation()}>
10590
10599
  <div class="header">
@@ -10677,7 +10686,7 @@ background: #ccc;
10677
10686
  <temba-button @click=${this.close} secondary>Cancel</temba-button>
10678
10687
  </div>
10679
10688
  </div>
10680
- `}}t([mt({type:Boolean,reflect:!0})],kp.prototype,"open",void 0),t([mt({type:String})],kp.prototype,"mode",void 0),t([mt({type:String})],kp.prototype,"flowType",void 0),t([mt({type:Array})],kp.prototype,"features",void 0),t([gt()],kp.prototype,"clickPosition",void 0);class Cp extends rc{constructor(){super(...arguments),this.dirtyMessage="You have unsaved changes to the contact notepad. Are you sure you want to contiunue?"}static get styles(){return a`
10689
+ `}}t([mt({type:Boolean,reflect:!0})],Sp.prototype,"open",void 0),t([mt({type:String})],Sp.prototype,"mode",void 0),t([mt({type:String})],Sp.prototype,"flowType",void 0),t([mt({type:Array})],Sp.prototype,"features",void 0),t([gt()],Sp.prototype,"clickPosition",void 0);class Ap extends rc{constructor(){super(...arguments),this.dirtyMessage="You have unsaved changes to the contact notepad. Are you sure you want to contiunue?"}static get styles(){return a`
10681
10690
  :host {
10682
10691
  height: 100%;
10683
10692
  display: flex;
@@ -10747,7 +10756,7 @@ background: #ccc;
10747
10756
  `:null}
10748
10757
  </div>
10749
10758
  </div>
10750
- `:super.render();var t}}t([mt({type:Object,attribute:!1})],Cp.prototype,"note",void 0),t([mt({type:String})],Cp.prototype,"dirtyMessage",void 0);class Sp extends Ne{constructor(){super(...arguments),this.total=100,this.current=0,this.pct=0,this.done=!1,this.showEstimatedCompletion=!1,this.showPercentage=!1,this.animated=!0}updated(t){if(t.has("eta")&&this.eta&&(this.estimatedCompletionDate=new Date(this.eta),this.showEstimatedCompletion=this.estimatedCompletionDate>new Date),t.has("current")||t.has("total")){const t=Math.floor(Math.min(this.current/this.total*100,100));Number.isNaN(t)?this.showPercentage=!1:(this.pct=t,this.showPercentage=!0),this.done=this.pct>=100}}render(){const t=["meter",this.done?"done":"",this.animated?"":"static"].filter(Boolean).join(" ");return H`<div class="wrapper ${this.done?"complete":""}">
10759
+ `:super.render();var t}}t([mt({type:Object,attribute:!1})],Ap.prototype,"note",void 0),t([mt({type:String})],Ap.prototype,"dirtyMessage",void 0);class Ep extends Ne{constructor(){super(...arguments),this.total=100,this.current=0,this.pct=0,this.done=!1,this.showEstimatedCompletion=!1,this.showPercentage=!1,this.animated=!0}updated(t){if(t.has("eta")&&this.eta&&(this.estimatedCompletionDate=new Date(this.eta),this.showEstimatedCompletion=this.estimatedCompletionDate>new Date),t.has("current")||t.has("total")){const t=Math.floor(Math.min(this.current/this.total*100,100));Number.isNaN(t)?this.showPercentage=!1:(this.pct=t,this.showPercentage=!0),this.done=this.pct>=100}}render(){const t=["meter",this.done?"done":"",this.animated?"":"static"].filter(Boolean).join(" ");return H`<div class="wrapper ${this.done?"complete":""}">
10751
10760
  <div class="${t}">
10752
10761
  ${this.message?H`<div class="message">${this.message}</div>`:null}
10753
10762
  <span class="complete" style="flex-basis: ${this.pct}%"></span>
@@ -10764,7 +10773,7 @@ background: #ccc;
10764
10773
  </div>`:null}
10765
10774
 
10766
10775
  <slot></slot>
10767
- </div>`}}Sp.styles=a`
10776
+ </div>`}}Ep.styles=a`
10768
10777
  .wrapper {
10769
10778
  display: flex;
10770
10779
  box-sizing: content-box;
@@ -10895,7 +10904,7 @@ background: #ccc;
10895
10904
  .meter.done > span {
10896
10905
  background: rgb(var(--success-rgb));
10897
10906
  }
10898
- `,t([mt({type:Number})],Sp.prototype,"total",void 0),t([mt({type:Number})],Sp.prototype,"current",void 0),t([mt({type:Number})],Sp.prototype,"pct",void 0),t([mt({type:Boolean})],Sp.prototype,"done",void 0),t([mt({type:String})],Sp.prototype,"eta",void 0),t([mt({type:String,attribute:!1})],Sp.prototype,"estimatedCompletionDate",void 0),t([mt({type:Boolean})],Sp.prototype,"showEstimatedCompletion",void 0),t([mt({type:Boolean})],Sp.prototype,"showPercentage",void 0),t([mt({type:String})],Sp.prototype,"message",void 0),t([mt({type:Boolean})],Sp.prototype,"animated",void 0);class Ap extends Ne{constructor(){super(...arguments),this.refreshes=0,this.complete=!1,this.running=!1}updated(t){super.updated(t),t.has("id")&&this.refresh()}interruptStart(){var t,e;t=this.interruptTitle,e=this.interruptEndpoint,window.showModax(t,e)}refresh(){de(this.statusEndpoint,this.getHeaders()).then((t=>{if(t.length>0){this.refreshes++;const e=t[0];if(this.current=e.progress.current,this.total=e.progress.total,this.complete="Completed"==e.status||"Failed"==e.status||"Interrupted"==e.status,this.running="Started"===e.status,"Pending"===e.status?this.message="Preparing to start..":"Queued"===e.status?this.message="Waiting..":this.message=null,"Started"===e.status){const t=(new Date).getTime()-new Date(e.modified_on).getTime(),i=this.current/t;if(i>.1){const t=new Date((new Date).getTime()+(this.total-this.current)/i),e=new Date;e.setMonth(e.getMonth()+2),this.eta=t>e?null:t.toISOString()}}!this.complete&&this.current<this.total&&setTimeout((()=>{this.refresh()}),Math.min(1e3*this.refreshes,6e4)),this.complete&&this.scheduleRemoval()}}))}scheduleRemoval(){setTimeout((()=>{this.remove()}),5e3)}render(){return H`<temba-progress
10907
+ `,t([mt({type:Number})],Ep.prototype,"total",void 0),t([mt({type:Number})],Ep.prototype,"current",void 0),t([mt({type:Number})],Ep.prototype,"pct",void 0),t([mt({type:Boolean})],Ep.prototype,"done",void 0),t([mt({type:String})],Ep.prototype,"eta",void 0),t([mt({type:String,attribute:!1})],Ep.prototype,"estimatedCompletionDate",void 0),t([mt({type:Boolean})],Ep.prototype,"showEstimatedCompletion",void 0),t([mt({type:Boolean})],Ep.prototype,"showPercentage",void 0),t([mt({type:String})],Ep.prototype,"message",void 0),t([mt({type:Boolean})],Ep.prototype,"animated",void 0);class $p extends Ne{constructor(){super(...arguments),this.refreshes=0,this.complete=!1,this.running=!1}updated(t){super.updated(t),t.has("id")&&this.refresh()}interruptStart(){var t,e;t=this.interruptTitle,e=this.interruptEndpoint,window.showModax(t,e)}refresh(){de(this.statusEndpoint,this.getHeaders()).then((t=>{if(t.length>0){this.refreshes++;const e=t[0];if(this.current=e.progress.current,this.total=e.progress.total,this.complete="Completed"==e.status||"Failed"==e.status||"Interrupted"==e.status,this.running="Started"===e.status,"Pending"===e.status?this.message="Preparing to start..":"Queued"===e.status?this.message="Waiting..":this.message=null,"Started"===e.status){const t=(new Date).getTime()-new Date(e.modified_on).getTime(),i=this.current/t;if(i>.1){const t=new Date((new Date).getTime()+(this.total-this.current)/i),e=new Date;e.setMonth(e.getMonth()+2),this.eta=t>e?null:t.toISOString()}}!this.complete&&this.current<this.total&&setTimeout((()=>{this.refresh()}),Math.min(1e3*this.refreshes,6e4)),this.complete&&this.scheduleRemoval()}}))}scheduleRemoval(){setTimeout((()=>{this.remove()}),5e3)}render(){return H`<temba-progress
10899
10908
  total=${this.total}
10900
10909
  current=${this.current}
10901
10910
  eta=${this.eta}
@@ -10905,7 +10914,7 @@ background: #ccc;
10905
10914
  name="close"
10906
10915
  @click=${this.interruptStart}
10907
10916
  ></temba-icon>`:null}
10908
- </temba-progress>`}}Ap.styles=a`
10917
+ </temba-progress>`}}$p.styles=a`
10909
10918
  temba-icon[name='close'] {
10910
10919
  cursor: pointer;
10911
10920
  margin: 0 4px;
@@ -10914,7 +10923,7 @@ background: #ccc;
10914
10923
  temba-icon[name='close']:hover {
10915
10924
  color: var(--color-primary-dark);
10916
10925
  }
10917
- `,t([mt({type:String})],Ap.prototype,"id",void 0),t([mt({type:Number})],Ap.prototype,"current",void 0),t([mt({type:Number})],Ap.prototype,"total",void 0),t([mt({type:Number})],Ap.prototype,"refreshes",void 0),t([mt({type:String})],Ap.prototype,"eta",void 0),t([mt({type:Boolean})],Ap.prototype,"complete",void 0),t([mt({type:Boolean})],Ap.prototype,"running",void 0),t([mt({type:String})],Ap.prototype,"message",void 0),t([mt({type:String})],Ap.prototype,"statusEndpoint",void 0),t([mt({type:String})],Ap.prototype,"interruptTitle",void 0),t([mt({type:String})],Ap.prototype,"interruptEndpoint",void 0);class Ep extends nc{static get styles(){return a`
10926
+ `,t([mt({type:String})],$p.prototype,"id",void 0),t([mt({type:Number})],$p.prototype,"current",void 0),t([mt({type:Number})],$p.prototype,"total",void 0),t([mt({type:Number})],$p.prototype,"refreshes",void 0),t([mt({type:String})],$p.prototype,"eta",void 0),t([mt({type:Boolean})],$p.prototype,"complete",void 0),t([mt({type:Boolean})],$p.prototype,"running",void 0),t([mt({type:String})],$p.prototype,"message",void 0),t([mt({type:String})],$p.prototype,"statusEndpoint",void 0),t([mt({type:String})],$p.prototype,"interruptTitle",void 0),t([mt({type:String})],$p.prototype,"interruptEndpoint",void 0);class Tp extends nc{static get styles(){return a`
10918
10927
  temba-options {
10919
10928
  display: block;
10920
10929
  width: 100%;
@@ -10979,7 +10988,7 @@ background: #ccc;
10979
10988
  .cursorIndex=${this.cursorIndex}
10980
10989
  .options=${this.filteredShortcuts}
10981
10990
  ></temba-options>
10982
- `}}t([mt({type:String})],Ep.prototype,"filter",void 0),t([mt({type:Array})],Ep.prototype,"filteredShortcuts",void 0),t([mt({type:Number})],Ep.prototype,"cursorIndex",void 0);class $p extends Ne{constructor(){super(...arguments),this.placeholder="",this.endpoint=""}handleChange(){this.blur()}render(){return H`
10991
+ `}}t([mt({type:String})],Tp.prototype,"filter",void 0),t([mt({type:Array})],Tp.prototype,"filteredShortcuts",void 0),t([mt({type:Number})],Tp.prototype,"cursorIndex",void 0);class Dp extends Ne{constructor(){super(...arguments),this.placeholder="",this.endpoint=""}handleChange(){this.blur()}render(){return H`
10983
10992
  <div>
10984
10993
  <temba-dropdown>
10985
10994
  <div slot="toggle"><slot name="toggle"></slot></div>
@@ -10994,7 +11003,7 @@ background: #ccc;
10994
11003
  </div>
10995
11004
  </temba-dropdown>
10996
11005
  </div>
10997
- `}}$p.styles=a`
11006
+ `}}Dp.styles=a`
10998
11007
  :host {
10999
11008
  }
11000
11009
 
@@ -11011,7 +11020,7 @@ background: #ccc;
11011
11020
  --color-widget-border: transparent;
11012
11021
  --widget-box-shadow: none;
11013
11022
  }
11014
- `,t([mt({type:String})],$p.prototype,"placeholder",void 0),t([mt({type:String})],$p.prototype,"endpoint",void 0);class Tp extends qd{static get styles(){return a`
11023
+ `,t([mt({type:String})],Dp.prototype,"placeholder",void 0),t([mt({type:String})],Dp.prototype,"endpoint",void 0);class Mp extends qd{static get styles(){return a`
11015
11024
  ${super.styles}
11016
11025
 
11017
11026
  :host {
@@ -11023,7 +11032,7 @@ background: #ccc;
11023
11032
  name=${t.name}
11024
11033
  avatar=${t.avatar}
11025
11034
  showname
11026
- ></temba-user>`:H``}}t([mt({type:String})],Tp.prototype,"endpoint",void 0),t([mt({type:String})],Tp.prototype,"nameKey",void 0),t([mt({type:String})],Tp.prototype,"valueKey",void 0),t([mt({type:String})],Tp.prototype,"placeholder",void 0),t([mt({type:Boolean})],Tp.prototype,"sorted",void 0),t([mt({type:Object})],Tp.prototype,"user",void 0);class Dp extends qd{static get styles(){return a`
11035
+ ></temba-user>`:H``}}t([mt({type:String})],Mp.prototype,"endpoint",void 0),t([mt({type:String})],Mp.prototype,"nameKey",void 0),t([mt({type:String})],Mp.prototype,"valueKey",void 0),t([mt({type:String})],Mp.prototype,"placeholder",void 0),t([mt({type:Boolean})],Mp.prototype,"sorted",void 0),t([mt({type:Object})],Mp.prototype,"user",void 0);class Ip extends qd{static get styles(){return a`
11027
11036
  ${super.styles}
11028
11037
 
11029
11038
  :host {
@@ -11036,33 +11045,33 @@ background: #ccc;
11036
11045
  * (c) 2024 Jukka Kurkela
11037
11046
  * Released under the MIT License
11038
11047
  */
11039
- function Mp(t){return t+.5|0}t([mt({type:String})],Dp.prototype,"endpoint",void 0),t([mt({type:String})],Dp.prototype,"nameKey",void 0),t([mt({type:String})],Dp.prototype,"valueKey",void 0),t([mt({type:String})],Dp.prototype,"placeholder",void 0),t([mt({type:Boolean})],Dp.prototype,"sorted",void 0),t([mt({type:Object})],Dp.prototype,"workspace",void 0);const Ip=(t,e,i)=>Math.max(Math.min(t,i),e);function Op(t){return Ip(Mp(2.55*t),0,255)}function Lp(t){return Ip(Mp(255*t),0,255)}function zp(t){return Ip(Mp(t/2.55)/100,0,1)}function Pp(t){return Ip(Mp(100*t),0,100)}const Rp={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Np=[..."0123456789ABCDEF"],Bp=t=>Np[15&t],Fp=t=>Np[(240&t)>>4]+Np[15&t],qp=t=>(240&t)>>4==(15&t);function Up(t){var e=(t=>qp(t.r)&&qp(t.g)&&qp(t.b)&&qp(t.a))(t)?Bp:Fp;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const jp=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Vp(t,e,i){const o=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-o*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Hp(t,e,i){const o=(o,n=(o+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[o(5),o(3),o(1)]}function Wp(t,e,i){const o=Vp(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)o[n]*=1-e-i,o[n]+=e;return o}function Zp(t){const e=t.r/255,i=t.g/255,o=t.b/255,n=Math.max(e,i,o),s=Math.min(e,i,o),r=(n+s)/2;let a,l,d;return n!==s&&(d=n-s,l=r>.5?d/(2-n-s):d/(n+s),a=function(t,e,i,o,n){return t===n?(e-i)/o+(e<i?6:0):e===n?(i-t)/o+2:(t-e)/o+4}(e,i,o,d,n),a=60*a+.5),[0|a,l||0,r]}function Yp(t,e,i,o){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,o)).map(Lp)}function Gp(t,e,i){return Yp(Vp,t,e,i)}function Kp(t){return(t%360+360)%360}function Xp(t){const e=jp.exec(t);let i,o=255;if(!e)return;e[5]!==i&&(o=e[6]?Op(+e[5]):Lp(+e[5]));const n=Kp(+e[2]),s=+e[3]/100,r=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return Yp(Wp,t,e,i)}(n,s,r):"hsv"===e[1]?function(t,e,i){return Yp(Hp,t,e,i)}(n,s,r):Gp(n,s,r),{r:i[0],g:i[1],b:i[2],a:o}}const Qp={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Jp={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let tm;function em(t){tm||(tm=function(){const t={},e=Object.keys(Jp),i=Object.keys(Qp);let o,n,s,r,a;for(o=0;o<e.length;o++){for(r=a=e[o],n=0;n<i.length;n++)s=i[n],a=a.replace(s,Qp[s]);s=parseInt(Jp[r],16),t[a]=[s>>16&255,s>>8&255,255&s]}return t}(),tm.transparent=[0,0,0,0]);const e=tm[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const im=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const om=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,nm=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function sm(t,e,i){if(t){let o=Zp(t);o[e]=Math.max(0,Math.min(o[e]+o[e]*i,0===e?360:1)),o=Gp(o),t.r=o[0],t.g=o[1],t.b=o[2]}}function rm(t,e){return t?Object.assign(e||{},t):t}function am(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Lp(t[3]))):(e=rm(t,{r:0,g:0,b:0,a:1})).a=Lp(e.a),e}function lm(t){return"r"===t.charAt(0)?function(t){const e=im.exec(t);let i,o,n,s=255;if(e){if(e[7]!==i){const t=+e[7];s=e[8]?Op(t):Ip(255*t,0,255)}return i=+e[1],o=+e[3],n=+e[5],i=255&(e[2]?Op(i):Ip(i,0,255)),o=255&(e[4]?Op(o):Ip(o,0,255)),n=255&(e[6]?Op(n):Ip(n,0,255)),{r:i,g:o,b:n,a:s}}}(t):Xp(t)}class dm{constructor(t){if(t instanceof dm)return t;const e=typeof t;let i;var o,n,s;"object"===e?i=am(t):"string"===e&&(s=(o=t).length,"#"===o[0]&&(4===s||5===s?n={r:255&17*Rp[o[1]],g:255&17*Rp[o[2]],b:255&17*Rp[o[3]],a:5===s?17*Rp[o[4]]:255}:7!==s&&9!==s||(n={r:Rp[o[1]]<<4|Rp[o[2]],g:Rp[o[3]]<<4|Rp[o[4]],b:Rp[o[5]]<<4|Rp[o[6]],a:9===s?Rp[o[7]]<<4|Rp[o[8]]:255})),i=n||em(t)||lm(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=rm(this._rgb);return t&&(t.a=zp(t.a)),t}set rgb(t){this._rgb=am(t)}rgbString(){return this._valid?function(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${zp(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?Up(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=Zp(t),i=e[0],o=Pp(e[1]),n=Pp(e[2]);return t.a<255?`hsla(${i}, ${o}%, ${n}%, ${zp(t.a)})`:`hsl(${i}, ${o}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,o=t.rgb;let n;const s=e===n?.5:e,r=2*s-1,a=i.a-o.a,l=((r*a==-1?r:(r+a)/(1+r*a))+1)/2;n=1-l,i.r=255&l*i.r+n*o.r+.5,i.g=255&l*i.g+n*o.g+.5,i.b=255&l*i.b+n*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const o=nm(zp(t.r)),n=nm(zp(t.g)),s=nm(zp(t.b));return{r:Lp(om(o+i*(nm(zp(e.r))-o))),g:Lp(om(n+i*(nm(zp(e.g))-n))),b:Lp(om(s+i*(nm(zp(e.b))-s))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new dm(this.rgb)}alpha(t){return this._rgb.a=Lp(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=Mp(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return sm(this._rgb,2,t),this}darken(t){return sm(this._rgb,2,-t),this}saturate(t){return sm(this._rgb,1,t),this}desaturate(t){return sm(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=Zp(t);i[0]=Kp(i[0]+e),i=Gp(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}
11048
+ function Op(t){return t+.5|0}t([mt({type:String})],Ip.prototype,"endpoint",void 0),t([mt({type:String})],Ip.prototype,"nameKey",void 0),t([mt({type:String})],Ip.prototype,"valueKey",void 0),t([mt({type:String})],Ip.prototype,"placeholder",void 0),t([mt({type:Boolean})],Ip.prototype,"sorted",void 0),t([mt({type:Object})],Ip.prototype,"workspace",void 0);const Lp=(t,e,i)=>Math.max(Math.min(t,i),e);function zp(t){return Lp(Op(2.55*t),0,255)}function Pp(t){return Lp(Op(255*t),0,255)}function Rp(t){return Lp(Op(t/2.55)/100,0,1)}function Np(t){return Lp(Op(100*t),0,100)}const Bp={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Fp=[..."0123456789ABCDEF"],qp=t=>Fp[15&t],Up=t=>Fp[(240&t)>>4]+Fp[15&t],jp=t=>(240&t)>>4==(15&t);function Vp(t){var e=(t=>jp(t.r)&&jp(t.g)&&jp(t.b)&&jp(t.a))(t)?qp:Up;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Hp=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Wp(t,e,i){const o=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-o*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Zp(t,e,i){const o=(o,n=(o+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[o(5),o(3),o(1)]}function Yp(t,e,i){const o=Wp(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)o[n]*=1-e-i,o[n]+=e;return o}function Gp(t){const e=t.r/255,i=t.g/255,o=t.b/255,n=Math.max(e,i,o),s=Math.min(e,i,o),r=(n+s)/2;let a,l,d;return n!==s&&(d=n-s,l=r>.5?d/(2-n-s):d/(n+s),a=function(t,e,i,o,n){return t===n?(e-i)/o+(e<i?6:0):e===n?(i-t)/o+2:(t-e)/o+4}(e,i,o,d,n),a=60*a+.5),[0|a,l||0,r]}function Kp(t,e,i,o){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,o)).map(Pp)}function Xp(t,e,i){return Kp(Wp,t,e,i)}function Qp(t){return(t%360+360)%360}function Jp(t){const e=Hp.exec(t);let i,o=255;if(!e)return;e[5]!==i&&(o=e[6]?zp(+e[5]):Pp(+e[5]));const n=Qp(+e[2]),s=+e[3]/100,r=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return Kp(Yp,t,e,i)}(n,s,r):"hsv"===e[1]?function(t,e,i){return Kp(Zp,t,e,i)}(n,s,r):Xp(n,s,r),{r:i[0],g:i[1],b:i[2],a:o}}const tm={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},em={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let im;function om(t){im||(im=function(){const t={},e=Object.keys(em),i=Object.keys(tm);let o,n,s,r,a;for(o=0;o<e.length;o++){for(r=a=e[o],n=0;n<i.length;n++)s=i[n],a=a.replace(s,tm[s]);s=parseInt(em[r],16),t[a]=[s>>16&255,s>>8&255,255&s]}return t}(),im.transparent=[0,0,0,0]);const e=im[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const nm=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const sm=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,rm=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function am(t,e,i){if(t){let o=Gp(t);o[e]=Math.max(0,Math.min(o[e]+o[e]*i,0===e?360:1)),o=Xp(o),t.r=o[0],t.g=o[1],t.b=o[2]}}function lm(t,e){return t?Object.assign(e||{},t):t}function dm(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Pp(t[3]))):(e=lm(t,{r:0,g:0,b:0,a:1})).a=Pp(e.a),e}function cm(t){return"r"===t.charAt(0)?function(t){const e=nm.exec(t);let i,o,n,s=255;if(e){if(e[7]!==i){const t=+e[7];s=e[8]?zp(t):Lp(255*t,0,255)}return i=+e[1],o=+e[3],n=+e[5],i=255&(e[2]?zp(i):Lp(i,0,255)),o=255&(e[4]?zp(o):Lp(o,0,255)),n=255&(e[6]?zp(n):Lp(n,0,255)),{r:i,g:o,b:n,a:s}}}(t):Jp(t)}class hm{constructor(t){if(t instanceof hm)return t;const e=typeof t;let i;var o,n,s;"object"===e?i=dm(t):"string"===e&&(s=(o=t).length,"#"===o[0]&&(4===s||5===s?n={r:255&17*Bp[o[1]],g:255&17*Bp[o[2]],b:255&17*Bp[o[3]],a:5===s?17*Bp[o[4]]:255}:7!==s&&9!==s||(n={r:Bp[o[1]]<<4|Bp[o[2]],g:Bp[o[3]]<<4|Bp[o[4]],b:Bp[o[5]]<<4|Bp[o[6]],a:9===s?Bp[o[7]]<<4|Bp[o[8]]:255})),i=n||om(t)||cm(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=lm(this._rgb);return t&&(t.a=Rp(t.a)),t}set rgb(t){this._rgb=dm(t)}rgbString(){return this._valid?function(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${Rp(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?Vp(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=Gp(t),i=e[0],o=Np(e[1]),n=Np(e[2]);return t.a<255?`hsla(${i}, ${o}%, ${n}%, ${Rp(t.a)})`:`hsl(${i}, ${o}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,o=t.rgb;let n;const s=e===n?.5:e,r=2*s-1,a=i.a-o.a,l=((r*a==-1?r:(r+a)/(1+r*a))+1)/2;n=1-l,i.r=255&l*i.r+n*o.r+.5,i.g=255&l*i.g+n*o.g+.5,i.b=255&l*i.b+n*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const o=rm(Rp(t.r)),n=rm(Rp(t.g)),s=rm(Rp(t.b));return{r:Pp(sm(o+i*(rm(Rp(e.r))-o))),g:Pp(sm(n+i*(rm(Rp(e.g))-n))),b:Pp(sm(s+i*(rm(Rp(e.b))-s))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new hm(this.rgb)}alpha(t){return this._rgb.a=Pp(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=Op(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return am(this._rgb,2,t),this}darken(t){return am(this._rgb,2,-t),this}saturate(t){return am(this._rgb,1,t),this}desaturate(t){return am(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=Gp(t);i[0]=Qp(i[0]+e),i=Xp(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}
11040
11049
  /*!
11041
11050
  * Chart.js v4.4.8
11042
11051
  * https://www.chartjs.org
11043
11052
  * (c) 2025 Chart.js Contributors
11044
11053
  * Released under the MIT License
11045
- */function cm(){}const hm=(()=>{let t=0;return()=>t++})();function um(t){return null==t}function pm(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function mm(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function gm(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function fm(t,e){return gm(t)?t:e}function vm(t,e){return void 0===t?e:t}const ym=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function bm(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function xm(t,e,i,o){let n,s,r;if(pm(t))if(s=t.length,o)for(n=s-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;n<s;n++)e.call(i,t[n],n);else if(mm(t))for(r=Object.keys(t),s=r.length,n=0;n<s;n++)e.call(i,t[r[n]],r[n])}function _m(t,e){let i,o,n,s;if(!t||!e||t.length!==e.length)return!1;for(i=0,o=t.length;i<o;++i)if(n=t[i],s=e[i],n.datasetIndex!==s.datasetIndex||n.index!==s.index)return!1;return!0}function wm(t){if(pm(t))return t.map(wm);if(mm(t)){const e=Object.create(null),i=Object.keys(t),o=i.length;let n=0;for(;n<o;++n)e[i[n]]=wm(t[i[n]]);return e}return t}function km(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function Cm(t,e,i,o){if(!km(t))return;const n=e[t],s=i[t];mm(n)&&mm(s)?Sm(n,s,o):e[t]=wm(s)}function Sm(t,e,i){const o=pm(e)?e:[e],n=o.length;if(!mm(t))return t;const s=(i=i||{}).merger||Cm;let r;for(let e=0;e<n;++e){if(r=o[e],!mm(r))continue;const n=Object.keys(r);for(let e=0,o=n.length;e<o;++e)s(n[e],t,r,i)}return t}function Am(t,e){return Sm(t,e,{merger:Em})}function Em(t,e,i){if(!km(t))return;const o=e[t],n=i[t];mm(o)&&mm(n)?Am(o,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=wm(n))}const $m={"":t=>t,x:t=>t.x,y:t=>t.y};function Tm(t,e){const i=$m[e]||($m[e]=function(t){const e=function(t){const e=t.split("."),i=[];let o="";for(const t of e)o+=t,o.endsWith("\\")?o=o.slice(0,-1)+".":(i.push(o),o="");return i}(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function Dm(t){return t.charAt(0).toUpperCase()+t.slice(1)}const Mm=t=>void 0!==t,Im=t=>"function"==typeof t,Om=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};const Lm=Math.PI,zm=2*Lm,Pm=zm+Lm,Rm=Number.POSITIVE_INFINITY,Nm=Lm/180,Bm=Lm/2,Fm=Lm/4,qm=2*Lm/3,Um=Math.log10,jm=Math.sign;function Vm(t,e,i){return Math.abs(t-e)<i}function Hm(t){const e=Math.round(t);t=Vm(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Um(t))),o=t/i;return(o<=1?1:o<=2?2:o<=5?5:10)*i}function Wm(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function Zm(t,e,i){let o,n,s;for(o=0,n=t.length;o<n;o++)s=t[o][i],isNaN(s)||(e.min=Math.min(e.min,s),e.max=Math.max(e.max,s))}function Ym(t){return t*(Lm/180)}function Gm(t){return t*(180/Lm)}function Km(t){if(!gm(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Xm(t,e){const i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);let s=Math.atan2(o,i);return s<-.5*Lm&&(s+=zm),{angle:s,distance:n}}function Qm(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Jm(t,e){return(t-e+Pm)%zm-Lm}function tg(t){return(t%zm+zm)%zm}function eg(t,e,i,o){const n=tg(t),s=tg(e),r=tg(i),a=tg(s-n),l=tg(r-n),d=tg(n-s),c=tg(n-r);return n===s||n===r||o&&s===r||a>l&&d<c}function ig(t,e,i){return Math.max(e,Math.min(i,t))}function og(t,e,i,o=1e-6){return t>=Math.min(e,i)-o&&t<=Math.max(e,i)+o}function ng(t,e,i){i=i||(i=>t[i]<e);let o,n=t.length-1,s=0;for(;n-s>1;)o=s+n>>1,i(o)?s=o:n=o;return{lo:s,hi:n}}const sg=(t,e,i,o)=>ng(t,i,o?o=>{const n=t[o][e];return n<i||n===i&&t[o+1][e]===i}:o=>t[o][e]<i),rg=(t,e,i)=>ng(t,i,(o=>t[o][e]>=i));const ag=["push","pop","shift","splice","unshift"];function lg(t,e){const i=t._chartjs;if(!i)return;const o=i.listeners,n=o.indexOf(e);-1!==n&&o.splice(n,1),o.length>0||(ag.forEach((e=>{delete t[e]})),delete t._chartjs)}function dg(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const cg="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function hg(t,e){let i=[],o=!1;return function(...n){i=n,o||(o=!0,cg.call(window,(()=>{o=!1,t.apply(e,i)})))}}const ug=t=>"start"===t?"left":"end"===t?"right":"center",pg=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2;function mg(t,e,i){const o=e.length;let n=0,s=o;if(t._sorted){const{iScale:r,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,c=r.axis,{min:h,max:u,minDefined:p,maxDefined:m}=r.getUserBounds();if(p){if(n=Math.min(sg(l,c,h).lo,i?o:sg(e,c,r.getPixelForValue(h)).lo),d){const t=l.slice(0,n+1).reverse().findIndex((t=>!um(t[a.axis])));n-=Math.max(0,t)}n=ig(n,0,o-1)}if(m){let t=Math.max(sg(l,r.axis,u,!0).hi+1,i?0:sg(e,c,r.getPixelForValue(u),!0).hi+1);if(d){const e=l.slice(t-1).findIndex((t=>!um(t[a.axis])));t+=Math.max(0,e)}s=ig(t,n,o)-n}else s=o-n}return{start:n,count:s}}function gg(t){const{xScale:e,yScale:i,_scaleRanges:o}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!o)return t._scaleRanges=n,!0;const s=o.xmin!==e.min||o.xmax!==e.max||o.ymin!==i.min||o.ymax!==i.max;return Object.assign(o,n),s}const fg=t=>0===t||1===t,vg=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*zm/i),yg=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*zm/i)+1,bg={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Bm),easeOutSine:t=>Math.sin(t*Bm),easeInOutSine:t=>-.5*(Math.cos(Lm*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>fg(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>fg(t)?t:vg(t,.075,.3),easeOutElastic:t=>fg(t)?t:yg(t,.075,.3),easeInOutElastic(t){const e=.1125;return fg(t)?t:t<.5?.5*vg(2*t,e,.45):.5+.5*yg(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-bg.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*bg.easeInBounce(2*t):.5*bg.easeOutBounce(2*t-1)+.5};function xg(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function _g(t){return xg(t)?t:new dm(t)}function wg(t){return xg(t)?t:new dm(t).saturate(.5).darken(.1).hexString()}const kg=["x","y","borderWidth","radius","tension"],Cg=["color","borderColor","backgroundColor"];const Sg=new Map;function Ag(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let o=Sg.get(i);return o||(o=new Intl.NumberFormat(t,e),Sg.set(i,o)),o}(e,i).format(t)}const Eg={values:t=>pm(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const o=this.chart.options.locale;let n,s=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),s=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const r=Um(Math.abs(s)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Ag(t,o,l)},logarithmic(t,e,i){if(0===t)return"0";const o=i[e].significand||t/Math.pow(10,Math.floor(Um(t)));return[1,2,3,5,10,15].includes(o)||e>.8*i.length?Eg.numeric.call(this,t,e,i):""}};var $g={formatters:Eg};const Tg=Object.create(null),Dg=Object.create(null);function Mg(t,e){if(!e)return t;const i=e.split(".");for(let e=0,o=i.length;e<o;++e){const o=i[e];t=t[o]||(t[o]=Object.create(null))}return t}function Ig(t,e,i){return"string"==typeof e?Sm(Mg(t,e),i):Sm(Mg(t,""),e)}class Og{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>wg(e.backgroundColor),this.hoverBorderColor=(t,e)=>wg(e.borderColor),this.hoverColor=(t,e)=>wg(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Ig(this,t,e)}get(t){return Mg(this,t)}describe(t,e){return Ig(Dg,t,e)}override(t,e){return Ig(Tg,t,e)}route(t,e,i,o){const n=Mg(this,t),s=Mg(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=s[o];return mm(t)?Object.assign({},e,t):vm(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var Lg=new Og({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:Cg},numbers:{type:"number",properties:kg}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:$g.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function zg(t,e,i,o,n){let s=e[n];return s||(s=e[n]=t.measureText(n).width,i.push(n)),s>o&&(o=s),o}function Pg(t,e,i,o){let n=(o=o||{}).data=o.data||{},s=o.garbageCollect=o.garbageCollect||[];o.font!==e&&(n=o.data={},s=o.garbageCollect=[],o.font=e),t.save(),t.font=e;let r=0;const a=i.length;let l,d,c,h,u;for(l=0;l<a;l++)if(h=i[l],null==h||pm(h)){if(pm(h))for(d=0,c=h.length;d<c;d++)u=h[d],null==u||pm(u)||(r=zg(t,n,s,r,u))}else r=zg(t,n,s,r,h);t.restore();const p=s.length/2;if(p>i.length){for(l=0;l<p;l++)delete n[s[l]];s.splice(0,p)}return r}function Rg(t,e,i){const o=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*o)/o+n}function Ng(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Bg(t,e,i,o){Fg(t,e,i,o,null)}function Fg(t,e,i,o,n){let s,r,a,l,d,c,h,u;const p=e.pointStyle,m=e.rotation,g=e.radius;let f=(m||0)*Nm;if(p&&"object"==typeof p&&(s=p.toString(),"[object HTMLImageElement]"===s||"[object HTMLCanvasElement]"===s))return t.save(),t.translate(i,o),t.rotate(f),t.drawImage(p,-p.width/2,-p.height/2,p.width,p.height),void t.restore();if(!(isNaN(g)||g<=0)){switch(t.beginPath(),p){default:n?t.ellipse(i,o,n/2,g,0,0,zm):t.arc(i,o,g,0,zm),t.closePath();break;case"triangle":c=n?n/2:g,t.moveTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=qm,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=qm,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),t.closePath();break;case"rectRounded":d=.516*g,l=g-d,r=Math.cos(f+Fm)*l,h=Math.cos(f+Fm)*(n?n/2-d:l),a=Math.sin(f+Fm)*l,u=Math.sin(f+Fm)*(n?n/2-d:l),t.arc(i-h,o-a,d,f-Lm,f-Bm),t.arc(i+u,o-r,d,f-Bm,f),t.arc(i+h,o+a,d,f,f+Bm),t.arc(i-u,o+r,d,f+Bm,f+Lm),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*g,c=n?n/2:l,t.rect(i-c,o-l,2*c,2*l);break}f+=Fm;case"rectRot":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+u,o-r),t.lineTo(i+h,o+a),t.lineTo(i-u,o+r),t.closePath();break;case"crossRot":f+=Fm;case"cross":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"star":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r),f+=Fm,h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"line":r=n?n/2:Math.cos(f)*g,a=Math.sin(f)*g,t.moveTo(i-r,o-a),t.lineTo(i+r,o+a);break;case"dash":t.moveTo(i,o),t.lineTo(i+Math.cos(f)*(n?n/2:g),o+Math.sin(f)*g);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function qg(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Ug(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function jg(t){t.restore()}function Vg(t,e,i,o,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const o=(e.x+i.x)/2;t.lineTo(o,e.y),t.lineTo(o,i.y)}else"after"===n!=!!o?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Hg(t,e,i,o){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(o?e.cp1x:e.cp2x,o?e.cp1y:e.cp2y,o?i.cp2x:i.cp1x,o?i.cp2y:i.cp1y,i.x,i.y)}function Wg(t,e,i,o,n){if(n.strikethrough||n.underline){const s=t.measureText(o),r=e-s.actualBoundingBoxLeft,a=e+s.actualBoundingBoxRight,l=i-s.actualBoundingBoxAscent,d=i+s.actualBoundingBoxDescent,c=n.strikethrough?(l+d)/2:d;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(r,c),t.lineTo(a,c),t.stroke()}}function Zg(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Yg(t,e,i,o,n,s={}){const r=pm(e)?e:[e],a=s.strokeWidth>0&&""!==s.strokeColor;let l,d;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),um(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,s),l=0;l<r.length;++l)d=r[l],s.backdrop&&Zg(t,s.backdrop),a&&(s.strokeColor&&(t.strokeStyle=s.strokeColor),um(s.strokeWidth)||(t.lineWidth=s.strokeWidth),t.strokeText(d,i,o,s.maxWidth)),t.fillText(d,i,o,s.maxWidth),Wg(t,i,o,d,s),o+=Number(n.lineHeight);t.restore()}function Gg(t,e){const{x:i,y:o,w:n,h:s,radius:r}=e;t.arc(i+r.topLeft,o+r.topLeft,r.topLeft,1.5*Lm,Lm,!0),t.lineTo(i,o+s-r.bottomLeft),t.arc(i+r.bottomLeft,o+s-r.bottomLeft,r.bottomLeft,Lm,Bm,!0),t.lineTo(i+n-r.bottomRight,o+s),t.arc(i+n-r.bottomRight,o+s-r.bottomRight,r.bottomRight,Bm,0,!0),t.lineTo(i+n,o+r.topRight),t.arc(i+n-r.topRight,o+r.topRight,r.topRight,0,-Bm,!0),t.lineTo(i+r.topLeft,o)}const Kg=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Xg=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function Qg(t,e){const i=(""+t).match(Kg);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const Jg=t=>+t||0;function tf(t,e){const i={},o=mm(e),n=o?Object.keys(e):e,s=mm(t)?o?i=>vm(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=Jg(s(t));return i}function ef(t){return tf(t,{top:"y",right:"x",bottom:"y",left:"x"})}function of(t){return tf(t,["topLeft","topRight","bottomLeft","bottomRight"])}function nf(t){const e=ef(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function sf(t,e){t=t||{},e=e||Lg.font;let i=vm(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let o=vm(t.style,e.style);o&&!(""+o).match(Xg)&&(console.warn('Invalid font style specified: "'+o+'"'),o=void 0);const n={family:vm(t.family,e.family),lineHeight:Qg(vm(t.lineHeight,e.lineHeight),i),size:i,style:o,weight:vm(t.weight,e.weight),string:""};return n.string=function(t){return!t||um(t.size)||um(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n}function rf(t,e,i,o){let n,s,r,a=!0;for(n=0,s=t.length;n<s;++n)if(r=t[n],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),a=!1),void 0!==i&&pm(r)&&(r=r[i%r.length],a=!1),void 0!==r))return o&&!a&&(o.cacheable=!1),r}function af(t,e){return Object.assign(Object.create(t),e)}function lf(t,e=[""],i,o,n=(()=>t[0])){const s=i||t;void 0===o&&(o=bf("_fallback",t));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:s,_fallback:o,_getTarget:n,override:i=>lf([i,...t],e,s,o)};return new Proxy(r,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,o)=>pf(i,o,(()=>function(t,e,i,o){let n;for(const s of e)if(n=bf(hf(s,t),i),void 0!==n)return uf(t,n)?vf(i,o,t,n):n}(o,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xf(t).includes(e),ownKeys:t=>xf(t),set(t,e,i){const o=t._storage||(t._storage=n());return t[e]=o[e]=i,delete t._keys,!0}})}function df(t,e,i,o){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:cf(t,o),setContext:e=>df(t,e,i,o),override:n=>df(t.override(n),e,i,o)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>pf(t,e,(()=>function(t,e,i){const{_proxy:o,_context:n,_subProxy:s,_descriptors:r}=t;let a=o[e];Im(a)&&r.isScriptable(e)&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_stack:a}=i;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=e(s,r||o);a.delete(t),uf(t,l)&&(l=vf(n._scopes,n,t,l));return l}(e,a,t,i));pm(a)&&a.length&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_descriptors:a}=i;if(void 0!==s.index&&o(t))return e[s.index%e.length];if(mm(e[0])){const i=e,o=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=vf(o,n,t,l);e.push(df(i,s,r&&r[t],a))}}return e}(e,a,t,r.isIndexable));uf(e,a)&&(a=df(a,n,s&&s[e],r));return a}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,o)=>(t[i]=o,delete e[i],!0)})}function cf(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:o=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:o,isScriptable:Im(i)?i:()=>i,isIndexable:Im(o)?o:()=>o}}const hf=(t,e)=>t?t+Dm(e):e,uf=(t,e)=>mm(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function pf(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const o=i();return t[e]=o,o}function mf(t,e,i){return Im(t)?t(e,i):t}const gf=(t,e)=>!0===t?e:"string"==typeof t?Tm(e,t):void 0;function ff(t,e,i,o,n){for(const s of e){const e=gf(i,s);if(e){t.add(e);const s=mf(e._fallback,i,n);if(void 0!==s&&s!==i&&s!==o)return s}else if(!1===e&&void 0!==o&&i!==o)return null}return!1}function vf(t,e,i,o){const n=e._rootScopes,s=mf(e._fallback,i,o),r=[...t,...n],a=new Set;a.add(o);let l=yf(a,r,i,s||i,o);return null!==l&&((void 0===s||s===i||(l=yf(a,r,s,l,o),null!==l))&&lf(Array.from(a),[""],n,s,(()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const n=o[e];if(pm(n)&&mm(i))return i;return n||{}}(e,i,o))))}function yf(t,e,i,o,n){for(;i;)i=ff(t,e,i,o,n);return i}function bf(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function xf(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function _f(t,e,i,o){const{iScale:n}=t,{key:s="r"}=this._parsing,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={r:n.parse(Tm(c,s),d)};return r}const wf=Number.EPSILON||1e-14,kf=(t,e)=>e<t.length&&!t[e].skip&&t[e],Cf=t=>"x"===t?"y":"x";function Sf(t,e,i,o){const n=t.skip?e:t,s=e,r=i.skip?e:i,a=Qm(s,n),l=Qm(r,s);let d=a/(a+l),c=l/(a+l);d=isNaN(d)?0:d,c=isNaN(c)?0:c;const h=o*d,u=o*c;return{previous:{x:s.x-h*(r.x-n.x),y:s.y-h*(r.y-n.y)},next:{x:s.x+u*(r.x-n.x),y:s.y+u*(r.y-n.y)}}}function Af(t,e="x"){const i=Cf(e),o=t.length,n=Array(o).fill(0),s=Array(o);let r,a,l,d=kf(t,0);for(r=0;r<o;++r)if(a=l,l=d,d=kf(t,r+1),l){if(d){const t=d[e]-l[e];n[r]=0!==t?(d[i]-l[i])/t:0}s[r]=a?d?jm(n[r-1])!==jm(n[r])?0:(n[r-1]+n[r])/2:n[r-1]:n[r]}!function(t,e,i){const o=t.length;let n,s,r,a,l,d=kf(t,0);for(let c=0;c<o-1;++c)l=d,d=kf(t,c+1),l&&d&&(Vm(e[c],0,wf)?i[c]=i[c+1]=0:(n=i[c]/e[c],s=i[c+1]/e[c],a=Math.pow(n,2)+Math.pow(s,2),a<=9||(r=3/Math.sqrt(a),i[c]=n*r*e[c],i[c+1]=s*r*e[c])))}(t,n,s),function(t,e,i="x"){const o=Cf(i),n=t.length;let s,r,a,l=kf(t,0);for(let d=0;d<n;++d){if(r=a,a=l,l=kf(t,d+1),!a)continue;const n=a[i],c=a[o];r&&(s=(n-r[i])/3,a[`cp1${i}`]=n-s,a[`cp1${o}`]=c-s*e[d]),l&&(s=(l[i]-n)/3,a[`cp2${i}`]=n+s,a[`cp2${o}`]=c+s*e[d])}}(t,s,e)}function Ef(t,e,i){return Math.max(Math.min(t,i),e)}function $f(t,e,i,o,n){let s,r,a,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)Af(t,n);else{let i=o?t[t.length-1]:t[0];for(s=0,r=t.length;s<r;++s)a=t[s],l=Sf(i,a,t[Math.min(s+1,r-(o?0:1))%r],e.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,i=a}e.capBezierPoints&&function(t,e){let i,o,n,s,r,a=qg(t[0],e);for(i=0,o=t.length;i<o;++i)r=s,s=a,a=i<o-1&&qg(t[i+1],e),s&&(n=t[i],r&&(n.cp1x=Ef(n.cp1x,e.left,e.right),n.cp1y=Ef(n.cp1y,e.top,e.bottom)),a&&(n.cp2x=Ef(n.cp2x,e.left,e.right),n.cp2y=Ef(n.cp2y,e.top,e.bottom)))}(t,i)}function Tf(){return"undefined"!=typeof window&&"undefined"!=typeof document}function Df(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function Mf(t,e,i){let o;return"string"==typeof t?(o=parseInt(t,10),-1!==t.indexOf("%")&&(o=o/100*e.parentNode[i])):o=t,o}const If=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);const Of=["top","right","bottom","left"];function Lf(t,e,i){const o={};i=i?"-"+i:"";for(let n=0;n<4;n++){const s=Of[n];o[s]=parseFloat(t[e+"-"+s+i])||0}return o.width=o.left+o.right,o.height=o.top+o.bottom,o}const zf=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function Pf(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:o}=e,n=If(i),s="border-box"===n.boxSizing,r=Lf(n,"padding"),a=Lf(n,"border","width"),{x:l,y:d,box:c}=function(t,e){const i=t.touches,o=i&&i.length?i[0]:t,{offsetX:n,offsetY:s}=o;let r,a,l=!1;if(zf(n,s,t.target))r=n,a=s;else{const t=e.getBoundingClientRect();r=o.clientX-t.left,a=o.clientY-t.top,l=!0}return{x:r,y:a,box:l}}(t,i),h=r.left+(c&&a.left),u=r.top+(c&&a.top);let{width:p,height:m}=e;return s&&(p-=r.width+a.width,m-=r.height+a.height),{x:Math.round((l-h)/p*i.width/o),y:Math.round((d-u)/m*i.height/o)}}const Rf=t=>Math.round(10*t)/10;function Nf(t,e,i,o){const n=If(t),s=Lf(n,"margin"),r=Mf(n.maxWidth,t,"clientWidth")||Rm,a=Mf(n.maxHeight,t,"clientHeight")||Rm,l=function(t,e,i){let o,n;if(void 0===e||void 0===i){const s=t&&Df(t);if(s){const t=s.getBoundingClientRect(),r=If(s),a=Lf(r,"border","width"),l=Lf(r,"padding");e=t.width-l.width-a.width,i=t.height-l.height-a.height,o=Mf(r.maxWidth,s,"clientWidth"),n=Mf(r.maxHeight,s,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:o||Rm,maxHeight:n||Rm}}(t,e,i);let{width:d,height:c}=l;if("content-box"===n.boxSizing){const t=Lf(n,"border","width"),e=Lf(n,"padding");d-=e.width+t.width,c-=e.height+t.height}d=Math.max(0,d-s.width),c=Math.max(0,o?d/o:c-s.height),d=Rf(Math.min(d,r,l.maxWidth)),c=Rf(Math.min(c,a,l.maxHeight)),d&&!c&&(c=Rf(d/2));return(void 0!==e||void 0!==i)&&o&&l.height&&c>l.height&&(c=l.height,d=Rf(Math.floor(c*o))),{width:d,height:c}}function Bf(t,e,i){const o=e||1,n=Math.floor(t.height*o),s=Math.floor(t.width*o);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const r=t.canvas;return r.style&&(i||!r.style.height&&!r.style.width)&&(r.style.height=`${t.height}px`,r.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==o||r.height!==n||r.width!==s)&&(t.currentDevicePixelRatio=o,r.height=n,r.width=s,t.ctx.setTransform(o,0,0,o,0,0),!0)}const Ff=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Tf()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function qf(t,e){const i=function(t,e){return If(t).getPropertyValue(e)}(t,e),o=i&&i.match(/^(\d+)(\.\d+)?px$/);return o?+o[1]:void 0}function Uf(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function jf(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:"middle"===o?i<.5?t.y:e.y:"after"===o?i<1?t.y:e.y:i>0?e.y:t.y}}function Vf(t,e,i,o){const n={x:t.cp2x,y:t.cp2y},s={x:e.cp1x,y:e.cp1y},r=Uf(t,n,i),a=Uf(n,s,i),l=Uf(s,e,i),d=Uf(r,a,i),c=Uf(a,l,i);return Uf(d,c,i)}function Hf(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Wf(t,e){let i,o;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,o=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=o)}function Zf(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Yf(t){return"angle"===t?{between:eg,compare:Jm,normalize:tg}:{between:og,compare:(t,e)=>t-e,normalize:t=>t}}function Gf({start:t,end:e,count:i,loop:o,style:n}){return{start:t%i,end:e%i,loop:o&&(e-t+1)%i==0,style:n}}function Kf(t,e,i){if(!i)return[t];const{property:o,start:n,end:s}=i,r=e.length,{compare:a,between:l,normalize:d}=Yf(o),{start:c,end:h,loop:u,style:p}=function(t,e,i){const{property:o,start:n,end:s}=i,{between:r,normalize:a}=Yf(o),l=e.length;let d,c,{start:h,end:u,loop:p}=t;if(p){for(h+=l,u+=l,d=0,c=l;d<c&&r(a(e[h%l][o]),n,s);++d)h--,u--;h%=l,u%=l}return u<h&&(u+=l),{start:h,end:u,loop:p,style:t.style}}(t,e,i),m=[];let g,f,v,y=!1,b=null;const x=()=>y||l(n,v,g)&&0!==a(n,v),_=()=>!y||0===a(s,g)||l(s,v,g);for(let t=c,i=c;t<=h;++t)f=e[t%r],f.skip||(g=d(f[o]),g!==v&&(y=l(g,n,s),null===b&&x()&&(b=0===a(g,n)?t:i),null!==b&&_()&&(m.push(Gf({start:b,end:t,loop:u,count:r,style:p})),b=null),i=t,v=g));return null!==b&&m.push(Gf({start:b,end:h,loop:u,count:r,style:p})),m}function Xf(t,e){const i=[],o=t.segments;for(let n=0;n<o.length;n++){const s=Kf(o[n],t.points,e);s.length&&i.push(...s)}return i}function Qf(t,e,i,o){return o&&o.setContext&&i?function(t,e,i,o){const n=t._chart.getContext(),s=Jf(t.options),{_datasetIndex:r,options:{spanGaps:a}}=t,l=i.length,d=[];let c=s,h=e[0].start,u=h;function p(t,e,o,n){const s=a?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=s;for(;i[e%l].skip;)e+=s;t%l!=e%l&&(d.push({start:t%l,end:e%l,loop:o,style:n}),c=n,h=e%l)}}for(const t of e){h=a?h:t.start;let e,s=i[h%l];for(u=h+1;u<=t.end;u++){const a=i[u%l];e=Jf(o.setContext(af(n,{type:"segment",p0:s,p1:a,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),tv(e,c)&&p(h,u-1,t.loop,c),s=a,c=e}h<u-1&&p(h,u-1,t.loop,c)}return d}(t,e,i,o):e}function Jf(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function tv(t,e){if(!e)return!1;const i=[],o=function(t,e){return xg(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,o)!==JSON.stringify(e,o)}
11054
+ */function um(){}const pm=(()=>{let t=0;return()=>t++})();function mm(t){return null==t}function gm(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function fm(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function vm(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function ym(t,e){return vm(t)?t:e}function bm(t,e){return void 0===t?e:t}const xm=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function _m(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function wm(t,e,i,o){let n,s,r;if(gm(t))if(s=t.length,o)for(n=s-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;n<s;n++)e.call(i,t[n],n);else if(fm(t))for(r=Object.keys(t),s=r.length,n=0;n<s;n++)e.call(i,t[r[n]],r[n])}function km(t,e){let i,o,n,s;if(!t||!e||t.length!==e.length)return!1;for(i=0,o=t.length;i<o;++i)if(n=t[i],s=e[i],n.datasetIndex!==s.datasetIndex||n.index!==s.index)return!1;return!0}function Cm(t){if(gm(t))return t.map(Cm);if(fm(t)){const e=Object.create(null),i=Object.keys(t),o=i.length;let n=0;for(;n<o;++n)e[i[n]]=Cm(t[i[n]]);return e}return t}function Sm(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function Am(t,e,i,o){if(!Sm(t))return;const n=e[t],s=i[t];fm(n)&&fm(s)?Em(n,s,o):e[t]=Cm(s)}function Em(t,e,i){const o=gm(e)?e:[e],n=o.length;if(!fm(t))return t;const s=(i=i||{}).merger||Am;let r;for(let e=0;e<n;++e){if(r=o[e],!fm(r))continue;const n=Object.keys(r);for(let e=0,o=n.length;e<o;++e)s(n[e],t,r,i)}return t}function $m(t,e){return Em(t,e,{merger:Tm})}function Tm(t,e,i){if(!Sm(t))return;const o=e[t],n=i[t];fm(o)&&fm(n)?$m(o,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=Cm(n))}const Dm={"":t=>t,x:t=>t.x,y:t=>t.y};function Mm(t,e){const i=Dm[e]||(Dm[e]=function(t){const e=function(t){const e=t.split("."),i=[];let o="";for(const t of e)o+=t,o.endsWith("\\")?o=o.slice(0,-1)+".":(i.push(o),o="");return i}(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function Im(t){return t.charAt(0).toUpperCase()+t.slice(1)}const Om=t=>void 0!==t,Lm=t=>"function"==typeof t,zm=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};const Pm=Math.PI,Rm=2*Pm,Nm=Rm+Pm,Bm=Number.POSITIVE_INFINITY,Fm=Pm/180,qm=Pm/2,Um=Pm/4,jm=2*Pm/3,Vm=Math.log10,Hm=Math.sign;function Wm(t,e,i){return Math.abs(t-e)<i}function Zm(t){const e=Math.round(t);t=Wm(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Vm(t))),o=t/i;return(o<=1?1:o<=2?2:o<=5?5:10)*i}function Ym(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function Gm(t,e,i){let o,n,s;for(o=0,n=t.length;o<n;o++)s=t[o][i],isNaN(s)||(e.min=Math.min(e.min,s),e.max=Math.max(e.max,s))}function Km(t){return t*(Pm/180)}function Xm(t){return t*(180/Pm)}function Qm(t){if(!vm(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Jm(t,e){const i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);let s=Math.atan2(o,i);return s<-.5*Pm&&(s+=Rm),{angle:s,distance:n}}function tg(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function eg(t,e){return(t-e+Nm)%Rm-Pm}function ig(t){return(t%Rm+Rm)%Rm}function og(t,e,i,o){const n=ig(t),s=ig(e),r=ig(i),a=ig(s-n),l=ig(r-n),d=ig(n-s),c=ig(n-r);return n===s||n===r||o&&s===r||a>l&&d<c}function ng(t,e,i){return Math.max(e,Math.min(i,t))}function sg(t,e,i,o=1e-6){return t>=Math.min(e,i)-o&&t<=Math.max(e,i)+o}function rg(t,e,i){i=i||(i=>t[i]<e);let o,n=t.length-1,s=0;for(;n-s>1;)o=s+n>>1,i(o)?s=o:n=o;return{lo:s,hi:n}}const ag=(t,e,i,o)=>rg(t,i,o?o=>{const n=t[o][e];return n<i||n===i&&t[o+1][e]===i}:o=>t[o][e]<i),lg=(t,e,i)=>rg(t,i,(o=>t[o][e]>=i));const dg=["push","pop","shift","splice","unshift"];function cg(t,e){const i=t._chartjs;if(!i)return;const o=i.listeners,n=o.indexOf(e);-1!==n&&o.splice(n,1),o.length>0||(dg.forEach((e=>{delete t[e]})),delete t._chartjs)}function hg(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ug="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function pg(t,e){let i=[],o=!1;return function(...n){i=n,o||(o=!0,ug.call(window,(()=>{o=!1,t.apply(e,i)})))}}const mg=t=>"start"===t?"left":"end"===t?"right":"center",gg=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2;function fg(t,e,i){const o=e.length;let n=0,s=o;if(t._sorted){const{iScale:r,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,c=r.axis,{min:h,max:u,minDefined:p,maxDefined:m}=r.getUserBounds();if(p){if(n=Math.min(ag(l,c,h).lo,i?o:ag(e,c,r.getPixelForValue(h)).lo),d){const t=l.slice(0,n+1).reverse().findIndex((t=>!mm(t[a.axis])));n-=Math.max(0,t)}n=ng(n,0,o-1)}if(m){let t=Math.max(ag(l,r.axis,u,!0).hi+1,i?0:ag(e,c,r.getPixelForValue(u),!0).hi+1);if(d){const e=l.slice(t-1).findIndex((t=>!mm(t[a.axis])));t+=Math.max(0,e)}s=ng(t,n,o)-n}else s=o-n}return{start:n,count:s}}function vg(t){const{xScale:e,yScale:i,_scaleRanges:o}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!o)return t._scaleRanges=n,!0;const s=o.xmin!==e.min||o.xmax!==e.max||o.ymin!==i.min||o.ymax!==i.max;return Object.assign(o,n),s}const yg=t=>0===t||1===t,bg=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*Rm/i),xg=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*Rm/i)+1,_g={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*qm),easeOutSine:t=>Math.sin(t*qm),easeInOutSine:t=>-.5*(Math.cos(Pm*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>yg(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>yg(t)?t:bg(t,.075,.3),easeOutElastic:t=>yg(t)?t:xg(t,.075,.3),easeInOutElastic(t){const e=.1125;return yg(t)?t:t<.5?.5*bg(2*t,e,.45):.5+.5*xg(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-_g.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*_g.easeInBounce(2*t):.5*_g.easeOutBounce(2*t-1)+.5};function wg(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function kg(t){return wg(t)?t:new hm(t)}function Cg(t){return wg(t)?t:new hm(t).saturate(.5).darken(.1).hexString()}const Sg=["x","y","borderWidth","radius","tension"],Ag=["color","borderColor","backgroundColor"];const Eg=new Map;function $g(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let o=Eg.get(i);return o||(o=new Intl.NumberFormat(t,e),Eg.set(i,o)),o}(e,i).format(t)}const Tg={values:t=>gm(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const o=this.chart.options.locale;let n,s=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),s=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const r=Vm(Math.abs(s)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),$g(t,o,l)},logarithmic(t,e,i){if(0===t)return"0";const o=i[e].significand||t/Math.pow(10,Math.floor(Vm(t)));return[1,2,3,5,10,15].includes(o)||e>.8*i.length?Tg.numeric.call(this,t,e,i):""}};var Dg={formatters:Tg};const Mg=Object.create(null),Ig=Object.create(null);function Og(t,e){if(!e)return t;const i=e.split(".");for(let e=0,o=i.length;e<o;++e){const o=i[e];t=t[o]||(t[o]=Object.create(null))}return t}function Lg(t,e,i){return"string"==typeof e?Em(Og(t,e),i):Em(Og(t,""),e)}class zg{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>Cg(e.backgroundColor),this.hoverBorderColor=(t,e)=>Cg(e.borderColor),this.hoverColor=(t,e)=>Cg(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Lg(this,t,e)}get(t){return Og(this,t)}describe(t,e){return Lg(Ig,t,e)}override(t,e){return Lg(Mg,t,e)}route(t,e,i,o){const n=Og(this,t),s=Og(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=s[o];return fm(t)?Object.assign({},e,t):bm(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var Pg=new zg({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:Ag},numbers:{type:"number",properties:Sg}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Dg.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function Rg(t,e,i,o,n){let s=e[n];return s||(s=e[n]=t.measureText(n).width,i.push(n)),s>o&&(o=s),o}function Ng(t,e,i,o){let n=(o=o||{}).data=o.data||{},s=o.garbageCollect=o.garbageCollect||[];o.font!==e&&(n=o.data={},s=o.garbageCollect=[],o.font=e),t.save(),t.font=e;let r=0;const a=i.length;let l,d,c,h,u;for(l=0;l<a;l++)if(h=i[l],null==h||gm(h)){if(gm(h))for(d=0,c=h.length;d<c;d++)u=h[d],null==u||gm(u)||(r=Rg(t,n,s,r,u))}else r=Rg(t,n,s,r,h);t.restore();const p=s.length/2;if(p>i.length){for(l=0;l<p;l++)delete n[s[l]];s.splice(0,p)}return r}function Bg(t,e,i){const o=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*o)/o+n}function Fg(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function qg(t,e,i,o){Ug(t,e,i,o,null)}function Ug(t,e,i,o,n){let s,r,a,l,d,c,h,u;const p=e.pointStyle,m=e.rotation,g=e.radius;let f=(m||0)*Fm;if(p&&"object"==typeof p&&(s=p.toString(),"[object HTMLImageElement]"===s||"[object HTMLCanvasElement]"===s))return t.save(),t.translate(i,o),t.rotate(f),t.drawImage(p,-p.width/2,-p.height/2,p.width,p.height),void t.restore();if(!(isNaN(g)||g<=0)){switch(t.beginPath(),p){default:n?t.ellipse(i,o,n/2,g,0,0,Rm):t.arc(i,o,g,0,Rm),t.closePath();break;case"triangle":c=n?n/2:g,t.moveTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=jm,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=jm,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),t.closePath();break;case"rectRounded":d=.516*g,l=g-d,r=Math.cos(f+Um)*l,h=Math.cos(f+Um)*(n?n/2-d:l),a=Math.sin(f+Um)*l,u=Math.sin(f+Um)*(n?n/2-d:l),t.arc(i-h,o-a,d,f-Pm,f-qm),t.arc(i+u,o-r,d,f-qm,f),t.arc(i+h,o+a,d,f,f+qm),t.arc(i-u,o+r,d,f+qm,f+Pm),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*g,c=n?n/2:l,t.rect(i-c,o-l,2*c,2*l);break}f+=Um;case"rectRot":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+u,o-r),t.lineTo(i+h,o+a),t.lineTo(i-u,o+r),t.closePath();break;case"crossRot":f+=Um;case"cross":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"star":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r),f+=Um,h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"line":r=n?n/2:Math.cos(f)*g,a=Math.sin(f)*g,t.moveTo(i-r,o-a),t.lineTo(i+r,o+a);break;case"dash":t.moveTo(i,o),t.lineTo(i+Math.cos(f)*(n?n/2:g),o+Math.sin(f)*g);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function jg(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Vg(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function Hg(t){t.restore()}function Wg(t,e,i,o,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const o=(e.x+i.x)/2;t.lineTo(o,e.y),t.lineTo(o,i.y)}else"after"===n!=!!o?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Zg(t,e,i,o){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(o?e.cp1x:e.cp2x,o?e.cp1y:e.cp2y,o?i.cp2x:i.cp1x,o?i.cp2y:i.cp1y,i.x,i.y)}function Yg(t,e,i,o,n){if(n.strikethrough||n.underline){const s=t.measureText(o),r=e-s.actualBoundingBoxLeft,a=e+s.actualBoundingBoxRight,l=i-s.actualBoundingBoxAscent,d=i+s.actualBoundingBoxDescent,c=n.strikethrough?(l+d)/2:d;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(r,c),t.lineTo(a,c),t.stroke()}}function Gg(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Kg(t,e,i,o,n,s={}){const r=gm(e)?e:[e],a=s.strokeWidth>0&&""!==s.strokeColor;let l,d;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),mm(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,s),l=0;l<r.length;++l)d=r[l],s.backdrop&&Gg(t,s.backdrop),a&&(s.strokeColor&&(t.strokeStyle=s.strokeColor),mm(s.strokeWidth)||(t.lineWidth=s.strokeWidth),t.strokeText(d,i,o,s.maxWidth)),t.fillText(d,i,o,s.maxWidth),Yg(t,i,o,d,s),o+=Number(n.lineHeight);t.restore()}function Xg(t,e){const{x:i,y:o,w:n,h:s,radius:r}=e;t.arc(i+r.topLeft,o+r.topLeft,r.topLeft,1.5*Pm,Pm,!0),t.lineTo(i,o+s-r.bottomLeft),t.arc(i+r.bottomLeft,o+s-r.bottomLeft,r.bottomLeft,Pm,qm,!0),t.lineTo(i+n-r.bottomRight,o+s),t.arc(i+n-r.bottomRight,o+s-r.bottomRight,r.bottomRight,qm,0,!0),t.lineTo(i+n,o+r.topRight),t.arc(i+n-r.topRight,o+r.topRight,r.topRight,0,-qm,!0),t.lineTo(i+r.topLeft,o)}const Qg=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Jg=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function tf(t,e){const i=(""+t).match(Qg);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const ef=t=>+t||0;function of(t,e){const i={},o=fm(e),n=o?Object.keys(e):e,s=fm(t)?o?i=>bm(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=ef(s(t));return i}function nf(t){return of(t,{top:"y",right:"x",bottom:"y",left:"x"})}function sf(t){return of(t,["topLeft","topRight","bottomLeft","bottomRight"])}function rf(t){const e=nf(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function af(t,e){t=t||{},e=e||Pg.font;let i=bm(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let o=bm(t.style,e.style);o&&!(""+o).match(Jg)&&(console.warn('Invalid font style specified: "'+o+'"'),o=void 0);const n={family:bm(t.family,e.family),lineHeight:tf(bm(t.lineHeight,e.lineHeight),i),size:i,style:o,weight:bm(t.weight,e.weight),string:""};return n.string=function(t){return!t||mm(t.size)||mm(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n}function lf(t,e,i,o){let n,s,r,a=!0;for(n=0,s=t.length;n<s;++n)if(r=t[n],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),a=!1),void 0!==i&&gm(r)&&(r=r[i%r.length],a=!1),void 0!==r))return o&&!a&&(o.cacheable=!1),r}function df(t,e){return Object.assign(Object.create(t),e)}function cf(t,e=[""],i,o,n=(()=>t[0])){const s=i||t;void 0===o&&(o=_f("_fallback",t));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:s,_fallback:o,_getTarget:n,override:i=>cf([i,...t],e,s,o)};return new Proxy(r,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,o)=>gf(i,o,(()=>function(t,e,i,o){let n;for(const s of e)if(n=_f(pf(s,t),i),void 0!==n)return mf(t,n)?bf(i,o,t,n):n}(o,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>wf(t).includes(e),ownKeys:t=>wf(t),set(t,e,i){const o=t._storage||(t._storage=n());return t[e]=o[e]=i,delete t._keys,!0}})}function hf(t,e,i,o){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:uf(t,o),setContext:e=>hf(t,e,i,o),override:n=>hf(t.override(n),e,i,o)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>gf(t,e,(()=>function(t,e,i){const{_proxy:o,_context:n,_subProxy:s,_descriptors:r}=t;let a=o[e];Lm(a)&&r.isScriptable(e)&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_stack:a}=i;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=e(s,r||o);a.delete(t),mf(t,l)&&(l=bf(n._scopes,n,t,l));return l}(e,a,t,i));gm(a)&&a.length&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_descriptors:a}=i;if(void 0!==s.index&&o(t))return e[s.index%e.length];if(fm(e[0])){const i=e,o=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=bf(o,n,t,l);e.push(hf(i,s,r&&r[t],a))}}return e}(e,a,t,r.isIndexable));mf(e,a)&&(a=hf(a,n,s&&s[e],r));return a}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,o)=>(t[i]=o,delete e[i],!0)})}function uf(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:o=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:o,isScriptable:Lm(i)?i:()=>i,isIndexable:Lm(o)?o:()=>o}}const pf=(t,e)=>t?t+Im(e):e,mf=(t,e)=>fm(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function gf(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const o=i();return t[e]=o,o}function ff(t,e,i){return Lm(t)?t(e,i):t}const vf=(t,e)=>!0===t?e:"string"==typeof t?Mm(e,t):void 0;function yf(t,e,i,o,n){for(const s of e){const e=vf(i,s);if(e){t.add(e);const s=ff(e._fallback,i,n);if(void 0!==s&&s!==i&&s!==o)return s}else if(!1===e&&void 0!==o&&i!==o)return null}return!1}function bf(t,e,i,o){const n=e._rootScopes,s=ff(e._fallback,i,o),r=[...t,...n],a=new Set;a.add(o);let l=xf(a,r,i,s||i,o);return null!==l&&((void 0===s||s===i||(l=xf(a,r,s,l,o),null!==l))&&cf(Array.from(a),[""],n,s,(()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const n=o[e];if(gm(n)&&fm(i))return i;return n||{}}(e,i,o))))}function xf(t,e,i,o,n){for(;i;)i=yf(t,e,i,o,n);return i}function _f(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function wf(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function kf(t,e,i,o){const{iScale:n}=t,{key:s="r"}=this._parsing,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={r:n.parse(Mm(c,s),d)};return r}const Cf=Number.EPSILON||1e-14,Sf=(t,e)=>e<t.length&&!t[e].skip&&t[e],Af=t=>"x"===t?"y":"x";function Ef(t,e,i,o){const n=t.skip?e:t,s=e,r=i.skip?e:i,a=tg(s,n),l=tg(r,s);let d=a/(a+l),c=l/(a+l);d=isNaN(d)?0:d,c=isNaN(c)?0:c;const h=o*d,u=o*c;return{previous:{x:s.x-h*(r.x-n.x),y:s.y-h*(r.y-n.y)},next:{x:s.x+u*(r.x-n.x),y:s.y+u*(r.y-n.y)}}}function $f(t,e="x"){const i=Af(e),o=t.length,n=Array(o).fill(0),s=Array(o);let r,a,l,d=Sf(t,0);for(r=0;r<o;++r)if(a=l,l=d,d=Sf(t,r+1),l){if(d){const t=d[e]-l[e];n[r]=0!==t?(d[i]-l[i])/t:0}s[r]=a?d?Hm(n[r-1])!==Hm(n[r])?0:(n[r-1]+n[r])/2:n[r-1]:n[r]}!function(t,e,i){const o=t.length;let n,s,r,a,l,d=Sf(t,0);for(let c=0;c<o-1;++c)l=d,d=Sf(t,c+1),l&&d&&(Wm(e[c],0,Cf)?i[c]=i[c+1]=0:(n=i[c]/e[c],s=i[c+1]/e[c],a=Math.pow(n,2)+Math.pow(s,2),a<=9||(r=3/Math.sqrt(a),i[c]=n*r*e[c],i[c+1]=s*r*e[c])))}(t,n,s),function(t,e,i="x"){const o=Af(i),n=t.length;let s,r,a,l=Sf(t,0);for(let d=0;d<n;++d){if(r=a,a=l,l=Sf(t,d+1),!a)continue;const n=a[i],c=a[o];r&&(s=(n-r[i])/3,a[`cp1${i}`]=n-s,a[`cp1${o}`]=c-s*e[d]),l&&(s=(l[i]-n)/3,a[`cp2${i}`]=n+s,a[`cp2${o}`]=c+s*e[d])}}(t,s,e)}function Tf(t,e,i){return Math.max(Math.min(t,i),e)}function Df(t,e,i,o,n){let s,r,a,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)$f(t,n);else{let i=o?t[t.length-1]:t[0];for(s=0,r=t.length;s<r;++s)a=t[s],l=Ef(i,a,t[Math.min(s+1,r-(o?0:1))%r],e.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,i=a}e.capBezierPoints&&function(t,e){let i,o,n,s,r,a=jg(t[0],e);for(i=0,o=t.length;i<o;++i)r=s,s=a,a=i<o-1&&jg(t[i+1],e),s&&(n=t[i],r&&(n.cp1x=Tf(n.cp1x,e.left,e.right),n.cp1y=Tf(n.cp1y,e.top,e.bottom)),a&&(n.cp2x=Tf(n.cp2x,e.left,e.right),n.cp2y=Tf(n.cp2y,e.top,e.bottom)))}(t,i)}function Mf(){return"undefined"!=typeof window&&"undefined"!=typeof document}function If(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function Of(t,e,i){let o;return"string"==typeof t?(o=parseInt(t,10),-1!==t.indexOf("%")&&(o=o/100*e.parentNode[i])):o=t,o}const Lf=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);const zf=["top","right","bottom","left"];function Pf(t,e,i){const o={};i=i?"-"+i:"";for(let n=0;n<4;n++){const s=zf[n];o[s]=parseFloat(t[e+"-"+s+i])||0}return o.width=o.left+o.right,o.height=o.top+o.bottom,o}const Rf=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function Nf(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:o}=e,n=Lf(i),s="border-box"===n.boxSizing,r=Pf(n,"padding"),a=Pf(n,"border","width"),{x:l,y:d,box:c}=function(t,e){const i=t.touches,o=i&&i.length?i[0]:t,{offsetX:n,offsetY:s}=o;let r,a,l=!1;if(Rf(n,s,t.target))r=n,a=s;else{const t=e.getBoundingClientRect();r=o.clientX-t.left,a=o.clientY-t.top,l=!0}return{x:r,y:a,box:l}}(t,i),h=r.left+(c&&a.left),u=r.top+(c&&a.top);let{width:p,height:m}=e;return s&&(p-=r.width+a.width,m-=r.height+a.height),{x:Math.round((l-h)/p*i.width/o),y:Math.round((d-u)/m*i.height/o)}}const Bf=t=>Math.round(10*t)/10;function Ff(t,e,i,o){const n=Lf(t),s=Pf(n,"margin"),r=Of(n.maxWidth,t,"clientWidth")||Bm,a=Of(n.maxHeight,t,"clientHeight")||Bm,l=function(t,e,i){let o,n;if(void 0===e||void 0===i){const s=t&&If(t);if(s){const t=s.getBoundingClientRect(),r=Lf(s),a=Pf(r,"border","width"),l=Pf(r,"padding");e=t.width-l.width-a.width,i=t.height-l.height-a.height,o=Of(r.maxWidth,s,"clientWidth"),n=Of(r.maxHeight,s,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:o||Bm,maxHeight:n||Bm}}(t,e,i);let{width:d,height:c}=l;if("content-box"===n.boxSizing){const t=Pf(n,"border","width"),e=Pf(n,"padding");d-=e.width+t.width,c-=e.height+t.height}d=Math.max(0,d-s.width),c=Math.max(0,o?d/o:c-s.height),d=Bf(Math.min(d,r,l.maxWidth)),c=Bf(Math.min(c,a,l.maxHeight)),d&&!c&&(c=Bf(d/2));return(void 0!==e||void 0!==i)&&o&&l.height&&c>l.height&&(c=l.height,d=Bf(Math.floor(c*o))),{width:d,height:c}}function qf(t,e,i){const o=e||1,n=Math.floor(t.height*o),s=Math.floor(t.width*o);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const r=t.canvas;return r.style&&(i||!r.style.height&&!r.style.width)&&(r.style.height=`${t.height}px`,r.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==o||r.height!==n||r.width!==s)&&(t.currentDevicePixelRatio=o,r.height=n,r.width=s,t.ctx.setTransform(o,0,0,o,0,0),!0)}const Uf=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Mf()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function jf(t,e){const i=function(t,e){return Lf(t).getPropertyValue(e)}(t,e),o=i&&i.match(/^(\d+)(\.\d+)?px$/);return o?+o[1]:void 0}function Vf(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Hf(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:"middle"===o?i<.5?t.y:e.y:"after"===o?i<1?t.y:e.y:i>0?e.y:t.y}}function Wf(t,e,i,o){const n={x:t.cp2x,y:t.cp2y},s={x:e.cp1x,y:e.cp1y},r=Vf(t,n,i),a=Vf(n,s,i),l=Vf(s,e,i),d=Vf(r,a,i),c=Vf(a,l,i);return Vf(d,c,i)}function Zf(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Yf(t,e){let i,o;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,o=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=o)}function Gf(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Kf(t){return"angle"===t?{between:og,compare:eg,normalize:ig}:{between:sg,compare:(t,e)=>t-e,normalize:t=>t}}function Xf({start:t,end:e,count:i,loop:o,style:n}){return{start:t%i,end:e%i,loop:o&&(e-t+1)%i==0,style:n}}function Qf(t,e,i){if(!i)return[t];const{property:o,start:n,end:s}=i,r=e.length,{compare:a,between:l,normalize:d}=Kf(o),{start:c,end:h,loop:u,style:p}=function(t,e,i){const{property:o,start:n,end:s}=i,{between:r,normalize:a}=Kf(o),l=e.length;let d,c,{start:h,end:u,loop:p}=t;if(p){for(h+=l,u+=l,d=0,c=l;d<c&&r(a(e[h%l][o]),n,s);++d)h--,u--;h%=l,u%=l}return u<h&&(u+=l),{start:h,end:u,loop:p,style:t.style}}(t,e,i),m=[];let g,f,v,y=!1,b=null;const x=()=>y||l(n,v,g)&&0!==a(n,v),_=()=>!y||0===a(s,g)||l(s,v,g);for(let t=c,i=c;t<=h;++t)f=e[t%r],f.skip||(g=d(f[o]),g!==v&&(y=l(g,n,s),null===b&&x()&&(b=0===a(g,n)?t:i),null!==b&&_()&&(m.push(Xf({start:b,end:t,loop:u,count:r,style:p})),b=null),i=t,v=g));return null!==b&&m.push(Xf({start:b,end:h,loop:u,count:r,style:p})),m}function Jf(t,e){const i=[],o=t.segments;for(let n=0;n<o.length;n++){const s=Qf(o[n],t.points,e);s.length&&i.push(...s)}return i}function tv(t,e,i,o){return o&&o.setContext&&i?function(t,e,i,o){const n=t._chart.getContext(),s=ev(t.options),{_datasetIndex:r,options:{spanGaps:a}}=t,l=i.length,d=[];let c=s,h=e[0].start,u=h;function p(t,e,o,n){const s=a?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=s;for(;i[e%l].skip;)e+=s;t%l!=e%l&&(d.push({start:t%l,end:e%l,loop:o,style:n}),c=n,h=e%l)}}for(const t of e){h=a?h:t.start;let e,s=i[h%l];for(u=h+1;u<=t.end;u++){const a=i[u%l];e=ev(o.setContext(df(n,{type:"segment",p0:s,p1:a,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),iv(e,c)&&p(h,u-1,t.loop,c),s=a,c=e}h<u-1&&p(h,u-1,t.loop,c)}return d}(t,e,i,o):e}function ev(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function iv(t,e){if(!e)return!1;const i=[],o=function(t,e){return wg(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,o)!==JSON.stringify(e,o)}
11046
11055
  /*!
11047
11056
  * Chart.js v4.4.8
11048
11057
  * https://www.chartjs.org
11049
11058
  * (c) 2025 Chart.js Contributors
11050
11059
  * Released under the MIT License
11051
- */class ev{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,o){const n=e.listeners[o],s=e.duration;n.forEach((o=>o({chart:t,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)})))}_refresh(){this._request||(this._running=!0,this._request=cg.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,o)=>{if(!i.running||!i.items.length)return;const n=i.items;let s,r=n.length-1,a=!1;for(;r>=0;--r)s=n[r],s._active?(s._total>i.duration&&(i.duration=s._total),s.tick(t),a=!0):(n[r]=n[n.length-1],n.pop());a&&(o.draw(),this._notify(o,i,t,"progress")),n.length||(i.running=!1,this._notify(o,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var iv=new ev;const ov="transparent",nv={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const o=_g(t||ov),n=o.valid&&_g(e||ov);return n&&n.valid?n.mix(o,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class sv{constructor(t,e,i,o){const n=e[i];o=rf([t.to,o,n,t.from]);const s=rf([t.from,n,o]);this._active=!0,this._fn=t.fn||nv[t.type||typeof s],this._easing=bg[t.easing]||bg.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],n=i-this._start,s=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(s,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=rf([t.to,e,o,t.from]),this._from=rf([t.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,o=this._prop,n=this._from,s=this._loop,r=this._to;let a;if(this._active=n!==r&&(s||e<i),!this._active)return this._target[o]=r,void this._notify(!0);e<0?this._target[o]=n:(a=e/i%2,a=s&&a>1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[o]=this._fn(n,r,a))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class rv{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!mm(t))return;const e=Object.keys(Lg.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((o=>{const n=t[o];if(!mm(n))return;const s={};for(const t of e)s[t]=n[t];(pm(n.properties)&&n.properties||[o]).forEach((t=>{t!==o&&i.has(t)||i.set(t,s)}))}))}_animateOptions(t,e){const i=e.options,o=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!o)return[];const n=this._createAnimations(o,i);return i.$shared&&function(t,e){const i=[],o=Object.keys(e);for(let e=0;e<o.length;e++){const n=t[o[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,o=[],n=t.$animations||(t.$animations={}),s=Object.keys(e),r=Date.now();let a;for(a=s.length-1;a>=0;--a){const l=s[a];if("$"===l.charAt(0))continue;if("options"===l){o.push(...this._animateOptions(t,e));continue}const d=e[l];let c=n[l];const h=i.get(l);if(c){if(h&&c.active()){c.update(h,d,r);continue}c.cancel()}h&&h.duration?(n[l]=c=new sv(h,t,l,d),o.push(c)):t[l]=d}return o}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(iv.add(this._chart,i),!0):void 0}}function av(t,e){const i=t&&t.options||{},o=i.reverse,n=void 0===i.min?e:0,s=void 0===i.max?e:0;return{start:o?s:n,end:o?n:s}}function lv(t,e){const i=[],o=t._getSortedDatasetMetas(e);let n,s;for(n=0,s=o.length;n<s;++n)i.push(o[n].index);return i}function dv(t,e,i,o={}){const n=t.keys,s="single"===o.mode;let r,a,l,d;if(null===e)return;let c=!1;for(r=0,a=n.length;r<a;++r){if(l=+n[r],l===i){if(c=!0,o.all)continue;break}d=t.values[l],gm(d)&&(s||0===e||jm(e)===jm(d))&&(e+=d)}return c||o.all?e:0}function cv(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function hv(t,e,i){const o=t[e]||(t[e]={});return o[i]||(o[i]={})}function uv(t,e,i,o){for(const n of e.getMatchingVisibleMetas(o).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function pv(t,e){const{chart:i,_cachedMeta:o}=t,n=i._stacks||(i._stacks={}),{iScale:s,vScale:r,index:a}=o,l=s.axis,d=r.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(s,r,o),h=e.length;let u;for(let t=0;t<h;++t){const i=e[t],{[l]:s,[d]:h}=i;u=(i._stacks||(i._stacks={}))[d]=hv(n,c,s),u[a]=h,u._top=uv(u,r,!0,o.type),u._bottom=uv(u,r,!1,o.type);(u._visualValues||(u._visualValues={}))[a]=h}}function mv(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function gv(t,e){const i=t.controller.index,o=t.vScale&&t.vScale.axis;if(o){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[o]||void 0===e[o][i])return;delete e[o][i],void 0!==e[o]._visualValues&&void 0!==e[o]._visualValues[i]&&delete e[o]._visualValues[i]}}}const fv=t=>"reset"===t||"none"===t,vv=(t,e)=>e?t:Object.assign({},t);class yv{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=cv(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&gv(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),o=(t,e,i,o)=>"x"===t?e:"r"===t?o:i,n=e.xAxisID=vm(i.xAxisID,mv(t,"x")),s=e.yAxisID=vm(i.yAxisID,mv(t,"y")),r=e.rAxisID=vm(i.rAxisID,mv(t,"r")),a=e.indexAxis,l=e.iAxisID=o(a,n,s,r),d=e.vAxisID=o(a,s,n,r);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(s),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&lg(this._data,this),t._stacked&&gv(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(mm(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:o}=e,n="x"===i.axis?"x":"y",s="x"===o.axis?"x":"y",r=Object.keys(t),a=new Array(r.length);let l,d,c;for(l=0,d=r.length;l<d;++l)c=r[l],a[l]={[n]:c,[s]:t[c]};return a}(e,t)}else if(i!==e){if(i){lg(i,this);const t=this._cachedMeta;gv(t),t._parsed=[]}e&&Object.isExtensible(e)&&(n=this,(o=e)._chartjs?o._chartjs.listeners.push(n):(Object.defineProperty(o,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[n]}}),ag.forEach((t=>{const e="_onData"+Dm(t),i=o[t];Object.defineProperty(o,t,{configurable:!0,enumerable:!1,value(...t){const n=i.apply(this,t);return o._chartjs.listeners.forEach((i=>{"function"==typeof i[e]&&i[e](...t)})),n}})})))),this._syncList=[],this._data=e}var o,n}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let o=!1;this._dataCheck();const n=e._stacked;e._stacked=cv(e.vScale,e),e.stack!==i.stack&&(o=!0,gv(e),e.stack=i.stack),this._resyncElements(t),(o||n!==e._stacked)&&(pv(this,e._parsed),e._stacked=cv(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:o}=this,{iScale:n,_stacked:s}=i,r=n.axis;let a,l,d,c=0===t&&e===o.length||i._sorted,h=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=pm(o[t])?this.parseArrayData(i,o,t,e):mm(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const n=()=>null===l[r]||h&&l[r]<h[r];for(a=0;a<e;++a)i._parsed[a+t]=l=d[a],c&&(n()&&(c=!1),h=l);i._sorted=c}s&&pv(this,d)}parsePrimitiveData(t,e,i,o){const{iScale:n,vScale:s}=t,r=n.axis,a=s.axis,l=n.getLabels(),d=n===s,c=new Array(o);let h,u,p;for(h=0,u=o;h<u;++h)p=h+i,c[h]={[r]:d||n.parse(l[p],p),[a]:s.parse(e[p],p)};return c}parseArrayData(t,e,i,o){const{xScale:n,yScale:s}=t,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={x:n.parse(c[0],d),y:s.parse(c[1],d)};return r}parseObjectData(t,e,i,o){const{xScale:n,yScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l=new Array(o);let d,c,h,u;for(d=0,c=o;d<c;++d)h=d+i,u=e[h],l[d]={x:n.parse(Tm(u,r),h),y:s.parse(Tm(u,a),h)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const o=this.chart,n=this._cachedMeta,s=e[t.axis];return dv({keys:lv(o,!0),values:e._stacks[t.axis]._visualValues},s,n.index,{mode:i})}updateRangeFromParsed(t,e,i,o){const n=i[e.axis];let s=null===n?NaN:n;const r=o&&i._stacks[e.axis];o&&r&&(o.values=r,s=dv(o,n,this._cachedMeta.index)),t.min=Math.min(t.min,s),t.max=Math.max(t.max,s)}getMinMax(t,e){const i=this._cachedMeta,o=i._parsed,n=i._sorted&&t===i.iScale,s=o.length,r=this._getOtherScale(t),a=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:lv(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:d,max:c}=function(t){const{min:e,max:i,minDefined:o,maxDefined:n}=t.getUserBounds();return{min:o?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let h,u;function p(){u=o[h];const e=u[r.axis];return!gm(u[t.axis])||d>e||c<e}for(h=0;h<s&&(p()||(this.updateRangeFromParsed(l,t,u,a),!n));++h);if(n)for(h=s-1;h>=0;--h)if(!p()){this.updateRangeFromParsed(l,t,u,a);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let o,n,s;for(o=0,n=e.length;o<n;++o)s=e[o][t.axis],gm(s)&&i.push(s);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,o=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:o?""+o.getLabelForValue(n[o.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,o,n;return mm(t)?(e=t.top,i=t.right,o=t.bottom,n=t.left):e=i=o=n=t,{top:e,right:i,bottom:o,left:n,disabled:!1===t}}(vm(this.options.clip,function(t,e,i){if(!1===i)return!1;const o=av(t,i),n=av(e,i);return{top:n.end,right:o.end,bottom:n.start,left:o.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,o=i.data||[],n=e.chartArea,s=[],r=this._drawStart||0,a=this._drawCount||o.length-r,l=this.options.drawActiveElementsOnTop;let d;for(i.dataset&&i.dataset.draw(t,n,r,a),d=r;d<r+a;++d){const e=o[d];e.hidden||(e.active&&l?s.push(e):e.draw(t,n))}for(d=0;d<s.length;++d)s[d].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const o=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return af(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=o.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return af(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=o,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const o="active"===e,n=this._cachedDataOpts,s=t+"-"+e,r=n[s],a=this.enableOptionSharing&&Mm(i);if(r)return vv(r,a);const l=this.chart.config,d=l.datasetElementScopeKeys(this._type,t),c=o?[`${t}Hover`,"hover",t,""]:[t,""],h=l.getOptionScopes(this.getDataset(),d),u=Object.keys(Lg.elements[t]),p=l.resolveNamedOptions(h,u,(()=>this.getContext(i,o,e)),c);return p.$shared&&(p.$shared=a,n[s]=Object.freeze(vv(p,a))),p}_resolveAnimations(t,e,i){const o=this.chart,n=this._cachedDataOpts,s=`animation-${e}`,r=n[s];if(r)return r;let a;if(!1!==o.options.animation){const o=this.chart.config,n=o.datasetAnimationScopeKeys(this._type,e),s=o.getOptionScopes(this.getDataset(),n);a=o.createResolver(s,this.getContext(t,i,e))}const l=new rv(o,a&&a.animations);return a&&a._cacheable&&(n[s]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||fv(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),o=this._sharedOptions,n=this.getSharedOptions(i),s=this.includeOptions(e,n)||n!==o;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:s}}updateElement(t,e,i,o){fv(o)?Object.assign(t,i):this._resolveAnimations(e,o).update(t,i)}updateSharedOptions(t,e,i){t&&!fv(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,o){t.active=o;const n=this.getStyle(e,o);this._resolveAnimations(e,i,o).update(t,{options:!o&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const o=i.length,n=e.length,s=Math.min(n,o);s&&this.parse(0,s),n>o?this._insertElements(o,n-o,t):n<o&&this._removeElements(n,o-n)}_insertElements(t,e,i=!0){const o=this._cachedMeta,n=o.data,s=t+e;let r;const a=t=>{for(t.length+=e,r=t.length-1;r>=s;r--)t[r]=t[r-e]};for(a(n),r=t;r<s;++r)n[r]=new this.dataElementType;this._parsing&&a(o._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,o){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const o=i._parsed.splice(t,e);i._stacked&&gv(i,o)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,o]=t;this[e](i,o)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function bv(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let o=[];for(let e=0,n=i.length;e<n;e++)o=o.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=dg(o.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let o,n,s,r,a=e._length;const l=()=>{32767!==s&&-32768!==s&&(Mm(r)&&(a=Math.min(a,Math.abs(s-r)||a)),r=s)};for(o=0,n=i.length;o<n;++o)s=e.getPixelForValue(i[o]),l();for(r=void 0,o=0,n=e.ticks.length;o<n;++o)s=e.getPixelForTick(o),l();return a}function xv(t,e,i,o){return pm(t)?function(t,e,i,o){const n=i.parse(t[0],o),s=i.parse(t[1],o),r=Math.min(n,s),a=Math.max(n,s);let l=r,d=a;Math.abs(r)>Math.abs(a)&&(l=a,d=r),e[i.axis]=d,e._custom={barStart:l,barEnd:d,start:n,end:s,min:r,max:a}}(t,e,i,o):e[i.axis]=i.parse(t,o),e}function _v(t,e,i,o){const n=t.iScale,s=t.vScale,r=n.getLabels(),a=n===s,l=[];let d,c,h,u;for(d=i,c=i+o;d<c;++d)u=e[d],h={},h[n.axis]=a||n.parse(r[d],d),l.push(xv(u,h,s,d));return l}function wv(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function kv(t,e,i,o){let n=e.borderSkipped;const s={};if(!n)return void(t.borderSkipped=s);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:r,end:a,reverse:l,top:d,bottom:c}=function(t){let e,i,o,n,s;return t.horizontal?(e=t.base>t.x,i="left",o="right"):(e=t.base<t.y,i="bottom",o="top"),e?(n="end",s="start"):(n="start",s="end"),{start:i,end:o,reverse:e,top:n,bottom:s}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===o?n=d:(i._bottom||0)===o?n=c:(s[Cv(c,r,a,l)]=!0,n=d)),s[Cv(n,r,a,l)]=!0,t.borderSkipped=s}function Cv(t,e,i,o){var n,s,r;return o?(r=i,t=Sv(t=(n=t)===(s=e)?r:n===r?s:n,i,e)):t=Sv(t,e,i),t}function Sv(t,e,i){return"start"===t?e:"end"===t?i:t}function Av(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class Ev extends yv{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map(((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,o=this._cachedMeta;if(!1===this._parsing)o._parsed=i;else{let n,s,r=t=>+i[t];if(mm(i[t])){const{key:t="value"}=this._parsing;r=e=>+Tm(i[e],t)}for(n=t,s=t+e;n<s;++n)o._parsed[n]=r(n)}}_getRotation(){return Ym(this.options.rotation-90)}_getCircumference(){return Ym(this.options.circumference)}_getRotationExtents(){let t=zm,e=-zm;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const o=this.chart.getDatasetMeta(i).controller,n=o._getRotation(),s=o._getCircumference();t=Math.min(t,n),e=Math.max(e,n+s)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,o=this._cachedMeta,n=o.data,s=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,r=Math.max((Math.min(i.width,i.height)-s)/2,0),a=Math.min((l=this.options.cutout,d=r,"string"==typeof l&&l.endsWith("%")?parseFloat(l)/100:+l/d),1);var l,d;const c=this._getRingWeight(this.index),{circumference:h,rotation:u}=this._getRotationExtents(),{ratioX:p,ratioY:m,offsetX:g,offsetY:f}=function(t,e,i){let o=1,n=1,s=0,r=0;if(e<zm){const a=t,l=a+e,d=Math.cos(a),c=Math.sin(a),h=Math.cos(l),u=Math.sin(l),p=(t,e,o)=>eg(t,a,l,!0)?1:Math.max(e,e*i,o,o*i),m=(t,e,o)=>eg(t,a,l,!0)?-1:Math.min(e,e*i,o,o*i),g=p(0,d,h),f=p(Bm,c,u),v=m(Lm,d,h),y=m(Lm+Bm,c,u);o=(g-v)/2,n=(f-y)/2,s=-(g+v)/2,r=-(f+y)/2}return{ratioX:o,ratioY:n,offsetX:s,offsetY:r}}(u,h,a),v=(i.width-s)/p,y=(i.height-s)/m,b=Math.max(Math.min(v,y)/2,0),x=ym(this.options.radius,b),_=(x-Math.max(x*a,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*x,this.offsetY=f*x,o.total=this.calculateTotal(),this.outerRadius=x-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,o=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===o._parsed[t]||o.data[t].hidden?0:this.calculateCircumference(o._parsed[t]*n/zm)}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.chartArea,a=s.options.animation,l=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=n&&a.animateScale,h=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:p,includeOptions:m}=this._getSharedOptions(e,o);let g,f=this._getRotation();for(g=0;g<e;++g)f+=this._circumference(g,n);for(g=e;g<e+i;++g){const e=this._circumference(g,n),i=t[g],s={x:l+this.offsetX,y:d+this.offsetY,startAngle:f,endAngle:f+e,circumference:e,outerRadius:u,innerRadius:h};m&&(s.options=p||this.resolveDataElementOptions(g,i.active?"active":o)),f+=e,this.updateElement(i,g,s,o)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,o=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(o+=Math.abs(n))}return o}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?zm*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=Ag(e._parsed[t],i.options.locale);return{label:o[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let o,n,s,r,a;if(!t)for(o=0,n=i.data.datasets.length;o<n;++o)if(i.isDatasetVisible(o)){s=i.getDatasetMeta(o),t=s.data,r=s.controller;break}if(!t)return 0;for(o=0,n=t.length;o<n;++o)a=r.resolveDataElementOptions(o),"inner"!==a.borderAlign&&(e=Math.max(e,a.borderWidth||0,a.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,o=t.length;i<o;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(vm(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class $v extends yv{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map(((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=Ag(e._parsed[t].r,i.options.locale);return{label:o[t]||"",value:n}}parseObjectData(t,e,i,o){return _f.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const o=this.getParsed(i).r;!isNaN(o)&&this.chart.getDataVisibility(i)&&(o<e.min&&(e.min=o),o>e.max&&(e.max=o))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,o=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(o/2,0),s=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-s*this.index,this.innerRadius=this.outerRadius-s}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.options.animation,a=this._cachedMeta.rScale,l=a.xCenter,d=a.yCenter,c=a.getIndexAngle(0)-.5*Lm;let h,u=c;const p=360/this.countVisibleElements();for(h=0;h<e;++h)u+=this._computeAngle(h,o,p);for(h=e;h<e+i;h++){const e=t[h];let i=u,m=u+this._computeAngle(h,o,p),g=s.getDataVisibility(h)?a.getDistanceFromCenterForValue(this.getParsed(h).r):0;u=m,n&&(r.animateScale&&(g=0),r.animateRotate&&(i=m=c));const f={x:l,y:d,innerRadius:0,outerRadius:g,startAngle:i,endAngle:m,options:this.resolveDataElementOptions(h,e.active?"active":o)};this.updateElement(e,h,f,o)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?Ym(this.resolveDataElementOptions(t,e).angle||i):0}}var Tv=Object.freeze({__proto__:null,BarController:class extends yv{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,o){return _v(t,e,i,o)}parseArrayData(t,e,i,o){return _v(t,e,i,o)}parseObjectData(t,e,i,o){const{iScale:n,vScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l="x"===n.axis?r:a,d="x"===s.axis?r:a,c=[];let h,u,p,m;for(h=i,u=i+o;h<u;++h)m=e[h],p={},p[n.axis]=n.parse(Tm(m,l),h),c.push(xv(Tm(m,d),p,s,h));return c}updateRangeFromParsed(t,e,i,o){super.updateRangeFromParsed(t,e,i,o);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:o}=e,n=this.getParsed(t),s=n._custom,r=wv(s)?"["+s.start+", "+s.end+"]":""+o.getLabelForValue(n[o.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:r}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,o){const n="reset"===o,{index:s,_cachedMeta:{vScale:r}}=this,a=r.getBasePixel(),l=r.isHorizontal(),d=this._getRuler(),{sharedOptions:c,includeOptions:h}=this._getSharedOptions(e,o);for(let u=e;u<e+i;u++){const e=this.getParsed(u),i=n||um(e[r.axis])?{base:a,head:a}:this._calculateBarValuePixels(u),p=this._calculateBarIndexPixels(u,d),m=(e._stacks||{})[r.axis],g={horizontal:l,base:i.base,enableBorderRadius:!m||wv(e._custom)||s===m._top||s===m._bottom,x:l?i.head:p.center,y:l?p.center:i.head,height:l?p.size:Math.abs(i.size),width:l?Math.abs(i.size):p.size};h&&(g.options=c||this.resolveDataElementOptions(u,t[u].active?"active":o));const f=g.options||t[u].options;kv(g,f,m,s),Av(g,f,d.ratio),this.updateElement(t[u],u,g,o)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,o=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),n=i.options.stacked,s=[],r=this._cachedMeta.controller.getParsed(e),a=r&&r[i.axis],l=t=>{const e=t._parsed.find((t=>t[i.axis]===a)),o=e&&e[t.vScale.axis];if(um(o)||isNaN(o))return!0};for(const i of o)if((void 0===e||!l(i))&&((!1===n||-1===s.indexOf(i.stack)||void 0===n&&void 0===i.stack)&&s.push(i.stack),i.index===t))break;return s.length||s.push(void 0),s}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const o=this._getStacks(t,i),n=void 0!==e?o.indexOf(e):-1;return-1===n?o.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,o=[];let n,s;for(n=0,s=e.data.length;n<s;++n)o.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const r=t.barThickness;return{min:r||bv(e),pixels:o,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:r?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:o},options:{base:n,minBarLength:s}}=this,r=n||0,a=this.getParsed(t),l=a._custom,d=wv(l);let c,h,u=a[e.axis],p=0,m=i?this.applyStack(e,a,i):u;m!==u&&(p=m-u,m=u),d&&(u=l.barStart,m=l.barEnd-l.barStart,0!==u&&jm(u)!==jm(l.barEnd)&&(p=0),p+=u);const g=um(n)||d?p:n;let f=e.getPixelForValue(g);if(c=this.chart.getDataVisibility(t)?e.getPixelForValue(p+m):f,h=c-f,Math.abs(h)<s){h=function(t,e,i){return 0!==t?jm(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(h,e,r)*s,u===r&&(f-=h/2);const t=e.getPixelForDecimal(0),n=e.getPixelForDecimal(1),l=Math.min(t,n),p=Math.max(t,n);f=Math.max(Math.min(f,p),l),c=f+h,i&&!d&&(a._stacks[e.axis]._visualValues[o]=e.getValueForPixel(c)-e.getValueForPixel(f))}if(f===e.getPixelForValue(r)){const t=jm(h)*e.getLineWidthForValue(r)/2;f+=t,h-=t}return{size:h,base:f,head:c,center:c+h/2}}_calculateBarIndexPixels(t,e){const i=e.scale,o=this.options,n=o.skipNull,s=vm(o.maxBarThickness,1/0);let r,a;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===o.barThickness?function(t,e,i,o){const n=e.pixels,s=n[t];let r=t>0?n[t-1]:null,a=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===r&&(r=s-(null===a?e.end-e.start:a-s)),null===a&&(a=s+s-r);const d=s-(s-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/o,ratio:i.barPercentage,start:d}}(t,e,o,i):function(t,e,i,o){const n=i.barThickness;let s,r;return um(n)?(s=e.min*i.categoryPercentage,r=i.barPercentage):(s=n*o,r=1),{chunk:s/o,ratio:r,start:e.pixels[t]-s/2}}(t,e,o,i),d=this._getStackIndex(this.index,this._cachedMeta.stack,n?t:void 0);r=l.start+l.chunk*d+l.chunk/2,a=Math.min(s,l.chunk*l.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),a=Math.min(s,e.min*e.ratio);return{base:r-a/2,head:r+a/2,center:r,size:a}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,o=i.length;let n=0;for(;n<o;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends yv{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,o){const n=super.parsePrimitiveData(t,e,i,o);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,o){const n=super.parseArrayData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=vm(o[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,o){const n=super.parseObjectData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=vm(o&&o.r&&+o.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y),l=s._custom;return{label:i[t]||"",value:"("+r+", "+a+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r}=this._cachedMeta,{sharedOptions:a,includeOptions:l}=this._getSharedOptions(e,o),d=s.axis,c=r.axis;for(let h=e;h<e+i;h++){const e=t[h],i=!n&&this.getParsed(h),u={},p=u[d]=n?s.getPixelForDecimal(.5):s.getPixelForValue(i[d]),m=u[c]=n?r.getBasePixel():r.getPixelForValue(i[c]);u.skip=isNaN(p)||isNaN(m),l&&(u.options=a||this.resolveDataElementOptions(h,e.active?"active":o),n&&(u.options.radius=0)),this.updateElement(e,h,u,o)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let o=super.resolveDataElementOptions(t,e);o.$shared&&(o=Object.assign({},o,{$shared:!1}));const n=o.radius;return"active"!==e&&(o.radius=0),o.radius+=vm(i&&i._custom,n),o}},DoughnutController:Ev,LineController:class extends yv{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:o=[],_dataset:n}=e,s=this.chart._animationsDisabled;let{start:r,count:a}=mg(e,o,s);this._drawStart=r,this._drawCount=a,gg(e)&&(r=0,a=o.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=o;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:l},t),this.updateElements(o,r,a,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,{sharedOptions:d,includeOptions:c}=this._getSharedOptions(e,o),h=s.axis,u=r.axis,{spanGaps:p,segment:m}=this.options,g=Wm(p)?p:Number.POSITIVE_INFINITY,f=this.chart._animationsDisabled||n||"none"===o,v=e+i,y=t.length;let b=e>0&&this.getParsed(e-1);for(let i=0;i<y;++i){const p=t[i],y=f?p:{};if(i<e||i>=v){y.skip=!0;continue}const x=this.getParsed(i),_=um(x[u]),w=y[h]=s.getPixelForValue(x[h],i),k=y[u]=n||_?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,x,a):x[u],i);y.skip=isNaN(w)||isNaN(k)||_,y.stop=i>0&&Math.abs(x[h]-b[h])>g,m&&(y.parsed=x,y.raw=l.data[i]),c&&(y.options=d||this.resolveDataElementOptions(i,p.active?"active":o)),f||this.updateElement(p,i,y,o),b=x}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,o=t.data||[];if(!o.length)return i;const n=o[0].size(this.resolveDataElementOptions(0)),s=o[o.length-1].size(this.resolveDataElementOptions(o.length-1));return Math.max(i,n,s)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends Ev{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:$v,RadarController:class extends yv{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,o){return _f.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta,i=e.dataset,o=e.data||[],n=e.iScale.getLabels();if(i.points=o,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const s={_loop:!0,_fullLoop:n.length===o.length,options:e};this.updateElement(i,void 0,s,t)}this.updateElements(o,0,o.length,t)}updateElements(t,e,i,o){const n=this._cachedMeta.rScale,s="reset"===o;for(let r=e;r<e+i;r++){const e=t[r],i=this.resolveDataElementOptions(r,e.active?"active":o),a=n.getPointPositionForValue(r,this.getParsed(r).r),l=s?n.xCenter:a.x,d=s?n.yCenter:a.y,c={x:l,y:d,angle:a.angle,skip:isNaN(l)||isNaN(d),options:i};this.updateElement(e,r,c,o)}}},ScatterController:class extends yv{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y);return{label:i[t]||"",value:"("+r+", "+a+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,o=this.chart._animationsDisabled;let{start:n,count:s}=mg(e,i,o);if(this._drawStart=n,this._drawCount=s,gg(e)&&(n=0,s=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:s}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const r=this.resolveDatasetElementOptions(t);r.segment=this.options.segment,this.updateElement(n,void 0,{animated:!o,options:r},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,s,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,d=this.resolveDataElementOptions(e,o),c=this.getSharedOptions(d),h=this.includeOptions(o,c),u=s.axis,p=r.axis,{spanGaps:m,segment:g}=this.options,f=Wm(m)?m:Number.POSITIVE_INFINITY,v=this.chart._animationsDisabled||n||"none"===o;let y=e>0&&this.getParsed(e-1);for(let d=e;d<e+i;++d){const e=t[d],i=this.getParsed(d),m=v?e:{},b=um(i[p]),x=m[u]=s.getPixelForValue(i[u],d),_=m[p]=n||b?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,i,a):i[p],d);m.skip=isNaN(x)||isNaN(_)||b,m.stop=d>0&&Math.abs(i[u]-y[u])>f,g&&(m.parsed=i,m.raw=l.data[d]),h&&(m.options=c||this.resolveDataElementOptions(d,e.active?"active":o)),v||this.updateElement(e,d,m,o),y=i}this.updateSharedOptions(c,o,d)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,o=i.options&&i.options.borderWidth||0;if(!e.length)return o;const n=e[0].size(this.resolveDataElementOptions(0)),s=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(o,n,s)/2}}});function Dv(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Mv{static override(t){Object.assign(Mv.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Dv()}parse(){return Dv()}format(){return Dv()}add(){return Dv()}diff(){return Dv()}startOf(){return Dv()}endOf(){return Dv()}}var Iv={_date:Mv};function Ov(t,e,i,o){const{controller:n,data:s,_sorted:r}=t,a=n._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&e===a.axis&&"r"!==e&&r&&s.length){const r=a._reversePixels?rg:sg;if(!o){const o=r(s,e,i);if(l){const{vScale:e}=n._cachedMeta,{_parsed:i}=t,s=i.slice(0,o.lo+1).reverse().findIndex((t=>!um(t[e.axis])));o.lo-=Math.max(0,s);const r=i.slice(o.hi).findIndex((t=>!um(t[e.axis])));o.hi+=Math.max(0,r)}return o}if(n._sharedOptions){const t=s[0],o="function"==typeof t.getRange&&t.getRange(e);if(o){const t=r(s,e,i-o),n=r(s,e,i+o);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:s.length-1}}function Lv(t,e,i,o,n){const s=t.getSortedVisibleDatasetMetas(),r=i[e];for(let t=0,i=s.length;t<i;++t){const{index:i,data:a}=s[t],{lo:l,hi:d}=Ov(s[t],e,r,n);for(let t=l;t<=d;++t){const e=a[t];e.skip||o(e,i,t)}}}function zv(t,e,i,o,n){const s=[];if(!n&&!t.isPointInArea(e))return s;return Lv(t,i,e,(function(i,r,a){(n||qg(i,t.chartArea,0))&&i.inRange(e.x,e.y,o)&&s.push({element:i,datasetIndex:r,index:a})}),!0),s}function Pv(t,e,i,o,n,s){let r=[];const a=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,o){const n=e?Math.abs(t.x-o.x):0,s=i?Math.abs(t.y-o.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(s,2))}}(i);let l=Number.POSITIVE_INFINITY;return Lv(t,i,e,(function(i,d,c){const h=i.inRange(e.x,e.y,n);if(o&&!h)return;const u=i.getCenterPoint(n);if(!(!!s||t.isPointInArea(u))&&!h)return;const p=a(e,u);p<l?(r=[{element:i,datasetIndex:d,index:c}],l=p):p===l&&r.push({element:i,datasetIndex:d,index:c})})),r}function Rv(t,e,i,o,n,s){return s||t.isPointInArea(e)?"r"!==i||o?Pv(t,e,i,o,n,s):function(t,e,i,o){let n=[];return Lv(t,i,e,(function(t,i,s){const{startAngle:r,endAngle:a}=t.getProps(["startAngle","endAngle"],o),{angle:l}=Xm(t,{x:e.x,y:e.y});eg(l,r,a)&&n.push({element:t,datasetIndex:i,index:s})})),n}(t,e,i,n):[]}function Nv(t,e,i,o,n){const s=[],r="x"===i?"inXRange":"inYRange";let a=!1;return Lv(t,i,e,((t,o,l)=>{t[r]&&t[r](e[i],n)&&(s.push({element:t,datasetIndex:o,index:l}),a=a||t.inRange(e.x,e.y,n))})),o&&!a?[]:s}var Bv={evaluateInteractionItems:Lv,modes:{index(t,e,i,o){const n=Pf(e,t),s=i.axis||"x",r=i.includeInvisible||!1,a=i.intersect?zv(t,n,s,o,r):Rv(t,n,s,!1,o,r),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,o){const n=Pf(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;let a=i.intersect?zv(t,n,s,o,r):Rv(t,n,s,!1,o,r);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;t<i.length;++t)a.push({element:i[t],datasetIndex:e,index:t})}return a},point:(t,e,i,o)=>zv(t,Pf(e,t),i.axis||"xy",o,i.includeInvisible||!1),nearest(t,e,i,o){const n=Pf(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;return Rv(t,n,s,i.intersect,o,r)},x:(t,e,i,o)=>Nv(t,Pf(e,t),"x",i.intersect,o),y:(t,e,i,o)=>Nv(t,Pf(e,t),"y",i.intersect,o)}};const Fv=["left","top","right","bottom"];function qv(t,e){return t.filter((t=>t.pos===e))}function Uv(t,e){return t.filter((t=>-1===Fv.indexOf(t.pos)&&t.box.axis===e))}function jv(t,e){return t.sort(((t,i)=>{const o=e?i:t,n=e?t:i;return o.weight===n.weight?o.index-n.index:o.weight-n.weight}))}function Vv(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:o,stackWeight:n}=i;if(!t||!Fv.includes(o))continue;const s=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=n}return e}(t),{vBoxMaxWidth:o,hBoxMaxHeight:n}=e;let s,r,a;for(s=0,r=t.length;s<r;++s){a=t[s];const{fullSize:r}=a.box,l=i[a.stack],d=l&&a.stackWeight/l.weight;a.horizontal?(a.width=d?d*o:r&&e.availableWidth,a.height=n):(a.width=o,a.height=d?d*n:r&&e.availableHeight)}return i}function Hv(t,e,i,o){return Math.max(t[i],e[i])+Math.max(t[o],e[o])}function Wv(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Zv(t,e,i,o){const{pos:n,box:s}=i,r=t.maxPadding;if(!mm(n)){i.size&&(t[n]-=i.size);const e=o[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?s.height:s.width),i.size=e.size/e.count,t[n]+=i.size}s.getPadding&&Wv(r,s.getPadding());const a=Math.max(0,e.outerWidth-Hv(r,t,"left","right")),l=Math.max(0,e.outerHeight-Hv(r,t,"top","bottom")),d=a!==t.w,c=l!==t.h;return t.w=a,t.h=l,i.horizontal?{same:d,other:c}:{same:c,other:d}}function Yv(t,e){const i=e.maxPadding;function o(t){const o={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{o[t]=Math.max(e[t],i[t])})),o}return o(t?["left","right"]:["top","bottom"])}function Gv(t,e,i,o){const n=[];let s,r,a,l,d,c;for(s=0,r=t.length,d=0;s<r;++s){a=t[s],l=a.box,l.update(a.width||e.w,a.height||e.h,Yv(a.horizontal,e));const{same:r,other:h}=Zv(e,i,a,o);d|=r&&n.length,c=c||h,l.fullSize||n.push(a)}return d&&Gv(n,e,i,o)||c}function Kv(t,e,i,o,n){t.top=i,t.left=e,t.right=e+o,t.bottom=i+n,t.width=o,t.height=n}function Xv(t,e,i,o){const n=i.padding;let{x:s,y:r}=e;for(const a of t){const t=a.box,l=o[a.stack]||{count:1,placed:0,weight:1},d=a.stackWeight/l.weight||1;if(a.horizontal){const o=e.w*d,s=l.size||t.height;Mm(l.start)&&(r=l.start),t.fullSize?Kv(t,n.left,r,i.outerWidth-n.right-n.left,s):Kv(t,e.left+l.placed,r,o,s),l.start=r,l.placed+=o,r=t.bottom}else{const o=e.h*d,r=l.size||t.width;Mm(l.start)&&(s=l.start),t.fullSize?Kv(t,s,n.top,r,i.outerHeight-n.bottom-n.top):Kv(t,s,e.top+l.placed,r,o),l.start=s,l.placed+=o,s=t.right}}e.x=s,e.y=r}var Qv={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,o){if(!t)return;const n=nf(t.options.layout.padding),s=Math.max(e-n.width,0),r=Math.max(i-n.height,0),a=function(t){const e=function(t){const e=[];let i,o,n,s,r,a;for(i=0,o=(t||[]).length;i<o;++i)n=t[i],({position:s,options:{stack:r,stackWeight:a=1}}=n),e.push({index:i,box:n,pos:s,horizontal:n.isHorizontal(),weight:n.weight,stack:r&&s+r,stackWeight:a});return e}(t),i=jv(e.filter((t=>t.box.fullSize)),!0),o=jv(qv(e,"left"),!0),n=jv(qv(e,"right")),s=jv(qv(e,"top"),!0),r=jv(qv(e,"bottom")),a=Uv(e,"x"),l=Uv(e,"y");return{fullSize:i,leftAndTop:o.concat(s),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:qv(e,"chartArea"),vertical:o.concat(n).concat(l),horizontal:s.concat(r).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;xm(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,h=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:s,availableHeight:r,vBoxMaxWidth:s/2/c,hBoxMaxHeight:r/2}),u=Object.assign({},n);Wv(u,nf(o));const p=Object.assign({maxPadding:u,w:s,h:r,x:n.left,y:n.top},n),m=Vv(l.concat(d),h);Gv(a.fullSize,p,h,m),Gv(l,p,h,m),Gv(d,p,h,m)&&Gv(l,p,h,m),function(t){const e=t.maxPadding;function i(i){const o=Math.max(e[i]-t[i],0);return t[i]+=o,o}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(p),Xv(a.leftAndTop,p,h,m),p.x+=p.w,p.y+=p.h,Xv(a.rightAndBottom,p,h,m),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},xm(a.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})}))}};class Jv{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,o){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(t){return!0}updateConfig(t){}}class ty extends Jv{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ey="$chartjs",iy={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},oy=t=>null===t||""===t;const ny=!!Ff&&{passive:!0};function sy(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,ny)}function ry(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ay(t,e,i){const o=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ry(i.addedNodes,o),e=e&&!ry(i.removedNodes,o);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ly(t,e,i){const o=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ry(i.removedNodes,o),e=e&&!ry(i.addedNodes,o);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const dy=new Map;let cy=0;function hy(){const t=window.devicePixelRatio;t!==cy&&(cy=t,dy.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function uy(t,e,i){const o=t.canvas,n=o&&Df(o);if(!n)return;const s=hg(((t,e)=>{const o=n.clientWidth;i(t,e),o<n.clientWidth&&i()}),window),r=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,o=e.contentRect.height;0===i&&0===o||s(i,o)}));return r.observe(n),function(t,e){dy.size||window.addEventListener("resize",hy),dy.set(t,e)}(t,s),r}function py(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){dy.delete(t),dy.size||window.removeEventListener("resize",hy)}(t)}function my(t,e,i){const o=t.canvas,n=hg((e=>{null!==t.ctx&&i(function(t,e){const i=iy[t.type]||t.type,{x:o,y:n}=Pf(t,e);return{type:i,chart:e,native:t,x:void 0!==o?o:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,ny)}(o,e,n),n}class gy extends Jv{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,o=t.getAttribute("height"),n=t.getAttribute("width");if(t[ey]={initial:{height:o,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",oy(n)){const e=qf(t,"width");void 0!==e&&(t.width=e)}if(oy(o))if(""===t.style.height)t.height=t.width/(e||2);else{const e=qf(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ey])return!1;const i=e[ey].initial;["height","width"].forEach((t=>{const o=i[t];um(o)?e.removeAttribute(t):e.setAttribute(t,o)}));const o=i.style||{};return Object.keys(o).forEach((t=>{e.style[t]=o[t]})),e.width=e.width,delete e[ey],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const o=t.$proxies||(t.$proxies={}),n={attach:ay,detach:ly,resize:uy}[e]||my;o[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),o=i[e];if(!o)return;({attach:py,detach:py,resize:py}[e]||sy)(t,e,o),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,o){return Nf(t,e,i,o)}isAttached(t){const e=t&&Df(t);return!(!e||!e.isConnected)}}let fy=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return Wm(this.x)&&Wm(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const o={};return t.forEach((t=>{o[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),o}};function vy(t,e){const i=t.options.ticks,o=function(t){const e=t.options.offset,i=t._tickSize(),o=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(o,n))}(t),n=Math.min(i.maxTicksLimit||o,o),s=i.major.enabled?function(t){const e=[];let i,o;for(i=0,o=t.length;i<o;i++)t[i].major&&e.push(i);return e}(e):[],r=s.length,a=s[0],l=s[r-1],d=[];if(r>n)return function(t,e,i,o){let n,s=0,r=i[0];for(o=Math.ceil(o),n=0;n<t.length;n++)n===r&&(e.push(t[n]),s++,r=i[s*o])}(e,d,s,r/n),d;const c=function(t,e,i){const o=function(t){const e=t.length;let i,o;if(e<2)return!1;for(o=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==o)return!1;return o}(t),n=e.length/i;if(!o)return Math.max(n,1);const s=function(t){const e=[],i=Math.sqrt(t);let o;for(o=1;o<i;o++)t%o==0&&(e.push(o),e.push(t/o));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}(o);for(let t=0,e=s.length-1;t<e;t++){const e=s[t];if(e>n)return e}return Math.max(n,1)}(s,e,n);if(r>0){let t,i;const o=r>1?Math.round((l-a)/(r-1)):null;for(yy(e,d,c,um(o)?0:a-o,a),t=0,i=r-1;t<i;t++)yy(e,d,c,s[t],s[t+1]);return yy(e,d,c,l,um(o)?e.length:l+o),d}return yy(e,d,c),d}function yy(t,e,i,o,n){const s=vm(o,0),r=Math.min(vm(n,t.length),t.length);let a,l,d,c=0;for(i=Math.ceil(i),n&&(a=n-o,i=a/Math.floor(a/i)),d=s;d<0;)c++,d=Math.round(s+c*i);for(l=Math.max(s,0);l<r;l++)l===d&&(e.push(t[l]),c++,d=Math.round(s+c*i))}const by=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,xy=(t,e)=>Math.min(e||t,t);function _y(t,e){const i=[],o=t.length/e,n=t.length;let s=0;for(;s<n;s+=o)i.push(t[Math.floor(s)]);return i}function wy(t,e,i){const o=t.ticks.length,n=Math.min(e,o-1),s=t._startPixel,r=t._endPixel,a=1e-6;let l,d=t.getPixelForTick(n);if(!(i&&(l=1===o?Math.max(d-s,r-d):0===e?(t.getPixelForTick(1)-d)/2:(d-t.getPixelForTick(n-1))/2,d+=n<e?l:-l,d<s-a||d>r+a)))return d}function ky(t){return t.drawTicks?t.tickLength:0}function Cy(t,e){if(!t.display)return 0;const i=sf(t.font,e),o=nf(t.padding);return(pm(t.text)?t.text.length:1)*i.lineHeight+o.height}function Sy(t,e,i){let o=ug(t);return(i&&"right"!==e||!i&&"right"===e)&&(o=(t=>"left"===t?"right":"right"===t?"left":t)(o)),o}class Ay extends fy{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return t=fm(t,Number.POSITIVE_INFINITY),e=fm(e,Number.NEGATIVE_INFINITY),i=fm(i,Number.POSITIVE_INFINITY),o=fm(o,Number.NEGATIVE_INFINITY),{min:fm(t,i),max:fm(e,o),minDefined:gm(t),maxDefined:gm(e)}}getMinMax(t){let e,{min:i,max:o,minDefined:n,maxDefined:s}=this.getUserBounds();if(n&&s)return{min:i,max:o};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;a<l;++a)e=r[a].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),s||(o=Math.max(o,e.max));return i=s&&i>o?o:i,o=n&&i>o?i:o,{min:fm(i,fm(o,i)),max:fm(o,fm(i,o))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){bm(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:o,grace:n,ticks:s}=this.options,r=s.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(t,e,i){const{min:o,max:n}=t,s=ym(e,(n-o)/2),r=(t,e)=>i&&0===t?0:t+e;return{min:r(o,-Math.abs(s)),max:r(n,s)}}(this,n,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=r<this.ticks.length;this._convertTicksToLabels(a?_y(this.ticks,r):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),s.display&&(s.autoSkip||"auto"===s.source)&&(this.ticks=vy(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),a&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){bm(this.options.afterUpdate,[this])}beforeSetDimensions(){bm(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){bm(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),bm(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){bm(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,o,n;for(i=0,o=t.length;i<o;i++)n=t[i],n.label=bm(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){bm(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){bm(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=xy(this.ticks.length,t.ticks.maxTicksLimit),o=e.minRotation||0,n=e.maxRotation;let s,r,a,l=o;if(!this._isVisible()||!e.display||o>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const d=this._getLabelSizes(),c=d.widest.width,h=d.highest.height,u=ig(this.chart.width-c,0,this.maxWidth);s=t.offset?this.maxWidth/i:u/(i-1),c+6>s&&(s=u/(i-(t.offset?.5:1)),r=this.maxHeight-ky(t.grid)-e.padding-Cy(t.title,this.chart.options.font),a=Math.sqrt(c*c+h*h),l=Gm(Math.min(Math.asin(ig((d.highest.height+6)/s,-1,1)),Math.asin(ig(r/a,-1,1))-Math.asin(ig(h/a,-1,1)))),l=Math.max(o,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){bm(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){bm(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:n}}=this,s=this._isVisible(),r=this.isHorizontal();if(s){const s=Cy(o,e.options.font);if(r?(t.width=this.maxWidth,t.height=ky(n)+s):(t.height=this.maxHeight,t.width=ky(n)+s),i.display&&this.ticks.length){const{first:e,last:o,widest:n,highest:s}=this._getLabelSizes(),a=2*i.padding,l=Ym(this.labelRotation),d=Math.cos(l),c=Math.sin(l);if(r){const e=i.mirror?0:c*n.width+d*s.height;t.height=Math.min(this.maxHeight,t.height+e+a)}else{const e=i.mirror?0:d*n.width+c*s.height;t.width=Math.min(this.maxWidth,t.width+e+a)}this._calculatePadding(e,o,c,d)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,o){const{ticks:{align:n,padding:s},position:r}=this.options,a=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){const r=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,h=0;a?l?(c=o*t.width,h=i*e.height):(c=i*t.height,h=o*e.width):"start"===n?h=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,h=e.width/2),this.paddingLeft=Math.max((c-r+s)*this.width/(this.width-r),0),this.paddingRight=Math.max((h-d+s)*this.width/(this.width-d),0)}else{let i=e.height/2,o=t.height/2;"start"===n?(i=0,o=t.height):"end"===n&&(i=e.height,o=0),this.paddingTop=i+s,this.paddingBottom=o+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){bm(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)um(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=_y(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:n}=this,s=[],r=[],a=Math.floor(e/xy(e,i));let l,d,c,h,u,p,m,g,f,v,y,b=0,x=0;for(l=0;l<e;l+=a){if(h=t[l].label,u=this._resolveTickFontOptions(l),o.font=p=u.string,m=n[p]=n[p]||{data:{},gc:[]},g=u.lineHeight,f=v=0,um(h)||pm(h)){if(pm(h))for(d=0,c=h.length;d<c;++d)y=h[d],um(y)||pm(y)||(f=zg(o,m.data,m.gc,f,y),v+=g)}else f=zg(o,m.data,m.gc,f,h),v=g;s.push(f),r.push(v),b=Math.max(f,b),x=Math.max(v,x)}!function(t,e){xm(t,(t=>{const i=t.gc,o=i.length/2;let n;if(o>e){for(n=0;n<o;++n)delete t.data[i[n]];i.splice(0,o)}}))}(n,e);const _=s.indexOf(b),w=r.indexOf(x),k=t=>({width:s[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(_),highest:k(w),widths:s,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return ig(this._alignToPixels?Rg(this.chart,e,0):e,-32768,32767)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return af(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=af(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=Ym(this.labelRotation),i=Math.abs(Math.cos(e)),o=Math.abs(Math.sin(e)),n=this._getLabelSizes(),s=t.autoSkipPadding||0,r=n?n.widest.width+s:0,a=n?n.highest.height+s:0;return this.isHorizontal()?a*i>r*o?r/i:a/o:a*o<r*i?a/i:r/o}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,o=this.options,{grid:n,position:s,border:r}=o,a=n.offset,l=this.isHorizontal(),d=this.ticks.length+(a?1:0),c=ky(n),h=[],u=r.setContext(this.getContext()),p=u.display?u.width:0,m=p/2,g=function(t){return Rg(i,t,p)};let f,v,y,b,x,_,w,k,C,S,A,E;if("top"===s)f=g(this.bottom),_=this.bottom-c,k=f-m,S=g(t.top)+m,E=t.bottom;else if("bottom"===s)f=g(this.top),S=t.top,E=g(t.bottom)-m,_=f+m,k=this.top+c;else if("left"===s)f=g(this.right),x=this.right-c,w=f-m,C=g(t.left)+m,A=t.right;else if("right"===s)f=g(this.left),C=t.left,A=g(t.right)-m,x=f+m,w=this.left+c;else if("x"===e){if("center"===s)f=g((t.top+t.bottom)/2+.5);else if(mm(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}S=t.top,E=t.bottom,_=f+m,k=_+c}else if("y"===e){if("center"===s)f=g((t.left+t.right)/2);else if(mm(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}x=f-m,w=x-c,C=t.left,A=t.right}const $=vm(o.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/$));for(v=0;v<d;v+=T){const t=this.getContext(v),e=n.setContext(t),o=r.setContext(t),s=e.lineWidth,d=e.color,c=o.dash||[],u=o.dashOffset,p=e.tickWidth,m=e.tickColor,g=e.tickBorderDash||[],f=e.tickBorderDashOffset;y=wy(this,v,a),void 0!==y&&(b=Rg(i,y,s),l?x=w=C=A=b:_=k=S=E=b,h.push({tx1:x,ty1:_,tx2:w,ty2:k,x1:C,y1:S,x2:A,y2:E,width:s,color:d,borderDash:c,borderDashOffset:u,tickWidth:p,tickColor:m,tickBorderDash:g,tickBorderDashOffset:f}))}return this._ticksLength=d,this._borderValue=f,h}_computeLabelItems(t){const e=this.axis,i=this.options,{position:o,ticks:n}=i,s=this.isHorizontal(),r=this.ticks,{align:a,crossAlign:l,padding:d,mirror:c}=n,h=ky(i.grid),u=h+d,p=c?-d:u,m=-Ym(this.labelRotation),g=[];let f,v,y,b,x,_,w,k,C,S,A,E,$="middle";if("top"===o)_=this.bottom-p,w=this._getXAxisLabelAlignment();else if("bottom"===o)_=this.top+p,w=this._getXAxisLabelAlignment();else if("left"===o){const t=this._getYAxisLabelAlignment(h);w=t.textAlign,x=t.x}else if("right"===o){const t=this._getYAxisLabelAlignment(h);w=t.textAlign,x=t.x}else if("x"===e){if("center"===o)_=(t.top+t.bottom)/2+u;else if(mm(o)){const t=Object.keys(o)[0],e=o[t];_=this.chart.scales[t].getPixelForValue(e)+u}w=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===o)x=(t.left+t.right)/2-u;else if(mm(o)){const t=Object.keys(o)[0],e=o[t];x=this.chart.scales[t].getPixelForValue(e)}w=this._getYAxisLabelAlignment(h).textAlign}"y"===e&&("start"===a?$="top":"end"===a&&($="bottom"));const T=this._getLabelSizes();for(f=0,v=r.length;f<v;++f){y=r[f],b=y.label;const t=n.setContext(this.getContext(f));k=this.getPixelForTick(f)+n.labelOffset,C=this._resolveTickFontOptions(f),S=C.lineHeight,A=pm(b)?b.length:1;const e=A/2,i=t.color,a=t.textStrokeColor,d=t.textStrokeWidth;let h,u=w;if(s?(x=k,"inner"===w&&(u=f===v-1?this.options.reverse?"left":"right":0===f?this.options.reverse?"right":"left":"center"),E="top"===o?"near"===l||0!==m?-A*S+S/2:"center"===l?-T.highest.height/2-e*S+S:-T.highest.height+S/2:"near"===l||0!==m?S/2:"center"===l?T.highest.height/2-e*S:T.highest.height-A*S,c&&(E*=-1),0===m||t.showLabelBackdrop||(x+=S/2*Math.sin(m))):(_=k,E=(1-A)*S/2),t.showLabelBackdrop){const e=nf(t.backdropPadding),i=T.heights[f],o=T.widths[f];let n=E-e.top,s=0-e.left;switch($){case"middle":n-=i/2;break;case"bottom":n-=i}switch(w){case"center":s-=o/2;break;case"right":s-=o;break;case"inner":f===v-1?s-=o:f>0&&(s-=o/2)}h={left:s,top:n,width:o+e.width,height:i+e.height,color:t.backdropColor}}g.push({label:b,font:C,textOffset:E,options:{rotation:m,color:i,strokeColor:a,strokeWidth:d,textAlign:u,textBaseline:$,translation:[x,_],backdrop:h}})}return g}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-Ym(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:o,padding:n}}=this.options,s=t+n,r=this._getLabelSizes().widest.width;let a,l;return"left"===e?o?(l=this.right+n,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l+=r)):(l=this.right-s,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l=this.left)):"right"===e?o?(l=this.left+n,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l-=r)):(l=this.left+s,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l=this.right)):a="right",{textAlign:a,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:o,width:n,height:s}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,o,n,s),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,s;const r=(t,e,o)=>{o.width&&o.color&&(i.save(),i.lineWidth=o.width,i.strokeStyle=o.color,i.setLineDash(o.borderDash||[]),i.lineDashOffset=o.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,s=o.length;n<s;++n){const t=o[n];e.drawOnChartArea&&r({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&r({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:o}}=this,n=i.setContext(this.getContext()),s=i.display?n.width:0;if(!s)return;const r=o.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let l,d,c,h;this.isHorizontal()?(l=Rg(t,this.left,s)-s/2,d=Rg(t,this.right,r)+r/2,c=h=a):(c=Rg(t,this.top,s)-s/2,h=Rg(t,this.bottom,r)+r/2,l=d=a),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(d,h),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Ug(e,i);const o=this.getLabelItems(t);for(const t of o){const i=t.options,o=t.font;Yg(e,t.label,0,t.textOffset,o,i)}i&&jg(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:o}}=this;if(!i.display)return;const n=sf(i.font),s=nf(i.padding),r=i.align;let a=n.lineHeight/2;"bottom"===e||"center"===e||mm(e)?(a+=s.bottom,pm(i.text)&&(a+=n.lineHeight*(i.text.length-1))):a+=s.top;const{titleX:l,titleY:d,maxWidth:c,rotation:h}=function(t,e,i,o){const{top:n,left:s,bottom:r,right:a,chart:l}=t,{chartArea:d,scales:c}=l;let h,u,p,m=0;const g=r-n,f=a-s;if(t.isHorizontal()){if(u=pg(o,s,a),mm(i)){const t=Object.keys(i)[0],o=i[t];p=c[t].getPixelForValue(o)+g-e}else p="center"===i?(d.bottom+d.top)/2+g-e:by(t,i,e);h=a-s}else{if(mm(i)){const t=Object.keys(i)[0],o=i[t];u=c[t].getPixelForValue(o)-f+e}else u="center"===i?(d.left+d.right)/2-f+e:by(t,i,e);p=pg(o,r,n),m="left"===i?-Bm:Bm}return{titleX:u,titleY:p,maxWidth:h,rotation:m}}(this,a,e,r);Yg(t,i.text,0,0,n,{color:i.color,maxWidth:c,rotation:h,textAlign:Sy(r,e,o),textBaseline:"middle",translation:[l,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=vm(t.grid&&t.grid.z,-1),o=vm(t.border&&t.border.z,0);return this._isVisible()&&this.draw===Ay.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let n,s;for(n=0,s=e.length;n<s;++n){const s=e[n];s[i]!==this.id||t&&s.type!==t||o.push(s)}return o}_resolveTickFontOptions(t){return sf(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Ey{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const o=this.items,n=t.id,s=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in o||(o[n]=t,function(t,e,i){const o=Sm(Object.create(null),[i?Lg.get(i):{},Lg.get(e),t.defaults]);Lg.set(e,o),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const o=i.split("."),n=o.pop(),s=[t].concat(o).join("."),r=e[i].split("."),a=r.pop(),l=r.join(".");Lg.route(s,n,l,a)}))}(e,t.defaultRoutes);t.descriptors&&Lg.describe(e,t.descriptors)}(t,s,i),this.override&&Lg.override(t.id,t.overrides)),s}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,o=this.scope;i in e&&delete e[i],o&&i in Lg[o]&&(delete Lg[o][i],this.override&&delete Tg[i])}}class $y{constructor(){this.controllers=new Ey(yv,"datasets",!0),this.elements=new Ey(fy,"elements"),this.plugins=new Ey(Object,"plugins"),this.scales=new Ey(Ay,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const o=i||this._getRegistryForType(e);i||o.isForType(e)||o===this.plugins&&e.id?this._exec(t,o,e):xm(e,(e=>{const o=i||this._getRegistryForType(e);this._exec(t,o,e)}))}))}_exec(t,e,i){const o=Dm(t);bm(i["before"+o],[],i),e[t](i),bm(i["after"+o],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const o=e.get(t);if(void 0===o)throw new Error('"'+t+'" is not a registered '+i+".");return o}}var Ty=new $y;class Dy{constructor(){this._init=[]}notify(t,e,i,o){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=o?this._descriptors(t).filter(o):this._descriptors(t),s=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),s}_notify(t,e,i,o){o=o||{};for(const n of t){const t=n.plugin;if(!1===bm(t[i],[e,o,n.options],t)&&o.cancelable)return!1}return!0}invalidate(){um(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,o=vm(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],o=Object.keys(Ty.plugins.items);for(let t=0;t<o.length;t++)i.push(Ty.getPlugin(o[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const o=n[t];-1===i.indexOf(o)&&(i.push(o),e[o.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==o||e?function(t,{plugins:e,localIds:i},o,n){const s=[],r=t.getContext();for(const a of e){const e=a.id,l=My(o[e],n);null!==l&&s.push({plugin:a,options:Iy(t.config,{plugin:a,local:i[e]},l,r)})}return s}(t,n,o,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,o=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(o(e,i),t,"stop"),this._notify(o(i,e),t,"start")}}function My(t,e){return e||!1!==t?!0===t?{}:t:null}function Iy(t,{plugin:e,local:i},o,n){const s=t.pluginScopeKeys(e),r=t.getOptionScopes(o,s);return i&&e.defaults&&r.push(e.defaults),t.createResolver(r,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Oy(t,e){const i=Lg.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ly(t){if("x"===t||"y"===t||"r"===t)return t}function zy(t,...e){if(Ly(t))return t;for(const o of e){const e=o.axis||("top"===(i=o.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&Ly(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function Py(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function Ry(t,e){const i=Tg[t.type]||{scales:{}},o=e.scales||{},n=Oy(t.type,e),s=Object.create(null);return Object.keys(o).forEach((e=>{const r=o[e];if(!mm(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const a=zy(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return Py(t,"x",i[0])||Py(t,"y",i[0])}return{}}(e,t),Lg.scales[r.type]),l=function(t,e){return t===e?"_index_":"_value_"}(a,n),d=i.scales||{};s[e]=Am(Object.create(null),[{axis:a},r,d[a],d[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||Oy(n,e),a=(Tg[n]||{}).scales||{};Object.keys(a).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||e;s[n]=s[n]||Object.create(null),Am(s[n],[{axis:e},o[n],a[t]])}))})),Object.keys(s).forEach((t=>{const e=s[t];Am(e,[Lg.scales[e.type],Lg.scale])})),s}function Ny(t){const e=t.options||(t.options={});e.plugins=vm(e.plugins,{}),e.scales=Ry(t,e)}function By(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const Fy=new Map,qy=new Set;function Uy(t,e){let i=Fy.get(t);return i||(i=e(),Fy.set(t,i),qy.add(i)),i}const jy=(t,e,i)=>{const o=Tm(e,i);void 0!==o&&t.add(o)};class Vy{constructor(t){this._config=function(t){return(t=t||{}).data=By(t.data),Ny(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=By(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Ny(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Uy(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Uy(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Uy(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Uy(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let o=i.get(t);return o&&!e||(o=new Map,i.set(t,o)),o}getOptionScopes(t,e,i){const{options:o,type:n}=this,s=this._cachedScopes(t,i),r=s.get(e);if(r)return r;const a=new Set;e.forEach((e=>{t&&(a.add(t),e.forEach((e=>jy(a,t,e)))),e.forEach((t=>jy(a,o,t))),e.forEach((t=>jy(a,Tg[n]||{},t))),e.forEach((t=>jy(a,Lg,t))),e.forEach((t=>jy(a,Dg,t)))}));const l=Array.from(a);return 0===l.length&&l.push(Object.create(null)),qy.has(e)&&s.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,Tg[e]||{},Lg.datasets[e]||{},{type:e},Lg,Dg]}resolveNamedOptions(t,e,i,o=[""]){const n={$shared:!0},{resolver:s,subPrefixes:r}=Hy(this._resolverCache,t,o);let a=s;if(function(t,e){const{isScriptable:i,isIndexable:o}=cf(t);for(const n of e){const e=i(n),s=o(n),r=(s||e)&&t[n];if(e&&(Im(r)||Wy(r))||s&&pm(r))return!0}return!1}(s,e)){n.$shared=!1;a=df(s,i=Im(i)?i():i,this.createResolver(t,i,r))}for(const t of e)n[t]=a[t];return n}createResolver(t,e,i=[""],o){const{resolver:n}=Hy(this._resolverCache,t,i);return mm(e)?df(n,e,void 0,o):n}}function Hy(t,e,i){let o=t.get(e);o||(o=new Map,t.set(e,o));const n=i.join();let s=o.get(n);if(!s){s={resolver:lf(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},o.set(n,s)}return s}const Wy=t=>mm(t)&&Object.getOwnPropertyNames(t).some((e=>Im(t[e])));const Zy=["top","bottom","left","right","chartArea"];function Yy(t,e){return"top"===t||"bottom"===t||-1===Zy.indexOf(t)&&"x"===e}function Gy(t,e){return function(i,o){return i[t]===o[t]?i[e]-o[e]:i[t]-o[t]}}function Ky(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),bm(i&&i.onComplete,[t],e)}function Xy(t){const e=t.chart,i=e.options.animation;bm(i&&i.onProgress,[t],e)}function Qy(t){return Tf()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Jy={},tb=t=>{const e=Qy(t);return Object.values(Jy).filter((t=>t.canvas===e)).pop()};function eb(t,e,i){const o=Object.keys(t);for(const n of o){const o=+n;if(o>=e){const s=t[n];delete t[n],(i>0||o>e)&&(t[o+i]=s)}}}function ib(t,e,i){return t.options.clip?t[i]:e[i]}class ob{static defaults=Lg;static instances=Jy;static overrides=Tg;static registry=Ty;static version="4.4.8";static getChart=tb;static register(...t){Ty.add(...t),nb()}static unregister(...t){Ty.remove(...t),nb()}constructor(t,e){const i=this.config=new Vy(e),o=Qy(t),n=tb(o);if(n)throw new Error("Canvas is already in use. Chart with ID '"+n.id+"' must be destroyed before the canvas with ID '"+n.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||function(t){return!Tf()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?ty:gy}(o)),this.platform.updateConfig(i);const r=this.platform.acquireContext(o,s.aspectRatio),a=r&&r.canvas,l=a&&a.height,d=a&&a.width;this.id=hm(),this.ctx=r,this.canvas=a,this.width=d,this.height=l,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Dy,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(t,e){let i;return function(...o){return e?(clearTimeout(i),i=setTimeout(t,e,o)):t.apply(this,o),e}}((t=>this.update(t)),s.resizeDelay||0),this._dataChanges=[],Jy[this.id]=this,r&&a?(iv.listen(this,"complete",Ky),iv.listen(this,"progress",Xy),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:o,_aspectRatio:n}=this;return um(t)?e&&n?n:o?i/o:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Ty}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Bf(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ng(this.canvas,this.ctx),this}stop(){return iv.stop(this),this}resize(t,e){iv.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,o=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(o,t,e,n),r=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,Bf(this,r,!0)&&(this.notifyPlugins("resize",{size:s}),bm(i.onResize,[this,s],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){xm(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,o=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],o=zy(t,i),n="r"===o,s="x"===o;return{options:i,dposition:n?"chartArea":s?"bottom":"left",dtype:n?"radialLinear":s?"category":"linear"}})))),xm(n,(e=>{const n=e.options,s=n.id,r=zy(s,n),a=vm(n.type,e.dtype);void 0!==n.position&&Yy(n.position,r)===Yy(e.dposition)||(n.position=e.dposition),o[s]=!0;let l=null;if(s in i&&i[s].type===a)l=i[s];else{l=new(Ty.getScale(a))({id:s,type:a,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),xm(o,((t,e)=>{t||delete i[e]})),xm(i,(t=>{Qv.configure(this,t,t.options),Qv.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(Gy("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,o;for(this._removeUnreferencedMetasets(),i=0,o=e.length;i<o;i++){const o=e[i];let n=this.getDatasetMeta(i);const s=o.type||this.config.type;if(n.type&&n.type!==s&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=s,n.indexAxis=o.indexAxis||Oy(s,this.options),n.order=o.order||0,n.index=i,n.label=""+o.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=Ty.getController(s),{datasetElementType:o,dataElementType:r}=Lg.datasets[s];Object.assign(e,{dataElementType:Ty.getElement(r),datasetElementType:o&&Ty.getElement(o)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){xm(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),o=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!o&&-1===n.indexOf(e);e.buildOrUpdateElements(i),s=Math.max(+e.getMaxOverflow(),s)}s=this._minPadding=i.layout.autoPadding?s:0,this._updateLayout(s),o||xm(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Gy("z","_idx"));const{_active:r,_lastEvent:a}=this;a?this._eventHandler(a,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){xm(this.scales,(t=>{Qv.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);Om(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:o,count:n}of e){eb(t,o,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),o=i(0);for(let t=1;t<e;t++)if(!Om(o,i(t)))return;return Array.from(o).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Qv.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],xm(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,Im(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),o={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",o)&&(i.controller._update(e),o.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",o))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(iv.has(this)?this.attached&&!iv.running(this)&&iv.start(this):(this.draw(),Ky({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let o,n;for(o=0,n=e.length;o<n;++o){const n=e[o];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,o=!i.disabled,n=function(t,e){const{xScale:i,yScale:o}=t;return i&&o?{left:ib(i,e,"left"),right:ib(i,e,"right"),top:ib(o,e,"top"),bottom:ib(o,e,"bottom")}:e}(t,this.chartArea),s={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",s)&&(o&&Ug(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),o&&jg(e),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(t){return qg(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,o){const n=Bv.modes[e];return"function"==typeof n?n(this,t,i,o):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let o=i.filter((t=>t&&t._dataset===e)).pop();return o||(o={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(o)),o}getContext(){return this.$context||(this.$context=af(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const o=i?"show":"hide",n=this.getDatasetMeta(t),s=n.controller._resolveAnimations(void 0,o);Mm(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),s.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?o:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),iv.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Ng(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Jy[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};xm(this.options.events,(t=>i(t,o)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(i,o)=>{t[i]&&(e.removeEventListener(this,i,o),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let s;const r=()=>{o("attach",r),this.attached=!0,this.resize(),i("resize",n),i("detach",s)};s=()=>{this.attached=!1,o("resize",n),this._stop(),this._resize(0,0),i("attach",r)},e.isAttached(this.canvas)?r():s()}unbindEvents(){xm(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},xm(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const o=i?"set":"remove";let n,s,r,a;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+o+"DatasetHoverStyle"]()),r=0,a=t.length;r<a;++r){s=t[r];const e=s&&this.getDatasetMeta(s.datasetIndex).controller;e&&e[o+"HoverStyle"](s.element,s.datasetIndex,s.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!_m(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const o=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),s=n(e,t),r=i?t:n(t,e);s.length&&this.updateHoverStyle(s,o.mode,!1),r.length&&o.mode&&this.updateHoverStyle(r,o.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},o=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,o))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,o),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:o=[],options:n}=this,s=e,r=this._getActiveElements(t,o,i,s),a=function(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(t),l=function(t,e,i,o){return i&&"mouseout"!==t.type?o?e:t:null}(t,this._lastEvent,i,a);i&&(this._lastEvent=null,bm(n.onHover,[t,r,this],this),a&&bm(n.onClick,[t,r,this],this));const d=!_m(r,o);return(d||e)&&(this._active=r,this._updateHoverStyles(r,o,e)),this._lastEvent=l,d}_getActiveElements(t,e,i,o){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,o)}}function nb(){return xm(ob.instances,(t=>t._plugins.invalidate()))}function sb(t,e,i,o){const n=tf(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const s=(i-e)/2,r=Math.min(s,o*e/2),a=t=>{const e=(i-Math.min(s,t))*o/2;return ig(t,0,Math.min(s,e))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:ig(n.innerStart,0,r),innerEnd:ig(n.innerEnd,0,r)}}function rb(t,e,i,o){return{x:i+t*Math.cos(e),y:o+t*Math.sin(e)}}function ab(t,e,i,o,n,s){const{x:r,y:a,startAngle:l,pixelMargin:d,innerRadius:c}=e,h=Math.max(e.outerRadius+o+i-d,0),u=c>0?c+o+i+d:0;let p=0;const m=n-l;if(o){const t=((c>0?c-o:0)+(h>0?h-o:0))/2;p=(m-(0!==t?m*t/(t+o):m))/2}const g=(m-Math.max(.001,m*h-i/Lm)/h)/2,f=l+g+p,v=n-g-p,{outerStart:y,outerEnd:b,innerStart:x,innerEnd:_}=sb(e,u,h,v-f),w=h-y,k=h-b,C=f+y/w,S=v-b/k,A=u+x,E=u+_,$=f+x/A,T=v-_/E;if(t.beginPath(),s){const e=(C+S)/2;if(t.arc(r,a,h,C,e),t.arc(r,a,h,e,S),b>0){const e=rb(k,S,r,a);t.arc(e.x,e.y,b,S,v+Bm)}const i=rb(E,v,r,a);if(t.lineTo(i.x,i.y),_>0){const e=rb(E,T,r,a);t.arc(e.x,e.y,_,v+Bm,T+Math.PI)}const o=(v-_/u+(f+x/u))/2;if(t.arc(r,a,u,v-_/u,o,!0),t.arc(r,a,u,o,f+x/u,!0),x>0){const e=rb(A,$,r,a);t.arc(e.x,e.y,x,$+Math.PI,f-Bm)}const n=rb(w,f,r,a);if(t.lineTo(n.x,n.y),y>0){const e=rb(w,C,r,a);t.arc(e.x,e.y,y,f-Bm,C)}}else{t.moveTo(r,a);const e=Math.cos(C)*h+r,i=Math.sin(C)*h+a;t.lineTo(e,i);const o=Math.cos(S)*h+r,n=Math.sin(S)*h+a;t.lineTo(o,n)}t.closePath()}function lb(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a,options:l}=e,{borderWidth:d,borderJoinStyle:c,borderDash:h,borderDashOffset:u}=l,p="inner"===l.borderAlign;if(!d)return;t.setLineDash(h||[]),t.lineDashOffset=u,p?(t.lineWidth=2*d,t.lineJoin=c||"round"):(t.lineWidth=d,t.lineJoin=c||"bevel");let m=e.endAngle;if(s){ab(t,e,i,o,m,n);for(let e=0;e<s;++e)t.stroke();isNaN(a)||(m=r+(a%zm||zm))}p&&function(t,e,i){const{startAngle:o,pixelMargin:n,x:s,y:r,outerRadius:a,innerRadius:l}=e;let d=n/a;t.beginPath(),t.arc(s,r,a,o-d,i+d),l>n?(d=n/l,t.arc(s,r,l,i+d,o-d,!0)):t.arc(s,r,n,i+Bm,o-Bm),t.closePath(),t.clip()}(t,e,m),s||(ab(t,e,i,o,m,n),t.stroke())}class db extends fy{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.getProps(["x","y"],i),{angle:n,distance:s}=Xm(o,{x:t,y:e}),{startAngle:r,endAngle:a,innerRadius:l,outerRadius:d,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),h=(this.options.spacing+this.options.borderWidth)/2,u=vm(c,a-r),p=eg(n,r,a)&&r!==a,m=u>=zm||p,g=og(s,l+h,d+h);return m&&g}getCenterPoint(t){const{x:e,y:i,startAngle:o,endAngle:n,innerRadius:s,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:a,spacing:l}=this.options,d=(o+n)/2,c=(s+r+l+a)/2;return{x:e+Math.cos(d)*c,y:i+Math.sin(d)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,o=(e.offset||0)/4,n=(e.spacing||0)/2,s=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>zm?Math.floor(i/zm):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const r=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(r)*o,Math.sin(r)*o);const a=o*(1-Math.sin(Math.min(Lm,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a}=e;let l=e.endAngle;if(s){ab(t,e,i,o,l,n);for(let e=0;e<s;++e)t.fill();isNaN(a)||(l=r+(a%zm||zm))}ab(t,e,i,o,l,n),t.fill()}(t,this,a,n,s),lb(t,this,a,n,s),t.restore()}}function cb(t,e,i=e){t.lineCap=vm(i.borderCapStyle,e.borderCapStyle),t.setLineDash(vm(i.borderDash,e.borderDash)),t.lineDashOffset=vm(i.borderDashOffset,e.borderDashOffset),t.lineJoin=vm(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=vm(i.borderWidth,e.borderWidth),t.strokeStyle=vm(i.borderColor,e.borderColor)}function hb(t,e,i){t.lineTo(i.x,i.y)}function ub(t,e,i={}){const o=t.length,{start:n=0,end:s=o-1}=i,{start:r,end:a}=e,l=Math.max(n,r),d=Math.min(s,a),c=n<r&&s<r||n>a&&s>a;return{count:o,start:l,loop:e.loop,ilen:d<l&&!c?o+d-l:d-l}}function pb(t,e,i,o){const{points:n,options:s}=e,{count:r,start:a,loop:l,ilen:d}=ub(n,i,o),c=function(t){return t.stepped?Vg:t.tension||"monotone"===t.cubicInterpolationMode?Hg:hb}(s);let h,u,p,{move:m=!0,reverse:g}=o||{};for(h=0;h<=d;++h)u=n[(a+(g?d-h:h))%r],u.skip||(m?(t.moveTo(u.x,u.y),m=!1):c(t,p,u,g,s.stepped),p=u);return l&&(u=n[(a+(g?d:0))%r],c(t,p,u,g,s.stepped)),!!l}function mb(t,e,i,o){const n=e.points,{count:s,start:r,ilen:a}=ub(n,i,o),{move:l=!0,reverse:d}=o||{};let c,h,u,p,m,g,f=0,v=0;const y=t=>(r+(d?a-t:t))%s,b=()=>{p!==m&&(t.lineTo(f,m),t.lineTo(f,p),t.lineTo(f,g))};for(l&&(h=n[y(0)],t.moveTo(h.x,h.y)),c=0;c<=a;++c){if(h=n[y(c)],h.skip)continue;const e=h.x,i=h.y,o=0|e;o===u?(i<p?p=i:i>m&&(m=i),f=(v*f+e)/++v):(b(),t.lineTo(e,i),u=o,v=0,p=m=i),g=i}b()}function gb(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?mb:pb}const fb="function"==typeof Path2D;function vb(t,e,i,o){fb&&!e.options.segment?function(t,e,i,o){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,o)&&n.closePath()),cb(t,e.options),t.stroke(n)}(t,e,i,o):function(t,e,i,o){const{segments:n,options:s}=e,r=gb(e);for(const a of n)cb(t,s,a.style),t.beginPath(),r(t,e,a,{start:i,end:i+o-1})&&t.closePath(),t.stroke()}(t,e,i,o)}class yb extends fy{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const o=i.spanGaps?this._loop:this._fullLoop;$f(this._points,i,t,o,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(t,e){const i=t.points,o=t.options.spanGaps,n=i.length;if(!n)return[];const s=!!t._loop,{start:r,end:a}=function(t,e,i,o){let n=0,s=e-1;if(i&&!o)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(s+=n);s>n&&t[s%e].skip;)s--;return s%=e,{start:n,end:s}}(i,n,s,o);return Qf(t,!0===o?[{start:r,end:a,loop:s}]:function(t,e,i,o){const n=t.length,s=[];let r,a=e,l=t[e];for(r=e+1;r<=i;++r){const i=t[r%n];i.skip||i.stop?l.skip||(o=!1,s.push({start:e%n,end:(r-1)%n,loop:o}),e=a=i.stop?r:null):(a=r,l.skip&&(e=r)),l=i}return null!==a&&s.push({start:e%n,end:a%n,loop:o}),s}(i,r,a<r?a+n:a,!!t._fullLoop&&0===r&&a===n-1),i,e)}(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,o=t[e],n=this.points,s=Xf(this,{property:e,start:o,end:o});if(!s.length)return;const r=[],a=function(t){return t.stepped?jf:t.tension||"monotone"===t.cubicInterpolationMode?Vf:Uf}(i);let l,d;for(l=0,d=s.length;l<d;++l){const{start:d,end:c}=s[l],h=n[d],u=n[c];if(h===u){r.push(h);continue}const p=a(h,u,Math.abs((o-h[e])/(u[e]-h[e])),i.stepped);p[e]=t[e],r.push(p)}return 1===r.length?r[0]:r}pathSegment(t,e,i){return gb(this)(t,this,e,i)}path(t,e,i){const o=this.segments,n=gb(this);let s=this._loop;e=e||0,i=i||this.points.length-e;for(const r of o)s&=n(t,this,r,{start:e,end:e+i-1});return!!s}draw(t,e,i,o){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),vb(t,this,i,o),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function bb(t,e,i,o){const n=t.options,{[i]:s}=t.getProps([i],o);return Math.abs(e-s)<n.radius+n.hitRadius}class xb extends fy{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.options,{x:n,y:s}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-s,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(t,e){return bb(this,t,"x",e)}inYRange(t,e){return bb(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!qg(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Bg(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function _b(t,e){const{x:i,y:o,base:n,width:s,height:r}=t.getProps(["x","y","base","width","height"],e);let a,l,d,c,h;return t.horizontal?(h=r/2,a=Math.min(i,n),l=Math.max(i,n),d=o-h,c=o+h):(h=s/2,a=i-h,l=i+h,d=Math.min(o,n),c=Math.max(o,n)),{left:a,top:d,right:l,bottom:c}}function wb(t,e,i,o){return t?0:ig(e,i,o)}function kb(t){const e=_b(t),i=e.right-e.left,o=e.bottom-e.top,n=function(t,e,i){const o=t.options.borderWidth,n=t.borderSkipped,s=ef(o);return{t:wb(n.top,s.top,0,i),r:wb(n.right,s.right,0,e),b:wb(n.bottom,s.bottom,0,i),l:wb(n.left,s.left,0,e)}}(t,i/2,o/2),s=function(t,e,i){const{enableBorderRadius:o}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,s=of(n),r=Math.min(e,i),a=t.borderSkipped,l=o||mm(n);return{topLeft:wb(!l||a.top||a.left,s.topLeft,0,r),topRight:wb(!l||a.top||a.right,s.topRight,0,r),bottomLeft:wb(!l||a.bottom||a.left,s.bottomLeft,0,r),bottomRight:wb(!l||a.bottom||a.right,s.bottomRight,0,r)}}(t,i/2,o/2);return{outer:{x:e.left,y:e.top,w:i,h:o,radius:s},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:o-n.t-n.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,s.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(n.b,n.r))}}}}function Cb(t,e,i,o){const n=null===e,s=null===i,r=t&&!(n&&s)&&_b(t,o);return r&&(n||og(e,r.left,r.right))&&(s||og(i,r.top,r.bottom))}function Sb(t,e){t.rect(e.x,e.y,e.w,e.h)}function Ab(t,e,i={}){const o=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,s=(t.x+t.w!==i.x+i.w?e:0)-o,r=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+o,y:t.y+n,w:t.w+s,h:t.h+r,radius:t.radius}}class Eb extends fy{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:o}}=this,{inner:n,outer:s}=kb(this),r=(a=s.radius).topLeft||a.topRight||a.bottomLeft||a.bottomRight?Gg:Sb;var a;t.save(),s.w===n.w&&s.h===n.h||(t.beginPath(),r(t,Ab(s,e,n)),t.clip(),r(t,Ab(n,-e,s)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),r(t,Ab(n,e)),t.fillStyle=o,t.fill(),t.restore()}inRange(t,e,i){return Cb(this,t,e,i)}inXRange(t,e){return Cb(this,t,null,e)}inYRange(t,e){return Cb(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:o,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+o)/2:e,y:n?i:(i+o)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}var $b=Object.freeze({__proto__:null,ArcElement:db,BarElement:Eb,LineElement:yb,PointElement:xb});const Tb=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Db=Tb.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Mb(t){return Tb[t%Tb.length]}function Ib(t){return Db[t%Db.length]}function Ob(t){let e=0;return(i,o)=>{const n=t.getDatasetMeta(o).controller;n instanceof Ev?e=function(t,e){return t.backgroundColor=t.data.map((()=>Mb(e++))),e}(i,e):n instanceof $v?e=function(t,e){return t.backgroundColor=t.data.map((()=>Ib(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Mb(e),t.backgroundColor=Ib(e),++e}(i,e))}}function Lb(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var zb={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:o},options:n}=t.config,{elements:s}=n,r=Lb(o)||(a=n)&&(a.borderColor||a.backgroundColor)||s&&Lb(s)||"rgba(0,0,0,0.1)"!==Lg.borderColor||"rgba(0,0,0,0.1)"!==Lg.backgroundColor;var a;if(!i.forceOverride&&r)return;const l=Ob(t);o.forEach(l)}};function Pb(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Rb(t){t.data.datasets.forEach((t=>{Pb(t)}))}var Nb={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Rb(t);const o=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:s,indexAxis:r}=e,a=t.getDatasetMeta(n),l=s||e.data;if("y"===rf([r,t.options.indexAxis]))return;if(!a.controller.supportsDecimation)return;const d=t.scales[a.xAxisID];if("linear"!==d.type&&"time"!==d.type)return;if(t.options.parsing)return;let{start:c,count:h}=function(t,e){const i=e.length;let o,n=0;const{iScale:s}=t,{min:r,max:a,minDefined:l,maxDefined:d}=s.getUserBounds();return l&&(n=ig(sg(e,s.axis,r).lo,0,i-1)),o=d?ig(sg(e,s.axis,a).hi+1,n,i)-n:i-n,{start:n,count:o}}(a,l);if(h<=(i.threshold||4*o))return void Pb(e);let u;switch(um(s)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,o,n){const s=n.samples||o;if(s>=i)return t.slice(e,e+i);const r=[],a=(i-2)/(s-2);let l=0;const d=e+i-1;let c,h,u,p,m,g=e;for(r[l++]=t[g],c=0;c<s-2;c++){let o,n=0,s=0;const d=Math.floor((c+1)*a)+1+e,f=Math.min(Math.floor((c+2)*a)+1,i)+e,v=f-d;for(o=d;o<f;o++)n+=t[o].x,s+=t[o].y;n/=v,s/=v;const y=Math.floor(c*a)+1+e,b=Math.min(Math.floor((c+1)*a)+1,i)+e,{x:x,y:_}=t[g];for(u=p=-1,o=y;o<b;o++)p=.5*Math.abs((x-n)*(t[o].y-_)-(x-t[o].x)*(s-_)),p>u&&(u=p,h=t[o],m=o);r[l++]=h,g=m}return r[l++]=t[d],r}(l,c,h,o,i);break;case"min-max":u=function(t,e,i,o){let n,s,r,a,l,d,c,h,u,p,m=0,g=0;const f=[],v=e+i-1,y=t[e].x,b=t[v].x-y;for(n=e;n<e+i;++n){s=t[n],r=(s.x-y)/b*o,a=s.y;const e=0|r;if(e===l)a<u?(u=a,d=n):a>p&&(p=a,c=n),m=(g*m+s.x)/++g;else{const i=n-1;if(!um(d)&&!um(c)){const e=Math.min(d,c),o=Math.max(d,c);e!==h&&e!==i&&f.push({...t[e],x:m}),o!==h&&o!==i&&f.push({...t[o],x:m})}n>0&&i!==h&&f.push(t[i]),f.push(s),l=e,g=0,u=p=a,d=c=h=n}}return f}(l,c,h,o);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){Rb(t)}};function Bb(t,e,i,o){if(o)return;let n=e[t],s=i[t];return"angle"===t&&(n=tg(n),s=tg(s)),{property:t,start:n,end:s}}function Fb(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function qb(t,e,i,o){return t&&e?o(t[i],e[i]):t?t[i]:e?e[i]:0}function Ub(t,e){let i=[],o=!1;return pm(t)?(o=!0,i=t):i=function(t,e){const{x:i=null,y:o=null}=t||{},n=e.points,s=[];return e.segments.forEach((({start:t,end:e})=>{e=Fb(t,e,n);const r=n[t],a=n[e];null!==o?(s.push({x:r.x,y:o}),s.push({x:a.x,y:o})):null!==i&&(s.push({x:i,y:r.y}),s.push({x:i,y:a.y}))})),s}(t,e),i.length?new yb({points:i,options:{tension:0},_loop:o,_fullLoop:o}):null}function jb(t){return t&&!1!==t.fill}function Vb(t,e,i){let o=t[e].fill;const n=[e];let s;if(!i)return o;for(;!1!==o&&-1===n.indexOf(o);){if(!gm(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;n.push(o),o=s.fill}return!1}function Hb(t,e,i){const o=function(t){const e=t.options,i=e.fill;let o=vm(i&&i.target,i);void 0===o&&(o=!!e.backgroundColor);if(!1===o||null===o)return!1;if(!0===o)return"origin";return o}(t);if(mm(o))return!isNaN(o.value)&&o;let n=parseFloat(o);return gm(n)&&Math.floor(n)===n?function(t,e,i,o){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=o)return!1;return i}(o[0],e,n,i):["origin","start","end","stack","shape"].indexOf(o)>=0&&o}function Wb(t,e,i){const o=[];for(let n=0;n<i.length;n++){const s=i[n],{first:r,last:a,point:l}=Zb(s,e,"x");if(!(!l||r&&a))if(r)o.unshift(l);else if(t.push(l),!a)break}t.push(...o)}function Zb(t,e,i){const o=t.interpolate(e,i);if(!o)return{};const n=o[i],s=t.segments,r=t.points;let a=!1,l=!1;for(let t=0;t<s.length;t++){const e=s[t],o=r[e.start][i],d=r[e.end][i];if(og(n,o,d)){a=n===o,l=n===d;break}}return{first:a,last:l,point:o}}class Yb{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:o,y:n,radius:s}=this;return e=e||{start:0,end:zm},t.arc(o,n,s,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:o}=this,n=t.angle;return{x:e+Math.cos(n)*o,y:i+Math.sin(n)*o,angle:n}}}function Gb(t){const{chart:e,fill:i,line:o}=t;if(gm(i))return function(t,e){const i=t.getDatasetMeta(e),o=i&&t.isDatasetVisible(e);return o?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:o}=t,n=[],s=o.segments,r=o.points,a=function(t,e){const i=[],o=t.getMatchingVisibleMetas("line");for(let t=0;t<o.length;t++){const n=o[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);a.push(Ub({x:null,y:e.bottom},o));for(let t=0;t<s.length;t++){const e=s[t];for(let t=e.start;t<=e.end;t++)Wb(n,r[t],a)}return new yb({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,o=e.options,n=e.getLabels().length,s=o.reverse?e.max:e.min,r=function(t,e,i){let o;return o="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:mm(t)?t.value:e.getBaseValue(),o}(i,e,s),a=[];if(o.grid.circular){const t=e.getPointPositionForValue(0,s);return new Yb({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)a.push(e.getPointPositionForValue(t,r));return a}(t);return function(t){const{scale:e={},fill:i}=t,o=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:mm(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(gm(o)){const t=e.isHorizontal();return{x:t?o:null,y:t?null:o}}return null}(t)}(t);return n instanceof Yb?n:Ub(n,o)}function Kb(t,e,i){const o=Gb(e),{line:n,scale:s,axis:r}=e,a=n.options,l=a.fill,d=a.backgroundColor,{above:c=d,below:h=d}=l||{};o&&n.points.length&&(Ug(t,i),function(t,e){const{line:i,target:o,above:n,below:s,area:r,scale:a}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&s!==n&&(Xb(t,o,r.top),Qb(t,{line:i,target:o,color:n,scale:a,property:l}),t.restore(),t.save(),Xb(t,o,r.bottom));Qb(t,{line:i,target:o,color:s,scale:a,property:l}),t.restore()}(t,{line:n,target:o,above:c,below:h,area:i,scale:s,axis:r}),jg(t))}function Xb(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Fb(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(d.x,i),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function Qb(t,e){const{line:i,target:o,property:n,color:s,scale:r}=e,a=function(t,e,i){const o=t.segments,n=t.points,s=e.points,r=[];for(const t of o){let{start:o,end:a}=t;a=Fb(o,a,n);const l=Bb(i,n[o],n[a],t.loop);if(!e.segments){r.push({source:t,target:l,start:n[o],end:n[a]});continue}const d=Xf(e,l);for(const e of d){const o=Bb(i,s[e.start],s[e.end],e.loop),a=Kf(t,n,o);for(const t of a)r.push({source:t,target:e,start:{[i]:qb(l,o,"start",Math.max)},end:{[i]:qb(l,o,"end",Math.min)}})}}return r}(i,o,n);for(const{source:e,target:l,start:d,end:c}of a){const{style:{backgroundColor:a=s}={}}=e,h=!0!==o;t.save(),t.fillStyle=a,Jb(t,r,h&&Bb(n,d,c)),t.beginPath();const u=!!i.pathSegment(t,e);let p;if(h){u?t.closePath():tx(t,o,c,n);const e=!!o.pathSegment(t,l,{move:u,reverse:!0});p=u&&e,p||tx(t,o,d,n)}t.closePath(),t.fill(p?"evenodd":"nonzero"),t.restore()}}function Jb(t,e,i){const{top:o,bottom:n}=e.chart.chartArea,{property:s,start:r,end:a}=i||{};"x"===s&&(t.beginPath(),t.rect(r,o,a-r,n-o),t.clip())}function tx(t,e,i,o){const n=e.interpolate(i,o);n&&t.lineTo(n.x,n.y)}var ex={id:"filler",afterDatasetsUpdate(t,e,i){const o=(t.data.datasets||[]).length,n=[];let s,r,a,l;for(r=0;r<o;++r)s=t.getDatasetMeta(r),a=s.dataset,l=null,a&&a.options&&a instanceof yb&&(l={visible:t.isDatasetVisible(r),index:r,fill:Hb(a,r,o),chart:t,axis:s.controller.options.indexAxis,scale:s.vScale,line:a}),s.$filler=l,n.push(l);for(r=0;r<o;++r)l=n[r],l&&!1!==l.fill&&(l.fill=Vb(n,r,i.propagate))},beforeDraw(t,e,i){const o="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),s=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(s,i.axis),o&&i.fill&&Kb(t.ctx,i,s))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const o=t.getSortedVisibleDatasetMetas();for(let e=o.length-1;e>=0;--e){const i=o[e].$filler;jb(i)&&Kb(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const o=e.meta.$filler;jb(o)&&"beforeDatasetDraw"===i.drawTime&&Kb(t.ctx,o,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ix=(t,e)=>{let{boxHeight:i=e,boxWidth:o=e}=t;return t.usePointStyle&&(i=Math.min(i,e),o=t.pointStyleWidth||Math.min(o,e)),{boxWidth:o,boxHeight:i,itemHeight:Math.max(e,i)}};class ox extends fy{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=bm(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,o=sf(i.font),n=o.size,s=this._computeTitleHeight(),{boxWidth:r,itemHeight:a}=ix(i,n);let l,d;e.font=o.string,this.isHorizontal()?(l=this.maxWidth,d=this._fitRows(s,n,r,a)+10):(d=this.maxHeight,l=this._fitCols(s,o,r,a)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(d,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,o){const{ctx:n,maxWidth:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.lineWidths=[0],d=o+r;let c=t;n.textAlign="left",n.textBaseline="middle";let h=-1,u=-d;return this.legendItems.forEach(((t,p)=>{const m=i+e/2+n.measureText(t.text).width;(0===p||l[l.length-1]+m+2*r>s)&&(c+=d,l[l.length-(p>0?0:1)]=0,u+=d,h++),a[p]={left:0,top:u,row:h,width:m,height:o},l[l.length-1]+=m+r})),c}_fitCols(t,e,i,o){const{ctx:n,maxHeight:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.columnSizes=[],d=s-t;let c=r,h=0,u=0,p=0,m=0;return this.legendItems.forEach(((t,s)=>{const{itemWidth:g,itemHeight:f}=function(t,e,i,o,n){const s=function(t,e,i,o){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+o.measureText(n).width}(o,t,e,i),r=function(t,e,i){let o=t;"string"!=typeof e.text&&(o=nx(e,i));return o}(n,o,e.lineHeight);return{itemWidth:s,itemHeight:r}}(i,e,n,t,o);s>0&&u+f+2*r>d&&(c+=h+r,l.push({width:h,height:u}),p+=h+r,m++,h=u=0),a[s]={left:p,top:u,col:m,width:g,height:f},h=Math.max(h,g),u+=f+r})),c+=h,l.push({width:h,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:o},rtl:n}}=this,s=Hf(n,this.left,this.width);if(this.isHorizontal()){let n=0,r=pg(i,this.left+o,this.right-this.lineWidths[n]);for(const a of e)n!==a.row&&(n=a.row,r=pg(i,this.left+o,this.right-this.lineWidths[n])),a.top+=this.top+t+o,a.left=s.leftForLtr(s.x(r),a.width),r+=a.width+o}else{let n=0,r=pg(i,this.top+t+o,this.bottom-this.columnSizes[n].height);for(const a of e)a.col!==n&&(n=a.col,r=pg(i,this.top+t+o,this.bottom-this.columnSizes[n].height)),a.top=r,a.left+=this.left+o,a.left=s.leftForLtr(s.x(a.left),a.width),r+=a.height+o}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ug(t,this),this._draw(),jg(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:o}=this,{align:n,labels:s}=t,r=Lg.color,a=Hf(t.rtl,this.left,this.width),l=sf(s.font),{padding:d}=s,c=l.size,h=c/2;let u;this.drawTitle(),o.textAlign=a.textAlign("left"),o.textBaseline="middle",o.lineWidth=.5,o.font=l.string;const{boxWidth:p,boxHeight:m,itemHeight:g}=ix(s,c),f=this.isHorizontal(),v=this._computeTitleHeight();u=f?{x:pg(n,this.left+d,this.right-i[0]),y:this.top+d+v,line:0}:{x:this.left+d,y:pg(n,this.top+v+d,this.bottom-e[0].height),line:0},Wf(this.ctx,t.textDirection);const y=g+d;this.legendItems.forEach(((b,x)=>{o.strokeStyle=b.fontColor,o.fillStyle=b.fontColor;const _=o.measureText(b.text).width,w=a.textAlign(b.textAlign||(b.textAlign=s.textAlign)),k=p+h+_;let C=u.x,S=u.y;a.setWidth(this.width),f?x>0&&C+k+d>this.right&&(S=u.y+=y,u.line++,C=u.x=pg(n,this.left+d,this.right-i[u.line])):x>0&&S+y>this.bottom&&(C=u.x=C+e[u.line].width+d,u.line++,S=u.y=pg(n,this.top+v+d,this.bottom-e[u.line].height));if(function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;o.save();const n=vm(i.lineWidth,1);if(o.fillStyle=vm(i.fillStyle,r),o.lineCap=vm(i.lineCap,"butt"),o.lineDashOffset=vm(i.lineDashOffset,0),o.lineJoin=vm(i.lineJoin,"miter"),o.lineWidth=n,o.strokeStyle=vm(i.strokeStyle,r),o.setLineDash(vm(i.lineDash,[])),s.usePointStyle){const r={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=a.xPlus(t,p/2);Fg(o,r,l,e+h,s.pointStyleWidth&&p)}else{const s=e+Math.max((c-m)/2,0),r=a.leftForLtr(t,p),l=of(i.borderRadius);o.beginPath(),Object.values(l).some((t=>0!==t))?Gg(o,{x:r,y:s,w:p,h:m,radius:l}):o.rect(r,s,p,m),o.fill(),0!==n&&o.stroke()}o.restore()}(a.x(C),S,b),C=((t,e,i,o)=>t===(o?"left":"right")?i:"center"===t?(e+i)/2:e)(w,C+p+h,f?C+k:this.right,t.rtl),function(t,e,i){Yg(o,i.text,t,e+g/2,l,{strikethrough:i.hidden,textAlign:a.textAlign(i.textAlign)})}(a.x(C),S,b),f)u.x+=k+d;else if("string"!=typeof b.text){const t=l.lineHeight;u.y+=nx(b,t)+d}else u.y+=y})),Zf(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=sf(e.font),o=nf(e.padding);if(!e.display)return;const n=Hf(t.rtl,this.left,this.width),s=this.ctx,r=e.position,a=i.size/2,l=o.top+a;let d,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),d=this.top+l,c=pg(t.align,c,this.right-h);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=l+pg(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=pg(r,c,c+h);s.textAlign=n.textAlign(ug(r)),s.textBaseline="middle",s.strokeStyle=e.color,s.fillStyle=e.color,s.font=i.string,Yg(s,e.text,u,d,i)}_computeTitleHeight(){const t=this.options.title,e=sf(t.font),i=nf(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,o,n;if(og(t,this.left,this.right)&&og(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(o=n[i],og(t,o.left,o.left+o.width)&&og(e,o.top,o.top+o.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,n=((t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index)(o,i);o&&!n&&bm(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!n&&bm(e.onHover,[t,i,this],this)}else i&&bm(e.onClick,[t,i,this],this)}}function nx(t,e){return e*(t.text?t.text.length:0)}var sx={id:"legend",_element:ox,start(t,e,i){const o=t.legend=new ox({ctx:t.ctx,options:i,chart:t});Qv.configure(t,o,i),Qv.addBox(t,o)},stop(t){Qv.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const o=t.legend;Qv.configure(t,o,i),o.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const o=e.datasetIndex,n=i.chart;n.isDatasetVisible(o)?(n.hide(o),e.hidden=!0):(n.show(o),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:o,textAlign:n,color:s,useBorderRadius:r,borderRadius:a}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),d=nf(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:s,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:l.borderColor,pointStyle:o||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:r&&(a||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class rx extends fy{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const o=pm(i.text)?i.text.length:1;this._padding=nf(i.padding);const n=o*sf(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:o,right:n,options:s}=this,r=s.align;let a,l,d,c=0;return this.isHorizontal()?(l=pg(r,i,n),d=e+t,a=n-i):("left"===s.position?(l=i+t,d=pg(r,o,e),c=-.5*Lm):(l=n-t,d=pg(r,e,o),c=.5*Lm),a=o-e),{titleX:l,titleY:d,maxWidth:a,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=sf(e.font),o=i.lineHeight/2+this._padding.top,{titleX:n,titleY:s,maxWidth:r,rotation:a}=this._drawArgs(o);Yg(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:a,textAlign:ug(e.align),textBaseline:"middle",translation:[n,s]})}}var ax={id:"title",_element:rx,start(t,e,i){!function(t,e){const i=new rx({ctx:t.ctx,options:e,chart:t});Qv.configure(t,i,e),Qv.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Qv.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const o=t.titleBlock;Qv.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const lx=new WeakMap;var dx={id:"subtitle",start(t,e,i){const o=new rx({ctx:t.ctx,options:i,chart:t});Qv.configure(t,o,i),Qv.addBox(t,o),lx.set(t,o)},stop(t){Qv.removeBox(t,lx.get(t)),lx.delete(t)},beforeUpdate(t,e,i){const o=lx.get(t);Qv.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const cx={average(t){if(!t.length)return!1;let e,i,o=new Set,n=0,s=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();o.add(t.x),n+=t.y,++s}}if(0===s||0===o.size)return!1;const r=[...o].reduce(((t,e)=>t+e))/o.size;return{x:r,y:n/s}},nearest(t,e){if(!t.length)return!1;let i,o,n,s=e.x,r=e.y,a=Number.POSITIVE_INFINITY;for(i=0,o=t.length;i<o;++i){const o=t[i].element;if(o&&o.hasValue()){const t=Qm(e,o.getCenterPoint());t<a&&(a=t,n=o)}}if(n){const t=n.tooltipPosition();s=t.x,r=t.y}return{x:s,y:r}}};function hx(t,e){return e&&(pm(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function ux(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function px(t,e){const{element:i,datasetIndex:o,index:n}=e,s=t.getDatasetMeta(o).controller,{label:r,value:a}=s.getLabelAndValue(n);return{chart:t,label:r,parsed:s.getParsed(n),raw:t.data.datasets[o].data[n],formattedValue:a,dataset:s.getDataset(),dataIndex:n,datasetIndex:o,element:i}}function mx(t,e){const i=t.chart.ctx,{body:o,footer:n,title:s}=t,{boxWidth:r,boxHeight:a}=e,l=sf(e.bodyFont),d=sf(e.titleFont),c=sf(e.footerFont),h=s.length,u=n.length,p=o.length,m=nf(e.padding);let g=m.height,f=0,v=o.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(v+=t.beforeBody.length+t.afterBody.length,h&&(g+=h*d.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),v){g+=p*(e.displayColors?Math.max(a,l.lineHeight):l.lineHeight)+(v-p)*l.lineHeight+(v-1)*e.bodySpacing}u&&(g+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let y=0;const b=function(t){f=Math.max(f,i.measureText(t).width+y)};return i.save(),i.font=d.string,xm(t.title,b),i.font=l.string,xm(t.beforeBody.concat(t.afterBody),b),y=e.displayColors?r+2+e.boxPadding:0,xm(o,(t=>{xm(t.before,b),xm(t.lines,b),xm(t.after,b)})),y=0,i.font=c.string,xm(t.footer,b),i.restore(),f+=m.width,{width:f,height:g}}function gx(t,e,i,o){const{x:n,width:s}=i,{width:r,chartArea:{left:a,right:l}}=t;let d="center";return"center"===o?d=n<=(a+l)/2?"left":"right":n<=s/2?d="left":n>=r-s/2&&(d="right"),function(t,e,i,o){const{x:n,width:s}=o,r=i.caretSize+i.caretPadding;return"left"===t&&n+s+r>e.width||"right"===t&&n-s-r<0||void 0}(d,t,e,i)&&(d="center"),d}function fx(t,e,i){const o=i.yAlign||e.yAlign||function(t,e){const{y:i,height:o}=e;return i<o/2?"top":i>t.height-o/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||gx(t,e,i,o),yAlign:o}}function vx(t,e,i,o){const{caretSize:n,caretPadding:s,cornerRadius:r}=t,{xAlign:a,yAlign:l}=i,d=n+s,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=of(r);let m=function(t,e){let{x:i,width:o}=t;return"right"===e?i-=o:"center"===e&&(i-=o/2),i}(e,a);const g=function(t,e,i){let{y:o,height:n}=t;return"top"===e?o+=i:o-="bottom"===e?n+i:n/2,o}(e,l,d);return"center"===l?"left"===a?m+=d:"right"===a&&(m-=d):"left"===a?m-=Math.max(c,u)+n:"right"===a&&(m+=Math.max(h,p)+n),{x:ig(m,0,o.width-e.width),y:ig(g,0,o.height-e.height)}}function yx(t,e,i){const o=nf(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-o.right:t.x+o.left}function bx(t){return hx([],ux(t))}function xx(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const _x={beforeTitle:cm,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,o=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(o>0&&e.dataIndex<o)return i[e.dataIndex]}return""},afterTitle:cm,beforeBody:cm,beforeLabel:cm,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return um(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:cm,afterBody:cm,beforeFooter:cm,footer:cm,afterFooter:cm};function wx(t,e,i,o){const n=t[e].call(i,o);return void 0===n?_x[e].call(i,o):n}class kx extends fy{static positioners=cx;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),o=i.enabled&&e.options.animation&&i.animations,n=new rv(this.chart,o);return o._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,af(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,o=wx(i,"beforeTitle",this,t),n=wx(i,"title",this,t),s=wx(i,"afterTitle",this,t);let r=[];return r=hx(r,ux(o)),r=hx(r,ux(n)),r=hx(r,ux(s)),r}getBeforeBody(t,e){return bx(wx(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,o=[];return xm(t,(t=>{const e={before:[],lines:[],after:[]},n=xx(i,t);hx(e.before,ux(wx(n,"beforeLabel",this,t))),hx(e.lines,wx(n,"label",this,t)),hx(e.after,ux(wx(n,"afterLabel",this,t))),o.push(e)})),o}getAfterBody(t,e){return bx(wx(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,o=wx(i,"beforeFooter",this,t),n=wx(i,"footer",this,t),s=wx(i,"afterFooter",this,t);let r=[];return r=hx(r,ux(o)),r=hx(r,ux(n)),r=hx(r,ux(s)),r}_createItems(t){const e=this._active,i=this.chart.data,o=[],n=[],s=[];let r,a,l=[];for(r=0,a=e.length;r<a;++r)l.push(px(this.chart,e[r]));return t.filter&&(l=l.filter(((e,o,n)=>t.filter(e,o,n,i)))),t.itemSort&&(l=l.sort(((e,o)=>t.itemSort(e,o,i)))),xm(l,(e=>{const i=xx(t.callbacks,e);o.push(wx(i,"labelColor",this,e)),n.push(wx(i,"labelPointStyle",this,e)),s.push(wx(i,"labelTextColor",this,e))})),this.labelColors=o,this.labelPointStyles=n,this.labelTextColors=s,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),o=this._active;let n,s=[];if(o.length){const t=cx[i.position].call(this,o,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const e=this._size=mx(this,i),r=Object.assign({},t,e),a=fx(this.chart,i,r),l=vx(i,r,a,this.chart);this.xAlign=a.xAlign,this.yAlign=a.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=s,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,o){const n=this.getCaretPosition(t,i,o);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:o,yAlign:n}=this,{caretSize:s,cornerRadius:r}=i,{topLeft:a,topRight:l,bottomLeft:d,bottomRight:c}=of(r),{x:h,y:u}=t,{width:p,height:m}=e;let g,f,v,y,b,x;return"center"===n?(b=u+m/2,"left"===o?(g=h,f=g-s,y=b+s,x=b-s):(g=h+p,f=g+s,y=b-s,x=b+s),v=g):(f="left"===o?h+Math.max(a,d)+s:"right"===o?h+p-Math.max(l,c)-s:this.caretX,"top"===n?(y=u,b=y-s,g=f-s,v=f+s):(y=u+m,b=y+s,g=f+s,v=f-s),x=y),{x1:g,x2:f,x3:v,y1:y,y2:b,y3:x}}drawTitle(t,e,i){const o=this.title,n=o.length;let s,r,a;if(n){const l=Hf(i.rtl,this.x,this.width);for(t.x=yx(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",s=sf(i.titleFont),r=i.titleSpacing,e.fillStyle=i.titleColor,e.font=s.string,a=0;a<n;++a)e.fillText(o[a],l.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+r,a+1===n&&(t.y+=i.titleMarginBottom-r)}}_drawColorBox(t,e,i,o,n){const s=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:a,boxWidth:l}=n,d=sf(n.bodyFont),c=yx(this,"left",n),h=o.x(c),u=a<d.lineHeight?(d.lineHeight-a)/2:0,p=e.y+u;if(n.usePointStyle){const e={radius:Math.min(l,a)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=o.leftForLtr(h,l)+l/2,d=p+a/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Bg(t,e,i,d),t.strokeStyle=s.borderColor,t.fillStyle=s.backgroundColor,Bg(t,e,i,d)}else{t.lineWidth=mm(s.borderWidth)?Math.max(...Object.values(s.borderWidth)):s.borderWidth||1,t.strokeStyle=s.borderColor,t.setLineDash(s.borderDash||[]),t.lineDashOffset=s.borderDashOffset||0;const e=o.leftForLtr(h,l),i=o.leftForLtr(o.xPlus(h,1),l-2),r=of(s.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,Gg(t,{x:e,y:p,w:l,h:a,radius:r}),t.fill(),t.stroke(),t.fillStyle=s.backgroundColor,t.beginPath(),Gg(t,{x:i,y:p+1,w:l-2,h:a-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,l,a),t.strokeRect(e,p,l,a),t.fillStyle=s.backgroundColor,t.fillRect(i,p+1,l-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:o}=this,{bodySpacing:n,bodyAlign:s,displayColors:r,boxHeight:a,boxWidth:l,boxPadding:d}=i,c=sf(i.bodyFont);let h=c.lineHeight,u=0;const p=Hf(i.rtl,this.x,this.width),m=function(i){e.fillText(i,p.x(t.x+u),t.y+h/2),t.y+=h+n},g=p.textAlign(s);let f,v,y,b,x,_,w;for(e.textAlign=s,e.textBaseline="middle",e.font=c.string,t.x=yx(this,g,i),e.fillStyle=i.bodyColor,xm(this.beforeBody,m),u=r&&"right"!==g?"center"===s?l/2+d:l+2+d:0,b=0,_=o.length;b<_;++b){for(f=o[b],v=this.labelTextColors[b],e.fillStyle=v,xm(f.before,m),y=f.lines,r&&y.length&&(this._drawColorBox(e,t,b,p,i),h=Math.max(c.lineHeight,a)),x=0,w=y.length;x<w;++x)m(y[x]),h=c.lineHeight;xm(f.after,m)}u=0,h=c.lineHeight,xm(this.afterBody,m),t.y-=n}drawFooter(t,e,i){const o=this.footer,n=o.length;let s,r;if(n){const a=Hf(i.rtl,this.x,this.width);for(t.x=yx(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=a.textAlign(i.footerAlign),e.textBaseline="middle",s=sf(i.footerFont),e.fillStyle=i.footerColor,e.font=s.string,r=0;r<n;++r)e.fillText(o[r],a.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+i.footerSpacing}}drawBackground(t,e,i,o){const{xAlign:n,yAlign:s}=this,{x:r,y:a}=t,{width:l,height:d}=i,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=of(o.cornerRadius);e.fillStyle=o.backgroundColor,e.strokeStyle=o.borderColor,e.lineWidth=o.borderWidth,e.beginPath(),e.moveTo(r+c,a),"top"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+l-h,a),e.quadraticCurveTo(r+l,a,r+l,a+h),"center"===s&&"right"===n&&this.drawCaret(t,e,i,o),e.lineTo(r+l,a+d-p),e.quadraticCurveTo(r+l,a+d,r+l-p,a+d),"bottom"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+u,a+d),e.quadraticCurveTo(r,a+d,r,a+d-u),"center"===s&&"left"===n&&this.drawCaret(t,e,i,o),e.lineTo(r,a+c),e.quadraticCurveTo(r,a,r+c,a),e.closePath(),e.fill(),o.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,o=i&&i.x,n=i&&i.y;if(o||n){const i=cx[t.position].call(this,this._active,this._eventPosition);if(!i)return;const s=this._size=mx(this,t),r=Object.assign({},i,this._size),a=fx(e,t,r),l=vx(t,r,a,e);o._to===l.x&&n._to===l.y||(this.xAlign=a.xAlign,this.yAlign=a.yAlign,this.width=s.width,this.height=s.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const o={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=nf(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,o,e),Wf(t,e.textDirection),n.y+=s.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Zf(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,o=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!_m(i,o),s=this._positionChanged(o,e);(n||s)&&(this._active=o,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const o=this.options,n=this._active||[],s=this._getActiveElements(t,n,e,i),r=this._positionChanged(s,t),a=e||!_m(s,n)||r;return a&&(this._active=s,(o.enabled||o.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),a}_getActiveElements(t,e,i,o){const n=this.options;if("mouseout"===t.type)return[];if(!o)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const s=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&s.reverse(),s}_positionChanged(t,e){const{caretX:i,caretY:o,options:n}=this,s=cx[n.position].call(this,t,e);return!1!==s&&(i!==s.x||o!==s.y)}}var Cx={id:"tooltip",_element:kx,positioners:cx,afterInit(t,e,i){i&&(t.tooltip=new kx({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:_x},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Sx=Object.freeze({__proto__:null,Colors:zb,Decimation:Nb,Filler:ex,Legend:sx,SubTitle:dx,Title:ax,Tooltip:Cx});function Ax(t,e,i,o){const n=t.indexOf(e);if(-1===n)return((t,e,i,o)=>("string"==typeof e?(i=t.push(e)-1,o.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,o);return n!==t.lastIndexOf(e)?i:n}function Ex(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function $x(t,e){const i=[],{bounds:o,step:n,min:s,max:r,precision:a,count:l,maxTicks:d,maxDigits:c,includeBounds:h}=t,u=n||1,p=d-1,{min:m,max:g}=e,f=!um(s),v=!um(r),y=!um(l),b=(g-m)/(c+1);let x,_,w,k,C=Hm((g-m)/p/u)*u;if(C<1e-14&&!f&&!v)return[{value:m},{value:g}];k=Math.ceil(g/C)-Math.floor(m/C),k>p&&(C=Hm(k*C/p/u)*u),um(a)||(x=Math.pow(10,a),C=Math.ceil(C*x)/x),"ticks"===o?(_=Math.floor(m/C)*C,w=Math.ceil(g/C)*C):(_=m,w=g),f&&v&&n&&function(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}((r-s)/n,C/1e3)?(k=Math.round(Math.min((r-s)/C,d)),C=(r-s)/k,_=s,w=r):y?(_=f?s:_,w=v?r:w,k=l-1,C=(w-_)/k):(k=(w-_)/C,k=Vm(k,Math.round(k),C/1e3)?Math.round(k):Math.ceil(k));const S=Math.max(Km(C),Km(_));x=Math.pow(10,um(a)?S:a),_=Math.round(_*x)/x,w=Math.round(w*x)/x;let A=0;for(f&&(h&&_!==s?(i.push({value:s}),_<s&&A++,Vm(Math.round((_+A*C)*x)/x,s,Tx(s,b,t))&&A++):_<s&&A++);A<k;++A){const t=Math.round((_+A*C)*x)/x;if(v&&t>r)break;i.push({value:t})}return v&&h&&w!==r?i.length&&Vm(i[i.length-1].value,r,Tx(r,b,t))?i[i.length-1].value=r:i.push({value:r}):v&&w!==r||i.push({value:w}),i}function Tx(t,e,{horizontal:i,minRotation:o}){const n=Ym(o),s=(i?Math.sin(n):Math.cos(n))||.001,r=.75*e*(""+t).length;return Math.min(e/s,r)}class Dx extends Ay{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return um(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:n}=this;const s=t=>o=e?o:t,r=t=>n=i?n:t;if(t){const t=jm(o),e=jm(n);t<0&&e<0?r(0):t>0&&e>0&&s(0)}if(o===n){let e=0===n?1:Math.abs(.05*n);r(n+e),t||s(o-e)}this.min=o,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:o}=t;return o?(e=Math.ceil(this.max/o)-Math.floor(this.min/o)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${o} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const o=$x({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&Zm(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const o=(i-e)/Math.max(t.length-1,1)/2;e-=o,i+=o}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return Ag(t,this.chart.options.locale,this.options.ticks.format)}}class Mx extends Dx{static id="linear";static defaults={ticks:{callback:$g.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=gm(t)?t:0,this.max=gm(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=Ym(this.options.ticks.minRotation),o=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/o))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const Ix=t=>Math.floor(Um(t)),Ox=(t,e)=>Math.pow(10,Ix(t)+e);function Lx(t){return 1===t/Math.pow(10,Ix(t))}function zx(t,e,i){const o=Math.pow(10,i),n=Math.floor(t/o);return Math.ceil(e/o)-n}function Px(t,{min:e,max:i}){e=fm(t.min,e);const o=[],n=Ix(e);let s=function(t,e){let i=Ix(e-t);for(;zx(t,e,i)>10;)i++;for(;zx(t,e,i)<10;)i--;return Math.min(i,Ix(t))}(e,i),r=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=n>s?Math.pow(10,n):0,d=Math.round((e-l)*r)/r,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((d-c)/Math.pow(10,s)),u=fm(t.min,Math.round((l+c+h*Math.pow(10,s))*r)/r);for(;u<i;)o.push({value:u,major:Lx(u),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,r=s>=0?1:r),u=Math.round((l+c+h*Math.pow(10,s))*r)/r;const p=fm(t.max,u);return o.push({value:p,major:Lx(p),significand:h}),o}class Rx extends Ay{static id="logarithmic";static defaults={ticks:{callback:$g.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=Dx.prototype.parse.apply(this,[t,e]);if(0!==i)return gm(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=gm(t)?Math.max(0,t):null,this.max=gm(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!gm(this._userMin)&&(this.min=t===Ox(this.min,0)?Ox(this.min,-1):Ox(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,o=this.max;const n=e=>i=t?i:e,s=t=>o=e?o:t;i===o&&(i<=0?(n(1),s(10)):(n(Ox(i,-1)),s(Ox(o,1)))),i<=0&&n(Ox(o,-1)),o<=0&&s(Ox(i,1)),this.min=i,this.max=o}buildTicks(){const t=this.options,e=Px({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&Zm(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":Ag(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=Um(t),this._valueRange=Um(this.max)-Um(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(Um(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Nx(t){const e=t.ticks;if(e.display&&t.display){const t=nf(e.backdropPadding);return vm(e.font&&e.font.size,Lg.font.size)+t.height}return 0}function Bx(t,e,i,o,n){return t===o||t===n?{start:e-i/2,end:e+i/2}:t<o||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Fx(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),o=[],n=[],s=t._pointLabels.length,r=t.options.pointLabels,a=r.centerPointLabels?Lm/s:0;for(let h=0;h<s;h++){const s=r.setContext(t.getPointLabelContext(h));n[h]=s.padding;const u=t.getPointPosition(h,t.drawingArea+n[h],a),p=sf(s.font),m=(l=t.ctx,d=p,c=pm(c=t._pointLabels[h])?c:[c],{w:Pg(l,d.string,c),h:c.length*d.lineHeight});o[h]=m;const g=tg(t.getIndexAngle(h)+a),f=Math.round(Gm(g));qx(i,e,g,Bx(f,u.x,m.w,0,180),Bx(f,u.y,m.h,90,270))}var l,d,c;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const o=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:r,display:a}=s.pointLabels,l={extra:Nx(s)/2,additionalAngle:r?Lm/n:0};let d;for(let s=0;s<n;s++){l.padding=i[s],l.size=e[s];const n=Ux(t,s,l);o.push(n),"auto"===a&&(n.visible=jx(n,d),n.visible&&(d=n))}return o}(t,o,n)}function qx(t,e,i,o,n){const s=Math.abs(Math.sin(i)),r=Math.abs(Math.cos(i));let a=0,l=0;o.start<e.l?(a=(e.l-o.start)/s,t.l=Math.min(t.l,e.l-a)):o.end>e.r&&(a=(o.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),n.start<e.t?(l=(e.t-n.start)/r,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}function Ux(t,e,i){const o=t.drawingArea,{extra:n,additionalAngle:s,padding:r,size:a}=i,l=t.getPointPosition(e,o+n+r,s),d=Math.round(Gm(tg(l.angle+Bm))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,a.h,d),h=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(d),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:u,top:c,right:u+a.w,bottom:c+a.h}}function jx(t,e){if(!e)return!0;const{left:i,top:o,right:n,bottom:s}=t;return!(qg({x:i,y:o},e)||qg({x:i,y:s},e)||qg({x:n,y:o},e)||qg({x:n,y:s},e))}function Vx(t,e,i){const{left:o,top:n,right:s,bottom:r}=i,{backdropColor:a}=e;if(!um(a)){const i=of(e.borderRadius),l=nf(e.backdropPadding);t.fillStyle=a;const d=o-l.left,c=n-l.top,h=s-o+l.width,u=r-n+l.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),Gg(t,{x:d,y:c,w:h,h:u,radius:i}),t.fill()):t.fillRect(d,c,h,u)}}function Hx(t,e,i,o){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,zm);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let s=1;s<o;s++)i=t.getPointPosition(s,e),n.lineTo(i.x,i.y)}}class Wx extends Dx{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:$g.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=nf(Nx(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=gm(t)&&!isNaN(t)?t:0,this.max=gm(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Nx(this.options))}generateTickLabels(t){Dx.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=bm(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Fx(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,o){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-o)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,o))}getIndexAngle(t){return tg(t*(zm/(this._pointLabels.length||1))+Ym(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(um(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(um(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return af(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const o=this.getIndexAngle(t)-Bm+i;return{x:Math.cos(o)*e+this.xCenter,y:Math.sin(o)*e+this.yCenter,angle:o}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:o,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:o,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Hx(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:o,border:n}=e,s=this._pointLabels.length;let r,a,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:o}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const s=o.setContext(t.getPointLabelContext(n));Vx(i,s,e);const r=sf(s.font),{x:a,y:l,textAlign:d}=e;Yg(i,t._pointLabels[n],a,l+r.lineHeight/2,r,{color:s.color,textAlign:d,textBaseline:"middle"})}}(this,s),o.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){a=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),r=o.setContext(i),l=n.setContext(i);!function(t,e,i,o,n){const s=t.ctx,r=e.circular,{color:a,lineWidth:l}=e;!r&&!o||!a||!l||i<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),Hx(t,i,r,o),s.closePath(),s.stroke(),s.restore())}(this,r,a,s,l)}})),i.display){for(t.save(),r=s-1;r>=0;r--){const o=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:s}=o;s&&n&&(t.lineWidth=s,t.strokeStyle=n,t.setLineDash(o.borderDash),t.lineDashOffset=o.borderDashOffset,a=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(r,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const o=this.getIndexAngle(0);let n,s;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(o),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((o,r)=>{if(0===r&&this.min>=0&&!e.reverse)return;const a=i.setContext(this.getContext(r)),l=sf(a.font);if(n=this.getDistanceFromCenterForValue(this.ticks[r].value),a.showLabelBackdrop){t.font=l.string,s=t.measureText(o.label).width,t.fillStyle=a.backdropColor;const e=nf(a.backdropPadding);t.fillRect(-s/2-e.left,-n-l.size/2-e.top,s+e.width,l.size+e.height)}Yg(t,o.label,0,-n,l,{color:a.color,strokeColor:a.textStrokeColor,strokeWidth:a.textStrokeWidth})})),t.restore()}drawTitle(){}}const Zx={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Yx=Object.keys(Zx);function Gx(t,e){return t-e}function Kx(t,e){if(um(e))return null;const i=t._adapter,{parser:o,round:n,isoWeekday:s}=t._parseOpts;let r=e;return"function"==typeof o&&(r=o(r)),gm(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null===r?null:(n&&(r="week"!==n||!Wm(s)&&!0!==s?i.startOf(r,n):i.startOf(r,"isoWeek",s)),+r)}function Xx(t,e,i,o){const n=Yx.length;for(let s=Yx.indexOf(t);s<n-1;++s){const t=Zx[Yx[s]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=o)return Yx[s]}return Yx[n-1]}function Qx(t,e,i){if(i){if(i.length){const{lo:o,hi:n}=ng(i,e);t[i[o]>=e?i[o]:i[n]]=!0}}else t[e]=!0}function Jx(t,e,i){const o=[],n={},s=e.length;let r,a;for(r=0;r<s;++r)a=e[r],n[a]=r,o.push({value:a,major:!1});return 0!==s&&i?function(t,e,i,o){const n=t._adapter,s=+n.startOf(e[0].value,o),r=e[e.length-1].value;let a,l;for(a=s;a<=r;a=+n.add(a,1,o))l=i[a],l>=0&&(e[l].major=!0);return e}(t,o,n,i):o}class t_ extends Ay{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),o=this._adapter=new Iv._date(t.adapters.date);o.init(e),Am(i.displayFormats,o.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Kx(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:o,max:n,minDefined:s,maxDefined:r}=this.getUserBounds();function a(t){s||isNaN(t.min)||(o=Math.min(o,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}s&&r||(a(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||a(this.getMinMax(!1))),o=gm(o)&&!isNaN(o)?o:+e.startOf(Date.now(),i),n=gm(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(o,n-1),this.max=Math.max(o+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,o="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&o.length&&(this.min=this._userMin||o[0],this.max=this._userMax||o[o.length-1]);const n=this.min,s=function(t,e,i){let o=0,n=t.length;for(;o<n&&t[o]<e;)o++;for(;n>o&&t[n-1]>i;)n--;return o>0||n<t.length?t.slice(o,n):t}(o,n,this.max);return this._unit=e.unit||(i.autoSkip?Xx(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,o,n){for(let s=Yx.length-1;s>=Yx.indexOf(i);s--){const i=Yx[s];if(Zx[i].common&&t._adapter.diff(n,o,i)>=e-1)return i}return Yx[i?Yx.indexOf(i):0]}(this,s.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Yx.indexOf(t)+1,i=Yx.length;e<i;++e)if(Zx[Yx[e]].common)return Yx[e]}(this._unit):void 0,this.initOffsets(o),t.reverse&&s.reverse(),Jx(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,o=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),o=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const s=t.length<3?.5:.25;o=ig(o,0,s),n=ig(n,0,s),this._offsets={start:o,end:n,factor:1/(o+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,o=this.options,n=o.time,s=n.unit||Xx(n.minUnit,e,i,this._getLabelCapacity(e)),r=vm(o.ticks.stepSize,1),a="week"===s&&n.isoWeekday,l=Wm(a)||!0===a,d={};let c,h,u=e;if(l&&(u=+t.startOf(u,"isoWeek",a)),u=+t.startOf(u,l?"day":s),t.diff(i,e,s)>1e5*r)throw new Error(e+" and "+i+" are too far apart with stepSize of "+r+" "+s);const p="data"===o.ticks.source&&this.getDataTimestamps();for(c=u,h=0;c<i;c=+t.add(c,r,s),h++)Qx(d,c,p);return c!==i&&"ticks"!==o.bounds&&1!==h||Qx(d,c,p),Object.keys(d).sort(Gx).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,o=this._unit,n=e||i[o];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,o){const n=this.options,s=n.ticks.callback;if(s)return bm(s,[t,e,i],this);const r=n.time.displayFormats,a=this._unit,l=this._majorUnit,d=a&&r[a],c=l&&r[l],h=i[e],u=l&&c&&h&&h.major;return this._adapter.format(t,o||(u?c:d))}generateTickLabels(t){let e,i,o;for(e=0,i=t.length;e<i;++e)o=t[e],o.label=this._tickFormatFunction(o.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,o=Ym(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(o),s=Math.sin(o),r=this._resolveTickFontOptions(0).size;return{w:i*n+r*s,h:i*s+r*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,o=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,Jx(this,[t],this._majorUnit),o),s=this._getLabelSize(n),r=Math.floor(this.isHorizontal()?this.width/s.w:this.height/s.h)-1;return r>0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const o=this.getMatchingVisibleMetas();if(this._normalized&&o.length)return this._cache.data=o[0].controller.getAllParsedValues(this);for(t=0,e=o.length;t<e;++t)i=i.concat(o[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const o=this.getLabels();for(e=0,i=o.length;e<i;++e)t.push(Kx(this,o[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return dg(t.sort(Gx))}}function e_(t,e,i){let o,n,s,r,a=0,l=t.length-1;i?(e>=t[a].pos&&e<=t[l].pos&&({lo:a,hi:l}=sg(t,"pos",e)),({pos:o,time:s}=t[a]),({pos:n,time:r}=t[l])):(e>=t[a].time&&e<=t[l].time&&({lo:a,hi:l}=sg(t,"time",e)),({time:o,pos:s}=t[a]),({time:n,pos:r}=t[l]));const d=n-o;return d?s+(r-s)*(e-o)/d:s}var i_=Object.freeze({__proto__:null,CategoryScale:class extends Ay{static id="category";static defaults={ticks:{callback:Ex}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:o}of e)t[i]===o&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(um(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:ig(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Ax(i,t,vm(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:o}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(o=this.getLabels().length-1)),this.min=i,this.max=o}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,o=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)o.push({value:i});return o}getLabelForValue(t){return Ex.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:Mx,LogarithmicScale:Rx,RadialLinearScale:Wx,TimeScale:t_,TimeSeriesScale:class extends t_{static id="timeseries";static defaults=t_.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=e_(e,this.min),this._tableRange=e_(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,o=[],n=[];let s,r,a,l,d;for(s=0,r=t.length;s<r;++s)l=t[s],l>=e&&l<=i&&o.push(l);if(o.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(s=0,r=o.length;s<r;++s)d=o[s+1],a=o[s-1],l=o[s],Math.round((d+a)/2)!==l&&n.push({time:l,pos:s/(r-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(e_(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return e_(this._table,i*this._tableRange+this._minPos,!0)}}});const o_=[Tv,$b,Sx,i_];ob.register(...o_);
11060
+ */class ov{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,o){const n=e.listeners[o],s=e.duration;n.forEach((o=>o({chart:t,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)})))}_refresh(){this._request||(this._running=!0,this._request=ug.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,o)=>{if(!i.running||!i.items.length)return;const n=i.items;let s,r=n.length-1,a=!1;for(;r>=0;--r)s=n[r],s._active?(s._total>i.duration&&(i.duration=s._total),s.tick(t),a=!0):(n[r]=n[n.length-1],n.pop());a&&(o.draw(),this._notify(o,i,t,"progress")),n.length||(i.running=!1,this._notify(o,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var nv=new ov;const sv="transparent",rv={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const o=kg(t||sv),n=o.valid&&kg(e||sv);return n&&n.valid?n.mix(o,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class av{constructor(t,e,i,o){const n=e[i];o=lf([t.to,o,n,t.from]);const s=lf([t.from,n,o]);this._active=!0,this._fn=t.fn||rv[t.type||typeof s],this._easing=_g[t.easing]||_g.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],n=i-this._start,s=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(s,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=lf([t.to,e,o,t.from]),this._from=lf([t.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,o=this._prop,n=this._from,s=this._loop,r=this._to;let a;if(this._active=n!==r&&(s||e<i),!this._active)return this._target[o]=r,void this._notify(!0);e<0?this._target[o]=n:(a=e/i%2,a=s&&a>1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[o]=this._fn(n,r,a))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class lv{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!fm(t))return;const e=Object.keys(Pg.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((o=>{const n=t[o];if(!fm(n))return;const s={};for(const t of e)s[t]=n[t];(gm(n.properties)&&n.properties||[o]).forEach((t=>{t!==o&&i.has(t)||i.set(t,s)}))}))}_animateOptions(t,e){const i=e.options,o=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!o)return[];const n=this._createAnimations(o,i);return i.$shared&&function(t,e){const i=[],o=Object.keys(e);for(let e=0;e<o.length;e++){const n=t[o[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,o=[],n=t.$animations||(t.$animations={}),s=Object.keys(e),r=Date.now();let a;for(a=s.length-1;a>=0;--a){const l=s[a];if("$"===l.charAt(0))continue;if("options"===l){o.push(...this._animateOptions(t,e));continue}const d=e[l];let c=n[l];const h=i.get(l);if(c){if(h&&c.active()){c.update(h,d,r);continue}c.cancel()}h&&h.duration?(n[l]=c=new av(h,t,l,d),o.push(c)):t[l]=d}return o}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(nv.add(this._chart,i),!0):void 0}}function dv(t,e){const i=t&&t.options||{},o=i.reverse,n=void 0===i.min?e:0,s=void 0===i.max?e:0;return{start:o?s:n,end:o?n:s}}function cv(t,e){const i=[],o=t._getSortedDatasetMetas(e);let n,s;for(n=0,s=o.length;n<s;++n)i.push(o[n].index);return i}function hv(t,e,i,o={}){const n=t.keys,s="single"===o.mode;let r,a,l,d;if(null===e)return;let c=!1;for(r=0,a=n.length;r<a;++r){if(l=+n[r],l===i){if(c=!0,o.all)continue;break}d=t.values[l],vm(d)&&(s||0===e||Hm(e)===Hm(d))&&(e+=d)}return c||o.all?e:0}function uv(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function pv(t,e,i){const o=t[e]||(t[e]={});return o[i]||(o[i]={})}function mv(t,e,i,o){for(const n of e.getMatchingVisibleMetas(o).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function gv(t,e){const{chart:i,_cachedMeta:o}=t,n=i._stacks||(i._stacks={}),{iScale:s,vScale:r,index:a}=o,l=s.axis,d=r.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(s,r,o),h=e.length;let u;for(let t=0;t<h;++t){const i=e[t],{[l]:s,[d]:h}=i;u=(i._stacks||(i._stacks={}))[d]=pv(n,c,s),u[a]=h,u._top=mv(u,r,!0,o.type),u._bottom=mv(u,r,!1,o.type);(u._visualValues||(u._visualValues={}))[a]=h}}function fv(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function vv(t,e){const i=t.controller.index,o=t.vScale&&t.vScale.axis;if(o){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[o]||void 0===e[o][i])return;delete e[o][i],void 0!==e[o]._visualValues&&void 0!==e[o]._visualValues[i]&&delete e[o]._visualValues[i]}}}const yv=t=>"reset"===t||"none"===t,bv=(t,e)=>e?t:Object.assign({},t);class xv{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=uv(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&vv(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),o=(t,e,i,o)=>"x"===t?e:"r"===t?o:i,n=e.xAxisID=bm(i.xAxisID,fv(t,"x")),s=e.yAxisID=bm(i.yAxisID,fv(t,"y")),r=e.rAxisID=bm(i.rAxisID,fv(t,"r")),a=e.indexAxis,l=e.iAxisID=o(a,n,s,r),d=e.vAxisID=o(a,s,n,r);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(s),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&cg(this._data,this),t._stacked&&vv(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(fm(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:o}=e,n="x"===i.axis?"x":"y",s="x"===o.axis?"x":"y",r=Object.keys(t),a=new Array(r.length);let l,d,c;for(l=0,d=r.length;l<d;++l)c=r[l],a[l]={[n]:c,[s]:t[c]};return a}(e,t)}else if(i!==e){if(i){cg(i,this);const t=this._cachedMeta;vv(t),t._parsed=[]}e&&Object.isExtensible(e)&&(n=this,(o=e)._chartjs?o._chartjs.listeners.push(n):(Object.defineProperty(o,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[n]}}),dg.forEach((t=>{const e="_onData"+Im(t),i=o[t];Object.defineProperty(o,t,{configurable:!0,enumerable:!1,value(...t){const n=i.apply(this,t);return o._chartjs.listeners.forEach((i=>{"function"==typeof i[e]&&i[e](...t)})),n}})})))),this._syncList=[],this._data=e}var o,n}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let o=!1;this._dataCheck();const n=e._stacked;e._stacked=uv(e.vScale,e),e.stack!==i.stack&&(o=!0,vv(e),e.stack=i.stack),this._resyncElements(t),(o||n!==e._stacked)&&(gv(this,e._parsed),e._stacked=uv(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:o}=this,{iScale:n,_stacked:s}=i,r=n.axis;let a,l,d,c=0===t&&e===o.length||i._sorted,h=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=gm(o[t])?this.parseArrayData(i,o,t,e):fm(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const n=()=>null===l[r]||h&&l[r]<h[r];for(a=0;a<e;++a)i._parsed[a+t]=l=d[a],c&&(n()&&(c=!1),h=l);i._sorted=c}s&&gv(this,d)}parsePrimitiveData(t,e,i,o){const{iScale:n,vScale:s}=t,r=n.axis,a=s.axis,l=n.getLabels(),d=n===s,c=new Array(o);let h,u,p;for(h=0,u=o;h<u;++h)p=h+i,c[h]={[r]:d||n.parse(l[p],p),[a]:s.parse(e[p],p)};return c}parseArrayData(t,e,i,o){const{xScale:n,yScale:s}=t,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={x:n.parse(c[0],d),y:s.parse(c[1],d)};return r}parseObjectData(t,e,i,o){const{xScale:n,yScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l=new Array(o);let d,c,h,u;for(d=0,c=o;d<c;++d)h=d+i,u=e[h],l[d]={x:n.parse(Mm(u,r),h),y:s.parse(Mm(u,a),h)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const o=this.chart,n=this._cachedMeta,s=e[t.axis];return hv({keys:cv(o,!0),values:e._stacks[t.axis]._visualValues},s,n.index,{mode:i})}updateRangeFromParsed(t,e,i,o){const n=i[e.axis];let s=null===n?NaN:n;const r=o&&i._stacks[e.axis];o&&r&&(o.values=r,s=hv(o,n,this._cachedMeta.index)),t.min=Math.min(t.min,s),t.max=Math.max(t.max,s)}getMinMax(t,e){const i=this._cachedMeta,o=i._parsed,n=i._sorted&&t===i.iScale,s=o.length,r=this._getOtherScale(t),a=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:cv(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:d,max:c}=function(t){const{min:e,max:i,minDefined:o,maxDefined:n}=t.getUserBounds();return{min:o?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let h,u;function p(){u=o[h];const e=u[r.axis];return!vm(u[t.axis])||d>e||c<e}for(h=0;h<s&&(p()||(this.updateRangeFromParsed(l,t,u,a),!n));++h);if(n)for(h=s-1;h>=0;--h)if(!p()){this.updateRangeFromParsed(l,t,u,a);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let o,n,s;for(o=0,n=e.length;o<n;++o)s=e[o][t.axis],vm(s)&&i.push(s);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,o=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:o?""+o.getLabelForValue(n[o.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,o,n;return fm(t)?(e=t.top,i=t.right,o=t.bottom,n=t.left):e=i=o=n=t,{top:e,right:i,bottom:o,left:n,disabled:!1===t}}(bm(this.options.clip,function(t,e,i){if(!1===i)return!1;const o=dv(t,i),n=dv(e,i);return{top:n.end,right:o.end,bottom:n.start,left:o.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,o=i.data||[],n=e.chartArea,s=[],r=this._drawStart||0,a=this._drawCount||o.length-r,l=this.options.drawActiveElementsOnTop;let d;for(i.dataset&&i.dataset.draw(t,n,r,a),d=r;d<r+a;++d){const e=o[d];e.hidden||(e.active&&l?s.push(e):e.draw(t,n))}for(d=0;d<s.length;++d)s[d].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const o=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return df(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=o.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return df(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=o,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const o="active"===e,n=this._cachedDataOpts,s=t+"-"+e,r=n[s],a=this.enableOptionSharing&&Om(i);if(r)return bv(r,a);const l=this.chart.config,d=l.datasetElementScopeKeys(this._type,t),c=o?[`${t}Hover`,"hover",t,""]:[t,""],h=l.getOptionScopes(this.getDataset(),d),u=Object.keys(Pg.elements[t]),p=l.resolveNamedOptions(h,u,(()=>this.getContext(i,o,e)),c);return p.$shared&&(p.$shared=a,n[s]=Object.freeze(bv(p,a))),p}_resolveAnimations(t,e,i){const o=this.chart,n=this._cachedDataOpts,s=`animation-${e}`,r=n[s];if(r)return r;let a;if(!1!==o.options.animation){const o=this.chart.config,n=o.datasetAnimationScopeKeys(this._type,e),s=o.getOptionScopes(this.getDataset(),n);a=o.createResolver(s,this.getContext(t,i,e))}const l=new lv(o,a&&a.animations);return a&&a._cacheable&&(n[s]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||yv(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),o=this._sharedOptions,n=this.getSharedOptions(i),s=this.includeOptions(e,n)||n!==o;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:s}}updateElement(t,e,i,o){yv(o)?Object.assign(t,i):this._resolveAnimations(e,o).update(t,i)}updateSharedOptions(t,e,i){t&&!yv(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,o){t.active=o;const n=this.getStyle(e,o);this._resolveAnimations(e,i,o).update(t,{options:!o&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const o=i.length,n=e.length,s=Math.min(n,o);s&&this.parse(0,s),n>o?this._insertElements(o,n-o,t):n<o&&this._removeElements(n,o-n)}_insertElements(t,e,i=!0){const o=this._cachedMeta,n=o.data,s=t+e;let r;const a=t=>{for(t.length+=e,r=t.length-1;r>=s;r--)t[r]=t[r-e]};for(a(n),r=t;r<s;++r)n[r]=new this.dataElementType;this._parsing&&a(o._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,o){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const o=i._parsed.splice(t,e);i._stacked&&vv(i,o)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,o]=t;this[e](i,o)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function _v(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let o=[];for(let e=0,n=i.length;e<n;e++)o=o.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=hg(o.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let o,n,s,r,a=e._length;const l=()=>{32767!==s&&-32768!==s&&(Om(r)&&(a=Math.min(a,Math.abs(s-r)||a)),r=s)};for(o=0,n=i.length;o<n;++o)s=e.getPixelForValue(i[o]),l();for(r=void 0,o=0,n=e.ticks.length;o<n;++o)s=e.getPixelForTick(o),l();return a}function wv(t,e,i,o){return gm(t)?function(t,e,i,o){const n=i.parse(t[0],o),s=i.parse(t[1],o),r=Math.min(n,s),a=Math.max(n,s);let l=r,d=a;Math.abs(r)>Math.abs(a)&&(l=a,d=r),e[i.axis]=d,e._custom={barStart:l,barEnd:d,start:n,end:s,min:r,max:a}}(t,e,i,o):e[i.axis]=i.parse(t,o),e}function kv(t,e,i,o){const n=t.iScale,s=t.vScale,r=n.getLabels(),a=n===s,l=[];let d,c,h,u;for(d=i,c=i+o;d<c;++d)u=e[d],h={},h[n.axis]=a||n.parse(r[d],d),l.push(wv(u,h,s,d));return l}function Cv(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Sv(t,e,i,o){let n=e.borderSkipped;const s={};if(!n)return void(t.borderSkipped=s);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:r,end:a,reverse:l,top:d,bottom:c}=function(t){let e,i,o,n,s;return t.horizontal?(e=t.base>t.x,i="left",o="right"):(e=t.base<t.y,i="bottom",o="top"),e?(n="end",s="start"):(n="start",s="end"),{start:i,end:o,reverse:e,top:n,bottom:s}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===o?n=d:(i._bottom||0)===o?n=c:(s[Av(c,r,a,l)]=!0,n=d)),s[Av(n,r,a,l)]=!0,t.borderSkipped=s}function Av(t,e,i,o){var n,s,r;return o?(r=i,t=Ev(t=(n=t)===(s=e)?r:n===r?s:n,i,e)):t=Ev(t,e,i),t}function Ev(t,e,i){return"start"===t?e:"end"===t?i:t}function $v(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class Tv extends xv{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map(((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,o=this._cachedMeta;if(!1===this._parsing)o._parsed=i;else{let n,s,r=t=>+i[t];if(fm(i[t])){const{key:t="value"}=this._parsing;r=e=>+Mm(i[e],t)}for(n=t,s=t+e;n<s;++n)o._parsed[n]=r(n)}}_getRotation(){return Km(this.options.rotation-90)}_getCircumference(){return Km(this.options.circumference)}_getRotationExtents(){let t=Rm,e=-Rm;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const o=this.chart.getDatasetMeta(i).controller,n=o._getRotation(),s=o._getCircumference();t=Math.min(t,n),e=Math.max(e,n+s)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,o=this._cachedMeta,n=o.data,s=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,r=Math.max((Math.min(i.width,i.height)-s)/2,0),a=Math.min((l=this.options.cutout,d=r,"string"==typeof l&&l.endsWith("%")?parseFloat(l)/100:+l/d),1);var l,d;const c=this._getRingWeight(this.index),{circumference:h,rotation:u}=this._getRotationExtents(),{ratioX:p,ratioY:m,offsetX:g,offsetY:f}=function(t,e,i){let o=1,n=1,s=0,r=0;if(e<Rm){const a=t,l=a+e,d=Math.cos(a),c=Math.sin(a),h=Math.cos(l),u=Math.sin(l),p=(t,e,o)=>og(t,a,l,!0)?1:Math.max(e,e*i,o,o*i),m=(t,e,o)=>og(t,a,l,!0)?-1:Math.min(e,e*i,o,o*i),g=p(0,d,h),f=p(qm,c,u),v=m(Pm,d,h),y=m(Pm+qm,c,u);o=(g-v)/2,n=(f-y)/2,s=-(g+v)/2,r=-(f+y)/2}return{ratioX:o,ratioY:n,offsetX:s,offsetY:r}}(u,h,a),v=(i.width-s)/p,y=(i.height-s)/m,b=Math.max(Math.min(v,y)/2,0),x=xm(this.options.radius,b),_=(x-Math.max(x*a,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*x,this.offsetY=f*x,o.total=this.calculateTotal(),this.outerRadius=x-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,o=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===o._parsed[t]||o.data[t].hidden?0:this.calculateCircumference(o._parsed[t]*n/Rm)}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.chartArea,a=s.options.animation,l=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=n&&a.animateScale,h=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:p,includeOptions:m}=this._getSharedOptions(e,o);let g,f=this._getRotation();for(g=0;g<e;++g)f+=this._circumference(g,n);for(g=e;g<e+i;++g){const e=this._circumference(g,n),i=t[g],s={x:l+this.offsetX,y:d+this.offsetY,startAngle:f,endAngle:f+e,circumference:e,outerRadius:u,innerRadius:h};m&&(s.options=p||this.resolveDataElementOptions(g,i.active?"active":o)),f+=e,this.updateElement(i,g,s,o)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,o=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(o+=Math.abs(n))}return o}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?Rm*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=$g(e._parsed[t],i.options.locale);return{label:o[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let o,n,s,r,a;if(!t)for(o=0,n=i.data.datasets.length;o<n;++o)if(i.isDatasetVisible(o)){s=i.getDatasetMeta(o),t=s.data,r=s.controller;break}if(!t)return 0;for(o=0,n=t.length;o<n;++o)a=r.resolveDataElementOptions(o),"inner"!==a.borderAlign&&(e=Math.max(e,a.borderWidth||0,a.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,o=t.length;i<o;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(bm(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Dv extends xv{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map(((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=$g(e._parsed[t].r,i.options.locale);return{label:o[t]||"",value:n}}parseObjectData(t,e,i,o){return kf.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const o=this.getParsed(i).r;!isNaN(o)&&this.chart.getDataVisibility(i)&&(o<e.min&&(e.min=o),o>e.max&&(e.max=o))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,o=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(o/2,0),s=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-s*this.index,this.innerRadius=this.outerRadius-s}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.options.animation,a=this._cachedMeta.rScale,l=a.xCenter,d=a.yCenter,c=a.getIndexAngle(0)-.5*Pm;let h,u=c;const p=360/this.countVisibleElements();for(h=0;h<e;++h)u+=this._computeAngle(h,o,p);for(h=e;h<e+i;h++){const e=t[h];let i=u,m=u+this._computeAngle(h,o,p),g=s.getDataVisibility(h)?a.getDistanceFromCenterForValue(this.getParsed(h).r):0;u=m,n&&(r.animateScale&&(g=0),r.animateRotate&&(i=m=c));const f={x:l,y:d,innerRadius:0,outerRadius:g,startAngle:i,endAngle:m,options:this.resolveDataElementOptions(h,e.active?"active":o)};this.updateElement(e,h,f,o)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?Km(this.resolveDataElementOptions(t,e).angle||i):0}}var Mv=Object.freeze({__proto__:null,BarController:class extends xv{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,o){return kv(t,e,i,o)}parseArrayData(t,e,i,o){return kv(t,e,i,o)}parseObjectData(t,e,i,o){const{iScale:n,vScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l="x"===n.axis?r:a,d="x"===s.axis?r:a,c=[];let h,u,p,m;for(h=i,u=i+o;h<u;++h)m=e[h],p={},p[n.axis]=n.parse(Mm(m,l),h),c.push(wv(Mm(m,d),p,s,h));return c}updateRangeFromParsed(t,e,i,o){super.updateRangeFromParsed(t,e,i,o);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:o}=e,n=this.getParsed(t),s=n._custom,r=Cv(s)?"["+s.start+", "+s.end+"]":""+o.getLabelForValue(n[o.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:r}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,o){const n="reset"===o,{index:s,_cachedMeta:{vScale:r}}=this,a=r.getBasePixel(),l=r.isHorizontal(),d=this._getRuler(),{sharedOptions:c,includeOptions:h}=this._getSharedOptions(e,o);for(let u=e;u<e+i;u++){const e=this.getParsed(u),i=n||mm(e[r.axis])?{base:a,head:a}:this._calculateBarValuePixels(u),p=this._calculateBarIndexPixels(u,d),m=(e._stacks||{})[r.axis],g={horizontal:l,base:i.base,enableBorderRadius:!m||Cv(e._custom)||s===m._top||s===m._bottom,x:l?i.head:p.center,y:l?p.center:i.head,height:l?p.size:Math.abs(i.size),width:l?Math.abs(i.size):p.size};h&&(g.options=c||this.resolveDataElementOptions(u,t[u].active?"active":o));const f=g.options||t[u].options;Sv(g,f,m,s),$v(g,f,d.ratio),this.updateElement(t[u],u,g,o)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,o=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),n=i.options.stacked,s=[],r=this._cachedMeta.controller.getParsed(e),a=r&&r[i.axis],l=t=>{const e=t._parsed.find((t=>t[i.axis]===a)),o=e&&e[t.vScale.axis];if(mm(o)||isNaN(o))return!0};for(const i of o)if((void 0===e||!l(i))&&((!1===n||-1===s.indexOf(i.stack)||void 0===n&&void 0===i.stack)&&s.push(i.stack),i.index===t))break;return s.length||s.push(void 0),s}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const o=this._getStacks(t,i),n=void 0!==e?o.indexOf(e):-1;return-1===n?o.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,o=[];let n,s;for(n=0,s=e.data.length;n<s;++n)o.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const r=t.barThickness;return{min:r||_v(e),pixels:o,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:r?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:o},options:{base:n,minBarLength:s}}=this,r=n||0,a=this.getParsed(t),l=a._custom,d=Cv(l);let c,h,u=a[e.axis],p=0,m=i?this.applyStack(e,a,i):u;m!==u&&(p=m-u,m=u),d&&(u=l.barStart,m=l.barEnd-l.barStart,0!==u&&Hm(u)!==Hm(l.barEnd)&&(p=0),p+=u);const g=mm(n)||d?p:n;let f=e.getPixelForValue(g);if(c=this.chart.getDataVisibility(t)?e.getPixelForValue(p+m):f,h=c-f,Math.abs(h)<s){h=function(t,e,i){return 0!==t?Hm(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(h,e,r)*s,u===r&&(f-=h/2);const t=e.getPixelForDecimal(0),n=e.getPixelForDecimal(1),l=Math.min(t,n),p=Math.max(t,n);f=Math.max(Math.min(f,p),l),c=f+h,i&&!d&&(a._stacks[e.axis]._visualValues[o]=e.getValueForPixel(c)-e.getValueForPixel(f))}if(f===e.getPixelForValue(r)){const t=Hm(h)*e.getLineWidthForValue(r)/2;f+=t,h-=t}return{size:h,base:f,head:c,center:c+h/2}}_calculateBarIndexPixels(t,e){const i=e.scale,o=this.options,n=o.skipNull,s=bm(o.maxBarThickness,1/0);let r,a;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===o.barThickness?function(t,e,i,o){const n=e.pixels,s=n[t];let r=t>0?n[t-1]:null,a=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===r&&(r=s-(null===a?e.end-e.start:a-s)),null===a&&(a=s+s-r);const d=s-(s-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/o,ratio:i.barPercentage,start:d}}(t,e,o,i):function(t,e,i,o){const n=i.barThickness;let s,r;return mm(n)?(s=e.min*i.categoryPercentage,r=i.barPercentage):(s=n*o,r=1),{chunk:s/o,ratio:r,start:e.pixels[t]-s/2}}(t,e,o,i),d=this._getStackIndex(this.index,this._cachedMeta.stack,n?t:void 0);r=l.start+l.chunk*d+l.chunk/2,a=Math.min(s,l.chunk*l.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),a=Math.min(s,e.min*e.ratio);return{base:r-a/2,head:r+a/2,center:r,size:a}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,o=i.length;let n=0;for(;n<o;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends xv{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,o){const n=super.parsePrimitiveData(t,e,i,o);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,o){const n=super.parseArrayData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=bm(o[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,o){const n=super.parseObjectData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=bm(o&&o.r&&+o.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y),l=s._custom;return{label:i[t]||"",value:"("+r+", "+a+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r}=this._cachedMeta,{sharedOptions:a,includeOptions:l}=this._getSharedOptions(e,o),d=s.axis,c=r.axis;for(let h=e;h<e+i;h++){const e=t[h],i=!n&&this.getParsed(h),u={},p=u[d]=n?s.getPixelForDecimal(.5):s.getPixelForValue(i[d]),m=u[c]=n?r.getBasePixel():r.getPixelForValue(i[c]);u.skip=isNaN(p)||isNaN(m),l&&(u.options=a||this.resolveDataElementOptions(h,e.active?"active":o),n&&(u.options.radius=0)),this.updateElement(e,h,u,o)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let o=super.resolveDataElementOptions(t,e);o.$shared&&(o=Object.assign({},o,{$shared:!1}));const n=o.radius;return"active"!==e&&(o.radius=0),o.radius+=bm(i&&i._custom,n),o}},DoughnutController:Tv,LineController:class extends xv{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:o=[],_dataset:n}=e,s=this.chart._animationsDisabled;let{start:r,count:a}=fg(e,o,s);this._drawStart=r,this._drawCount=a,vg(e)&&(r=0,a=o.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=o;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:l},t),this.updateElements(o,r,a,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,{sharedOptions:d,includeOptions:c}=this._getSharedOptions(e,o),h=s.axis,u=r.axis,{spanGaps:p,segment:m}=this.options,g=Ym(p)?p:Number.POSITIVE_INFINITY,f=this.chart._animationsDisabled||n||"none"===o,v=e+i,y=t.length;let b=e>0&&this.getParsed(e-1);for(let i=0;i<y;++i){const p=t[i],y=f?p:{};if(i<e||i>=v){y.skip=!0;continue}const x=this.getParsed(i),_=mm(x[u]),w=y[h]=s.getPixelForValue(x[h],i),k=y[u]=n||_?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,x,a):x[u],i);y.skip=isNaN(w)||isNaN(k)||_,y.stop=i>0&&Math.abs(x[h]-b[h])>g,m&&(y.parsed=x,y.raw=l.data[i]),c&&(y.options=d||this.resolveDataElementOptions(i,p.active?"active":o)),f||this.updateElement(p,i,y,o),b=x}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,o=t.data||[];if(!o.length)return i;const n=o[0].size(this.resolveDataElementOptions(0)),s=o[o.length-1].size(this.resolveDataElementOptions(o.length-1));return Math.max(i,n,s)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends Tv{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Dv,RadarController:class extends xv{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,o){return kf.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta,i=e.dataset,o=e.data||[],n=e.iScale.getLabels();if(i.points=o,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const s={_loop:!0,_fullLoop:n.length===o.length,options:e};this.updateElement(i,void 0,s,t)}this.updateElements(o,0,o.length,t)}updateElements(t,e,i,o){const n=this._cachedMeta.rScale,s="reset"===o;for(let r=e;r<e+i;r++){const e=t[r],i=this.resolveDataElementOptions(r,e.active?"active":o),a=n.getPointPositionForValue(r,this.getParsed(r).r),l=s?n.xCenter:a.x,d=s?n.yCenter:a.y,c={x:l,y:d,angle:a.angle,skip:isNaN(l)||isNaN(d),options:i};this.updateElement(e,r,c,o)}}},ScatterController:class extends xv{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y);return{label:i[t]||"",value:"("+r+", "+a+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,o=this.chart._animationsDisabled;let{start:n,count:s}=fg(e,i,o);if(this._drawStart=n,this._drawCount=s,vg(e)&&(n=0,s=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:s}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const r=this.resolveDatasetElementOptions(t);r.segment=this.options.segment,this.updateElement(n,void 0,{animated:!o,options:r},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,s,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,d=this.resolveDataElementOptions(e,o),c=this.getSharedOptions(d),h=this.includeOptions(o,c),u=s.axis,p=r.axis,{spanGaps:m,segment:g}=this.options,f=Ym(m)?m:Number.POSITIVE_INFINITY,v=this.chart._animationsDisabled||n||"none"===o;let y=e>0&&this.getParsed(e-1);for(let d=e;d<e+i;++d){const e=t[d],i=this.getParsed(d),m=v?e:{},b=mm(i[p]),x=m[u]=s.getPixelForValue(i[u],d),_=m[p]=n||b?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,i,a):i[p],d);m.skip=isNaN(x)||isNaN(_)||b,m.stop=d>0&&Math.abs(i[u]-y[u])>f,g&&(m.parsed=i,m.raw=l.data[d]),h&&(m.options=c||this.resolveDataElementOptions(d,e.active?"active":o)),v||this.updateElement(e,d,m,o),y=i}this.updateSharedOptions(c,o,d)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,o=i.options&&i.options.borderWidth||0;if(!e.length)return o;const n=e[0].size(this.resolveDataElementOptions(0)),s=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(o,n,s)/2}}});function Iv(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Ov{static override(t){Object.assign(Ov.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Iv()}parse(){return Iv()}format(){return Iv()}add(){return Iv()}diff(){return Iv()}startOf(){return Iv()}endOf(){return Iv()}}var Lv={_date:Ov};function zv(t,e,i,o){const{controller:n,data:s,_sorted:r}=t,a=n._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&e===a.axis&&"r"!==e&&r&&s.length){const r=a._reversePixels?lg:ag;if(!o){const o=r(s,e,i);if(l){const{vScale:e}=n._cachedMeta,{_parsed:i}=t,s=i.slice(0,o.lo+1).reverse().findIndex((t=>!mm(t[e.axis])));o.lo-=Math.max(0,s);const r=i.slice(o.hi).findIndex((t=>!mm(t[e.axis])));o.hi+=Math.max(0,r)}return o}if(n._sharedOptions){const t=s[0],o="function"==typeof t.getRange&&t.getRange(e);if(o){const t=r(s,e,i-o),n=r(s,e,i+o);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:s.length-1}}function Pv(t,e,i,o,n){const s=t.getSortedVisibleDatasetMetas(),r=i[e];for(let t=0,i=s.length;t<i;++t){const{index:i,data:a}=s[t],{lo:l,hi:d}=zv(s[t],e,r,n);for(let t=l;t<=d;++t){const e=a[t];e.skip||o(e,i,t)}}}function Rv(t,e,i,o,n){const s=[];if(!n&&!t.isPointInArea(e))return s;return Pv(t,i,e,(function(i,r,a){(n||jg(i,t.chartArea,0))&&i.inRange(e.x,e.y,o)&&s.push({element:i,datasetIndex:r,index:a})}),!0),s}function Nv(t,e,i,o,n,s){let r=[];const a=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,o){const n=e?Math.abs(t.x-o.x):0,s=i?Math.abs(t.y-o.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(s,2))}}(i);let l=Number.POSITIVE_INFINITY;return Pv(t,i,e,(function(i,d,c){const h=i.inRange(e.x,e.y,n);if(o&&!h)return;const u=i.getCenterPoint(n);if(!(!!s||t.isPointInArea(u))&&!h)return;const p=a(e,u);p<l?(r=[{element:i,datasetIndex:d,index:c}],l=p):p===l&&r.push({element:i,datasetIndex:d,index:c})})),r}function Bv(t,e,i,o,n,s){return s||t.isPointInArea(e)?"r"!==i||o?Nv(t,e,i,o,n,s):function(t,e,i,o){let n=[];return Pv(t,i,e,(function(t,i,s){const{startAngle:r,endAngle:a}=t.getProps(["startAngle","endAngle"],o),{angle:l}=Jm(t,{x:e.x,y:e.y});og(l,r,a)&&n.push({element:t,datasetIndex:i,index:s})})),n}(t,e,i,n):[]}function Fv(t,e,i,o,n){const s=[],r="x"===i?"inXRange":"inYRange";let a=!1;return Pv(t,i,e,((t,o,l)=>{t[r]&&t[r](e[i],n)&&(s.push({element:t,datasetIndex:o,index:l}),a=a||t.inRange(e.x,e.y,n))})),o&&!a?[]:s}var qv={evaluateInteractionItems:Pv,modes:{index(t,e,i,o){const n=Nf(e,t),s=i.axis||"x",r=i.includeInvisible||!1,a=i.intersect?Rv(t,n,s,o,r):Bv(t,n,s,!1,o,r),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,o){const n=Nf(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;let a=i.intersect?Rv(t,n,s,o,r):Bv(t,n,s,!1,o,r);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;t<i.length;++t)a.push({element:i[t],datasetIndex:e,index:t})}return a},point:(t,e,i,o)=>Rv(t,Nf(e,t),i.axis||"xy",o,i.includeInvisible||!1),nearest(t,e,i,o){const n=Nf(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;return Bv(t,n,s,i.intersect,o,r)},x:(t,e,i,o)=>Fv(t,Nf(e,t),"x",i.intersect,o),y:(t,e,i,o)=>Fv(t,Nf(e,t),"y",i.intersect,o)}};const Uv=["left","top","right","bottom"];function jv(t,e){return t.filter((t=>t.pos===e))}function Vv(t,e){return t.filter((t=>-1===Uv.indexOf(t.pos)&&t.box.axis===e))}function Hv(t,e){return t.sort(((t,i)=>{const o=e?i:t,n=e?t:i;return o.weight===n.weight?o.index-n.index:o.weight-n.weight}))}function Wv(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:o,stackWeight:n}=i;if(!t||!Uv.includes(o))continue;const s=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=n}return e}(t),{vBoxMaxWidth:o,hBoxMaxHeight:n}=e;let s,r,a;for(s=0,r=t.length;s<r;++s){a=t[s];const{fullSize:r}=a.box,l=i[a.stack],d=l&&a.stackWeight/l.weight;a.horizontal?(a.width=d?d*o:r&&e.availableWidth,a.height=n):(a.width=o,a.height=d?d*n:r&&e.availableHeight)}return i}function Zv(t,e,i,o){return Math.max(t[i],e[i])+Math.max(t[o],e[o])}function Yv(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Gv(t,e,i,o){const{pos:n,box:s}=i,r=t.maxPadding;if(!fm(n)){i.size&&(t[n]-=i.size);const e=o[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?s.height:s.width),i.size=e.size/e.count,t[n]+=i.size}s.getPadding&&Yv(r,s.getPadding());const a=Math.max(0,e.outerWidth-Zv(r,t,"left","right")),l=Math.max(0,e.outerHeight-Zv(r,t,"top","bottom")),d=a!==t.w,c=l!==t.h;return t.w=a,t.h=l,i.horizontal?{same:d,other:c}:{same:c,other:d}}function Kv(t,e){const i=e.maxPadding;function o(t){const o={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{o[t]=Math.max(e[t],i[t])})),o}return o(t?["left","right"]:["top","bottom"])}function Xv(t,e,i,o){const n=[];let s,r,a,l,d,c;for(s=0,r=t.length,d=0;s<r;++s){a=t[s],l=a.box,l.update(a.width||e.w,a.height||e.h,Kv(a.horizontal,e));const{same:r,other:h}=Gv(e,i,a,o);d|=r&&n.length,c=c||h,l.fullSize||n.push(a)}return d&&Xv(n,e,i,o)||c}function Qv(t,e,i,o,n){t.top=i,t.left=e,t.right=e+o,t.bottom=i+n,t.width=o,t.height=n}function Jv(t,e,i,o){const n=i.padding;let{x:s,y:r}=e;for(const a of t){const t=a.box,l=o[a.stack]||{count:1,placed:0,weight:1},d=a.stackWeight/l.weight||1;if(a.horizontal){const o=e.w*d,s=l.size||t.height;Om(l.start)&&(r=l.start),t.fullSize?Qv(t,n.left,r,i.outerWidth-n.right-n.left,s):Qv(t,e.left+l.placed,r,o,s),l.start=r,l.placed+=o,r=t.bottom}else{const o=e.h*d,r=l.size||t.width;Om(l.start)&&(s=l.start),t.fullSize?Qv(t,s,n.top,r,i.outerHeight-n.bottom-n.top):Qv(t,s,e.top+l.placed,r,o),l.start=s,l.placed+=o,s=t.right}}e.x=s,e.y=r}var ty={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,o){if(!t)return;const n=rf(t.options.layout.padding),s=Math.max(e-n.width,0),r=Math.max(i-n.height,0),a=function(t){const e=function(t){const e=[];let i,o,n,s,r,a;for(i=0,o=(t||[]).length;i<o;++i)n=t[i],({position:s,options:{stack:r,stackWeight:a=1}}=n),e.push({index:i,box:n,pos:s,horizontal:n.isHorizontal(),weight:n.weight,stack:r&&s+r,stackWeight:a});return e}(t),i=Hv(e.filter((t=>t.box.fullSize)),!0),o=Hv(jv(e,"left"),!0),n=Hv(jv(e,"right")),s=Hv(jv(e,"top"),!0),r=Hv(jv(e,"bottom")),a=Vv(e,"x"),l=Vv(e,"y");return{fullSize:i,leftAndTop:o.concat(s),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:jv(e,"chartArea"),vertical:o.concat(n).concat(l),horizontal:s.concat(r).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;wm(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,h=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:s,availableHeight:r,vBoxMaxWidth:s/2/c,hBoxMaxHeight:r/2}),u=Object.assign({},n);Yv(u,rf(o));const p=Object.assign({maxPadding:u,w:s,h:r,x:n.left,y:n.top},n),m=Wv(l.concat(d),h);Xv(a.fullSize,p,h,m),Xv(l,p,h,m),Xv(d,p,h,m)&&Xv(l,p,h,m),function(t){const e=t.maxPadding;function i(i){const o=Math.max(e[i]-t[i],0);return t[i]+=o,o}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(p),Jv(a.leftAndTop,p,h,m),p.x+=p.w,p.y+=p.h,Jv(a.rightAndBottom,p,h,m),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},wm(a.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})}))}};class ey{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,o){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(t){return!0}updateConfig(t){}}class iy extends ey{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const oy="$chartjs",ny={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},sy=t=>null===t||""===t;const ry=!!Uf&&{passive:!0};function ay(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,ry)}function ly(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function dy(t,e,i){const o=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ly(i.addedNodes,o),e=e&&!ly(i.removedNodes,o);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function cy(t,e,i){const o=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ly(i.removedNodes,o),e=e&&!ly(i.addedNodes,o);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const hy=new Map;let uy=0;function py(){const t=window.devicePixelRatio;t!==uy&&(uy=t,hy.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function my(t,e,i){const o=t.canvas,n=o&&If(o);if(!n)return;const s=pg(((t,e)=>{const o=n.clientWidth;i(t,e),o<n.clientWidth&&i()}),window),r=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,o=e.contentRect.height;0===i&&0===o||s(i,o)}));return r.observe(n),function(t,e){hy.size||window.addEventListener("resize",py),hy.set(t,e)}(t,s),r}function gy(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){hy.delete(t),hy.size||window.removeEventListener("resize",py)}(t)}function fy(t,e,i){const o=t.canvas,n=pg((e=>{null!==t.ctx&&i(function(t,e){const i=ny[t.type]||t.type,{x:o,y:n}=Nf(t,e);return{type:i,chart:e,native:t,x:void 0!==o?o:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,ry)}(o,e,n),n}class vy extends ey{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,o=t.getAttribute("height"),n=t.getAttribute("width");if(t[oy]={initial:{height:o,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",sy(n)){const e=jf(t,"width");void 0!==e&&(t.width=e)}if(sy(o))if(""===t.style.height)t.height=t.width/(e||2);else{const e=jf(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[oy])return!1;const i=e[oy].initial;["height","width"].forEach((t=>{const o=i[t];mm(o)?e.removeAttribute(t):e.setAttribute(t,o)}));const o=i.style||{};return Object.keys(o).forEach((t=>{e.style[t]=o[t]})),e.width=e.width,delete e[oy],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const o=t.$proxies||(t.$proxies={}),n={attach:dy,detach:cy,resize:my}[e]||fy;o[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),o=i[e];if(!o)return;({attach:gy,detach:gy,resize:gy}[e]||ay)(t,e,o),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,o){return Ff(t,e,i,o)}isAttached(t){const e=t&&If(t);return!(!e||!e.isConnected)}}let yy=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return Ym(this.x)&&Ym(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const o={};return t.forEach((t=>{o[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),o}};function by(t,e){const i=t.options.ticks,o=function(t){const e=t.options.offset,i=t._tickSize(),o=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(o,n))}(t),n=Math.min(i.maxTicksLimit||o,o),s=i.major.enabled?function(t){const e=[];let i,o;for(i=0,o=t.length;i<o;i++)t[i].major&&e.push(i);return e}(e):[],r=s.length,a=s[0],l=s[r-1],d=[];if(r>n)return function(t,e,i,o){let n,s=0,r=i[0];for(o=Math.ceil(o),n=0;n<t.length;n++)n===r&&(e.push(t[n]),s++,r=i[s*o])}(e,d,s,r/n),d;const c=function(t,e,i){const o=function(t){const e=t.length;let i,o;if(e<2)return!1;for(o=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==o)return!1;return o}(t),n=e.length/i;if(!o)return Math.max(n,1);const s=function(t){const e=[],i=Math.sqrt(t);let o;for(o=1;o<i;o++)t%o==0&&(e.push(o),e.push(t/o));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}(o);for(let t=0,e=s.length-1;t<e;t++){const e=s[t];if(e>n)return e}return Math.max(n,1)}(s,e,n);if(r>0){let t,i;const o=r>1?Math.round((l-a)/(r-1)):null;for(xy(e,d,c,mm(o)?0:a-o,a),t=0,i=r-1;t<i;t++)xy(e,d,c,s[t],s[t+1]);return xy(e,d,c,l,mm(o)?e.length:l+o),d}return xy(e,d,c),d}function xy(t,e,i,o,n){const s=bm(o,0),r=Math.min(bm(n,t.length),t.length);let a,l,d,c=0;for(i=Math.ceil(i),n&&(a=n-o,i=a/Math.floor(a/i)),d=s;d<0;)c++,d=Math.round(s+c*i);for(l=Math.max(s,0);l<r;l++)l===d&&(e.push(t[l]),c++,d=Math.round(s+c*i))}const _y=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,wy=(t,e)=>Math.min(e||t,t);function ky(t,e){const i=[],o=t.length/e,n=t.length;let s=0;for(;s<n;s+=o)i.push(t[Math.floor(s)]);return i}function Cy(t,e,i){const o=t.ticks.length,n=Math.min(e,o-1),s=t._startPixel,r=t._endPixel,a=1e-6;let l,d=t.getPixelForTick(n);if(!(i&&(l=1===o?Math.max(d-s,r-d):0===e?(t.getPixelForTick(1)-d)/2:(d-t.getPixelForTick(n-1))/2,d+=n<e?l:-l,d<s-a||d>r+a)))return d}function Sy(t){return t.drawTicks?t.tickLength:0}function Ay(t,e){if(!t.display)return 0;const i=af(t.font,e),o=rf(t.padding);return(gm(t.text)?t.text.length:1)*i.lineHeight+o.height}function Ey(t,e,i){let o=mg(t);return(i&&"right"!==e||!i&&"right"===e)&&(o=(t=>"left"===t?"right":"right"===t?"left":t)(o)),o}class $y extends yy{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return t=ym(t,Number.POSITIVE_INFINITY),e=ym(e,Number.NEGATIVE_INFINITY),i=ym(i,Number.POSITIVE_INFINITY),o=ym(o,Number.NEGATIVE_INFINITY),{min:ym(t,i),max:ym(e,o),minDefined:vm(t),maxDefined:vm(e)}}getMinMax(t){let e,{min:i,max:o,minDefined:n,maxDefined:s}=this.getUserBounds();if(n&&s)return{min:i,max:o};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;a<l;++a)e=r[a].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),s||(o=Math.max(o,e.max));return i=s&&i>o?o:i,o=n&&i>o?i:o,{min:ym(i,ym(o,i)),max:ym(o,ym(i,o))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){_m(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:o,grace:n,ticks:s}=this.options,r=s.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(t,e,i){const{min:o,max:n}=t,s=xm(e,(n-o)/2),r=(t,e)=>i&&0===t?0:t+e;return{min:r(o,-Math.abs(s)),max:r(n,s)}}(this,n,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=r<this.ticks.length;this._convertTicksToLabels(a?ky(this.ticks,r):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),s.display&&(s.autoSkip||"auto"===s.source)&&(this.ticks=by(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),a&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){_m(this.options.afterUpdate,[this])}beforeSetDimensions(){_m(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){_m(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),_m(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){_m(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,o,n;for(i=0,o=t.length;i<o;i++)n=t[i],n.label=_m(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){_m(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){_m(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=wy(this.ticks.length,t.ticks.maxTicksLimit),o=e.minRotation||0,n=e.maxRotation;let s,r,a,l=o;if(!this._isVisible()||!e.display||o>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const d=this._getLabelSizes(),c=d.widest.width,h=d.highest.height,u=ng(this.chart.width-c,0,this.maxWidth);s=t.offset?this.maxWidth/i:u/(i-1),c+6>s&&(s=u/(i-(t.offset?.5:1)),r=this.maxHeight-Sy(t.grid)-e.padding-Ay(t.title,this.chart.options.font),a=Math.sqrt(c*c+h*h),l=Xm(Math.min(Math.asin(ng((d.highest.height+6)/s,-1,1)),Math.asin(ng(r/a,-1,1))-Math.asin(ng(h/a,-1,1)))),l=Math.max(o,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){_m(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){_m(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:n}}=this,s=this._isVisible(),r=this.isHorizontal();if(s){const s=Ay(o,e.options.font);if(r?(t.width=this.maxWidth,t.height=Sy(n)+s):(t.height=this.maxHeight,t.width=Sy(n)+s),i.display&&this.ticks.length){const{first:e,last:o,widest:n,highest:s}=this._getLabelSizes(),a=2*i.padding,l=Km(this.labelRotation),d=Math.cos(l),c=Math.sin(l);if(r){const e=i.mirror?0:c*n.width+d*s.height;t.height=Math.min(this.maxHeight,t.height+e+a)}else{const e=i.mirror?0:d*n.width+c*s.height;t.width=Math.min(this.maxWidth,t.width+e+a)}this._calculatePadding(e,o,c,d)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,o){const{ticks:{align:n,padding:s},position:r}=this.options,a=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){const r=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,h=0;a?l?(c=o*t.width,h=i*e.height):(c=i*t.height,h=o*e.width):"start"===n?h=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,h=e.width/2),this.paddingLeft=Math.max((c-r+s)*this.width/(this.width-r),0),this.paddingRight=Math.max((h-d+s)*this.width/(this.width-d),0)}else{let i=e.height/2,o=t.height/2;"start"===n?(i=0,o=t.height):"end"===n&&(i=e.height,o=0),this.paddingTop=i+s,this.paddingBottom=o+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){_m(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)mm(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=ky(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:n}=this,s=[],r=[],a=Math.floor(e/wy(e,i));let l,d,c,h,u,p,m,g,f,v,y,b=0,x=0;for(l=0;l<e;l+=a){if(h=t[l].label,u=this._resolveTickFontOptions(l),o.font=p=u.string,m=n[p]=n[p]||{data:{},gc:[]},g=u.lineHeight,f=v=0,mm(h)||gm(h)){if(gm(h))for(d=0,c=h.length;d<c;++d)y=h[d],mm(y)||gm(y)||(f=Rg(o,m.data,m.gc,f,y),v+=g)}else f=Rg(o,m.data,m.gc,f,h),v=g;s.push(f),r.push(v),b=Math.max(f,b),x=Math.max(v,x)}!function(t,e){wm(t,(t=>{const i=t.gc,o=i.length/2;let n;if(o>e){for(n=0;n<o;++n)delete t.data[i[n]];i.splice(0,o)}}))}(n,e);const _=s.indexOf(b),w=r.indexOf(x),k=t=>({width:s[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(_),highest:k(w),widths:s,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return ng(this._alignToPixels?Bg(this.chart,e,0):e,-32768,32767)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return df(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=df(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=Km(this.labelRotation),i=Math.abs(Math.cos(e)),o=Math.abs(Math.sin(e)),n=this._getLabelSizes(),s=t.autoSkipPadding||0,r=n?n.widest.width+s:0,a=n?n.highest.height+s:0;return this.isHorizontal()?a*i>r*o?r/i:a/o:a*o<r*i?a/i:r/o}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,o=this.options,{grid:n,position:s,border:r}=o,a=n.offset,l=this.isHorizontal(),d=this.ticks.length+(a?1:0),c=Sy(n),h=[],u=r.setContext(this.getContext()),p=u.display?u.width:0,m=p/2,g=function(t){return Bg(i,t,p)};let f,v,y,b,x,_,w,k,C,S,A,E;if("top"===s)f=g(this.bottom),_=this.bottom-c,k=f-m,S=g(t.top)+m,E=t.bottom;else if("bottom"===s)f=g(this.top),S=t.top,E=g(t.bottom)-m,_=f+m,k=this.top+c;else if("left"===s)f=g(this.right),x=this.right-c,w=f-m,C=g(t.left)+m,A=t.right;else if("right"===s)f=g(this.left),C=t.left,A=g(t.right)-m,x=f+m,w=this.left+c;else if("x"===e){if("center"===s)f=g((t.top+t.bottom)/2+.5);else if(fm(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}S=t.top,E=t.bottom,_=f+m,k=_+c}else if("y"===e){if("center"===s)f=g((t.left+t.right)/2);else if(fm(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}x=f-m,w=x-c,C=t.left,A=t.right}const $=bm(o.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/$));for(v=0;v<d;v+=T){const t=this.getContext(v),e=n.setContext(t),o=r.setContext(t),s=e.lineWidth,d=e.color,c=o.dash||[],u=o.dashOffset,p=e.tickWidth,m=e.tickColor,g=e.tickBorderDash||[],f=e.tickBorderDashOffset;y=Cy(this,v,a),void 0!==y&&(b=Bg(i,y,s),l?x=w=C=A=b:_=k=S=E=b,h.push({tx1:x,ty1:_,tx2:w,ty2:k,x1:C,y1:S,x2:A,y2:E,width:s,color:d,borderDash:c,borderDashOffset:u,tickWidth:p,tickColor:m,tickBorderDash:g,tickBorderDashOffset:f}))}return this._ticksLength=d,this._borderValue=f,h}_computeLabelItems(t){const e=this.axis,i=this.options,{position:o,ticks:n}=i,s=this.isHorizontal(),r=this.ticks,{align:a,crossAlign:l,padding:d,mirror:c}=n,h=Sy(i.grid),u=h+d,p=c?-d:u,m=-Km(this.labelRotation),g=[];let f,v,y,b,x,_,w,k,C,S,A,E,$="middle";if("top"===o)_=this.bottom-p,w=this._getXAxisLabelAlignment();else if("bottom"===o)_=this.top+p,w=this._getXAxisLabelAlignment();else if("left"===o){const t=this._getYAxisLabelAlignment(h);w=t.textAlign,x=t.x}else if("right"===o){const t=this._getYAxisLabelAlignment(h);w=t.textAlign,x=t.x}else if("x"===e){if("center"===o)_=(t.top+t.bottom)/2+u;else if(fm(o)){const t=Object.keys(o)[0],e=o[t];_=this.chart.scales[t].getPixelForValue(e)+u}w=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===o)x=(t.left+t.right)/2-u;else if(fm(o)){const t=Object.keys(o)[0],e=o[t];x=this.chart.scales[t].getPixelForValue(e)}w=this._getYAxisLabelAlignment(h).textAlign}"y"===e&&("start"===a?$="top":"end"===a&&($="bottom"));const T=this._getLabelSizes();for(f=0,v=r.length;f<v;++f){y=r[f],b=y.label;const t=n.setContext(this.getContext(f));k=this.getPixelForTick(f)+n.labelOffset,C=this._resolveTickFontOptions(f),S=C.lineHeight,A=gm(b)?b.length:1;const e=A/2,i=t.color,a=t.textStrokeColor,d=t.textStrokeWidth;let h,u=w;if(s?(x=k,"inner"===w&&(u=f===v-1?this.options.reverse?"left":"right":0===f?this.options.reverse?"right":"left":"center"),E="top"===o?"near"===l||0!==m?-A*S+S/2:"center"===l?-T.highest.height/2-e*S+S:-T.highest.height+S/2:"near"===l||0!==m?S/2:"center"===l?T.highest.height/2-e*S:T.highest.height-A*S,c&&(E*=-1),0===m||t.showLabelBackdrop||(x+=S/2*Math.sin(m))):(_=k,E=(1-A)*S/2),t.showLabelBackdrop){const e=rf(t.backdropPadding),i=T.heights[f],o=T.widths[f];let n=E-e.top,s=0-e.left;switch($){case"middle":n-=i/2;break;case"bottom":n-=i}switch(w){case"center":s-=o/2;break;case"right":s-=o;break;case"inner":f===v-1?s-=o:f>0&&(s-=o/2)}h={left:s,top:n,width:o+e.width,height:i+e.height,color:t.backdropColor}}g.push({label:b,font:C,textOffset:E,options:{rotation:m,color:i,strokeColor:a,strokeWidth:d,textAlign:u,textBaseline:$,translation:[x,_],backdrop:h}})}return g}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-Km(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:o,padding:n}}=this.options,s=t+n,r=this._getLabelSizes().widest.width;let a,l;return"left"===e?o?(l=this.right+n,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l+=r)):(l=this.right-s,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l=this.left)):"right"===e?o?(l=this.left+n,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l-=r)):(l=this.left+s,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l=this.right)):a="right",{textAlign:a,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:o,width:n,height:s}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,o,n,s),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,s;const r=(t,e,o)=>{o.width&&o.color&&(i.save(),i.lineWidth=o.width,i.strokeStyle=o.color,i.setLineDash(o.borderDash||[]),i.lineDashOffset=o.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,s=o.length;n<s;++n){const t=o[n];e.drawOnChartArea&&r({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&r({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:o}}=this,n=i.setContext(this.getContext()),s=i.display?n.width:0;if(!s)return;const r=o.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let l,d,c,h;this.isHorizontal()?(l=Bg(t,this.left,s)-s/2,d=Bg(t,this.right,r)+r/2,c=h=a):(c=Bg(t,this.top,s)-s/2,h=Bg(t,this.bottom,r)+r/2,l=d=a),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(d,h),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Vg(e,i);const o=this.getLabelItems(t);for(const t of o){const i=t.options,o=t.font;Kg(e,t.label,0,t.textOffset,o,i)}i&&Hg(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:o}}=this;if(!i.display)return;const n=af(i.font),s=rf(i.padding),r=i.align;let a=n.lineHeight/2;"bottom"===e||"center"===e||fm(e)?(a+=s.bottom,gm(i.text)&&(a+=n.lineHeight*(i.text.length-1))):a+=s.top;const{titleX:l,titleY:d,maxWidth:c,rotation:h}=function(t,e,i,o){const{top:n,left:s,bottom:r,right:a,chart:l}=t,{chartArea:d,scales:c}=l;let h,u,p,m=0;const g=r-n,f=a-s;if(t.isHorizontal()){if(u=gg(o,s,a),fm(i)){const t=Object.keys(i)[0],o=i[t];p=c[t].getPixelForValue(o)+g-e}else p="center"===i?(d.bottom+d.top)/2+g-e:_y(t,i,e);h=a-s}else{if(fm(i)){const t=Object.keys(i)[0],o=i[t];u=c[t].getPixelForValue(o)-f+e}else u="center"===i?(d.left+d.right)/2-f+e:_y(t,i,e);p=gg(o,r,n),m="left"===i?-qm:qm}return{titleX:u,titleY:p,maxWidth:h,rotation:m}}(this,a,e,r);Kg(t,i.text,0,0,n,{color:i.color,maxWidth:c,rotation:h,textAlign:Ey(r,e,o),textBaseline:"middle",translation:[l,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=bm(t.grid&&t.grid.z,-1),o=bm(t.border&&t.border.z,0);return this._isVisible()&&this.draw===$y.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let n,s;for(n=0,s=e.length;n<s;++n){const s=e[n];s[i]!==this.id||t&&s.type!==t||o.push(s)}return o}_resolveTickFontOptions(t){return af(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Ty{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const o=this.items,n=t.id,s=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in o||(o[n]=t,function(t,e,i){const o=Em(Object.create(null),[i?Pg.get(i):{},Pg.get(e),t.defaults]);Pg.set(e,o),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const o=i.split("."),n=o.pop(),s=[t].concat(o).join("."),r=e[i].split("."),a=r.pop(),l=r.join(".");Pg.route(s,n,l,a)}))}(e,t.defaultRoutes);t.descriptors&&Pg.describe(e,t.descriptors)}(t,s,i),this.override&&Pg.override(t.id,t.overrides)),s}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,o=this.scope;i in e&&delete e[i],o&&i in Pg[o]&&(delete Pg[o][i],this.override&&delete Mg[i])}}class Dy{constructor(){this.controllers=new Ty(xv,"datasets",!0),this.elements=new Ty(yy,"elements"),this.plugins=new Ty(Object,"plugins"),this.scales=new Ty($y,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const o=i||this._getRegistryForType(e);i||o.isForType(e)||o===this.plugins&&e.id?this._exec(t,o,e):wm(e,(e=>{const o=i||this._getRegistryForType(e);this._exec(t,o,e)}))}))}_exec(t,e,i){const o=Im(t);_m(i["before"+o],[],i),e[t](i),_m(i["after"+o],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const o=e.get(t);if(void 0===o)throw new Error('"'+t+'" is not a registered '+i+".");return o}}var My=new Dy;class Iy{constructor(){this._init=[]}notify(t,e,i,o){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=o?this._descriptors(t).filter(o):this._descriptors(t),s=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),s}_notify(t,e,i,o){o=o||{};for(const n of t){const t=n.plugin;if(!1===_m(t[i],[e,o,n.options],t)&&o.cancelable)return!1}return!0}invalidate(){mm(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,o=bm(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],o=Object.keys(My.plugins.items);for(let t=0;t<o.length;t++)i.push(My.getPlugin(o[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const o=n[t];-1===i.indexOf(o)&&(i.push(o),e[o.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==o||e?function(t,{plugins:e,localIds:i},o,n){const s=[],r=t.getContext();for(const a of e){const e=a.id,l=Oy(o[e],n);null!==l&&s.push({plugin:a,options:Ly(t.config,{plugin:a,local:i[e]},l,r)})}return s}(t,n,o,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,o=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(o(e,i),t,"stop"),this._notify(o(i,e),t,"start")}}function Oy(t,e){return e||!1!==t?!0===t?{}:t:null}function Ly(t,{plugin:e,local:i},o,n){const s=t.pluginScopeKeys(e),r=t.getOptionScopes(o,s);return i&&e.defaults&&r.push(e.defaults),t.createResolver(r,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function zy(t,e){const i=Pg.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Py(t){if("x"===t||"y"===t||"r"===t)return t}function Ry(t,...e){if(Py(t))return t;for(const o of e){const e=o.axis||("top"===(i=o.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&Py(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function Ny(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function By(t,e){const i=Mg[t.type]||{scales:{}},o=e.scales||{},n=zy(t.type,e),s=Object.create(null);return Object.keys(o).forEach((e=>{const r=o[e];if(!fm(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const a=Ry(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return Ny(t,"x",i[0])||Ny(t,"y",i[0])}return{}}(e,t),Pg.scales[r.type]),l=function(t,e){return t===e?"_index_":"_value_"}(a,n),d=i.scales||{};s[e]=$m(Object.create(null),[{axis:a},r,d[a],d[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||zy(n,e),a=(Mg[n]||{}).scales||{};Object.keys(a).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||e;s[n]=s[n]||Object.create(null),$m(s[n],[{axis:e},o[n],a[t]])}))})),Object.keys(s).forEach((t=>{const e=s[t];$m(e,[Pg.scales[e.type],Pg.scale])})),s}function Fy(t){const e=t.options||(t.options={});e.plugins=bm(e.plugins,{}),e.scales=By(t,e)}function qy(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const Uy=new Map,jy=new Set;function Vy(t,e){let i=Uy.get(t);return i||(i=e(),Uy.set(t,i),jy.add(i)),i}const Hy=(t,e,i)=>{const o=Mm(e,i);void 0!==o&&t.add(o)};class Wy{constructor(t){this._config=function(t){return(t=t||{}).data=qy(t.data),Fy(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=qy(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Fy(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Vy(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Vy(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Vy(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Vy(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let o=i.get(t);return o&&!e||(o=new Map,i.set(t,o)),o}getOptionScopes(t,e,i){const{options:o,type:n}=this,s=this._cachedScopes(t,i),r=s.get(e);if(r)return r;const a=new Set;e.forEach((e=>{t&&(a.add(t),e.forEach((e=>Hy(a,t,e)))),e.forEach((t=>Hy(a,o,t))),e.forEach((t=>Hy(a,Mg[n]||{},t))),e.forEach((t=>Hy(a,Pg,t))),e.forEach((t=>Hy(a,Ig,t)))}));const l=Array.from(a);return 0===l.length&&l.push(Object.create(null)),jy.has(e)&&s.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,Mg[e]||{},Pg.datasets[e]||{},{type:e},Pg,Ig]}resolveNamedOptions(t,e,i,o=[""]){const n={$shared:!0},{resolver:s,subPrefixes:r}=Zy(this._resolverCache,t,o);let a=s;if(function(t,e){const{isScriptable:i,isIndexable:o}=uf(t);for(const n of e){const e=i(n),s=o(n),r=(s||e)&&t[n];if(e&&(Lm(r)||Yy(r))||s&&gm(r))return!0}return!1}(s,e)){n.$shared=!1;a=hf(s,i=Lm(i)?i():i,this.createResolver(t,i,r))}for(const t of e)n[t]=a[t];return n}createResolver(t,e,i=[""],o){const{resolver:n}=Zy(this._resolverCache,t,i);return fm(e)?hf(n,e,void 0,o):n}}function Zy(t,e,i){let o=t.get(e);o||(o=new Map,t.set(e,o));const n=i.join();let s=o.get(n);if(!s){s={resolver:cf(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},o.set(n,s)}return s}const Yy=t=>fm(t)&&Object.getOwnPropertyNames(t).some((e=>Lm(t[e])));const Gy=["top","bottom","left","right","chartArea"];function Ky(t,e){return"top"===t||"bottom"===t||-1===Gy.indexOf(t)&&"x"===e}function Xy(t,e){return function(i,o){return i[t]===o[t]?i[e]-o[e]:i[t]-o[t]}}function Qy(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),_m(i&&i.onComplete,[t],e)}function Jy(t){const e=t.chart,i=e.options.animation;_m(i&&i.onProgress,[t],e)}function tb(t){return Mf()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const eb={},ib=t=>{const e=tb(t);return Object.values(eb).filter((t=>t.canvas===e)).pop()};function ob(t,e,i){const o=Object.keys(t);for(const n of o){const o=+n;if(o>=e){const s=t[n];delete t[n],(i>0||o>e)&&(t[o+i]=s)}}}function nb(t,e,i){return t.options.clip?t[i]:e[i]}class sb{static defaults=Pg;static instances=eb;static overrides=Mg;static registry=My;static version="4.4.8";static getChart=ib;static register(...t){My.add(...t),rb()}static unregister(...t){My.remove(...t),rb()}constructor(t,e){const i=this.config=new Wy(e),o=tb(t),n=ib(o);if(n)throw new Error("Canvas is already in use. Chart with ID '"+n.id+"' must be destroyed before the canvas with ID '"+n.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||function(t){return!Mf()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?iy:vy}(o)),this.platform.updateConfig(i);const r=this.platform.acquireContext(o,s.aspectRatio),a=r&&r.canvas,l=a&&a.height,d=a&&a.width;this.id=pm(),this.ctx=r,this.canvas=a,this.width=d,this.height=l,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Iy,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(t,e){let i;return function(...o){return e?(clearTimeout(i),i=setTimeout(t,e,o)):t.apply(this,o),e}}((t=>this.update(t)),s.resizeDelay||0),this._dataChanges=[],eb[this.id]=this,r&&a?(nv.listen(this,"complete",Qy),nv.listen(this,"progress",Jy),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:o,_aspectRatio:n}=this;return mm(t)?e&&n?n:o?i/o:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return My}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():qf(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Fg(this.canvas,this.ctx),this}stop(){return nv.stop(this),this}resize(t,e){nv.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,o=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(o,t,e,n),r=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,qf(this,r,!0)&&(this.notifyPlugins("resize",{size:s}),_m(i.onResize,[this,s],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){wm(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,o=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],o=Ry(t,i),n="r"===o,s="x"===o;return{options:i,dposition:n?"chartArea":s?"bottom":"left",dtype:n?"radialLinear":s?"category":"linear"}})))),wm(n,(e=>{const n=e.options,s=n.id,r=Ry(s,n),a=bm(n.type,e.dtype);void 0!==n.position&&Ky(n.position,r)===Ky(e.dposition)||(n.position=e.dposition),o[s]=!0;let l=null;if(s in i&&i[s].type===a)l=i[s];else{l=new(My.getScale(a))({id:s,type:a,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),wm(o,((t,e)=>{t||delete i[e]})),wm(i,(t=>{ty.configure(this,t,t.options),ty.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(Xy("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,o;for(this._removeUnreferencedMetasets(),i=0,o=e.length;i<o;i++){const o=e[i];let n=this.getDatasetMeta(i);const s=o.type||this.config.type;if(n.type&&n.type!==s&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=s,n.indexAxis=o.indexAxis||zy(s,this.options),n.order=o.order||0,n.index=i,n.label=""+o.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=My.getController(s),{datasetElementType:o,dataElementType:r}=Pg.datasets[s];Object.assign(e,{dataElementType:My.getElement(r),datasetElementType:o&&My.getElement(o)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){wm(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),o=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!o&&-1===n.indexOf(e);e.buildOrUpdateElements(i),s=Math.max(+e.getMaxOverflow(),s)}s=this._minPadding=i.layout.autoPadding?s:0,this._updateLayout(s),o||wm(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Xy("z","_idx"));const{_active:r,_lastEvent:a}=this;a?this._eventHandler(a,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){wm(this.scales,(t=>{ty.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);zm(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:o,count:n}of e){ob(t,o,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),o=i(0);for(let t=1;t<e;t++)if(!zm(o,i(t)))return;return Array.from(o).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ty.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],wm(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,Lm(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),o={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",o)&&(i.controller._update(e),o.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",o))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(nv.has(this)?this.attached&&!nv.running(this)&&nv.start(this):(this.draw(),Qy({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let o,n;for(o=0,n=e.length;o<n;++o){const n=e[o];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,o=!i.disabled,n=function(t,e){const{xScale:i,yScale:o}=t;return i&&o?{left:nb(i,e,"left"),right:nb(i,e,"right"),top:nb(o,e,"top"),bottom:nb(o,e,"bottom")}:e}(t,this.chartArea),s={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",s)&&(o&&Vg(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),o&&Hg(e),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(t){return jg(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,o){const n=qv.modes[e];return"function"==typeof n?n(this,t,i,o):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let o=i.filter((t=>t&&t._dataset===e)).pop();return o||(o={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(o)),o}getContext(){return this.$context||(this.$context=df(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const o=i?"show":"hide",n=this.getDatasetMeta(t),s=n.controller._resolveAnimations(void 0,o);Om(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),s.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?o:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),nv.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Fg(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete eb[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};wm(this.options.events,(t=>i(t,o)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(i,o)=>{t[i]&&(e.removeEventListener(this,i,o),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let s;const r=()=>{o("attach",r),this.attached=!0,this.resize(),i("resize",n),i("detach",s)};s=()=>{this.attached=!1,o("resize",n),this._stop(),this._resize(0,0),i("attach",r)},e.isAttached(this.canvas)?r():s()}unbindEvents(){wm(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},wm(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const o=i?"set":"remove";let n,s,r,a;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+o+"DatasetHoverStyle"]()),r=0,a=t.length;r<a;++r){s=t[r];const e=s&&this.getDatasetMeta(s.datasetIndex).controller;e&&e[o+"HoverStyle"](s.element,s.datasetIndex,s.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!km(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const o=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),s=n(e,t),r=i?t:n(t,e);s.length&&this.updateHoverStyle(s,o.mode,!1),r.length&&o.mode&&this.updateHoverStyle(r,o.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},o=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,o))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,o),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:o=[],options:n}=this,s=e,r=this._getActiveElements(t,o,i,s),a=function(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(t),l=function(t,e,i,o){return i&&"mouseout"!==t.type?o?e:t:null}(t,this._lastEvent,i,a);i&&(this._lastEvent=null,_m(n.onHover,[t,r,this],this),a&&_m(n.onClick,[t,r,this],this));const d=!km(r,o);return(d||e)&&(this._active=r,this._updateHoverStyles(r,o,e)),this._lastEvent=l,d}_getActiveElements(t,e,i,o){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,o)}}function rb(){return wm(sb.instances,(t=>t._plugins.invalidate()))}function ab(t,e,i,o){const n=of(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const s=(i-e)/2,r=Math.min(s,o*e/2),a=t=>{const e=(i-Math.min(s,t))*o/2;return ng(t,0,Math.min(s,e))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:ng(n.innerStart,0,r),innerEnd:ng(n.innerEnd,0,r)}}function lb(t,e,i,o){return{x:i+t*Math.cos(e),y:o+t*Math.sin(e)}}function db(t,e,i,o,n,s){const{x:r,y:a,startAngle:l,pixelMargin:d,innerRadius:c}=e,h=Math.max(e.outerRadius+o+i-d,0),u=c>0?c+o+i+d:0;let p=0;const m=n-l;if(o){const t=((c>0?c-o:0)+(h>0?h-o:0))/2;p=(m-(0!==t?m*t/(t+o):m))/2}const g=(m-Math.max(.001,m*h-i/Pm)/h)/2,f=l+g+p,v=n-g-p,{outerStart:y,outerEnd:b,innerStart:x,innerEnd:_}=ab(e,u,h,v-f),w=h-y,k=h-b,C=f+y/w,S=v-b/k,A=u+x,E=u+_,$=f+x/A,T=v-_/E;if(t.beginPath(),s){const e=(C+S)/2;if(t.arc(r,a,h,C,e),t.arc(r,a,h,e,S),b>0){const e=lb(k,S,r,a);t.arc(e.x,e.y,b,S,v+qm)}const i=lb(E,v,r,a);if(t.lineTo(i.x,i.y),_>0){const e=lb(E,T,r,a);t.arc(e.x,e.y,_,v+qm,T+Math.PI)}const o=(v-_/u+(f+x/u))/2;if(t.arc(r,a,u,v-_/u,o,!0),t.arc(r,a,u,o,f+x/u,!0),x>0){const e=lb(A,$,r,a);t.arc(e.x,e.y,x,$+Math.PI,f-qm)}const n=lb(w,f,r,a);if(t.lineTo(n.x,n.y),y>0){const e=lb(w,C,r,a);t.arc(e.x,e.y,y,f-qm,C)}}else{t.moveTo(r,a);const e=Math.cos(C)*h+r,i=Math.sin(C)*h+a;t.lineTo(e,i);const o=Math.cos(S)*h+r,n=Math.sin(S)*h+a;t.lineTo(o,n)}t.closePath()}function cb(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a,options:l}=e,{borderWidth:d,borderJoinStyle:c,borderDash:h,borderDashOffset:u}=l,p="inner"===l.borderAlign;if(!d)return;t.setLineDash(h||[]),t.lineDashOffset=u,p?(t.lineWidth=2*d,t.lineJoin=c||"round"):(t.lineWidth=d,t.lineJoin=c||"bevel");let m=e.endAngle;if(s){db(t,e,i,o,m,n);for(let e=0;e<s;++e)t.stroke();isNaN(a)||(m=r+(a%Rm||Rm))}p&&function(t,e,i){const{startAngle:o,pixelMargin:n,x:s,y:r,outerRadius:a,innerRadius:l}=e;let d=n/a;t.beginPath(),t.arc(s,r,a,o-d,i+d),l>n?(d=n/l,t.arc(s,r,l,i+d,o-d,!0)):t.arc(s,r,n,i+qm,o-qm),t.closePath(),t.clip()}(t,e,m),s||(db(t,e,i,o,m,n),t.stroke())}class hb extends yy{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.getProps(["x","y"],i),{angle:n,distance:s}=Jm(o,{x:t,y:e}),{startAngle:r,endAngle:a,innerRadius:l,outerRadius:d,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),h=(this.options.spacing+this.options.borderWidth)/2,u=bm(c,a-r),p=og(n,r,a)&&r!==a,m=u>=Rm||p,g=sg(s,l+h,d+h);return m&&g}getCenterPoint(t){const{x:e,y:i,startAngle:o,endAngle:n,innerRadius:s,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:a,spacing:l}=this.options,d=(o+n)/2,c=(s+r+l+a)/2;return{x:e+Math.cos(d)*c,y:i+Math.sin(d)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,o=(e.offset||0)/4,n=(e.spacing||0)/2,s=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>Rm?Math.floor(i/Rm):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const r=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(r)*o,Math.sin(r)*o);const a=o*(1-Math.sin(Math.min(Pm,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a}=e;let l=e.endAngle;if(s){db(t,e,i,o,l,n);for(let e=0;e<s;++e)t.fill();isNaN(a)||(l=r+(a%Rm||Rm))}db(t,e,i,o,l,n),t.fill()}(t,this,a,n,s),cb(t,this,a,n,s),t.restore()}}function ub(t,e,i=e){t.lineCap=bm(i.borderCapStyle,e.borderCapStyle),t.setLineDash(bm(i.borderDash,e.borderDash)),t.lineDashOffset=bm(i.borderDashOffset,e.borderDashOffset),t.lineJoin=bm(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=bm(i.borderWidth,e.borderWidth),t.strokeStyle=bm(i.borderColor,e.borderColor)}function pb(t,e,i){t.lineTo(i.x,i.y)}function mb(t,e,i={}){const o=t.length,{start:n=0,end:s=o-1}=i,{start:r,end:a}=e,l=Math.max(n,r),d=Math.min(s,a),c=n<r&&s<r||n>a&&s>a;return{count:o,start:l,loop:e.loop,ilen:d<l&&!c?o+d-l:d-l}}function gb(t,e,i,o){const{points:n,options:s}=e,{count:r,start:a,loop:l,ilen:d}=mb(n,i,o),c=function(t){return t.stepped?Wg:t.tension||"monotone"===t.cubicInterpolationMode?Zg:pb}(s);let h,u,p,{move:m=!0,reverse:g}=o||{};for(h=0;h<=d;++h)u=n[(a+(g?d-h:h))%r],u.skip||(m?(t.moveTo(u.x,u.y),m=!1):c(t,p,u,g,s.stepped),p=u);return l&&(u=n[(a+(g?d:0))%r],c(t,p,u,g,s.stepped)),!!l}function fb(t,e,i,o){const n=e.points,{count:s,start:r,ilen:a}=mb(n,i,o),{move:l=!0,reverse:d}=o||{};let c,h,u,p,m,g,f=0,v=0;const y=t=>(r+(d?a-t:t))%s,b=()=>{p!==m&&(t.lineTo(f,m),t.lineTo(f,p),t.lineTo(f,g))};for(l&&(h=n[y(0)],t.moveTo(h.x,h.y)),c=0;c<=a;++c){if(h=n[y(c)],h.skip)continue;const e=h.x,i=h.y,o=0|e;o===u?(i<p?p=i:i>m&&(m=i),f=(v*f+e)/++v):(b(),t.lineTo(e,i),u=o,v=0,p=m=i),g=i}b()}function vb(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?fb:gb}const yb="function"==typeof Path2D;function bb(t,e,i,o){yb&&!e.options.segment?function(t,e,i,o){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,o)&&n.closePath()),ub(t,e.options),t.stroke(n)}(t,e,i,o):function(t,e,i,o){const{segments:n,options:s}=e,r=vb(e);for(const a of n)ub(t,s,a.style),t.beginPath(),r(t,e,a,{start:i,end:i+o-1})&&t.closePath(),t.stroke()}(t,e,i,o)}class xb extends yy{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const o=i.spanGaps?this._loop:this._fullLoop;Df(this._points,i,t,o,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(t,e){const i=t.points,o=t.options.spanGaps,n=i.length;if(!n)return[];const s=!!t._loop,{start:r,end:a}=function(t,e,i,o){let n=0,s=e-1;if(i&&!o)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(s+=n);s>n&&t[s%e].skip;)s--;return s%=e,{start:n,end:s}}(i,n,s,o);return tv(t,!0===o?[{start:r,end:a,loop:s}]:function(t,e,i,o){const n=t.length,s=[];let r,a=e,l=t[e];for(r=e+1;r<=i;++r){const i=t[r%n];i.skip||i.stop?l.skip||(o=!1,s.push({start:e%n,end:(r-1)%n,loop:o}),e=a=i.stop?r:null):(a=r,l.skip&&(e=r)),l=i}return null!==a&&s.push({start:e%n,end:a%n,loop:o}),s}(i,r,a<r?a+n:a,!!t._fullLoop&&0===r&&a===n-1),i,e)}(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,o=t[e],n=this.points,s=Jf(this,{property:e,start:o,end:o});if(!s.length)return;const r=[],a=function(t){return t.stepped?Hf:t.tension||"monotone"===t.cubicInterpolationMode?Wf:Vf}(i);let l,d;for(l=0,d=s.length;l<d;++l){const{start:d,end:c}=s[l],h=n[d],u=n[c];if(h===u){r.push(h);continue}const p=a(h,u,Math.abs((o-h[e])/(u[e]-h[e])),i.stepped);p[e]=t[e],r.push(p)}return 1===r.length?r[0]:r}pathSegment(t,e,i){return vb(this)(t,this,e,i)}path(t,e,i){const o=this.segments,n=vb(this);let s=this._loop;e=e||0,i=i||this.points.length-e;for(const r of o)s&=n(t,this,r,{start:e,end:e+i-1});return!!s}draw(t,e,i,o){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),bb(t,this,i,o),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function _b(t,e,i,o){const n=t.options,{[i]:s}=t.getProps([i],o);return Math.abs(e-s)<n.radius+n.hitRadius}class wb extends yy{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.options,{x:n,y:s}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-s,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(t,e){return _b(this,t,"x",e)}inYRange(t,e){return _b(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!jg(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,qg(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function kb(t,e){const{x:i,y:o,base:n,width:s,height:r}=t.getProps(["x","y","base","width","height"],e);let a,l,d,c,h;return t.horizontal?(h=r/2,a=Math.min(i,n),l=Math.max(i,n),d=o-h,c=o+h):(h=s/2,a=i-h,l=i+h,d=Math.min(o,n),c=Math.max(o,n)),{left:a,top:d,right:l,bottom:c}}function Cb(t,e,i,o){return t?0:ng(e,i,o)}function Sb(t){const e=kb(t),i=e.right-e.left,o=e.bottom-e.top,n=function(t,e,i){const o=t.options.borderWidth,n=t.borderSkipped,s=nf(o);return{t:Cb(n.top,s.top,0,i),r:Cb(n.right,s.right,0,e),b:Cb(n.bottom,s.bottom,0,i),l:Cb(n.left,s.left,0,e)}}(t,i/2,o/2),s=function(t,e,i){const{enableBorderRadius:o}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,s=sf(n),r=Math.min(e,i),a=t.borderSkipped,l=o||fm(n);return{topLeft:Cb(!l||a.top||a.left,s.topLeft,0,r),topRight:Cb(!l||a.top||a.right,s.topRight,0,r),bottomLeft:Cb(!l||a.bottom||a.left,s.bottomLeft,0,r),bottomRight:Cb(!l||a.bottom||a.right,s.bottomRight,0,r)}}(t,i/2,o/2);return{outer:{x:e.left,y:e.top,w:i,h:o,radius:s},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:o-n.t-n.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,s.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(n.b,n.r))}}}}function Ab(t,e,i,o){const n=null===e,s=null===i,r=t&&!(n&&s)&&kb(t,o);return r&&(n||sg(e,r.left,r.right))&&(s||sg(i,r.top,r.bottom))}function Eb(t,e){t.rect(e.x,e.y,e.w,e.h)}function $b(t,e,i={}){const o=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,s=(t.x+t.w!==i.x+i.w?e:0)-o,r=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+o,y:t.y+n,w:t.w+s,h:t.h+r,radius:t.radius}}class Tb extends yy{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:o}}=this,{inner:n,outer:s}=Sb(this),r=(a=s.radius).topLeft||a.topRight||a.bottomLeft||a.bottomRight?Xg:Eb;var a;t.save(),s.w===n.w&&s.h===n.h||(t.beginPath(),r(t,$b(s,e,n)),t.clip(),r(t,$b(n,-e,s)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),r(t,$b(n,e)),t.fillStyle=o,t.fill(),t.restore()}inRange(t,e,i){return Ab(this,t,e,i)}inXRange(t,e){return Ab(this,t,null,e)}inYRange(t,e){return Ab(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:o,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+o)/2:e,y:n?i:(i+o)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}var Db=Object.freeze({__proto__:null,ArcElement:hb,BarElement:Tb,LineElement:xb,PointElement:wb});const Mb=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Ib=Mb.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Ob(t){return Mb[t%Mb.length]}function Lb(t){return Ib[t%Ib.length]}function zb(t){let e=0;return(i,o)=>{const n=t.getDatasetMeta(o).controller;n instanceof Tv?e=function(t,e){return t.backgroundColor=t.data.map((()=>Ob(e++))),e}(i,e):n instanceof Dv?e=function(t,e){return t.backgroundColor=t.data.map((()=>Lb(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Ob(e),t.backgroundColor=Lb(e),++e}(i,e))}}function Pb(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Rb={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:o},options:n}=t.config,{elements:s}=n,r=Pb(o)||(a=n)&&(a.borderColor||a.backgroundColor)||s&&Pb(s)||"rgba(0,0,0,0.1)"!==Pg.borderColor||"rgba(0,0,0,0.1)"!==Pg.backgroundColor;var a;if(!i.forceOverride&&r)return;const l=zb(t);o.forEach(l)}};function Nb(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Bb(t){t.data.datasets.forEach((t=>{Nb(t)}))}var Fb={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Bb(t);const o=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:s,indexAxis:r}=e,a=t.getDatasetMeta(n),l=s||e.data;if("y"===lf([r,t.options.indexAxis]))return;if(!a.controller.supportsDecimation)return;const d=t.scales[a.xAxisID];if("linear"!==d.type&&"time"!==d.type)return;if(t.options.parsing)return;let{start:c,count:h}=function(t,e){const i=e.length;let o,n=0;const{iScale:s}=t,{min:r,max:a,minDefined:l,maxDefined:d}=s.getUserBounds();return l&&(n=ng(ag(e,s.axis,r).lo,0,i-1)),o=d?ng(ag(e,s.axis,a).hi+1,n,i)-n:i-n,{start:n,count:o}}(a,l);if(h<=(i.threshold||4*o))return void Nb(e);let u;switch(mm(s)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,o,n){const s=n.samples||o;if(s>=i)return t.slice(e,e+i);const r=[],a=(i-2)/(s-2);let l=0;const d=e+i-1;let c,h,u,p,m,g=e;for(r[l++]=t[g],c=0;c<s-2;c++){let o,n=0,s=0;const d=Math.floor((c+1)*a)+1+e,f=Math.min(Math.floor((c+2)*a)+1,i)+e,v=f-d;for(o=d;o<f;o++)n+=t[o].x,s+=t[o].y;n/=v,s/=v;const y=Math.floor(c*a)+1+e,b=Math.min(Math.floor((c+1)*a)+1,i)+e,{x:x,y:_}=t[g];for(u=p=-1,o=y;o<b;o++)p=.5*Math.abs((x-n)*(t[o].y-_)-(x-t[o].x)*(s-_)),p>u&&(u=p,h=t[o],m=o);r[l++]=h,g=m}return r[l++]=t[d],r}(l,c,h,o,i);break;case"min-max":u=function(t,e,i,o){let n,s,r,a,l,d,c,h,u,p,m=0,g=0;const f=[],v=e+i-1,y=t[e].x,b=t[v].x-y;for(n=e;n<e+i;++n){s=t[n],r=(s.x-y)/b*o,a=s.y;const e=0|r;if(e===l)a<u?(u=a,d=n):a>p&&(p=a,c=n),m=(g*m+s.x)/++g;else{const i=n-1;if(!mm(d)&&!mm(c)){const e=Math.min(d,c),o=Math.max(d,c);e!==h&&e!==i&&f.push({...t[e],x:m}),o!==h&&o!==i&&f.push({...t[o],x:m})}n>0&&i!==h&&f.push(t[i]),f.push(s),l=e,g=0,u=p=a,d=c=h=n}}return f}(l,c,h,o);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){Bb(t)}};function qb(t,e,i,o){if(o)return;let n=e[t],s=i[t];return"angle"===t&&(n=ig(n),s=ig(s)),{property:t,start:n,end:s}}function Ub(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function jb(t,e,i,o){return t&&e?o(t[i],e[i]):t?t[i]:e?e[i]:0}function Vb(t,e){let i=[],o=!1;return gm(t)?(o=!0,i=t):i=function(t,e){const{x:i=null,y:o=null}=t||{},n=e.points,s=[];return e.segments.forEach((({start:t,end:e})=>{e=Ub(t,e,n);const r=n[t],a=n[e];null!==o?(s.push({x:r.x,y:o}),s.push({x:a.x,y:o})):null!==i&&(s.push({x:i,y:r.y}),s.push({x:i,y:a.y}))})),s}(t,e),i.length?new xb({points:i,options:{tension:0},_loop:o,_fullLoop:o}):null}function Hb(t){return t&&!1!==t.fill}function Wb(t,e,i){let o=t[e].fill;const n=[e];let s;if(!i)return o;for(;!1!==o&&-1===n.indexOf(o);){if(!vm(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;n.push(o),o=s.fill}return!1}function Zb(t,e,i){const o=function(t){const e=t.options,i=e.fill;let o=bm(i&&i.target,i);void 0===o&&(o=!!e.backgroundColor);if(!1===o||null===o)return!1;if(!0===o)return"origin";return o}(t);if(fm(o))return!isNaN(o.value)&&o;let n=parseFloat(o);return vm(n)&&Math.floor(n)===n?function(t,e,i,o){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=o)return!1;return i}(o[0],e,n,i):["origin","start","end","stack","shape"].indexOf(o)>=0&&o}function Yb(t,e,i){const o=[];for(let n=0;n<i.length;n++){const s=i[n],{first:r,last:a,point:l}=Gb(s,e,"x");if(!(!l||r&&a))if(r)o.unshift(l);else if(t.push(l),!a)break}t.push(...o)}function Gb(t,e,i){const o=t.interpolate(e,i);if(!o)return{};const n=o[i],s=t.segments,r=t.points;let a=!1,l=!1;for(let t=0;t<s.length;t++){const e=s[t],o=r[e.start][i],d=r[e.end][i];if(sg(n,o,d)){a=n===o,l=n===d;break}}return{first:a,last:l,point:o}}class Kb{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:o,y:n,radius:s}=this;return e=e||{start:0,end:Rm},t.arc(o,n,s,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:o}=this,n=t.angle;return{x:e+Math.cos(n)*o,y:i+Math.sin(n)*o,angle:n}}}function Xb(t){const{chart:e,fill:i,line:o}=t;if(vm(i))return function(t,e){const i=t.getDatasetMeta(e),o=i&&t.isDatasetVisible(e);return o?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:o}=t,n=[],s=o.segments,r=o.points,a=function(t,e){const i=[],o=t.getMatchingVisibleMetas("line");for(let t=0;t<o.length;t++){const n=o[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);a.push(Vb({x:null,y:e.bottom},o));for(let t=0;t<s.length;t++){const e=s[t];for(let t=e.start;t<=e.end;t++)Yb(n,r[t],a)}return new xb({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,o=e.options,n=e.getLabels().length,s=o.reverse?e.max:e.min,r=function(t,e,i){let o;return o="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:fm(t)?t.value:e.getBaseValue(),o}(i,e,s),a=[];if(o.grid.circular){const t=e.getPointPositionForValue(0,s);return new Kb({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)a.push(e.getPointPositionForValue(t,r));return a}(t);return function(t){const{scale:e={},fill:i}=t,o=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:fm(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(vm(o)){const t=e.isHorizontal();return{x:t?o:null,y:t?null:o}}return null}(t)}(t);return n instanceof Kb?n:Vb(n,o)}function Qb(t,e,i){const o=Xb(e),{line:n,scale:s,axis:r}=e,a=n.options,l=a.fill,d=a.backgroundColor,{above:c=d,below:h=d}=l||{};o&&n.points.length&&(Vg(t,i),function(t,e){const{line:i,target:o,above:n,below:s,area:r,scale:a}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&s!==n&&(Jb(t,o,r.top),tx(t,{line:i,target:o,color:n,scale:a,property:l}),t.restore(),t.save(),Jb(t,o,r.bottom));tx(t,{line:i,target:o,color:s,scale:a,property:l}),t.restore()}(t,{line:n,target:o,above:c,below:h,area:i,scale:s,axis:r}),Hg(t))}function Jb(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Ub(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(d.x,i),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function tx(t,e){const{line:i,target:o,property:n,color:s,scale:r}=e,a=function(t,e,i){const o=t.segments,n=t.points,s=e.points,r=[];for(const t of o){let{start:o,end:a}=t;a=Ub(o,a,n);const l=qb(i,n[o],n[a],t.loop);if(!e.segments){r.push({source:t,target:l,start:n[o],end:n[a]});continue}const d=Jf(e,l);for(const e of d){const o=qb(i,s[e.start],s[e.end],e.loop),a=Qf(t,n,o);for(const t of a)r.push({source:t,target:e,start:{[i]:jb(l,o,"start",Math.max)},end:{[i]:jb(l,o,"end",Math.min)}})}}return r}(i,o,n);for(const{source:e,target:l,start:d,end:c}of a){const{style:{backgroundColor:a=s}={}}=e,h=!0!==o;t.save(),t.fillStyle=a,ex(t,r,h&&qb(n,d,c)),t.beginPath();const u=!!i.pathSegment(t,e);let p;if(h){u?t.closePath():ix(t,o,c,n);const e=!!o.pathSegment(t,l,{move:u,reverse:!0});p=u&&e,p||ix(t,o,d,n)}t.closePath(),t.fill(p?"evenodd":"nonzero"),t.restore()}}function ex(t,e,i){const{top:o,bottom:n}=e.chart.chartArea,{property:s,start:r,end:a}=i||{};"x"===s&&(t.beginPath(),t.rect(r,o,a-r,n-o),t.clip())}function ix(t,e,i,o){const n=e.interpolate(i,o);n&&t.lineTo(n.x,n.y)}var ox={id:"filler",afterDatasetsUpdate(t,e,i){const o=(t.data.datasets||[]).length,n=[];let s,r,a,l;for(r=0;r<o;++r)s=t.getDatasetMeta(r),a=s.dataset,l=null,a&&a.options&&a instanceof xb&&(l={visible:t.isDatasetVisible(r),index:r,fill:Zb(a,r,o),chart:t,axis:s.controller.options.indexAxis,scale:s.vScale,line:a}),s.$filler=l,n.push(l);for(r=0;r<o;++r)l=n[r],l&&!1!==l.fill&&(l.fill=Wb(n,r,i.propagate))},beforeDraw(t,e,i){const o="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),s=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(s,i.axis),o&&i.fill&&Qb(t.ctx,i,s))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const o=t.getSortedVisibleDatasetMetas();for(let e=o.length-1;e>=0;--e){const i=o[e].$filler;Hb(i)&&Qb(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const o=e.meta.$filler;Hb(o)&&"beforeDatasetDraw"===i.drawTime&&Qb(t.ctx,o,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const nx=(t,e)=>{let{boxHeight:i=e,boxWidth:o=e}=t;return t.usePointStyle&&(i=Math.min(i,e),o=t.pointStyleWidth||Math.min(o,e)),{boxWidth:o,boxHeight:i,itemHeight:Math.max(e,i)}};class sx extends yy{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=_m(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,o=af(i.font),n=o.size,s=this._computeTitleHeight(),{boxWidth:r,itemHeight:a}=nx(i,n);let l,d;e.font=o.string,this.isHorizontal()?(l=this.maxWidth,d=this._fitRows(s,n,r,a)+10):(d=this.maxHeight,l=this._fitCols(s,o,r,a)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(d,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,o){const{ctx:n,maxWidth:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.lineWidths=[0],d=o+r;let c=t;n.textAlign="left",n.textBaseline="middle";let h=-1,u=-d;return this.legendItems.forEach(((t,p)=>{const m=i+e/2+n.measureText(t.text).width;(0===p||l[l.length-1]+m+2*r>s)&&(c+=d,l[l.length-(p>0?0:1)]=0,u+=d,h++),a[p]={left:0,top:u,row:h,width:m,height:o},l[l.length-1]+=m+r})),c}_fitCols(t,e,i,o){const{ctx:n,maxHeight:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.columnSizes=[],d=s-t;let c=r,h=0,u=0,p=0,m=0;return this.legendItems.forEach(((t,s)=>{const{itemWidth:g,itemHeight:f}=function(t,e,i,o,n){const s=function(t,e,i,o){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+o.measureText(n).width}(o,t,e,i),r=function(t,e,i){let o=t;"string"!=typeof e.text&&(o=rx(e,i));return o}(n,o,e.lineHeight);return{itemWidth:s,itemHeight:r}}(i,e,n,t,o);s>0&&u+f+2*r>d&&(c+=h+r,l.push({width:h,height:u}),p+=h+r,m++,h=u=0),a[s]={left:p,top:u,col:m,width:g,height:f},h=Math.max(h,g),u+=f+r})),c+=h,l.push({width:h,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:o},rtl:n}}=this,s=Zf(n,this.left,this.width);if(this.isHorizontal()){let n=0,r=gg(i,this.left+o,this.right-this.lineWidths[n]);for(const a of e)n!==a.row&&(n=a.row,r=gg(i,this.left+o,this.right-this.lineWidths[n])),a.top+=this.top+t+o,a.left=s.leftForLtr(s.x(r),a.width),r+=a.width+o}else{let n=0,r=gg(i,this.top+t+o,this.bottom-this.columnSizes[n].height);for(const a of e)a.col!==n&&(n=a.col,r=gg(i,this.top+t+o,this.bottom-this.columnSizes[n].height)),a.top=r,a.left+=this.left+o,a.left=s.leftForLtr(s.x(a.left),a.width),r+=a.height+o}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Vg(t,this),this._draw(),Hg(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:o}=this,{align:n,labels:s}=t,r=Pg.color,a=Zf(t.rtl,this.left,this.width),l=af(s.font),{padding:d}=s,c=l.size,h=c/2;let u;this.drawTitle(),o.textAlign=a.textAlign("left"),o.textBaseline="middle",o.lineWidth=.5,o.font=l.string;const{boxWidth:p,boxHeight:m,itemHeight:g}=nx(s,c),f=this.isHorizontal(),v=this._computeTitleHeight();u=f?{x:gg(n,this.left+d,this.right-i[0]),y:this.top+d+v,line:0}:{x:this.left+d,y:gg(n,this.top+v+d,this.bottom-e[0].height),line:0},Yf(this.ctx,t.textDirection);const y=g+d;this.legendItems.forEach(((b,x)=>{o.strokeStyle=b.fontColor,o.fillStyle=b.fontColor;const _=o.measureText(b.text).width,w=a.textAlign(b.textAlign||(b.textAlign=s.textAlign)),k=p+h+_;let C=u.x,S=u.y;a.setWidth(this.width),f?x>0&&C+k+d>this.right&&(S=u.y+=y,u.line++,C=u.x=gg(n,this.left+d,this.right-i[u.line])):x>0&&S+y>this.bottom&&(C=u.x=C+e[u.line].width+d,u.line++,S=u.y=gg(n,this.top+v+d,this.bottom-e[u.line].height));if(function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;o.save();const n=bm(i.lineWidth,1);if(o.fillStyle=bm(i.fillStyle,r),o.lineCap=bm(i.lineCap,"butt"),o.lineDashOffset=bm(i.lineDashOffset,0),o.lineJoin=bm(i.lineJoin,"miter"),o.lineWidth=n,o.strokeStyle=bm(i.strokeStyle,r),o.setLineDash(bm(i.lineDash,[])),s.usePointStyle){const r={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=a.xPlus(t,p/2);Ug(o,r,l,e+h,s.pointStyleWidth&&p)}else{const s=e+Math.max((c-m)/2,0),r=a.leftForLtr(t,p),l=sf(i.borderRadius);o.beginPath(),Object.values(l).some((t=>0!==t))?Xg(o,{x:r,y:s,w:p,h:m,radius:l}):o.rect(r,s,p,m),o.fill(),0!==n&&o.stroke()}o.restore()}(a.x(C),S,b),C=((t,e,i,o)=>t===(o?"left":"right")?i:"center"===t?(e+i)/2:e)(w,C+p+h,f?C+k:this.right,t.rtl),function(t,e,i){Kg(o,i.text,t,e+g/2,l,{strikethrough:i.hidden,textAlign:a.textAlign(i.textAlign)})}(a.x(C),S,b),f)u.x+=k+d;else if("string"!=typeof b.text){const t=l.lineHeight;u.y+=rx(b,t)+d}else u.y+=y})),Gf(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=af(e.font),o=rf(e.padding);if(!e.display)return;const n=Zf(t.rtl,this.left,this.width),s=this.ctx,r=e.position,a=i.size/2,l=o.top+a;let d,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),d=this.top+l,c=gg(t.align,c,this.right-h);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=l+gg(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=gg(r,c,c+h);s.textAlign=n.textAlign(mg(r)),s.textBaseline="middle",s.strokeStyle=e.color,s.fillStyle=e.color,s.font=i.string,Kg(s,e.text,u,d,i)}_computeTitleHeight(){const t=this.options.title,e=af(t.font),i=rf(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,o,n;if(sg(t,this.left,this.right)&&sg(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(o=n[i],sg(t,o.left,o.left+o.width)&&sg(e,o.top,o.top+o.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,n=((t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index)(o,i);o&&!n&&_m(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!n&&_m(e.onHover,[t,i,this],this)}else i&&_m(e.onClick,[t,i,this],this)}}function rx(t,e){return e*(t.text?t.text.length:0)}var ax={id:"legend",_element:sx,start(t,e,i){const o=t.legend=new sx({ctx:t.ctx,options:i,chart:t});ty.configure(t,o,i),ty.addBox(t,o)},stop(t){ty.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const o=t.legend;ty.configure(t,o,i),o.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const o=e.datasetIndex,n=i.chart;n.isDatasetVisible(o)?(n.hide(o),e.hidden=!0):(n.show(o),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:o,textAlign:n,color:s,useBorderRadius:r,borderRadius:a}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),d=rf(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:s,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:l.borderColor,pointStyle:o||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:r&&(a||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class lx extends yy{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const o=gm(i.text)?i.text.length:1;this._padding=rf(i.padding);const n=o*af(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:o,right:n,options:s}=this,r=s.align;let a,l,d,c=0;return this.isHorizontal()?(l=gg(r,i,n),d=e+t,a=n-i):("left"===s.position?(l=i+t,d=gg(r,o,e),c=-.5*Pm):(l=n-t,d=gg(r,e,o),c=.5*Pm),a=o-e),{titleX:l,titleY:d,maxWidth:a,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=af(e.font),o=i.lineHeight/2+this._padding.top,{titleX:n,titleY:s,maxWidth:r,rotation:a}=this._drawArgs(o);Kg(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:a,textAlign:mg(e.align),textBaseline:"middle",translation:[n,s]})}}var dx={id:"title",_element:lx,start(t,e,i){!function(t,e){const i=new lx({ctx:t.ctx,options:e,chart:t});ty.configure(t,i,e),ty.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ty.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const o=t.titleBlock;ty.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const cx=new WeakMap;var hx={id:"subtitle",start(t,e,i){const o=new lx({ctx:t.ctx,options:i,chart:t});ty.configure(t,o,i),ty.addBox(t,o),cx.set(t,o)},stop(t){ty.removeBox(t,cx.get(t)),cx.delete(t)},beforeUpdate(t,e,i){const o=cx.get(t);ty.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ux={average(t){if(!t.length)return!1;let e,i,o=new Set,n=0,s=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();o.add(t.x),n+=t.y,++s}}if(0===s||0===o.size)return!1;const r=[...o].reduce(((t,e)=>t+e))/o.size;return{x:r,y:n/s}},nearest(t,e){if(!t.length)return!1;let i,o,n,s=e.x,r=e.y,a=Number.POSITIVE_INFINITY;for(i=0,o=t.length;i<o;++i){const o=t[i].element;if(o&&o.hasValue()){const t=tg(e,o.getCenterPoint());t<a&&(a=t,n=o)}}if(n){const t=n.tooltipPosition();s=t.x,r=t.y}return{x:s,y:r}}};function px(t,e){return e&&(gm(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function mx(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function gx(t,e){const{element:i,datasetIndex:o,index:n}=e,s=t.getDatasetMeta(o).controller,{label:r,value:a}=s.getLabelAndValue(n);return{chart:t,label:r,parsed:s.getParsed(n),raw:t.data.datasets[o].data[n],formattedValue:a,dataset:s.getDataset(),dataIndex:n,datasetIndex:o,element:i}}function fx(t,e){const i=t.chart.ctx,{body:o,footer:n,title:s}=t,{boxWidth:r,boxHeight:a}=e,l=af(e.bodyFont),d=af(e.titleFont),c=af(e.footerFont),h=s.length,u=n.length,p=o.length,m=rf(e.padding);let g=m.height,f=0,v=o.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(v+=t.beforeBody.length+t.afterBody.length,h&&(g+=h*d.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),v){g+=p*(e.displayColors?Math.max(a,l.lineHeight):l.lineHeight)+(v-p)*l.lineHeight+(v-1)*e.bodySpacing}u&&(g+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let y=0;const b=function(t){f=Math.max(f,i.measureText(t).width+y)};return i.save(),i.font=d.string,wm(t.title,b),i.font=l.string,wm(t.beforeBody.concat(t.afterBody),b),y=e.displayColors?r+2+e.boxPadding:0,wm(o,(t=>{wm(t.before,b),wm(t.lines,b),wm(t.after,b)})),y=0,i.font=c.string,wm(t.footer,b),i.restore(),f+=m.width,{width:f,height:g}}function vx(t,e,i,o){const{x:n,width:s}=i,{width:r,chartArea:{left:a,right:l}}=t;let d="center";return"center"===o?d=n<=(a+l)/2?"left":"right":n<=s/2?d="left":n>=r-s/2&&(d="right"),function(t,e,i,o){const{x:n,width:s}=o,r=i.caretSize+i.caretPadding;return"left"===t&&n+s+r>e.width||"right"===t&&n-s-r<0||void 0}(d,t,e,i)&&(d="center"),d}function yx(t,e,i){const o=i.yAlign||e.yAlign||function(t,e){const{y:i,height:o}=e;return i<o/2?"top":i>t.height-o/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||vx(t,e,i,o),yAlign:o}}function bx(t,e,i,o){const{caretSize:n,caretPadding:s,cornerRadius:r}=t,{xAlign:a,yAlign:l}=i,d=n+s,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=sf(r);let m=function(t,e){let{x:i,width:o}=t;return"right"===e?i-=o:"center"===e&&(i-=o/2),i}(e,a);const g=function(t,e,i){let{y:o,height:n}=t;return"top"===e?o+=i:o-="bottom"===e?n+i:n/2,o}(e,l,d);return"center"===l?"left"===a?m+=d:"right"===a&&(m-=d):"left"===a?m-=Math.max(c,u)+n:"right"===a&&(m+=Math.max(h,p)+n),{x:ng(m,0,o.width-e.width),y:ng(g,0,o.height-e.height)}}function xx(t,e,i){const o=rf(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-o.right:t.x+o.left}function _x(t){return px([],mx(t))}function wx(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const kx={beforeTitle:um,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,o=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(o>0&&e.dataIndex<o)return i[e.dataIndex]}return""},afterTitle:um,beforeBody:um,beforeLabel:um,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return mm(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:um,afterBody:um,beforeFooter:um,footer:um,afterFooter:um};function Cx(t,e,i,o){const n=t[e].call(i,o);return void 0===n?kx[e].call(i,o):n}class Sx extends yy{static positioners=ux;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),o=i.enabled&&e.options.animation&&i.animations,n=new lv(this.chart,o);return o._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,df(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,o=Cx(i,"beforeTitle",this,t),n=Cx(i,"title",this,t),s=Cx(i,"afterTitle",this,t);let r=[];return r=px(r,mx(o)),r=px(r,mx(n)),r=px(r,mx(s)),r}getBeforeBody(t,e){return _x(Cx(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,o=[];return wm(t,(t=>{const e={before:[],lines:[],after:[]},n=wx(i,t);px(e.before,mx(Cx(n,"beforeLabel",this,t))),px(e.lines,Cx(n,"label",this,t)),px(e.after,mx(Cx(n,"afterLabel",this,t))),o.push(e)})),o}getAfterBody(t,e){return _x(Cx(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,o=Cx(i,"beforeFooter",this,t),n=Cx(i,"footer",this,t),s=Cx(i,"afterFooter",this,t);let r=[];return r=px(r,mx(o)),r=px(r,mx(n)),r=px(r,mx(s)),r}_createItems(t){const e=this._active,i=this.chart.data,o=[],n=[],s=[];let r,a,l=[];for(r=0,a=e.length;r<a;++r)l.push(gx(this.chart,e[r]));return t.filter&&(l=l.filter(((e,o,n)=>t.filter(e,o,n,i)))),t.itemSort&&(l=l.sort(((e,o)=>t.itemSort(e,o,i)))),wm(l,(e=>{const i=wx(t.callbacks,e);o.push(Cx(i,"labelColor",this,e)),n.push(Cx(i,"labelPointStyle",this,e)),s.push(Cx(i,"labelTextColor",this,e))})),this.labelColors=o,this.labelPointStyles=n,this.labelTextColors=s,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),o=this._active;let n,s=[];if(o.length){const t=ux[i.position].call(this,o,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const e=this._size=fx(this,i),r=Object.assign({},t,e),a=yx(this.chart,i,r),l=bx(i,r,a,this.chart);this.xAlign=a.xAlign,this.yAlign=a.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=s,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,o){const n=this.getCaretPosition(t,i,o);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:o,yAlign:n}=this,{caretSize:s,cornerRadius:r}=i,{topLeft:a,topRight:l,bottomLeft:d,bottomRight:c}=sf(r),{x:h,y:u}=t,{width:p,height:m}=e;let g,f,v,y,b,x;return"center"===n?(b=u+m/2,"left"===o?(g=h,f=g-s,y=b+s,x=b-s):(g=h+p,f=g+s,y=b-s,x=b+s),v=g):(f="left"===o?h+Math.max(a,d)+s:"right"===o?h+p-Math.max(l,c)-s:this.caretX,"top"===n?(y=u,b=y-s,g=f-s,v=f+s):(y=u+m,b=y+s,g=f+s,v=f-s),x=y),{x1:g,x2:f,x3:v,y1:y,y2:b,y3:x}}drawTitle(t,e,i){const o=this.title,n=o.length;let s,r,a;if(n){const l=Zf(i.rtl,this.x,this.width);for(t.x=xx(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",s=af(i.titleFont),r=i.titleSpacing,e.fillStyle=i.titleColor,e.font=s.string,a=0;a<n;++a)e.fillText(o[a],l.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+r,a+1===n&&(t.y+=i.titleMarginBottom-r)}}_drawColorBox(t,e,i,o,n){const s=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:a,boxWidth:l}=n,d=af(n.bodyFont),c=xx(this,"left",n),h=o.x(c),u=a<d.lineHeight?(d.lineHeight-a)/2:0,p=e.y+u;if(n.usePointStyle){const e={radius:Math.min(l,a)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=o.leftForLtr(h,l)+l/2,d=p+a/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,qg(t,e,i,d),t.strokeStyle=s.borderColor,t.fillStyle=s.backgroundColor,qg(t,e,i,d)}else{t.lineWidth=fm(s.borderWidth)?Math.max(...Object.values(s.borderWidth)):s.borderWidth||1,t.strokeStyle=s.borderColor,t.setLineDash(s.borderDash||[]),t.lineDashOffset=s.borderDashOffset||0;const e=o.leftForLtr(h,l),i=o.leftForLtr(o.xPlus(h,1),l-2),r=sf(s.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,Xg(t,{x:e,y:p,w:l,h:a,radius:r}),t.fill(),t.stroke(),t.fillStyle=s.backgroundColor,t.beginPath(),Xg(t,{x:i,y:p+1,w:l-2,h:a-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,l,a),t.strokeRect(e,p,l,a),t.fillStyle=s.backgroundColor,t.fillRect(i,p+1,l-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:o}=this,{bodySpacing:n,bodyAlign:s,displayColors:r,boxHeight:a,boxWidth:l,boxPadding:d}=i,c=af(i.bodyFont);let h=c.lineHeight,u=0;const p=Zf(i.rtl,this.x,this.width),m=function(i){e.fillText(i,p.x(t.x+u),t.y+h/2),t.y+=h+n},g=p.textAlign(s);let f,v,y,b,x,_,w;for(e.textAlign=s,e.textBaseline="middle",e.font=c.string,t.x=xx(this,g,i),e.fillStyle=i.bodyColor,wm(this.beforeBody,m),u=r&&"right"!==g?"center"===s?l/2+d:l+2+d:0,b=0,_=o.length;b<_;++b){for(f=o[b],v=this.labelTextColors[b],e.fillStyle=v,wm(f.before,m),y=f.lines,r&&y.length&&(this._drawColorBox(e,t,b,p,i),h=Math.max(c.lineHeight,a)),x=0,w=y.length;x<w;++x)m(y[x]),h=c.lineHeight;wm(f.after,m)}u=0,h=c.lineHeight,wm(this.afterBody,m),t.y-=n}drawFooter(t,e,i){const o=this.footer,n=o.length;let s,r;if(n){const a=Zf(i.rtl,this.x,this.width);for(t.x=xx(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=a.textAlign(i.footerAlign),e.textBaseline="middle",s=af(i.footerFont),e.fillStyle=i.footerColor,e.font=s.string,r=0;r<n;++r)e.fillText(o[r],a.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+i.footerSpacing}}drawBackground(t,e,i,o){const{xAlign:n,yAlign:s}=this,{x:r,y:a}=t,{width:l,height:d}=i,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=sf(o.cornerRadius);e.fillStyle=o.backgroundColor,e.strokeStyle=o.borderColor,e.lineWidth=o.borderWidth,e.beginPath(),e.moveTo(r+c,a),"top"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+l-h,a),e.quadraticCurveTo(r+l,a,r+l,a+h),"center"===s&&"right"===n&&this.drawCaret(t,e,i,o),e.lineTo(r+l,a+d-p),e.quadraticCurveTo(r+l,a+d,r+l-p,a+d),"bottom"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+u,a+d),e.quadraticCurveTo(r,a+d,r,a+d-u),"center"===s&&"left"===n&&this.drawCaret(t,e,i,o),e.lineTo(r,a+c),e.quadraticCurveTo(r,a,r+c,a),e.closePath(),e.fill(),o.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,o=i&&i.x,n=i&&i.y;if(o||n){const i=ux[t.position].call(this,this._active,this._eventPosition);if(!i)return;const s=this._size=fx(this,t),r=Object.assign({},i,this._size),a=yx(e,t,r),l=bx(t,r,a,e);o._to===l.x&&n._to===l.y||(this.xAlign=a.xAlign,this.yAlign=a.yAlign,this.width=s.width,this.height=s.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const o={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=rf(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,o,e),Yf(t,e.textDirection),n.y+=s.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Gf(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,o=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!km(i,o),s=this._positionChanged(o,e);(n||s)&&(this._active=o,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const o=this.options,n=this._active||[],s=this._getActiveElements(t,n,e,i),r=this._positionChanged(s,t),a=e||!km(s,n)||r;return a&&(this._active=s,(o.enabled||o.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),a}_getActiveElements(t,e,i,o){const n=this.options;if("mouseout"===t.type)return[];if(!o)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const s=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&s.reverse(),s}_positionChanged(t,e){const{caretX:i,caretY:o,options:n}=this,s=ux[n.position].call(this,t,e);return!1!==s&&(i!==s.x||o!==s.y)}}var Ax={id:"tooltip",_element:Sx,positioners:ux,afterInit(t,e,i){i&&(t.tooltip=new Sx({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:kx},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Ex=Object.freeze({__proto__:null,Colors:Rb,Decimation:Fb,Filler:ox,Legend:ax,SubTitle:hx,Title:dx,Tooltip:Ax});function $x(t,e,i,o){const n=t.indexOf(e);if(-1===n)return((t,e,i,o)=>("string"==typeof e?(i=t.push(e)-1,o.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,o);return n!==t.lastIndexOf(e)?i:n}function Tx(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function Dx(t,e){const i=[],{bounds:o,step:n,min:s,max:r,precision:a,count:l,maxTicks:d,maxDigits:c,includeBounds:h}=t,u=n||1,p=d-1,{min:m,max:g}=e,f=!mm(s),v=!mm(r),y=!mm(l),b=(g-m)/(c+1);let x,_,w,k,C=Zm((g-m)/p/u)*u;if(C<1e-14&&!f&&!v)return[{value:m},{value:g}];k=Math.ceil(g/C)-Math.floor(m/C),k>p&&(C=Zm(k*C/p/u)*u),mm(a)||(x=Math.pow(10,a),C=Math.ceil(C*x)/x),"ticks"===o?(_=Math.floor(m/C)*C,w=Math.ceil(g/C)*C):(_=m,w=g),f&&v&&n&&function(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}((r-s)/n,C/1e3)?(k=Math.round(Math.min((r-s)/C,d)),C=(r-s)/k,_=s,w=r):y?(_=f?s:_,w=v?r:w,k=l-1,C=(w-_)/k):(k=(w-_)/C,k=Wm(k,Math.round(k),C/1e3)?Math.round(k):Math.ceil(k));const S=Math.max(Qm(C),Qm(_));x=Math.pow(10,mm(a)?S:a),_=Math.round(_*x)/x,w=Math.round(w*x)/x;let A=0;for(f&&(h&&_!==s?(i.push({value:s}),_<s&&A++,Wm(Math.round((_+A*C)*x)/x,s,Mx(s,b,t))&&A++):_<s&&A++);A<k;++A){const t=Math.round((_+A*C)*x)/x;if(v&&t>r)break;i.push({value:t})}return v&&h&&w!==r?i.length&&Wm(i[i.length-1].value,r,Mx(r,b,t))?i[i.length-1].value=r:i.push({value:r}):v&&w!==r||i.push({value:w}),i}function Mx(t,e,{horizontal:i,minRotation:o}){const n=Km(o),s=(i?Math.sin(n):Math.cos(n))||.001,r=.75*e*(""+t).length;return Math.min(e/s,r)}class Ix extends $y{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return mm(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:n}=this;const s=t=>o=e?o:t,r=t=>n=i?n:t;if(t){const t=Hm(o),e=Hm(n);t<0&&e<0?r(0):t>0&&e>0&&s(0)}if(o===n){let e=0===n?1:Math.abs(.05*n);r(n+e),t||s(o-e)}this.min=o,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:o}=t;return o?(e=Math.ceil(this.max/o)-Math.floor(this.min/o)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${o} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const o=Dx({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&Gm(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const o=(i-e)/Math.max(t.length-1,1)/2;e-=o,i+=o}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return $g(t,this.chart.options.locale,this.options.ticks.format)}}class Ox extends Ix{static id="linear";static defaults={ticks:{callback:Dg.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=vm(t)?t:0,this.max=vm(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=Km(this.options.ticks.minRotation),o=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/o))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const Lx=t=>Math.floor(Vm(t)),zx=(t,e)=>Math.pow(10,Lx(t)+e);function Px(t){return 1===t/Math.pow(10,Lx(t))}function Rx(t,e,i){const o=Math.pow(10,i),n=Math.floor(t/o);return Math.ceil(e/o)-n}function Nx(t,{min:e,max:i}){e=ym(t.min,e);const o=[],n=Lx(e);let s=function(t,e){let i=Lx(e-t);for(;Rx(t,e,i)>10;)i++;for(;Rx(t,e,i)<10;)i--;return Math.min(i,Lx(t))}(e,i),r=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=n>s?Math.pow(10,n):0,d=Math.round((e-l)*r)/r,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((d-c)/Math.pow(10,s)),u=ym(t.min,Math.round((l+c+h*Math.pow(10,s))*r)/r);for(;u<i;)o.push({value:u,major:Px(u),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,r=s>=0?1:r),u=Math.round((l+c+h*Math.pow(10,s))*r)/r;const p=ym(t.max,u);return o.push({value:p,major:Px(p),significand:h}),o}class Bx extends $y{static id="logarithmic";static defaults={ticks:{callback:Dg.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=Ix.prototype.parse.apply(this,[t,e]);if(0!==i)return vm(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=vm(t)?Math.max(0,t):null,this.max=vm(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!vm(this._userMin)&&(this.min=t===zx(this.min,0)?zx(this.min,-1):zx(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,o=this.max;const n=e=>i=t?i:e,s=t=>o=e?o:t;i===o&&(i<=0?(n(1),s(10)):(n(zx(i,-1)),s(zx(o,1)))),i<=0&&n(zx(o,-1)),o<=0&&s(zx(i,1)),this.min=i,this.max=o}buildTicks(){const t=this.options,e=Nx({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&Gm(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":$g(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=Vm(t),this._valueRange=Vm(this.max)-Vm(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(Vm(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Fx(t){const e=t.ticks;if(e.display&&t.display){const t=rf(e.backdropPadding);return bm(e.font&&e.font.size,Pg.font.size)+t.height}return 0}function qx(t,e,i,o,n){return t===o||t===n?{start:e-i/2,end:e+i/2}:t<o||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Ux(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),o=[],n=[],s=t._pointLabels.length,r=t.options.pointLabels,a=r.centerPointLabels?Pm/s:0;for(let h=0;h<s;h++){const s=r.setContext(t.getPointLabelContext(h));n[h]=s.padding;const u=t.getPointPosition(h,t.drawingArea+n[h],a),p=af(s.font),m=(l=t.ctx,d=p,c=gm(c=t._pointLabels[h])?c:[c],{w:Ng(l,d.string,c),h:c.length*d.lineHeight});o[h]=m;const g=ig(t.getIndexAngle(h)+a),f=Math.round(Xm(g));jx(i,e,g,qx(f,u.x,m.w,0,180),qx(f,u.y,m.h,90,270))}var l,d,c;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const o=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:r,display:a}=s.pointLabels,l={extra:Fx(s)/2,additionalAngle:r?Pm/n:0};let d;for(let s=0;s<n;s++){l.padding=i[s],l.size=e[s];const n=Vx(t,s,l);o.push(n),"auto"===a&&(n.visible=Hx(n,d),n.visible&&(d=n))}return o}(t,o,n)}function jx(t,e,i,o,n){const s=Math.abs(Math.sin(i)),r=Math.abs(Math.cos(i));let a=0,l=0;o.start<e.l?(a=(e.l-o.start)/s,t.l=Math.min(t.l,e.l-a)):o.end>e.r&&(a=(o.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),n.start<e.t?(l=(e.t-n.start)/r,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}function Vx(t,e,i){const o=t.drawingArea,{extra:n,additionalAngle:s,padding:r,size:a}=i,l=t.getPointPosition(e,o+n+r,s),d=Math.round(Xm(ig(l.angle+qm))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,a.h,d),h=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(d),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:u,top:c,right:u+a.w,bottom:c+a.h}}function Hx(t,e){if(!e)return!0;const{left:i,top:o,right:n,bottom:s}=t;return!(jg({x:i,y:o},e)||jg({x:i,y:s},e)||jg({x:n,y:o},e)||jg({x:n,y:s},e))}function Wx(t,e,i){const{left:o,top:n,right:s,bottom:r}=i,{backdropColor:a}=e;if(!mm(a)){const i=sf(e.borderRadius),l=rf(e.backdropPadding);t.fillStyle=a;const d=o-l.left,c=n-l.top,h=s-o+l.width,u=r-n+l.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),Xg(t,{x:d,y:c,w:h,h:u,radius:i}),t.fill()):t.fillRect(d,c,h,u)}}function Zx(t,e,i,o){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,Rm);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let s=1;s<o;s++)i=t.getPointPosition(s,e),n.lineTo(i.x,i.y)}}class Yx extends Ix{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Dg.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=rf(Fx(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=vm(t)&&!isNaN(t)?t:0,this.max=vm(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Fx(this.options))}generateTickLabels(t){Ix.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=_m(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Ux(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,o){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-o)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,o))}getIndexAngle(t){return ig(t*(Rm/(this._pointLabels.length||1))+Km(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(mm(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(mm(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return df(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const o=this.getIndexAngle(t)-qm+i;return{x:Math.cos(o)*e+this.xCenter,y:Math.sin(o)*e+this.yCenter,angle:o}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:o,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:o,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Zx(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:o,border:n}=e,s=this._pointLabels.length;let r,a,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:o}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const s=o.setContext(t.getPointLabelContext(n));Wx(i,s,e);const r=af(s.font),{x:a,y:l,textAlign:d}=e;Kg(i,t._pointLabels[n],a,l+r.lineHeight/2,r,{color:s.color,textAlign:d,textBaseline:"middle"})}}(this,s),o.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){a=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),r=o.setContext(i),l=n.setContext(i);!function(t,e,i,o,n){const s=t.ctx,r=e.circular,{color:a,lineWidth:l}=e;!r&&!o||!a||!l||i<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),Zx(t,i,r,o),s.closePath(),s.stroke(),s.restore())}(this,r,a,s,l)}})),i.display){for(t.save(),r=s-1;r>=0;r--){const o=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:s}=o;s&&n&&(t.lineWidth=s,t.strokeStyle=n,t.setLineDash(o.borderDash),t.lineDashOffset=o.borderDashOffset,a=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(r,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const o=this.getIndexAngle(0);let n,s;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(o),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((o,r)=>{if(0===r&&this.min>=0&&!e.reverse)return;const a=i.setContext(this.getContext(r)),l=af(a.font);if(n=this.getDistanceFromCenterForValue(this.ticks[r].value),a.showLabelBackdrop){t.font=l.string,s=t.measureText(o.label).width,t.fillStyle=a.backdropColor;const e=rf(a.backdropPadding);t.fillRect(-s/2-e.left,-n-l.size/2-e.top,s+e.width,l.size+e.height)}Kg(t,o.label,0,-n,l,{color:a.color,strokeColor:a.textStrokeColor,strokeWidth:a.textStrokeWidth})})),t.restore()}drawTitle(){}}const Gx={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Kx=Object.keys(Gx);function Xx(t,e){return t-e}function Qx(t,e){if(mm(e))return null;const i=t._adapter,{parser:o,round:n,isoWeekday:s}=t._parseOpts;let r=e;return"function"==typeof o&&(r=o(r)),vm(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null===r?null:(n&&(r="week"!==n||!Ym(s)&&!0!==s?i.startOf(r,n):i.startOf(r,"isoWeek",s)),+r)}function Jx(t,e,i,o){const n=Kx.length;for(let s=Kx.indexOf(t);s<n-1;++s){const t=Gx[Kx[s]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=o)return Kx[s]}return Kx[n-1]}function t_(t,e,i){if(i){if(i.length){const{lo:o,hi:n}=rg(i,e);t[i[o]>=e?i[o]:i[n]]=!0}}else t[e]=!0}function e_(t,e,i){const o=[],n={},s=e.length;let r,a;for(r=0;r<s;++r)a=e[r],n[a]=r,o.push({value:a,major:!1});return 0!==s&&i?function(t,e,i,o){const n=t._adapter,s=+n.startOf(e[0].value,o),r=e[e.length-1].value;let a,l;for(a=s;a<=r;a=+n.add(a,1,o))l=i[a],l>=0&&(e[l].major=!0);return e}(t,o,n,i):o}class i_ extends $y{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),o=this._adapter=new Lv._date(t.adapters.date);o.init(e),$m(i.displayFormats,o.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Qx(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:o,max:n,minDefined:s,maxDefined:r}=this.getUserBounds();function a(t){s||isNaN(t.min)||(o=Math.min(o,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}s&&r||(a(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||a(this.getMinMax(!1))),o=vm(o)&&!isNaN(o)?o:+e.startOf(Date.now(),i),n=vm(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(o,n-1),this.max=Math.max(o+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,o="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&o.length&&(this.min=this._userMin||o[0],this.max=this._userMax||o[o.length-1]);const n=this.min,s=function(t,e,i){let o=0,n=t.length;for(;o<n&&t[o]<e;)o++;for(;n>o&&t[n-1]>i;)n--;return o>0||n<t.length?t.slice(o,n):t}(o,n,this.max);return this._unit=e.unit||(i.autoSkip?Jx(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,o,n){for(let s=Kx.length-1;s>=Kx.indexOf(i);s--){const i=Kx[s];if(Gx[i].common&&t._adapter.diff(n,o,i)>=e-1)return i}return Kx[i?Kx.indexOf(i):0]}(this,s.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Kx.indexOf(t)+1,i=Kx.length;e<i;++e)if(Gx[Kx[e]].common)return Kx[e]}(this._unit):void 0,this.initOffsets(o),t.reverse&&s.reverse(),e_(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,o=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),o=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const s=t.length<3?.5:.25;o=ng(o,0,s),n=ng(n,0,s),this._offsets={start:o,end:n,factor:1/(o+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,o=this.options,n=o.time,s=n.unit||Jx(n.minUnit,e,i,this._getLabelCapacity(e)),r=bm(o.ticks.stepSize,1),a="week"===s&&n.isoWeekday,l=Ym(a)||!0===a,d={};let c,h,u=e;if(l&&(u=+t.startOf(u,"isoWeek",a)),u=+t.startOf(u,l?"day":s),t.diff(i,e,s)>1e5*r)throw new Error(e+" and "+i+" are too far apart with stepSize of "+r+" "+s);const p="data"===o.ticks.source&&this.getDataTimestamps();for(c=u,h=0;c<i;c=+t.add(c,r,s),h++)t_(d,c,p);return c!==i&&"ticks"!==o.bounds&&1!==h||t_(d,c,p),Object.keys(d).sort(Xx).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,o=this._unit,n=e||i[o];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,o){const n=this.options,s=n.ticks.callback;if(s)return _m(s,[t,e,i],this);const r=n.time.displayFormats,a=this._unit,l=this._majorUnit,d=a&&r[a],c=l&&r[l],h=i[e],u=l&&c&&h&&h.major;return this._adapter.format(t,o||(u?c:d))}generateTickLabels(t){let e,i,o;for(e=0,i=t.length;e<i;++e)o=t[e],o.label=this._tickFormatFunction(o.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,o=Km(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(o),s=Math.sin(o),r=this._resolveTickFontOptions(0).size;return{w:i*n+r*s,h:i*s+r*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,o=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,e_(this,[t],this._majorUnit),o),s=this._getLabelSize(n),r=Math.floor(this.isHorizontal()?this.width/s.w:this.height/s.h)-1;return r>0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const o=this.getMatchingVisibleMetas();if(this._normalized&&o.length)return this._cache.data=o[0].controller.getAllParsedValues(this);for(t=0,e=o.length;t<e;++t)i=i.concat(o[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const o=this.getLabels();for(e=0,i=o.length;e<i;++e)t.push(Qx(this,o[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return hg(t.sort(Xx))}}function o_(t,e,i){let o,n,s,r,a=0,l=t.length-1;i?(e>=t[a].pos&&e<=t[l].pos&&({lo:a,hi:l}=ag(t,"pos",e)),({pos:o,time:s}=t[a]),({pos:n,time:r}=t[l])):(e>=t[a].time&&e<=t[l].time&&({lo:a,hi:l}=ag(t,"time",e)),({time:o,pos:s}=t[a]),({time:n,pos:r}=t[l]));const d=n-o;return d?s+(r-s)*(e-o)/d:s}var n_=Object.freeze({__proto__:null,CategoryScale:class extends $y{static id="category";static defaults={ticks:{callback:Tx}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:o}of e)t[i]===o&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(mm(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:ng(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:$x(i,t,bm(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:o}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(o=this.getLabels().length-1)),this.min=i,this.max=o}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,o=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)o.push({value:i});return o}getLabelForValue(t){return Tx.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:Ox,LogarithmicScale:Bx,RadialLinearScale:Yx,TimeScale:i_,TimeSeriesScale:class extends i_{static id="timeseries";static defaults=i_.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=o_(e,this.min),this._tableRange=o_(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,o=[],n=[];let s,r,a,l,d;for(s=0,r=t.length;s<r;++s)l=t[s],l>=e&&l<=i&&o.push(l);if(o.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(s=0,r=o.length;s<r;++s)d=o[s+1],a=o[s-1],l=o[s],Math.round((d+a)/2)!==l&&n.push({time:l,pos:s/(r-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(o_(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return o_(this._table,i*this._tableRange+this._minPos,!0)}}});const s_=[Mv,Db,Ex,n_];sb.register(...s_);
11052
11061
  /*!
11053
11062
  * chartjs-adapter-luxon v1.3.1
11054
11063
  * https://www.chartjs.org
11055
11064
  * (c) 2023 chartjs-adapter-luxon Contributors
11056
11065
  * Released under the MIT license
11057
11066
  */
11058
- const n_={datetime:Za.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:Za.TIME_WITH_SECONDS,minute:Za.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};Iv._date.override({_id:"luxon",_create:function(t){return Za.fromMillis(t,this.options)},init(t){this.options.locale||(this.options.locale=t.locale)},formats:function(){return n_},parse:function(t,e){const i=this.options,o=typeof t;return null===t||"undefined"===o?null:("number"===o?t=this._create(t):"string"===o?t="string"==typeof e?Za.fromFormat(t,e,i):Za.fromISO(t,i):t instanceof Date?t=Za.fromJSDate(t,i):"object"!==o||t instanceof Za||(t=Za.fromObject(t,i)),t.isValid?t.valueOf():null)},format:function(t,e){const i=this._create(t);return"string"==typeof e?i.toFormat(e):i.toLocaleString(e)},add:function(t,e,i){const o={};return o[i]=e,this._create(t).plus(o).valueOf()},diff:function(t,e,i){return this._create(t).diff(this._create(e)).as(i).valueOf()},startOf:function(t,e,i){if("isoWeek"===e){i=Math.trunc(Math.min(Math.max(0,i),6));const e=this._create(t);return e.minus({days:(e.weekday-i+7)%7}).startOf("day").valueOf()}return e?this._create(t).startOf(e).valueOf():t},endOf:function(t,e){return this._create(t).endOf(e).valueOf()}});
11067
+ const r_={datetime:Za.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:Za.TIME_WITH_SECONDS,minute:Za.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};Lv._date.override({_id:"luxon",_create:function(t){return Za.fromMillis(t,this.options)},init(t){this.options.locale||(this.options.locale=t.locale)},formats:function(){return r_},parse:function(t,e){const i=this.options,o=typeof t;return null===t||"undefined"===o?null:("number"===o?t=this._create(t):"string"===o?t="string"==typeof e?Za.fromFormat(t,e,i):Za.fromISO(t,i):t instanceof Date?t=Za.fromJSDate(t,i):"object"!==o||t instanceof Za||(t=Za.fromObject(t,i)),t.isValid?t.valueOf():null)},format:function(t,e){const i=this._create(t);return"string"==typeof e?i.toFormat(e):i.toLocaleString(e)},add:function(t,e,i){const o={};return o[i]=e,this._create(t).plus(o).valueOf()},diff:function(t,e,i){return this._create(t).diff(this._create(e)).as(i).valueOf()},startOf:function(t,e,i){if("isoWeek"===e){i=Math.trunc(Math.min(Math.max(0,i),6));const e=this._create(t);return e.minus({days:(e.weekday-i+7)%7}).startOf("day").valueOf()}return e?this._create(t).startOf(e).valueOf():t},endOf:function(t,e){return this._create(t).endOf(e).valueOf()}});
11059
11068
  /*!
11060
11069
  * chartjs-plugin-datalabels v2.2.0
11061
11070
  * https://chartjs-plugin-datalabels.netlify.app
11062
11071
  * (c) 2017-2022 chartjs-plugin-datalabels contributors
11063
11072
  * Released under the MIT license
11064
11073
  */
11065
- var s_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),r_=function(t){var e,i=[];for(t=[].concat(t);t.length;)"string"==typeof(e=t.pop())?i.unshift.apply(i,e.split("\n")):Array.isArray(e)?t.push.apply(t,e):um(t)||i.unshift(""+e);return i},a_=function(t,e,i){var o,n=[].concat(e),s=n.length,r=t.font,a=0;for(t.font=i.string,o=0;o<s;++o)a=Math.max(t.measureText(n[o]).width,a);return t.font=r,{height:s*i.lineHeight,width:a}},l_=function(t,e,i){return Math.max(t,Math.min(e,i))},d_=function(t,e){var i,o,n,s,r=t.slice(),a=[];for(i=0,n=e.length;i<n;++i)s=e[i],-1===(o=r.indexOf(s))?a.push([s,1]):r.splice(o,1);for(i=0,n=r.length;i<n;++i)a.push([r[i],-1]);return a},c_=function(t){return Math.round(t*s_)/s_};function h_(t,e){var i=e.x,o=e.y;if(null===i)return{x:0,y:-1};if(null===o)return{x:1,y:0};var n=t.x-i,s=t.y-o,r=Math.sqrt(n*n+s*s);return{x:r?n/r:0,y:r?s/r:-1}}var u_=0,p_=1,m_=2,g_=4,f_=8;function v_(t,e,i){var o=u_;return t<i.left?o|=p_:t>i.right&&(o|=m_),e<i.top?o|=f_:e>i.bottom&&(o|=g_),o}function y_(t,e){var i,o,n=e.anchor,s=t;return e.clamp&&(s=function(t,e){for(var i,o,n,s=t.x0,r=t.y0,a=t.x1,l=t.y1,d=v_(s,r,e),c=v_(a,l,e);d|c&&!(d&c);)(i=d||c)&f_?(o=s+(a-s)*(e.top-r)/(l-r),n=e.top):i&g_?(o=s+(a-s)*(e.bottom-r)/(l-r),n=e.bottom):i&m_?(n=r+(l-r)*(e.right-s)/(a-s),o=e.right):i&p_&&(n=r+(l-r)*(e.left-s)/(a-s),o=e.left),i===d?d=v_(s=o,r=n,e):c=v_(a=o,l=n,e);return{x0:s,x1:a,y0:r,y1:l}}(s,e.area)),"start"===n?(i=s.x0,o=s.y0):"end"===n?(i=s.x1,o=s.y1):(i=(s.x0+s.x1)/2,o=(s.y0+s.y1)/2),function(t,e,i,o,n){switch(n){case"center":i=o=0;break;case"bottom":i=0,o=1;break;case"right":i=1,o=0;break;case"left":i=-1,o=0;break;case"top":i=0,o=-1;break;case"start":i=-i,o=-o;break;case"end":break;default:n*=Math.PI/180,i=Math.cos(n),o=Math.sin(n)}return{x:t,y:e,vx:i,vy:o}}(i,o,t.vx,t.vy,e.align)}var b_=function(t,e){var i=(t.startAngle+t.endAngle)/2,o=Math.cos(i),n=Math.sin(i),s=t.innerRadius,r=t.outerRadius;return y_({x0:t.x+o*s,y0:t.y+n*s,x1:t.x+o*r,y1:t.y+n*r,vx:o,vy:n},e)},x_=function(t,e){var i=h_(t,e.origin),o=i.x*t.options.radius,n=i.y*t.options.radius;return y_({x0:t.x-o,y0:t.y-n,x1:t.x+o,y1:t.y+n,vx:i.x,vy:i.y},e)},__=function(t,e){var i=h_(t,e.origin),o=t.x,n=t.y,s=0,r=0;return t.horizontal?(o=Math.min(t.x,t.base),s=Math.abs(t.base-t.x)):(n=Math.min(t.y,t.base),r=Math.abs(t.base-t.y)),y_({x0:o,y0:n+r,x1:o+s,y1:n,vx:i.x,vy:i.y},e)},w_=function(t,e){var i=h_(t,e.origin);return y_({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:i.x,vy:i.y},e)},k_=c_;function C_(t,e){var i=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!i)return null;if(void 0!==i.xCenter&&void 0!==i.yCenter)return{x:i.xCenter,y:i.yCenter};var o=i.getBasePixel();return t.horizontal?{x:o,y:null}:{x:null,y:o}}function S_(t,e,i){var o=i.backgroundColor,n=i.borderColor,s=i.borderWidth;(o||n&&s)&&(t.beginPath(),function(t,e,i,o,n,s){var r=Math.PI/2;if(s){var a=Math.min(s,n/2,o/2),l=e+a,d=i+a,c=e+o-a,h=i+n-a;t.moveTo(e,d),l<c&&d<h?(t.arc(l,d,a,-Math.PI,-r),t.arc(c,d,a,-r,0),t.arc(c,h,a,0,r),t.arc(l,h,a,r,Math.PI)):l<c?(t.moveTo(l,i),t.arc(c,d,a,-r,r),t.arc(l,d,a,r,Math.PI+r)):d<h?(t.arc(l,d,a,-Math.PI,0),t.arc(l,h,a,0,Math.PI)):t.arc(l,d,a,-Math.PI,Math.PI),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,o,n)}(t,k_(e.x)+s/2,k_(e.y)+s/2,k_(e.w)-s,k_(e.h)-s,i.borderRadius),t.closePath(),o&&(t.fillStyle=o,t.fill()),n&&s&&(t.strokeStyle=n,t.lineWidth=s,t.lineJoin="miter",t.stroke()))}function A_(t,e,i){var o=t.shadowBlur,n=i.stroked,s=k_(i.x),r=k_(i.y),a=k_(i.w);n&&t.strokeText(e,s,r,a),i.filled&&(o&&n&&(t.shadowBlur=0),t.fillText(e,s,r,a),o&&n&&(t.shadowBlur=o))}var E_=function(t,e,i,o){var n=this;n._config=t,n._index=o,n._model=null,n._rects=null,n._ctx=e,n._el=i};Sm(E_.prototype,{_modelize:function(t,e,i,o){var n,s=this,r=s._index,a=sf(rf([i.font,{}],o,r)),l=rf([i.color,Lg.color],o,r);return{align:rf([i.align,"center"],o,r),anchor:rf([i.anchor,"center"],o,r),area:o.chart.chartArea,backgroundColor:rf([i.backgroundColor,null],o,r),borderColor:rf([i.borderColor,null],o,r),borderRadius:rf([i.borderRadius,0],o,r),borderWidth:rf([i.borderWidth,0],o,r),clamp:rf([i.clamp,!1],o,r),clip:rf([i.clip,!1],o,r),color:l,display:t,font:a,lines:e,offset:rf([i.offset,4],o,r),opacity:rf([i.opacity,1],o,r),origin:C_(s._el,o),padding:nf(rf([i.padding,4],o,r)),positioner:(n=s._el,n instanceof db?b_:n instanceof xb?x_:n instanceof Eb?__:w_),rotation:rf([i.rotation,0],o,r)*(Math.PI/180),size:a_(s._ctx,e,a),textAlign:rf([i.textAlign,"start"],o,r),textShadowBlur:rf([i.textShadowBlur,0],o,r),textShadowColor:rf([i.textShadowColor,l],o,r),textStrokeColor:rf([i.textStrokeColor,l],o,r),textStrokeWidth:rf([i.textStrokeWidth,0],o,r)}},update:function(t){var e,i,o,n=this,s=null,r=null,a=n._index,l=n._config,d=rf([l.display,!0],t,a);d&&(e=t.dataset.data[a],(o=um(i=vm(bm(l.formatter,[e,t]),e))?[]:r_(i)).length&&(r=function(t){var e=t.borderWidth||0,i=t.padding,o=t.size.height,n=t.size.width,s=-n/2,r=-o/2;return{frame:{x:s-i.left-e,y:r-i.top-e,w:n+i.width+2*e,h:o+i.height+2*e},text:{x:s,y:r,w:n,h:o}}}(s=n._modelize(d,o,l,t)))),n._model=s,n._rects=r},geometry:function(){return this._rects?this._rects.frame:{}},rotation:function(){return this._model?this._model.rotation:0},visible:function(){return this._model&&this._model.opacity},model:function(){return this._model},draw:function(t,e){var i,o=t.ctx,n=this._model,s=this._rects;this.visible()&&(o.save(),n.clip&&(i=n.area,o.beginPath(),o.rect(i.left,i.top,i.right-i.left,i.bottom-i.top),o.clip()),o.globalAlpha=l_(0,n.opacity,1),o.translate(k_(e.x),k_(e.y)),o.rotate(n.rotation),S_(o,s.frame,n),function(t,e,i,o){var n,s=o.textAlign,r=o.color,a=!!r,l=o.font,d=e.length,c=o.textStrokeColor,h=o.textStrokeWidth,u=c&&h;if(d&&(a||u))for(i=function(t,e,i){var o=i.lineHeight,n=t.w,s=t.x;return"center"===e?s+=n/2:"end"!==e&&"right"!==e||(s+=n),{h:o,w:n,x:s,y:t.y+o/2}}(i,s,l),t.font=l.string,t.textAlign=s,t.textBaseline="middle",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor,a&&(t.fillStyle=r),u&&(t.lineJoin="round",t.lineWidth=h,t.strokeStyle=c),n=0,d=e.length;n<d;++n)A_(t,e[n],{stroked:u,filled:a,w:i.w,x:i.x,y:i.y+i.h*n})}(o,n.lines,s.text,n),o.restore())}});var $_=Number.MIN_SAFE_INTEGER||-9007199254740991,T_=Number.MAX_SAFE_INTEGER||9007199254740991;function D_(t,e,i){var o=Math.cos(i),n=Math.sin(i),s=e.x,r=e.y;return{x:s+o*(t.x-s)-n*(t.y-r),y:r+n*(t.x-s)+o*(t.y-r)}}function M_(t,e){var i,o,n,s,r,a=T_,l=$_,d=e.origin;for(i=0;i<t.length;++i)n=(o=t[i]).x-d.x,s=o.y-d.y,r=e.vx*n+e.vy*s,a=Math.min(a,r),l=Math.max(l,r);return{min:a,max:l}}function I_(t,e){var i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);return{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n,origin:t,ln:n}}var O_=function(){this._rotation=0,this._rect={x:0,y:0,w:0,h:0}};function L_(t,e,i){var o=e.positioner(t,e),n=o.vx,s=o.vy;if(!n&&!s)return{x:o.x,y:o.y};var r=i.w,a=i.h,l=e.rotation,d=Math.abs(r/2*Math.cos(l))+Math.abs(a/2*Math.sin(l)),c=Math.abs(r/2*Math.sin(l))+Math.abs(a/2*Math.cos(l)),h=1/Math.max(Math.abs(n),Math.abs(s));return d*=n*h,c*=s*h,d+=e.offset*n,c+=e.offset*s,{x:o.x+d,y:o.y+c}}Sm(O_.prototype,{center:function(){var t=this._rect;return{x:t.x+t.w/2,y:t.y+t.h/2}},update:function(t,e,i){this._rotation=i,this._rect={x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}},contains:function(t){var e=this,i=e._rect;return!((t=D_(t,e.center(),-e._rotation)).x<i.x-1||t.y<i.y-1||t.x>i.x+i.w+2||t.y>i.y+i.h+2)},intersects:function(t){var e,i,o,n=this._points(),s=t._points(),r=[I_(n[0],n[1]),I_(n[0],n[3])];for(this._rotation!==t._rotation&&r.push(I_(s[0],s[1]),I_(s[0],s[3])),e=0;e<r.length;++e)if(i=M_(n,r[e]),o=M_(s,r[e]),i.max<o.min||o.max<i.min)return!1;return!0},_points:function(){var t=this,e=t._rect,i=t._rotation,o=t.center();return[D_({x:e.x,y:e.y},o,i),D_({x:e.x+e.w,y:e.y},o,i),D_({x:e.x+e.w,y:e.y+e.h},o,i),D_({x:e.x,y:e.y+e.h},o,i)]}});var z_={prepare:function(t){var e,i,o,n,s,r=[];for(e=0,o=t.length;e<o;++e)for(i=0,n=t[e].length;i<n;++i)s=t[e][i],r.push(s),s.$layout={_box:new O_,_hidable:!1,_visible:!0,_set:e,_idx:s._index};return r.sort((function(t,e){var i=t.$layout,o=e.$layout;return i._idx===o._idx?o._set-i._set:o._idx-i._idx})),this.update(r),r},update:function(t){var e,i,o,n,s,r=!1;for(e=0,i=t.length;e<i;++e)n=(o=t[e]).model(),(s=o.$layout)._hidable=n&&"auto"===n.display,s._visible=o.visible(),r|=s._hidable;r&&function(t){var e,i,o,n,s,r,a;for(e=0,i=t.length;e<i;++e)(n=(o=t[e]).$layout)._visible&&(a=new Proxy(o._el,{get:(t,e)=>t.getProps([e],!0)[e]}),s=o.geometry(),r=L_(a,o.model(),s),n._box.update(r,s,o.rotation()));(function(t,e){var i,o,n,s;for(i=t.length-1;i>=0;--i)for(n=t[i].$layout,o=i-1;o>=0&&n._visible;--o)(s=t[o].$layout)._visible&&n._box.intersects(s._box)&&e(n,s)})(t,(function(t,e){var i=t._hidable,o=e._hidable;i&&o||o?e._visible=!1:i&&(t._visible=!1)}))}(t)},lookup:function(t,e){var i,o;for(i=t.length-1;i>=0;--i)if((o=t[i].$layout)&&o._visible&&o._box.contains(e))return t[i];return null},draw:function(t,e){var i,o,n,s,r,a;for(i=0,o=e.length;i<o;++i)(s=(n=e[i]).$layout)._visible&&(r=n.geometry(),a=L_(n._el,n.model(),r),s._box.update(a,r,n.rotation()),n.draw(t,a))}},P_={align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,clamp:!1,clip:!1,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},formatter:function(t){if(um(t))return null;var e,i,o,n=t;if(mm(t))if(um(t.label))if(um(t.r))for(n="",o=0,i=(e=Object.keys(t)).length;o<i;++o)n+=(0!==o?", ":"")+e[o]+": "+t[e[o]];else n=t.r;else n=t.label;return""+n},labels:void 0,listeners:{},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,textShadowBlur:0,textShadowColor:void 0},R_="$datalabels",N_="$default";function B_(t,e,i,o){if(e){var n,s=i.$context,r=i.$groups;e[r._set]&&(n=e[r._set][r._key])&&!0===bm(n,[s,o])&&(t[R_]._dirty=!0,i.update(s))}}function F_(t,e){var i,o,n=t[R_],s=n._listeners;if(s.enter||s.leave){if("mousemove"===e.type)o=z_.lookup(n._labels,e);else if("mouseout"!==e.type)return;i=n._hovered,n._hovered=o,function(t,e,i,o,n){var s,r;(i||o)&&(i?o?i!==o&&(r=s=!0):r=!0:s=!0,r&&B_(t,e.leave,i,n),s&&B_(t,e.enter,o,n))}(t,s,i,o,e)}}var q_={id:"datalabels",defaults:P_,beforeInit:function(t){t[R_]={_actives:[]}},beforeUpdate:function(t){var e=t[R_];e._listened=!1,e._listeners={},e._datasets=[],e._labels=[]},afterDatasetUpdate:function(t,e,i){var o,n,s,r,a,l,d,c,h=e.index,u=t[R_],p=u._datasets[h]=[],m=t.isDatasetVisible(h),g=t.data.datasets[h],f=function(t,e){var i,o,n,s=t.datalabels,r=[];return!1===s?null:(!0===s&&(s={}),e=Sm({},[e,s]),o=e.labels||{},n=Object.keys(o),delete e.labels,n.length?n.forEach((function(t){o[t]&&r.push(Sm({},[e,o[t],{_key:t}]))})):r.push(e),i=r.reduce((function(t,e){return xm(e.listeners||{},(function(i,o){t[o]=t[o]||{},t[o][e._key||N_]=i})),delete e.listeners,t}),{}),{labels:r,listeners:i})}(g,i),v=e.meta.data||[],y=t.ctx;for(y.save(),o=0,s=v.length;o<s;++o)if((d=v[o])[R_]=[],m&&d&&t.getDataVisibility(o)&&!d.skip)for(n=0,r=f.labels.length;n<r;++n)l=(a=f.labels[n])._key,(c=new E_(a,y,d,o)).$groups={_set:h,_key:l||N_},c.$context={active:!1,chart:t,dataIndex:o,dataset:g,datasetIndex:h},c.update(c.$context),d[R_].push(c),p.push(c);y.restore(),Sm(u._listeners,f.listeners,{merger:function(t,i,o){i[t]=i[t]||{},i[t][e.index]=o[t],u._listened=!0}})},afterUpdate:function(t){t[R_]._labels=z_.prepare(t[R_]._datasets)},afterDatasetsDraw:function(t){z_.draw(t,t[R_]._labels)},beforeEvent:function(t,e){if(t[R_]._listened){var i=e.event;switch(i.type){case"mousemove":case"mouseout":F_(t,i);break;case"click":!function(t,e){var i=t[R_],o=i._listeners.click,n=o&&z_.lookup(i._labels,e);n&&B_(t,o,n,e)}(t,i)}}},afterEvent:function(t){var e,i,o,n,s,r,a,l=t[R_],d=l._actives,c=l._actives=t.getActiveElements(),h=d_(d,c);for(e=0,i=h.length;e<i;++e)if((s=h[e])[1])for(o=0,n=(a=s[0].element[R_]||[]).length;o<n;++o)(r=a[o]).$context.active=1===s[1],r.update(r.$context);(l._dirty||h.length)&&(z_.update(l._labels),t.render()),delete l._dirty}};ob.register(q_);const U_={"qualitative-set1":["#5ea3db","#c186e3","#66c2a5","#fc8d62","#a6d854","#ffd92f","#e5c494","#b3b3b3"],"qualitative-set2":["#377eb8","#984ea3","#4daf4a","#ff7f00","#e41a1c","#a65628","#f781bf","#ffff33"],"qualitative-set3":["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],"qualitative-paired":["#1f78b4","#a6cee3","#6a3d9a","#cab2d6","#33a02c","#b2df8a","#e31a1c","#fb9a99","#ff7f00","#fdbf6f"],"qualitative-accent":["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],"qualitative-pastel1":["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],"qualitative-pastel2":["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],"diverging-prgn":["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],"diverging-spectral":["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],"diverging-piyg":["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],"diverging-rdylgn":["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],"diverging-brbg":["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],"sequential-blues":["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],"sequential-greens":["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],"sequential-oranges":["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],"sequential-purples":["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],"sequential-reds":["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],"sequential-ylgnbu":["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]},j_="rgba(212, 212, 212, 0.5)";function V_(t){if(0===t)return"0s";const e=Math.floor(t/86400),i=t%86400,o=Math.floor(i/3600),n=i%3600,s=Math.floor(n/60),r=n%60,a=[];return e>0&&a.push(`${e}d`),o>0&&a.push(`${o}h`),s>0&&a.length<2&&a.push(`${s}m`),r>0&&a.length<2&&a.push(`${r}s`),a.slice(0,2).join(" ")}class H_ extends Ne{getInflatedMax(){if(!this.showPercent||!this.data)return;const t=Array(this.data.labels.length).fill(0);for(const e of this.datasets)e.data.forEach(((e,i)=>t[i]+=e));const e=Math.max(...t);return e>0?1.15*e:void 0}static get styles(){return a`
11074
+ var a_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),l_=function(t){var e,i=[];for(t=[].concat(t);t.length;)"string"==typeof(e=t.pop())?i.unshift.apply(i,e.split("\n")):Array.isArray(e)?t.push.apply(t,e):mm(t)||i.unshift(""+e);return i},d_=function(t,e,i){var o,n=[].concat(e),s=n.length,r=t.font,a=0;for(t.font=i.string,o=0;o<s;++o)a=Math.max(t.measureText(n[o]).width,a);return t.font=r,{height:s*i.lineHeight,width:a}},c_=function(t,e,i){return Math.max(t,Math.min(e,i))},h_=function(t,e){var i,o,n,s,r=t.slice(),a=[];for(i=0,n=e.length;i<n;++i)s=e[i],-1===(o=r.indexOf(s))?a.push([s,1]):r.splice(o,1);for(i=0,n=r.length;i<n;++i)a.push([r[i],-1]);return a},u_=function(t){return Math.round(t*a_)/a_};function p_(t,e){var i=e.x,o=e.y;if(null===i)return{x:0,y:-1};if(null===o)return{x:1,y:0};var n=t.x-i,s=t.y-o,r=Math.sqrt(n*n+s*s);return{x:r?n/r:0,y:r?s/r:-1}}var m_=0,g_=1,f_=2,v_=4,y_=8;function b_(t,e,i){var o=m_;return t<i.left?o|=g_:t>i.right&&(o|=f_),e<i.top?o|=y_:e>i.bottom&&(o|=v_),o}function x_(t,e){var i,o,n=e.anchor,s=t;return e.clamp&&(s=function(t,e){for(var i,o,n,s=t.x0,r=t.y0,a=t.x1,l=t.y1,d=b_(s,r,e),c=b_(a,l,e);d|c&&!(d&c);)(i=d||c)&y_?(o=s+(a-s)*(e.top-r)/(l-r),n=e.top):i&v_?(o=s+(a-s)*(e.bottom-r)/(l-r),n=e.bottom):i&f_?(n=r+(l-r)*(e.right-s)/(a-s),o=e.right):i&g_&&(n=r+(l-r)*(e.left-s)/(a-s),o=e.left),i===d?d=b_(s=o,r=n,e):c=b_(a=o,l=n,e);return{x0:s,x1:a,y0:r,y1:l}}(s,e.area)),"start"===n?(i=s.x0,o=s.y0):"end"===n?(i=s.x1,o=s.y1):(i=(s.x0+s.x1)/2,o=(s.y0+s.y1)/2),function(t,e,i,o,n){switch(n){case"center":i=o=0;break;case"bottom":i=0,o=1;break;case"right":i=1,o=0;break;case"left":i=-1,o=0;break;case"top":i=0,o=-1;break;case"start":i=-i,o=-o;break;case"end":break;default:n*=Math.PI/180,i=Math.cos(n),o=Math.sin(n)}return{x:t,y:e,vx:i,vy:o}}(i,o,t.vx,t.vy,e.align)}var __=function(t,e){var i=(t.startAngle+t.endAngle)/2,o=Math.cos(i),n=Math.sin(i),s=t.innerRadius,r=t.outerRadius;return x_({x0:t.x+o*s,y0:t.y+n*s,x1:t.x+o*r,y1:t.y+n*r,vx:o,vy:n},e)},w_=function(t,e){var i=p_(t,e.origin),o=i.x*t.options.radius,n=i.y*t.options.radius;return x_({x0:t.x-o,y0:t.y-n,x1:t.x+o,y1:t.y+n,vx:i.x,vy:i.y},e)},k_=function(t,e){var i=p_(t,e.origin),o=t.x,n=t.y,s=0,r=0;return t.horizontal?(o=Math.min(t.x,t.base),s=Math.abs(t.base-t.x)):(n=Math.min(t.y,t.base),r=Math.abs(t.base-t.y)),x_({x0:o,y0:n+r,x1:o+s,y1:n,vx:i.x,vy:i.y},e)},C_=function(t,e){var i=p_(t,e.origin);return x_({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:i.x,vy:i.y},e)},S_=u_;function A_(t,e){var i=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!i)return null;if(void 0!==i.xCenter&&void 0!==i.yCenter)return{x:i.xCenter,y:i.yCenter};var o=i.getBasePixel();return t.horizontal?{x:o,y:null}:{x:null,y:o}}function E_(t,e,i){var o=i.backgroundColor,n=i.borderColor,s=i.borderWidth;(o||n&&s)&&(t.beginPath(),function(t,e,i,o,n,s){var r=Math.PI/2;if(s){var a=Math.min(s,n/2,o/2),l=e+a,d=i+a,c=e+o-a,h=i+n-a;t.moveTo(e,d),l<c&&d<h?(t.arc(l,d,a,-Math.PI,-r),t.arc(c,d,a,-r,0),t.arc(c,h,a,0,r),t.arc(l,h,a,r,Math.PI)):l<c?(t.moveTo(l,i),t.arc(c,d,a,-r,r),t.arc(l,d,a,r,Math.PI+r)):d<h?(t.arc(l,d,a,-Math.PI,0),t.arc(l,h,a,0,Math.PI)):t.arc(l,d,a,-Math.PI,Math.PI),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,o,n)}(t,S_(e.x)+s/2,S_(e.y)+s/2,S_(e.w)-s,S_(e.h)-s,i.borderRadius),t.closePath(),o&&(t.fillStyle=o,t.fill()),n&&s&&(t.strokeStyle=n,t.lineWidth=s,t.lineJoin="miter",t.stroke()))}function $_(t,e,i){var o=t.shadowBlur,n=i.stroked,s=S_(i.x),r=S_(i.y),a=S_(i.w);n&&t.strokeText(e,s,r,a),i.filled&&(o&&n&&(t.shadowBlur=0),t.fillText(e,s,r,a),o&&n&&(t.shadowBlur=o))}var T_=function(t,e,i,o){var n=this;n._config=t,n._index=o,n._model=null,n._rects=null,n._ctx=e,n._el=i};Em(T_.prototype,{_modelize:function(t,e,i,o){var n,s=this,r=s._index,a=af(lf([i.font,{}],o,r)),l=lf([i.color,Pg.color],o,r);return{align:lf([i.align,"center"],o,r),anchor:lf([i.anchor,"center"],o,r),area:o.chart.chartArea,backgroundColor:lf([i.backgroundColor,null],o,r),borderColor:lf([i.borderColor,null],o,r),borderRadius:lf([i.borderRadius,0],o,r),borderWidth:lf([i.borderWidth,0],o,r),clamp:lf([i.clamp,!1],o,r),clip:lf([i.clip,!1],o,r),color:l,display:t,font:a,lines:e,offset:lf([i.offset,4],o,r),opacity:lf([i.opacity,1],o,r),origin:A_(s._el,o),padding:rf(lf([i.padding,4],o,r)),positioner:(n=s._el,n instanceof hb?__:n instanceof wb?w_:n instanceof Tb?k_:C_),rotation:lf([i.rotation,0],o,r)*(Math.PI/180),size:d_(s._ctx,e,a),textAlign:lf([i.textAlign,"start"],o,r),textShadowBlur:lf([i.textShadowBlur,0],o,r),textShadowColor:lf([i.textShadowColor,l],o,r),textStrokeColor:lf([i.textStrokeColor,l],o,r),textStrokeWidth:lf([i.textStrokeWidth,0],o,r)}},update:function(t){var e,i,o,n=this,s=null,r=null,a=n._index,l=n._config,d=lf([l.display,!0],t,a);d&&(e=t.dataset.data[a],(o=mm(i=bm(_m(l.formatter,[e,t]),e))?[]:l_(i)).length&&(r=function(t){var e=t.borderWidth||0,i=t.padding,o=t.size.height,n=t.size.width,s=-n/2,r=-o/2;return{frame:{x:s-i.left-e,y:r-i.top-e,w:n+i.width+2*e,h:o+i.height+2*e},text:{x:s,y:r,w:n,h:o}}}(s=n._modelize(d,o,l,t)))),n._model=s,n._rects=r},geometry:function(){return this._rects?this._rects.frame:{}},rotation:function(){return this._model?this._model.rotation:0},visible:function(){return this._model&&this._model.opacity},model:function(){return this._model},draw:function(t,e){var i,o=t.ctx,n=this._model,s=this._rects;this.visible()&&(o.save(),n.clip&&(i=n.area,o.beginPath(),o.rect(i.left,i.top,i.right-i.left,i.bottom-i.top),o.clip()),o.globalAlpha=c_(0,n.opacity,1),o.translate(S_(e.x),S_(e.y)),o.rotate(n.rotation),E_(o,s.frame,n),function(t,e,i,o){var n,s=o.textAlign,r=o.color,a=!!r,l=o.font,d=e.length,c=o.textStrokeColor,h=o.textStrokeWidth,u=c&&h;if(d&&(a||u))for(i=function(t,e,i){var o=i.lineHeight,n=t.w,s=t.x;return"center"===e?s+=n/2:"end"!==e&&"right"!==e||(s+=n),{h:o,w:n,x:s,y:t.y+o/2}}(i,s,l),t.font=l.string,t.textAlign=s,t.textBaseline="middle",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor,a&&(t.fillStyle=r),u&&(t.lineJoin="round",t.lineWidth=h,t.strokeStyle=c),n=0,d=e.length;n<d;++n)$_(t,e[n],{stroked:u,filled:a,w:i.w,x:i.x,y:i.y+i.h*n})}(o,n.lines,s.text,n),o.restore())}});var D_=Number.MIN_SAFE_INTEGER||-9007199254740991,M_=Number.MAX_SAFE_INTEGER||9007199254740991;function I_(t,e,i){var o=Math.cos(i),n=Math.sin(i),s=e.x,r=e.y;return{x:s+o*(t.x-s)-n*(t.y-r),y:r+n*(t.x-s)+o*(t.y-r)}}function O_(t,e){var i,o,n,s,r,a=M_,l=D_,d=e.origin;for(i=0;i<t.length;++i)n=(o=t[i]).x-d.x,s=o.y-d.y,r=e.vx*n+e.vy*s,a=Math.min(a,r),l=Math.max(l,r);return{min:a,max:l}}function L_(t,e){var i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);return{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n,origin:t,ln:n}}var z_=function(){this._rotation=0,this._rect={x:0,y:0,w:0,h:0}};function P_(t,e,i){var o=e.positioner(t,e),n=o.vx,s=o.vy;if(!n&&!s)return{x:o.x,y:o.y};var r=i.w,a=i.h,l=e.rotation,d=Math.abs(r/2*Math.cos(l))+Math.abs(a/2*Math.sin(l)),c=Math.abs(r/2*Math.sin(l))+Math.abs(a/2*Math.cos(l)),h=1/Math.max(Math.abs(n),Math.abs(s));return d*=n*h,c*=s*h,d+=e.offset*n,c+=e.offset*s,{x:o.x+d,y:o.y+c}}Em(z_.prototype,{center:function(){var t=this._rect;return{x:t.x+t.w/2,y:t.y+t.h/2}},update:function(t,e,i){this._rotation=i,this._rect={x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}},contains:function(t){var e=this,i=e._rect;return!((t=I_(t,e.center(),-e._rotation)).x<i.x-1||t.y<i.y-1||t.x>i.x+i.w+2||t.y>i.y+i.h+2)},intersects:function(t){var e,i,o,n=this._points(),s=t._points(),r=[L_(n[0],n[1]),L_(n[0],n[3])];for(this._rotation!==t._rotation&&r.push(L_(s[0],s[1]),L_(s[0],s[3])),e=0;e<r.length;++e)if(i=O_(n,r[e]),o=O_(s,r[e]),i.max<o.min||o.max<i.min)return!1;return!0},_points:function(){var t=this,e=t._rect,i=t._rotation,o=t.center();return[I_({x:e.x,y:e.y},o,i),I_({x:e.x+e.w,y:e.y},o,i),I_({x:e.x+e.w,y:e.y+e.h},o,i),I_({x:e.x,y:e.y+e.h},o,i)]}});var R_={prepare:function(t){var e,i,o,n,s,r=[];for(e=0,o=t.length;e<o;++e)for(i=0,n=t[e].length;i<n;++i)s=t[e][i],r.push(s),s.$layout={_box:new z_,_hidable:!1,_visible:!0,_set:e,_idx:s._index};return r.sort((function(t,e){var i=t.$layout,o=e.$layout;return i._idx===o._idx?o._set-i._set:o._idx-i._idx})),this.update(r),r},update:function(t){var e,i,o,n,s,r=!1;for(e=0,i=t.length;e<i;++e)n=(o=t[e]).model(),(s=o.$layout)._hidable=n&&"auto"===n.display,s._visible=o.visible(),r|=s._hidable;r&&function(t){var e,i,o,n,s,r,a;for(e=0,i=t.length;e<i;++e)(n=(o=t[e]).$layout)._visible&&(a=new Proxy(o._el,{get:(t,e)=>t.getProps([e],!0)[e]}),s=o.geometry(),r=P_(a,o.model(),s),n._box.update(r,s,o.rotation()));(function(t,e){var i,o,n,s;for(i=t.length-1;i>=0;--i)for(n=t[i].$layout,o=i-1;o>=0&&n._visible;--o)(s=t[o].$layout)._visible&&n._box.intersects(s._box)&&e(n,s)})(t,(function(t,e){var i=t._hidable,o=e._hidable;i&&o||o?e._visible=!1:i&&(t._visible=!1)}))}(t)},lookup:function(t,e){var i,o;for(i=t.length-1;i>=0;--i)if((o=t[i].$layout)&&o._visible&&o._box.contains(e))return t[i];return null},draw:function(t,e){var i,o,n,s,r,a;for(i=0,o=e.length;i<o;++i)(s=(n=e[i]).$layout)._visible&&(r=n.geometry(),a=P_(n._el,n.model(),r),s._box.update(a,r,n.rotation()),n.draw(t,a))}},N_={align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,clamp:!1,clip:!1,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},formatter:function(t){if(mm(t))return null;var e,i,o,n=t;if(fm(t))if(mm(t.label))if(mm(t.r))for(n="",o=0,i=(e=Object.keys(t)).length;o<i;++o)n+=(0!==o?", ":"")+e[o]+": "+t[e[o]];else n=t.r;else n=t.label;return""+n},labels:void 0,listeners:{},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,textShadowBlur:0,textShadowColor:void 0},B_="$datalabels",F_="$default";function q_(t,e,i,o){if(e){var n,s=i.$context,r=i.$groups;e[r._set]&&(n=e[r._set][r._key])&&!0===_m(n,[s,o])&&(t[B_]._dirty=!0,i.update(s))}}function U_(t,e){var i,o,n=t[B_],s=n._listeners;if(s.enter||s.leave){if("mousemove"===e.type)o=R_.lookup(n._labels,e);else if("mouseout"!==e.type)return;i=n._hovered,n._hovered=o,function(t,e,i,o,n){var s,r;(i||o)&&(i?o?i!==o&&(r=s=!0):r=!0:s=!0,r&&q_(t,e.leave,i,n),s&&q_(t,e.enter,o,n))}(t,s,i,o,e)}}var j_={id:"datalabels",defaults:N_,beforeInit:function(t){t[B_]={_actives:[]}},beforeUpdate:function(t){var e=t[B_];e._listened=!1,e._listeners={},e._datasets=[],e._labels=[]},afterDatasetUpdate:function(t,e,i){var o,n,s,r,a,l,d,c,h=e.index,u=t[B_],p=u._datasets[h]=[],m=t.isDatasetVisible(h),g=t.data.datasets[h],f=function(t,e){var i,o,n,s=t.datalabels,r=[];return!1===s?null:(!0===s&&(s={}),e=Em({},[e,s]),o=e.labels||{},n=Object.keys(o),delete e.labels,n.length?n.forEach((function(t){o[t]&&r.push(Em({},[e,o[t],{_key:t}]))})):r.push(e),i=r.reduce((function(t,e){return wm(e.listeners||{},(function(i,o){t[o]=t[o]||{},t[o][e._key||F_]=i})),delete e.listeners,t}),{}),{labels:r,listeners:i})}(g,i),v=e.meta.data||[],y=t.ctx;for(y.save(),o=0,s=v.length;o<s;++o)if((d=v[o])[B_]=[],m&&d&&t.getDataVisibility(o)&&!d.skip)for(n=0,r=f.labels.length;n<r;++n)l=(a=f.labels[n])._key,(c=new T_(a,y,d,o)).$groups={_set:h,_key:l||F_},c.$context={active:!1,chart:t,dataIndex:o,dataset:g,datasetIndex:h},c.update(c.$context),d[B_].push(c),p.push(c);y.restore(),Em(u._listeners,f.listeners,{merger:function(t,i,o){i[t]=i[t]||{},i[t][e.index]=o[t],u._listened=!0}})},afterUpdate:function(t){t[B_]._labels=R_.prepare(t[B_]._datasets)},afterDatasetsDraw:function(t){R_.draw(t,t[B_]._labels)},beforeEvent:function(t,e){if(t[B_]._listened){var i=e.event;switch(i.type){case"mousemove":case"mouseout":U_(t,i);break;case"click":!function(t,e){var i=t[B_],o=i._listeners.click,n=o&&R_.lookup(i._labels,e);n&&q_(t,o,n,e)}(t,i)}}},afterEvent:function(t){var e,i,o,n,s,r,a,l=t[B_],d=l._actives,c=l._actives=t.getActiveElements(),h=h_(d,c);for(e=0,i=h.length;e<i;++e)if((s=h[e])[1])for(o=0,n=(a=s[0].element[B_]||[]).length;o<n;++o)(r=a[o]).$context.active=1===s[1],r.update(r.$context);(l._dirty||h.length)&&(R_.update(l._labels),t.render()),delete l._dirty}};sb.register(j_);const V_={"qualitative-set1":["#5ea3db","#c186e3","#66c2a5","#fc8d62","#a6d854","#ffd92f","#e5c494","#b3b3b3"],"qualitative-set2":["#377eb8","#984ea3","#4daf4a","#ff7f00","#e41a1c","#a65628","#f781bf","#ffff33"],"qualitative-set3":["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],"qualitative-paired":["#1f78b4","#a6cee3","#6a3d9a","#cab2d6","#33a02c","#b2df8a","#e31a1c","#fb9a99","#ff7f00","#fdbf6f"],"qualitative-accent":["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],"qualitative-pastel1":["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],"qualitative-pastel2":["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],"diverging-prgn":["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],"diverging-spectral":["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],"diverging-piyg":["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],"diverging-rdylgn":["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],"diverging-brbg":["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],"sequential-blues":["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],"sequential-greens":["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],"sequential-oranges":["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],"sequential-purples":["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],"sequential-reds":["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],"sequential-ylgnbu":["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]},H_="rgba(212, 212, 212, 0.5)";function W_(t){if(0===t)return"0s";const e=Math.floor(t/86400),i=t%86400,o=Math.floor(i/3600),n=i%3600,s=Math.floor(n/60),r=n%60,a=[];return e>0&&a.push(`${e}d`),o>0&&a.push(`${o}h`),s>0&&a.length<2&&a.push(`${s}m`),r>0&&a.length<2&&a.push(`${r}s`),a.slice(0,2).join(" ")}class Z_ extends Ne{getInflatedMax(){if(!this.showPercent||!this.data)return;const t=Array(this.data.labels.length).fill(0);for(const e of this.datasets)e.data.forEach(((e,i)=>t[i]+=e));const e=Math.max(...t);return e>0?1.15*e:void 0}static get styles(){return a`
11066
11075
  .chart-title {
11067
11076
  font-size: 1.2em;
11068
11077
  font-weight: 600;
@@ -11103,7 +11112,7 @@ var s_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
11103
11112
  padding: 2em 1em 1.5em 1em;
11104
11113
  max-height: 50px;
11105
11114
  }
11106
- `}constructor(){super(),this.chartType="bar",this.horizontal=!1,this.header="",this.other=!1,this.datasets=[],this.maxSplits=2,this.xType="category",this.xMaxTicks=10,this.yType="count",this.xFormat="auto",this.maxChartHeight=250,this.hideOther=!1,this.splits=[],this.dataname="Counts",this.single=!1,this.legend=!1,this.config=!1,this.showAll=!1,this.requireWindow=!1,this.colorIndex=0,this.showConfig=!1,this.opacity=1,this.seriesBorderRadius=2,this.seriesBorderWidth=1,this.showPercent=!1}firstUpdated(t){super.firstUpdated(t);const e=this.shadowRoot.querySelector("#canvas-wrapper");this.canvas=document.createElement("canvas"),this.canvas.setAttribute("height","300px"),e.appendChild(this.canvas),this.ctx=this.canvas.getContext("2d")}updated(t){if(super.updated(t),t.has("splitNames")&&(this.splits=this.splitNames.split(",").map((t=>t.trim()))),(t.has("data")||t.has("splits"))&&this.calculateSplits(),t.has("datasets")&&this.updateChart(),t.has("horizontal")&&this.updateChart(),(t.has("url")||t.has("start")||t.has("end"))&&this.url&&(!this.requireWindow||this.start&&this.end)){const t=Sd();let e=this.url;const i=new URLSearchParams;if(this.start&&i.append("since",this.start),this.end&&i.append("until",this.end),i.toString()){const t=this.url.includes("?")?"&":"?";e=`${this.url}${t}${i.toString()}`}t.getUrl(e,{skipCache:!0}).then((t=>{this.data=t.json.data}))}if(t.has("chartType")&&"line"===this.chartType&&(this.seriesBorderWidth=Math.max(1,this.seriesBorderWidth)),t.has("showPercent")&&this.chart){const t=this.horizontal?this.chart.options.scales.x:this.chart.options.scales.y;t.ticks.display=!this.showPercent,t.grid.display=!this.showPercent,t.border.display=!this.showPercent,t.max=this.showPercent?this.getInflatedMax():void 0,this.chart.update()}}get colors(){const t=U_[this.palette]||U_["qualitative-set1"],e=Math.max(0,Math.min(1,this.opacity)),i=t.map((t=>Ae(t,.25))),o=t.map((t=>{if(t.startsWith("rgba"))return t.replace(/rgba\(([^,]+),([^,]+),([^,]+),([^)]+)\)/,((t,i,o,n)=>`rgba(${i},${o},${n},${e})`));if(t.startsWith("rgb("))return t.replace(/rgb\(([^,]+),([^,]+),([^,]+)\)/,((t,i,o,n)=>`rgba(${i},${o},${n},${e})`));if(t.startsWith("#")){let i=t.replace("#","");3===i.length&&(i=i.split("").map((t=>t+t)).join(""));const o=parseInt(i,16);return`rgba(${o>>16&255},${o>>8&255},${255&o},${e})`}return t}));return[o,i]}handleResize(){if(this.chart){const t=this.shadowRoot.querySelector("#canvas-wrapper");t&&t.clientHeight>this.maxChartHeight&&(this.canvas.style.height=`${this.maxChartHeight}px`,this.chart.resize())}}calculateSplits(){if(this.data){const t=[],e=[],[i,o]=this.colors;for(const n of this.data.datasets)if(this.showAll||void 0!==this.splits.find((t=>t===n.label))){const e=(t.length+this.colorIndex)%i.length,s=i[e],r=o[e];t.push({...n,backgroundColor:s,borderColor:r,borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else for(let t=0;t<n.data.length;t++)void 0===e[t]?e[t]=n.data[t]:e[t]+=n.data[t];if(0===t.length){const n=this.colorIndex%i.length;t.push({label:this.single?this.dataname:`All ${this.dataname}`,data:e,backgroundColor:i[n],borderColor:o[n],borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else this.hideOther||this.showAll||t.push({label:"Other",data:e,backgroundColor:j_,borderColor:Ae(j_,.05),borderWidth:1,borderRadius:this.seriesBorderRadius});this.datasets=t}}updateChart(){var t;if((null===(t=this.datasets)||void 0===t?void 0:t.length)>0){const t=this.datasets.reduce(((t,e)=>t+e.data.reduce(((t,e)=>t+(null!=e?e:0)),0)),0)||void 0,e=e=>{const i=t?e/t*100:0;return 0===i?"":`${Math.round(i)}%`};if(this.chart){this.chart.data.labels=this.data.labels,this.chart.data.datasets=this.datasets,this.showPercent&&(this.chart.options.scales.y.max=this.getInflatedMax());const t=this.chart.options.plugins.datalabels||{};t.display=this.showPercent,this.showPercent?t.formatter=e:delete t.formatter,this.chart.options.plugins.datalabels=t,this.horizontal?(this.chart.options.scales.x=this.getValueAxisConfig(),this.chart.options.scales.y=this.getCategoryAxisConfig()):(this.chart.options.scales.x=this.getCategoryAxisConfig(),this.chart.options.scales.y=this.getValueAxisConfig()),this.chart.update()}else{const t={type:this.chartType,data:{labels:this.data.labels,datasets:this.datasets},options:{...this.horizontal&&{indexAxis:"y"},maxBarThickness:80,plugins:{legend:{display:this.legend},tooltip:{callbacks:{label:t=>{const e=t.dataset.label||"",i=this.horizontal?t.parsed.x:t.parsed.y;return"duration"===this.yType?`${e}: ${V_(i)}`:`${e}: ${i}`}}},datalabels:{display:this.showPercent,anchor:"end",align:"end",offset:-3,clamp:!0,...this.showPercent&&{formatter:e},color:"#666",font:{weight:"600"}}},responsive:!0,aspectRatio:2,onResize:this.handleResize.bind(this),maintainAspectRatio:!1,animation:!1,animations:{x:{duration:0},y:{duration:0}},scales:this.horizontal?{x:this.getValueAxisConfig(),y:this.getCategoryAxisConfig()}:{y:this.getValueAxisConfig(),x:this.getCategoryAxisConfig()}}};this.chart=new ob(this.ctx,t)}}}handleSplitsChanged(t){const e=t.target;this.splits=e.values.map((t=>t.value))}handleToggleConfig(){this.showConfig=!this.showConfig,this.showConfig||(this.splits=[])}getValueAxisConfig(){return{min:0,...this.showPercent&&{max:this.getInflatedMax()},stacked:!0,grid:{color:"rgba(0,0,0,0.04)",display:!this.showPercent,drawBorder:!this.showPercent},border:{display:!this.showPercent},ticks:{display:!this.showPercent,..."duration"===this.yType&&!this.showPercent&&{callback:t=>V_(t)}}}}getCategoryAxisConfig(){let t=this.xFormat;if("time"===this.xType&&"auto"===this.xFormat){const e=this.data.labels[0],i=this.data.labels[this.data.labels.length-1],o=Date.parse(e),n=Date.parse(i);t="MMM dd",Math.ceil((n-o)/864e5)>365&&(t="MMM yyyy")}return{max:"time"===this.xType?this.end:this.xMaxTicks,min:"time"===this.xType?this.start:0,type:this.xType,grid:{display:!1},stacked:!0,ticks:{maxTicksLimit:this.xMaxTicks},..."time"===this.xType&&{time:{unit:"day",tooltipFormat:"DDD",displayFormats:{day:t}}}}}render(){var t,e,i;return H`<div>
11115
+ `}constructor(){super(),this.chartType="bar",this.horizontal=!1,this.header="",this.other=!1,this.datasets=[],this.maxSplits=2,this.xType="category",this.xMaxTicks=10,this.yType="count",this.xFormat="auto",this.maxChartHeight=250,this.hideOther=!1,this.splits=[],this.dataname="Counts",this.single=!1,this.legend=!1,this.config=!1,this.showAll=!1,this.requireWindow=!1,this.colorIndex=0,this.showConfig=!1,this.opacity=1,this.seriesBorderRadius=2,this.seriesBorderWidth=1,this.showPercent=!1}firstUpdated(t){super.firstUpdated(t);const e=this.shadowRoot.querySelector("#canvas-wrapper");this.canvas=document.createElement("canvas"),this.canvas.setAttribute("height","300px"),e.appendChild(this.canvas),this.ctx=this.canvas.getContext("2d")}updated(t){if(super.updated(t),t.has("splitNames")&&(this.splits=this.splitNames.split(",").map((t=>t.trim()))),(t.has("data")||t.has("splits"))&&this.calculateSplits(),t.has("datasets")&&this.updateChart(),t.has("horizontal")&&this.updateChart(),(t.has("url")||t.has("start")||t.has("end"))&&this.url&&(!this.requireWindow||this.start&&this.end)){const t=Sd();let e=this.url;const i=new URLSearchParams;if(this.start&&i.append("since",this.start),this.end&&i.append("until",this.end),i.toString()){const t=this.url.includes("?")?"&":"?";e=`${this.url}${t}${i.toString()}`}t.getUrl(e,{skipCache:!0}).then((t=>{this.data=t.json.data}))}if(t.has("chartType")&&"line"===this.chartType&&(this.seriesBorderWidth=Math.max(1,this.seriesBorderWidth)),t.has("showPercent")&&this.chart){const t=this.horizontal?this.chart.options.scales.x:this.chart.options.scales.y;t.ticks.display=!this.showPercent,t.grid.display=!this.showPercent,t.border.display=!this.showPercent,t.max=this.showPercent?this.getInflatedMax():void 0,this.chart.update()}}get colors(){const t=V_[this.palette]||V_["qualitative-set1"],e=Math.max(0,Math.min(1,this.opacity)),i=t.map((t=>Ae(t,.25))),o=t.map((t=>{if(t.startsWith("rgba"))return t.replace(/rgba\(([^,]+),([^,]+),([^,]+),([^)]+)\)/,((t,i,o,n)=>`rgba(${i},${o},${n},${e})`));if(t.startsWith("rgb("))return t.replace(/rgb\(([^,]+),([^,]+),([^,]+)\)/,((t,i,o,n)=>`rgba(${i},${o},${n},${e})`));if(t.startsWith("#")){let i=t.replace("#","");3===i.length&&(i=i.split("").map((t=>t+t)).join(""));const o=parseInt(i,16);return`rgba(${o>>16&255},${o>>8&255},${255&o},${e})`}return t}));return[o,i]}handleResize(){if(this.chart){const t=this.shadowRoot.querySelector("#canvas-wrapper");t&&t.clientHeight>this.maxChartHeight&&(this.canvas.style.height=`${this.maxChartHeight}px`,this.chart.resize())}}calculateSplits(){if(this.data){const t=[],e=[],[i,o]=this.colors;for(const n of this.data.datasets)if(this.showAll||void 0!==this.splits.find((t=>t===n.label))){const e=(t.length+this.colorIndex)%i.length,s=i[e],r=o[e];t.push({...n,backgroundColor:s,borderColor:r,borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else for(let t=0;t<n.data.length;t++)void 0===e[t]?e[t]=n.data[t]:e[t]+=n.data[t];if(0===t.length){const n=this.colorIndex%i.length;t.push({label:this.single?this.dataname:`All ${this.dataname}`,data:e,backgroundColor:i[n],borderColor:o[n],borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else this.hideOther||this.showAll||t.push({label:"Other",data:e,backgroundColor:H_,borderColor:Ae(H_,.05),borderWidth:1,borderRadius:this.seriesBorderRadius});this.datasets=t}}updateChart(){var t;if((null===(t=this.datasets)||void 0===t?void 0:t.length)>0){const t=this.datasets.reduce(((t,e)=>t+e.data.reduce(((t,e)=>t+(null!=e?e:0)),0)),0)||void 0,e=e=>{const i=t?e/t*100:0;return 0===i?"":`${Math.round(i)}%`};if(this.chart){this.chart.data.labels=this.data.labels,this.chart.data.datasets=this.datasets,this.showPercent&&(this.chart.options.scales.y.max=this.getInflatedMax());const t=this.chart.options.plugins.datalabels||{};t.display=this.showPercent,this.showPercent?t.formatter=e:delete t.formatter,this.chart.options.plugins.datalabels=t,this.horizontal?(this.chart.options.scales.x=this.getValueAxisConfig(),this.chart.options.scales.y=this.getCategoryAxisConfig()):(this.chart.options.scales.x=this.getCategoryAxisConfig(),this.chart.options.scales.y=this.getValueAxisConfig()),this.chart.update()}else{const t={type:this.chartType,data:{labels:this.data.labels,datasets:this.datasets},options:{...this.horizontal&&{indexAxis:"y"},maxBarThickness:80,plugins:{legend:{display:this.legend},tooltip:{callbacks:{label:t=>{const e=t.dataset.label||"",i=this.horizontal?t.parsed.x:t.parsed.y;return"duration"===this.yType?`${e}: ${W_(i)}`:`${e}: ${i}`}}},datalabels:{display:this.showPercent,anchor:"end",align:"end",offset:-3,clamp:!0,...this.showPercent&&{formatter:e},color:"#666",font:{weight:"600"}}},responsive:!0,aspectRatio:2,onResize:this.handleResize.bind(this),maintainAspectRatio:!1,animation:!1,animations:{x:{duration:0},y:{duration:0}},scales:this.horizontal?{x:this.getValueAxisConfig(),y:this.getCategoryAxisConfig()}:{y:this.getValueAxisConfig(),x:this.getCategoryAxisConfig()}}};this.chart=new sb(this.ctx,t)}}}handleSplitsChanged(t){const e=t.target;this.splits=e.values.map((t=>t.value))}handleToggleConfig(){this.showConfig=!this.showConfig,this.showConfig||(this.splits=[])}getValueAxisConfig(){return{min:0,...this.showPercent&&{max:this.getInflatedMax()},stacked:!0,grid:{color:"rgba(0,0,0,0.04)",display:!this.showPercent,drawBorder:!this.showPercent},border:{display:!this.showPercent},ticks:{display:!this.showPercent,..."duration"===this.yType&&!this.showPercent&&{callback:t=>W_(t)}}}}getCategoryAxisConfig(){let t=this.xFormat;if("time"===this.xType&&"auto"===this.xFormat){const e=this.data.labels[0],i=this.data.labels[this.data.labels.length-1],o=Date.parse(e),n=Date.parse(i);t="MMM dd",Math.ceil((n-o)/864e5)>365&&(t="MMM yyyy")}return{max:"time"===this.xType?this.end:this.xMaxTicks,min:"time"===this.xType?this.start:0,type:this.xType,grid:{display:!1},stacked:!0,ticks:{maxTicksLimit:this.xMaxTicks},..."time"===this.xType&&{time:{unit:"day",tooltipFormat:"DDD",displayFormats:{day:t}}}}}render(){var t,e,i;return H`<div>
11107
11116
  ${this.header?H`<div class="chart-title">${this.header}</div>`:null}
11108
11117
  <div id="canvas-wrapper"></div>
11109
11118
  ${this.config&&this.data?H`
@@ -11135,7 +11144,7 @@ var s_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
11135
11144
  </temba-select>
11136
11145
  <div></div>
11137
11146
  </div>
11138
- </div>`}}t([mt({type:String})],H_.prototype,"chartType",void 0),t([mt({type:Boolean})],H_.prototype,"horizontal",void 0),t([mt({type:String})],H_.prototype,"url",void 0),t([mt({type:String})],H_.prototype,"start",void 0),t([mt({type:String})],H_.prototype,"end",void 0),t([mt({type:String})],H_.prototype,"header",void 0),t([mt({type:Boolean})],H_.prototype,"other",void 0),t([mt({type:Object})],H_.prototype,"data",void 0),t([gt()],H_.prototype,"datasets",void 0),t([mt({type:Number})],H_.prototype,"maxSplits",void 0),t([mt({type:String,attribute:"splits"})],H_.prototype,"splitNames",void 0),t([mt({type:String})],H_.prototype,"xType",void 0),t([mt({type:Number})],H_.prototype,"xMaxTicks",void 0),t([mt({type:String})],H_.prototype,"yType",void 0),t([mt({type:String})],H_.prototype,"xFormat",void 0),t([mt({type:Number})],H_.prototype,"maxChartHeight",void 0),t([mt({type:Boolean})],H_.prototype,"hideOther",void 0),t([gt()],H_.prototype,"splits",void 0),t([mt({type:String})],H_.prototype,"dataname",void 0),t([mt({type:Boolean})],H_.prototype,"single",void 0),t([mt({type:Boolean})],H_.prototype,"legend",void 0),t([mt({type:Boolean})],H_.prototype,"config",void 0),t([mt({type:Boolean})],H_.prototype,"showAll",void 0),t([mt({type:Boolean})],H_.prototype,"requireWindow",void 0),t([mt({type:Number})],H_.prototype,"colorIndex",void 0),t([gt()],H_.prototype,"showConfig",void 0),t([mt({type:String})],H_.prototype,"palette",void 0),t([mt({type:Number})],H_.prototype,"opacity",void 0),t([mt({type:Number})],H_.prototype,"seriesBorderRadius",void 0),t([mt({type:Number})],H_.prototype,"seriesBorderWidth",void 0),t([mt({type:Boolean,attribute:"percent"})],H_.prototype,"showPercent",void 0);class W_ extends Ne{constructor(){super(...arguments),this.startDate="",this.endDate="",this.editingStart=!1,this.editingEnd=!1,this.selectedRange="",this.minDate="2012-01-01",this.maxDate=Za.now().toISODate()}handleStartClick(){this.editingStart=!0}handleEndClick(){this.editingEnd=!0}setRange(t){const e=Za.now().toISODate();let i="";"W"===t?i=Za.now().minus({days:6}).toISODate():"M"===t?i=Za.now().minus({months:1}).plus({days:1}).toISODate():"Y"===t?i=Za.now().minus({years:1}).plus({days:1}).toISODate():"ALL"===t&&(i=this.minDate||"2012-01-01"),this.startDate=i,this.endDate=e,this.selectedRange=t,this.editingStart=!1,this.editingEnd=!1,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}setValidRange(t,e){let i=e;i<this.minDate&&(i=this.minDate),i>this.maxDate&&(i=this.maxDate);const o=Za.fromISO("start"===t?i:this.startDate),n=Za.fromISO("end"===t?i:this.endDate);o.isValid&&n.isValid&&(o>n?"start"===t?(this.startDate=i,this.endDate=o.toISODate()):(this.endDate=i,this.startDate=n.toISODate()):"start"===t?this.startDate=i:this.endDate=i,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange}))}canNavigatePrevious(){if("ALL"===this.selectedRange)return!1;const t=Za.fromISO(this.startDate);let e;if("W"===this.selectedRange)e=t.minus({weeks:1});else if("M"===this.selectedRange)e=t.minus({months:1});else if("Y"===this.selectedRange)e=t.minus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.minus({days:i.amount});else if("months"===i.type)e=t.minus({months:i.amount});else{if("years"!==i.type)return!1;e=t.minus({years:i.amount})}}}return e.toISODate()>=this.minDate}canNavigateNext(){if("ALL"===this.selectedRange)return!1;const t=Za.fromISO(this.endDate);let e;if("W"===this.selectedRange)e=t.plus({weeks:1});else if("M"===this.selectedRange)e=t.plus({months:1});else if("Y"===this.selectedRange)e=t.plus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.plus({days:i.amount});else if("months"===i.type)e=t.plus({months:i.amount});else{if("years"!==i.type)return!1;e=t.plus({years:i.amount})}}}return e.toISODate()<=this.maxDate}getCustomRangeInterval(){const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);if(!t.isValid||!e.isValid)return{type:"days",amount:1};const i=e.day===e.daysInMonth;if(1===t.day&&i){if(t.month===e.month&&t.year===e.year)return{type:"months",amount:1};const i=t.startOf("month"),o=e.endOf("month").diff(i,"months").months+1;if(o>0&&Number.isInteger(o))return{type:"months",amount:Math.round(o)}}if(1===t.month&&1===t.day&&12===e.month&&31===e.day){if(t.year===e.year)return{type:"years",amount:1};const i=e.year-t.year+1;if(i>0)return{type:"years",amount:i}}const o=e.diff(t,"days").days+1;return{type:"days",amount:Math.max(1,Math.round(o))}}navigatePrevious(){if(!this.canNavigatePrevious())return;const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.minus({weeks:1}),o=e.minus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.minus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.minus({months:1}),o=e.minus({months:1}))}else if("Y"===this.selectedRange)i=t.minus({years:1}),o=e.minus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.minus({days:n.amount}),o=e.minus({days:n.amount});else if("months"===n.type)i=t.minus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.minus({years:n.amount}),o=e.minus({years:n.amount})}}}const n=Za.fromISO(this.minDate),s=Za.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}navigateNext(){if(!this.canNavigateNext())return;const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.plus({weeks:1}),o=e.plus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.plus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.plus({months:1}),o=e.plus({months:1}))}else if("Y"===this.selectedRange)i=t.plus({years:1}),o=e.plus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.plus({days:n.amount}),o=e.plus({days:n.amount});else if("months"===n.type)i=t.plus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.plus({years:n.amount}),o=e.plus({years:n.amount})}}}const n=Za.fromISO(this.minDate),s=Za.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}getNavigationLabel(t){const e=this.getCustomRangeInterval(),i=e.amount;return`${"previous"===t?"Previous":"Next"} ${i} ${"days"===e.type?1===i?"day":"days":"months"===e.type?1===i?"month":"months":1===i?"year":"years"}`}updated(t){super.updated(t),!t.has("startDate")||!t.has("endDate")||this.startDate&&this.endDate||this.setRange("M"),t.has("editingStart")&&this.editingStart&&setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.start-picker");e&&e.handleClicked()}),0),t.has("editingEnd")&&this.editingEnd&&setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.end-picker");e&&e.handleClicked()}),0)}formatDateForDisplay(t){if(!t)return"";const e=Za.fromISO(t);return e.isValid?e.toLocaleString():t}render(){return H`
11147
+ </div>`}}t([mt({type:String})],Z_.prototype,"chartType",void 0),t([mt({type:Boolean})],Z_.prototype,"horizontal",void 0),t([mt({type:String})],Z_.prototype,"url",void 0),t([mt({type:String})],Z_.prototype,"start",void 0),t([mt({type:String})],Z_.prototype,"end",void 0),t([mt({type:String})],Z_.prototype,"header",void 0),t([mt({type:Boolean})],Z_.prototype,"other",void 0),t([mt({type:Object})],Z_.prototype,"data",void 0),t([gt()],Z_.prototype,"datasets",void 0),t([mt({type:Number})],Z_.prototype,"maxSplits",void 0),t([mt({type:String,attribute:"splits"})],Z_.prototype,"splitNames",void 0),t([mt({type:String})],Z_.prototype,"xType",void 0),t([mt({type:Number})],Z_.prototype,"xMaxTicks",void 0),t([mt({type:String})],Z_.prototype,"yType",void 0),t([mt({type:String})],Z_.prototype,"xFormat",void 0),t([mt({type:Number})],Z_.prototype,"maxChartHeight",void 0),t([mt({type:Boolean})],Z_.prototype,"hideOther",void 0),t([gt()],Z_.prototype,"splits",void 0),t([mt({type:String})],Z_.prototype,"dataname",void 0),t([mt({type:Boolean})],Z_.prototype,"single",void 0),t([mt({type:Boolean})],Z_.prototype,"legend",void 0),t([mt({type:Boolean})],Z_.prototype,"config",void 0),t([mt({type:Boolean})],Z_.prototype,"showAll",void 0),t([mt({type:Boolean})],Z_.prototype,"requireWindow",void 0),t([mt({type:Number})],Z_.prototype,"colorIndex",void 0),t([gt()],Z_.prototype,"showConfig",void 0),t([mt({type:String})],Z_.prototype,"palette",void 0),t([mt({type:Number})],Z_.prototype,"opacity",void 0),t([mt({type:Number})],Z_.prototype,"seriesBorderRadius",void 0),t([mt({type:Number})],Z_.prototype,"seriesBorderWidth",void 0),t([mt({type:Boolean,attribute:"percent"})],Z_.prototype,"showPercent",void 0);class Y_ extends Ne{constructor(){super(...arguments),this.startDate="",this.endDate="",this.editingStart=!1,this.editingEnd=!1,this.selectedRange="",this.minDate="2012-01-01",this.maxDate=Za.now().toISODate()}handleStartClick(){this.editingStart=!0}handleEndClick(){this.editingEnd=!0}setRange(t){const e=Za.now().toISODate();let i="";"W"===t?i=Za.now().minus({days:6}).toISODate():"M"===t?i=Za.now().minus({months:1}).plus({days:1}).toISODate():"Y"===t?i=Za.now().minus({years:1}).plus({days:1}).toISODate():"ALL"===t&&(i=this.minDate||"2012-01-01"),this.startDate=i,this.endDate=e,this.selectedRange=t,this.editingStart=!1,this.editingEnd=!1,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}setValidRange(t,e){let i=e;i<this.minDate&&(i=this.minDate),i>this.maxDate&&(i=this.maxDate);const o=Za.fromISO("start"===t?i:this.startDate),n=Za.fromISO("end"===t?i:this.endDate);o.isValid&&n.isValid&&(o>n?"start"===t?(this.startDate=i,this.endDate=o.toISODate()):(this.endDate=i,this.startDate=n.toISODate()):"start"===t?this.startDate=i:this.endDate=i,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange}))}canNavigatePrevious(){if("ALL"===this.selectedRange)return!1;const t=Za.fromISO(this.startDate);let e;if("W"===this.selectedRange)e=t.minus({weeks:1});else if("M"===this.selectedRange)e=t.minus({months:1});else if("Y"===this.selectedRange)e=t.minus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.minus({days:i.amount});else if("months"===i.type)e=t.minus({months:i.amount});else{if("years"!==i.type)return!1;e=t.minus({years:i.amount})}}}return e.toISODate()>=this.minDate}canNavigateNext(){if("ALL"===this.selectedRange)return!1;const t=Za.fromISO(this.endDate);let e;if("W"===this.selectedRange)e=t.plus({weeks:1});else if("M"===this.selectedRange)e=t.plus({months:1});else if("Y"===this.selectedRange)e=t.plus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.plus({days:i.amount});else if("months"===i.type)e=t.plus({months:i.amount});else{if("years"!==i.type)return!1;e=t.plus({years:i.amount})}}}return e.toISODate()<=this.maxDate}getCustomRangeInterval(){const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);if(!t.isValid||!e.isValid)return{type:"days",amount:1};const i=e.day===e.daysInMonth;if(1===t.day&&i){if(t.month===e.month&&t.year===e.year)return{type:"months",amount:1};const i=t.startOf("month"),o=e.endOf("month").diff(i,"months").months+1;if(o>0&&Number.isInteger(o))return{type:"months",amount:Math.round(o)}}if(1===t.month&&1===t.day&&12===e.month&&31===e.day){if(t.year===e.year)return{type:"years",amount:1};const i=e.year-t.year+1;if(i>0)return{type:"years",amount:i}}const o=e.diff(t,"days").days+1;return{type:"days",amount:Math.max(1,Math.round(o))}}navigatePrevious(){if(!this.canNavigatePrevious())return;const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.minus({weeks:1}),o=e.minus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.minus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.minus({months:1}),o=e.minus({months:1}))}else if("Y"===this.selectedRange)i=t.minus({years:1}),o=e.minus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.minus({days:n.amount}),o=e.minus({days:n.amount});else if("months"===n.type)i=t.minus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.minus({years:n.amount}),o=e.minus({years:n.amount})}}}const n=Za.fromISO(this.minDate),s=Za.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}navigateNext(){if(!this.canNavigateNext())return;const t=Za.fromISO(this.startDate),e=Za.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.plus({weeks:1}),o=e.plus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.plus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.plus({months:1}),o=e.plus({months:1}))}else if("Y"===this.selectedRange)i=t.plus({years:1}),o=e.plus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.plus({days:n.amount}),o=e.plus({days:n.amount});else if("months"===n.type)i=t.plus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.plus({years:n.amount}),o=e.plus({years:n.amount})}}}const n=Za.fromISO(this.minDate),s=Za.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Mo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}getNavigationLabel(t){const e=this.getCustomRangeInterval(),i=e.amount;return`${"previous"===t?"Previous":"Next"} ${i} ${"days"===e.type?1===i?"day":"days":"months"===e.type?1===i?"month":"months":1===i?"year":"years"}`}updated(t){super.updated(t),!t.has("startDate")||!t.has("endDate")||this.startDate&&this.endDate||this.setRange("M"),t.has("editingStart")&&this.editingStart&&setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.start-picker");e&&e.handleClicked()}),0),t.has("editingEnd")&&this.editingEnd&&setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.end-picker");e&&e.handleClicked()}),0)}formatDateForDisplay(t){if(!t)return"";const e=Za.fromISO(t);return e.isValid?e.toLocaleString():t}render(){return H`
11139
11148
  <div class="range-container">
11140
11149
  ${this.editingStart?H`<temba-datepicker
11141
11150
  class="start-picker"
@@ -11203,7 +11212,7 @@ var s_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
11203
11212
  </button>
11204
11213
  </div>
11205
11214
  </div>
11206
- `}}W_.styles=a`
11215
+ `}}Y_.styles=a`
11207
11216
  .range-container {
11208
11217
  display: flex;
11209
11218
  gap: 0.5em;
@@ -11295,13 +11304,13 @@ var s_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
11295
11304
  background: #e0eaff;
11296
11305
  border-color: #3399ff;
11297
11306
  }
11298
- `,t([mt({type:String,attribute:"start"})],W_.prototype,"startDate",void 0),t([mt({type:String,attribute:"end"})],W_.prototype,"endDate",void 0),t([mt({type:Boolean})],W_.prototype,"editingStart",void 0),t([mt({type:Boolean})],W_.prototype,"editingEnd",void 0),t([mt({type:String})],W_.prototype,"selectedRange",void 0),t([mt({type:String,attribute:"min"})],W_.prototype,"minDate",void 0),t([mt({type:String,attribute:"max"})],W_.prototype,"maxDate",void 0),customElements.define("temba-range-picker",W_);
11307
+ `,t([mt({type:String,attribute:"start"})],Y_.prototype,"startDate",void 0),t([mt({type:String,attribute:"end"})],Y_.prototype,"endDate",void 0),t([mt({type:Boolean})],Y_.prototype,"editingStart",void 0),t([mt({type:Boolean})],Y_.prototype,"editingEnd",void 0),t([mt({type:String})],Y_.prototype,"selectedRange",void 0),t([mt({type:String,attribute:"min"})],Y_.prototype,"minDate",void 0),t([mt({type:String,attribute:"max"})],Y_.prototype,"maxDate",void 0),customElements.define("temba-range-picker",Y_);
11299
11308
  /**
11300
11309
  * @license
11301
11310
  * Copyright 2017 Google LLC
11302
11311
  * SPDX-License-Identifier: BSD-3-Clause
11303
11312
  */
11304
- const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.(e,!1),Z_(t,e);return!0},Y_=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===i?.size)},G_=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),Q_(e)}};function K_(t){void 0!==this._$AN?(Y_(this),this._$AM=t,G_(this)):this._$AM=t}function X_(t,e=!1,i=0){const o=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(e)if(Array.isArray(o))for(let t=i;t<o.length;t++)Z_(o[t],!1),Y_(o[t]);else null!=o&&(Z_(o,!1),Y_(o));else Z_(this,t)}const Q_=t=>{t.type==Fe&&(t._$AP??=X_,t._$AQ??=K_)};class J_ extends Ue{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),G_(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(Z_(this,t),Y_(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class tw extends J_{constructor(){super(...arguments),this.prevData={}}render(t){return Z}update(t,[e]){var i;this.element!==t.element&&(this.element=t.element),this.host=(null===(i=t.options)||void 0===i?void 0:i.host)||this.element,this.apply(e),this.groom(e),this.prevData={...e}}apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];n!==e[o]&&(i[o]=n)}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||(i[o]=void 0)}}class ew extends tw{constructor(){super(...arguments),this.eventData={}}apply(t){if(t)for(const e in t){const i=t[e];i!==this.eventData[e]&&this.applyEvent(e,i)}}applyEvent(t,e){const{prevData:i,element:o}=this;this.eventData[t]=e;i[t]&&o.removeEventListener(t,this,e),o.addEventListener(t,this,e)}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||this.groomEvent(o,e[o])}groomEvent(t,e){const{element:i}=this;delete this.eventData[t],i.removeEventListener(t,this,e)}handleEvent(t){const e=this.eventData[t.type];"function"==typeof e?e.call(this.host,t):e.handleEvent(t)}disconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.removeEventListener(o,this,n)}}reconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.addEventListener(o,this,n)}}}const iw=qe(class extends ew{apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];if(n===e[o])continue;const s=o.slice(1);switch(o[0]){case"@":this.eventData[s]=n,this.applyEvent(s,n);break;case".":i[s]=n;break;case"?":n?i.setAttribute(s,""):i.removeAttribute(s);break;default:null!=n?i.setAttribute(o,String(n)):i.removeAttribute(o)}}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e){const n=o.slice(1);if(!t||!(o in t)&&i[n]===e[o])switch(o[0]){case"@":this.groomEvent(n,e[o]);break;case".":i[n]=void 0;break;case"?":i.removeAttribute(n);break;default:i.removeAttribute(o)}}}});class ow{static renderField(t,e,i,o={}){switch(e.type){case"text":return ow.renderTextInput(t,e,i,o);case"textarea":return ow.renderTextarea(t,e,i,o);case"select":return ow.renderSelect(t,e,i,o);case"checkbox":return ow.renderCheckbox(t,e,i,o);case"key-value":return ow.renderKeyValue(t,e,i,o);case"array":return ow.renderArray(t,e,i,o);case"message-editor":return ow.renderMessageEditor(t,e,i,o);case"media":return ow.renderMedia(t,e,i,o);default:return H`<div>Unsupported field type: ${e.type}</div>`}}static renderTextInput(t,e,i,o){const{errors:n=[],onChange:s,showLabel:r=!0,extraClasses:a,style:l}=o;return e.evaluated?H`<temba-completion
11313
+ const G_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.(e,!1),G_(t,e);return!0},K_=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===i?.size)},X_=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),tw(e)}};function Q_(t){void 0!==this._$AN?(K_(this),this._$AM=t,X_(this)):this._$AM=t}function J_(t,e=!1,i=0){const o=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(e)if(Array.isArray(o))for(let t=i;t<o.length;t++)G_(o[t],!1),K_(o[t]);else null!=o&&(G_(o,!1),K_(o));else G_(this,t)}const tw=t=>{t.type==Fe&&(t._$AP??=J_,t._$AQ??=Q_)};class ew extends Ue{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),X_(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(G_(this,t),K_(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class iw extends ew{constructor(){super(...arguments),this.prevData={}}render(t){return Z}update(t,[e]){var i;this.element!==t.element&&(this.element=t.element),this.host=(null===(i=t.options)||void 0===i?void 0:i.host)||this.element,this.apply(e),this.groom(e),this.prevData={...e}}apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];n!==e[o]&&(i[o]=n)}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||(i[o]=void 0)}}class ow extends iw{constructor(){super(...arguments),this.eventData={}}apply(t){if(t)for(const e in t){const i=t[e];i!==this.eventData[e]&&this.applyEvent(e,i)}}applyEvent(t,e){const{prevData:i,element:o}=this;this.eventData[t]=e;i[t]&&o.removeEventListener(t,this,e),o.addEventListener(t,this,e)}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||this.groomEvent(o,e[o])}groomEvent(t,e){const{element:i}=this;delete this.eventData[t],i.removeEventListener(t,this,e)}handleEvent(t){const e=this.eventData[t.type];"function"==typeof e?e.call(this.host,t):e.handleEvent(t)}disconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.removeEventListener(o,this,n)}}reconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.addEventListener(o,this,n)}}}const nw=qe(class extends ow{apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];if(n===e[o])continue;const s=o.slice(1);switch(o[0]){case"@":this.eventData[s]=n,this.applyEvent(s,n);break;case".":i[s]=n;break;case"?":n?i.setAttribute(s,""):i.removeAttribute(s);break;default:null!=n?i.setAttribute(o,String(n)):i.removeAttribute(o)}}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e){const n=o.slice(1);if(!t||!(o in t)&&i[n]===e[o])switch(o[0]){case"@":this.groomEvent(n,e[o]);break;case".":i[n]=void 0;break;case"?":i.removeAttribute(n);break;default:i.removeAttribute(o)}}}});class sw{static renderField(t,e,i,o={}){switch(e.type){case"text":return sw.renderTextInput(t,e,i,o);case"textarea":return sw.renderTextarea(t,e,i,o);case"select":return sw.renderSelect(t,e,i,o);case"checkbox":return sw.renderCheckbox(t,e,i,o);case"key-value":return sw.renderKeyValue(t,e,i,o);case"array":return sw.renderArray(t,e,i,o);case"message-editor":return sw.renderMessageEditor(t,e,i,o);case"media":return sw.renderMedia(t,e,i,o);default:return H`<div>Unsupported field type: ${e.type}</div>`}}static renderTextInput(t,e,i,o){const{errors:n=[],onChange:s,showLabel:r=!0,extraClasses:a,style:l}=o;return e.evaluated?H`<temba-completion
11305
11314
  name="${t}"
11306
11315
  label="${r?e.label:""}"
11307
11316
  ?required="${e.required}"
@@ -11379,7 +11388,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11379
11388
  ${null==c?void 0:c.map((t=>"string"==typeof t?H`<temba-option
11380
11389
  name="${t}"
11381
11390
  value="${t}"
11382
- ></temba-option>`:H`<temba-option ${iw(t)}></temba-option>`))}
11391
+ ></temba-option>`:H`<temba-option ${nw(t)}></temba-option>`))}
11383
11392
  </temba-select>`}static renderCheckbox(t,e,i,o){const{errors:n=[],onChange:s,extraClasses:r,style:a,formData:l={}}=o,d="function"==typeof e.label?e.label(l):e.label,c=e.labelPadding?`--checkbox-padding: ${e.labelPadding}; ${a||""}`:a||"";return H`<div class="form-field">
11384
11393
  <temba-checkbox
11385
11394
  name="${t}"
@@ -11432,7 +11441,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11432
11441
  @change="${s||(()=>{})}"
11433
11442
  ></temba-array-editor>
11434
11443
  ${n.length?H`<div class="field-errors">${n.join(", ")}</div>`:""}
11435
- </div>`}static urlToAttachments(t){var e;if(!t||!t.trim())return[];const i=t.split("/").pop()||"recording";return[{uuid:"",content_type:{mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4"}[(null===(e=i.split(".").pop())||void 0===e?void 0:e.toLowerCase())||""]||"audio/mpeg",url:t,filename:i,size:0,error:""}]}static renderMedia(t,e,i,o){const{onChange:n,showLabel:s=!0}=o,r=e.endpoint||ee,a=ow.urlToAttachments(i);return H`
11444
+ </div>`}static urlToAttachments(t){var e;if(!t||!t.trim())return[];const i=t.split("/").pop()||"recording";return[{uuid:"",content_type:{mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4"}[(null===(e=i.split(".").pop())||void 0===e?void 0:e.toLowerCase())||""]||"audio/mpeg",url:t,filename:i,size:0,error:""}]}static renderMedia(t,e,i,o){const{onChange:n,showLabel:s=!0}=o,r=e.endpoint||ee,a=sw.urlToAttachments(i);return H`
11436
11445
  <div>
11437
11446
  ${s&&e.label?H`<label
11438
11447
  style="margin-bottom: 5px; margin-left: 4px; display: block; font-weight: 400; font-size: var(--label-size); letter-spacing: 0.05em; line-height: normal; color: var(--color-label, #777);"
@@ -11467,7 +11476,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11467
11476
  class="${a}"
11468
11477
  style="${l}"
11469
11478
  @change="${s||(()=>{})}"
11470
- ></temba-message-editor>`}}class nw extends Ne{constructor(){super(...arguments),this.isOpen=!1,this.formData={},this.originalFormData={},this.errors={},this.groupCollapseState={},this.groupHoverState={},this.revealedOptionalFields=new Set}static get styles(){return a`
11479
+ ></temba-message-editor>`}}class rw extends Ne{constructor(){super(...arguments),this.isOpen=!1,this.formData={},this.originalFormData={},this.errors={},this.groupCollapseState={},this.groupHoverState={},this.revealedOptionalFields=new Set}static get styles(){return a`
11471
11480
  .node-editor-form {
11472
11481
  padding: 20px;
11473
11482
  display: flex;
@@ -11839,7 +11848,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11839
11848
  .localized-name temba-textinput {
11840
11849
  width: 100%;
11841
11850
  }
11842
- `}connectedCallback(){super.connectedCallback(),this.initializeFormData()}updated(t){super.updated(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI?this.openDialog():this.action||this.node&&this.nodeUI||(this.isOpen=!1):this.openDialog())}openDialog(){this.initializeFormData(),this.errors={},this.isOpen=!0}initializeFormData(){var t,e,i,o,n;const s=this.getNodeConfig();if(s&&"execute_actions"!==s.type&&"terminal"!==s.type||!this.action){if(this.node){const t=this.getNodeConfig();if(this.isTranslating&&"categories"===(null==t?void 0:t.localizable)&&t.toLocalizationFormData){const e=(null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||{};this.formData=t.toLocalizationFormData(this.node,e)}else(null==t?void 0:t.toFormData)?this.formData=t.toFormData(this.node,this.nodeUI):this.formData={...this.node};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}}else{const o=mp[this.action.type];if(this.isTranslating&&(null==o?void 0:o.localizable)&&o.toLocalizationFormData){const n=(null===(i=null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||void 0===i?void 0:i[this.action.uuid])||{};this.formData=o.toLocalizationFormData(this.action,n)}else(null==o?void 0:o.toFormData)?this.formData=o.toFormData(this.action):this.formData={...this.action};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}Object.keys(this.formData).forEach((t=>{const e=this.formData[t];Array.isArray(e)?this.formData[t]=[...e]:e&&"object"==typeof e&&(this.formData[t]={...e})}))}processFormDataForEditing(){const t={...this.formData};Object.keys(t).forEach((e=>{const i=t[e];if(i&&"object"==typeof i&&!Array.isArray(i)){this.isKeyValueField(e)&&(t[e]=Object.entries(i).map((([t,e])=>({key:t,value:e}))))}}));const e=this.getConfig();(null==e?void 0:e.form)&&this.processSelectFields(t,e.form),this.formData=t}processSelectFields(t,e){Object.entries(e).forEach((([e,i])=>{const o=t[e];"select"===i.type&&o&&(t[e]=this.convertToSelectArray(o)),"array"===i.type&&Array.isArray(o)&&i.itemConfig&&o.forEach((t=>{this.processSelectFields(t,i.itemConfig)}))}))}convertToSelectArray(t){return Array.isArray(t)?t.map((t=>"string"==typeof t?{name:t,value:t}:t)):"string"==typeof t?[{name:t,value:t}]:[t]}isKeyValueField(t){var e;const i=this.getConfig(),o=null==i?void 0:i.form;return"key-value"===(null===(e=null==o?void 0:o[t])||void 0===e?void 0:e.type)}getConfig(){if(this.node&&this.nodeUI){const t=this.getNodeConfig();if(("execute_actions"===this.nodeUI.type||"terminal"===this.nodeUI.type)&&this.action)return mp[this.action.type]||null;if(t)return t}return this.action&&mp[this.action.type]||null}getNodeConfig(){return this.nodeUI&&this.nodeUI.type?fp[this.nodeUI.type]:null}getHeaderColor(){var t,e;const i=this.getConfig();return(null==i?void 0:i.group)?(null===(t=Xh[i.group])||void 0===t?void 0:t.color)||(null===(e=Qh[i.group])||void 0===e?void 0:e.color):"#aaaaaa"}handleDialogButtonClick(t){const e=t.detail.button;"Save"===e.name?this.handleSave():"Cancel"===e.name&&this.handleCancel()}handleSave(){var t,e,i,o;const n=this.processFormDataForSave();if(!this.isTranslating){const t=this.validateForm();if(!t.valid)return this.errors=t.errors,void this.expandGroupsWithErrors(t.errors)}if(this.isTranslating){if(this.action){const t=mp[this.action.type];if((null==t?void 0:t.localizable)&&t.fromLocalizationFormData){const e=t.fromLocalizationFormData(n,this.action);return this.updateLocalization(this.languageCode,this.action.uuid,e),void this.fireCustomEvent(Mo.NodeEditCancelled,{})}}if(this.node){const s=this.getNodeConfig();if("categories"===(null==s?void 0:s.localizable)&&s.fromLocalizationFormData){const r=s.fromLocalizationFormData(n,this.node),a=(null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||{};return((null===(o=null===(i=this.node)||void 0===i?void 0:i.router)||void 0===o?void 0:o.categories)||[]).forEach((t=>{const e=t.uuid,i=r[e];i?this.updateLocalization(this.languageCode,e,i):a[e]&&this.updateLocalization(this.languageCode,e,{})})),void this.fireCustomEvent(Mo.NodeEditCancelled,{})}}}if(this.node&&this.node.router){const t=this.formDataToNode(n),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(n):void 0;this.fireCustomEvent(Mo.NodeSaved,{node:t,uiConfig:i})}else if(this.action){const t=this.formDataToAction(n);this.fireCustomEvent(Mo.ActionSaved,{action:t})}else if(this.node){const t=this.formDataToNode(n),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(n):void 0;this.fireCustomEvent(Mo.NodeSaved,{node:t,uiConfig:i})}}updateLocalization(t,e,i){_d.getState().updateLocalization(t,e,i)}processFormDataForSave(){const t={...this.formData};return Object.keys(t).forEach((e=>{const i=t[e];if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){const o={};i.forEach((({key:t,value:e})=>{""===t.trim()&&""===e.trim()||(o[t]=e)})),t[e]=o}else if(Array.isArray(i)&&0===i.length){this.isKeyValueField(e)&&(t[e]={})}})),t}handleCancel(){this.fireCustomEvent(Mo.NodeEditCancelled,{})}validateForm(){const t={},e=this.getConfig();if(e&&(e.form&&Object.entries(e.form).forEach((([e,i])=>{const o=this.formData[e];if("select"===i.type&&i.allowCreate){let i=this.formData[e];i=Array.isArray(i)?i.find((t=>t.arbitrary)):null,i&&i.arbitrary&&(t[e]='There was an error creating "'+i.name+'"')}!this.isTranslating&&i.required&&(!o||Array.isArray(o)&&0===o.length)&&(t[e]=`${i.label||e} is required.`),"string"==typeof o&&i.minLength&&o.length<i.minLength&&(t[e]=`${i.label||e} must be at least ${i.minLength} characters`),"string"==typeof o&&i.maxLength&&o.length>i.maxLength&&(t[e]=`${i.label||e} must be no more than ${i.maxLength} characters`)})),this.validateCategoryNames(t),e.validate)){let i;e.sanitize&&e.sanitize(this.formData),i=this.action?e.validate({...this.action,...this.formData}):e.validate(this.formData),Object.assign(t,i.errors)}return this.validateKeyValueUniqueness(t),{valid:0===Object.keys(t).length,errors:t}}validateKeyValueUniqueness(t){Object.entries(this.formData).forEach((([e,i])=>{if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){let o=!1;i.forEach((({key:t,value:e})=>{""===t.trim()&&""!==e.trim()&&(o=!0)}));const n=i.filter((({key:t})=>""!==t.trim())).map((({key:t})=>t.trim())),s=new Set(n);n.length!==s.size&&(o=!0),o&&(t[e]="Please resolve validation errors to continue")}}))}validateCategoryNames(t){const e=["other","failure","success","all responses","no response"];Object.entries(this.formData).forEach((([i,o])=>{if(Array.isArray(o)&&"categories"===i){const n=o.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim())).filter((t=>{const i=t.name.trim().toLowerCase();return e.includes(i)})).map((t=>t.name.trim()));n.length>0&&(t[i]=`Reserved category names cannot be used: ${n.join(", ")}`)}}))}formDataToNode(t=this.formData){var e;if(!this.node)throw new Error("No node to update");let i={...this.node};const o=this.getNodeConfig(),n=void 0!==(null==o?void 0:o.fromFormData);if(!n&&this.node.actions&&this.node.actions.length>0&&(i.actions=this.node.actions.map((e=>{if(this.action&&e.uuid===this.action.uuid){const i=mp[e.type];return(null==i?void 0:i.fromFormData)?i.fromFormData(t):{...e,...t}}return e}))),n)i=o.fromFormData(t,i);else if(this.node.router){if(i.router={...this.node.router},void 0!==t.result_name&&(i.router.result_name=t.result_name),null===(e=null==o?void 0:o.router)||void 0===e?void 0:e.rules){const t=i.router.categories||[],e=i.exits||[],n=[],s=[],r=new Map;if(o.router.rules.forEach((t=>{r.has(t.categoryName)||r.set(t.categoryName,[]),r.get(t.categoryName).push(t)})),r.forEach(((i,o)=>{const r=t.find((t=>t.name===o));if(r){n.push(r);const t=e.find((t=>t.uuid===r.exit_uuid));t&&s.push(t)}else{const t=Xt(),e=Xt();n.push({uuid:t,name:o,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}})),o.router.defaultCategory){if(!n.find((t=>t.name===o.router.defaultCategory))){const i=t.find((t=>t.name===o.router.defaultCategory));if(i){n.push(i);const t=e.find((t=>t.uuid===i.exit_uuid));t&&s.push(t)}else{const t=Xt(),e=Xt();n.push({uuid:t,name:o.router.defaultCategory,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}}i.router.categories=n,i.exits=s}}else Object.keys(t).forEach((e=>{"uuid"!==e&&"actions"!==e&&"exits"!==e&&"router"!==e&&(i[e]=t[e])}));return i}formDataToAction(t=this.formData){if(!this.action)throw new Error("No action to update");const e=mp[this.action.type];return(null==e?void 0:e.fromFormData)?e.fromFormData(t):{...this.action,...t}}handleFormFieldChange(t,e){const i=e.target;let o;if(o="TEMBA-CHECKBOX"===i.tagName?i.checked:void 0!==i.values?i.values:i.value,this.formData={...this.formData,[t]:o},this.errors[t]){const e={...this.errors};delete e[t],this.errors=e}this.updateComputedFields(t),this.updateGroupCollapseStates(),this.requestUpdate()}updateGroupCollapseStates(){const t=this.getConfig();(null==t?void 0:t.layout)&&this.updateGroupCollapseStatesRecursive(t.layout)}updateGroupCollapseStatesRecursive(t){t.forEach((t=>{if("object"==typeof t&&"group"===t.type){const{label:e,collapsed:i,collapsible:o}=t;if(o&&"function"==typeof i){const t=i(this.formData);this.groupCollapseState[e]!==t&&(this.groupCollapseState={...this.groupCollapseState,[e]:t})}this.updateGroupCollapseStatesRecursive(t.items)}else"object"==typeof t&&"row"===t.type&&this.updateGroupCollapseStatesRecursive(t.items)}))}updateComputedFields(t){const e=this.getConfig();(null==e?void 0:e.form)&&Object.entries(e.form).forEach((([e,i])=>{var o;if((null===(o=i.dependsOn)||void 0===o?void 0:o.includes(t))&&i.computeValue){const t=this.formData[e],o=i.computeValue(this.formData,t,this.originalFormData);this.formData={...this.formData,[e]:o}}}))}isFieldVisible(t,e){var i;if(null===(i=e.conditions)||void 0===i?void 0:i.visible)try{return e.conditions.visible(this.formData)}catch(e){return console.error(`Error checking visibility for ${t}:`,e),!0}return!0}renderNewField(t,e,i){if(!this.isFieldVisible(t,e))return H``;const o=this.errors[t]?[this.errors[t]]:[],n=e.maxWidth?`max-width: ${e.maxWidth};`:"",s=this.isTranslating&&this.action&&t in this.action?this.renderOriginalValue(t,this.action[t]):H``,r=this.renderFieldContent(t,e,i,o),a=H` ${s} ${r} `;return n?H`<div style="${n}">${a}</div>`:a}renderOptionalField(t,e,i){const o=i&&""!==i.toString().trim(),n=this.revealedOptionalFields.has(t);return o||n?this.renderNewField(t,e,i):H`
11851
+ `}connectedCallback(){super.connectedCallback(),this.initializeFormData()}updated(t){super.updated(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI?this.openDialog():this.action||this.node&&this.nodeUI||(this.isOpen=!1):this.openDialog())}openDialog(){this.initializeFormData(),this.errors={},this.isOpen=!0}initializeFormData(){var t,e,i,o,n;const s=this.getNodeConfig();if(s&&"execute_actions"!==s.type&&"terminal"!==s.type||!this.action){if(this.node){const t=this.getNodeConfig();if(this.isTranslating&&"categories"===(null==t?void 0:t.localizable)&&t.toLocalizationFormData){const e=(null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||{};this.formData=t.toLocalizationFormData(this.node,e)}else(null==t?void 0:t.toFormData)?this.formData=t.toFormData(this.node,this.nodeUI):this.formData={...this.node};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}}else{const o=fp[this.action.type];if(this.isTranslating&&(null==o?void 0:o.localizable)&&o.toLocalizationFormData){const n=(null===(i=null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||void 0===i?void 0:i[this.action.uuid])||{};this.formData=o.toLocalizationFormData(this.action,n)}else(null==o?void 0:o.toFormData)?this.formData=o.toFormData(this.action):this.formData={...this.action};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}Object.keys(this.formData).forEach((t=>{const e=this.formData[t];Array.isArray(e)?this.formData[t]=[...e]:e&&"object"==typeof e&&(this.formData[t]={...e})}))}processFormDataForEditing(){const t={...this.formData};Object.keys(t).forEach((e=>{const i=t[e];if(i&&"object"==typeof i&&!Array.isArray(i)){this.isKeyValueField(e)&&(t[e]=Object.entries(i).map((([t,e])=>({key:t,value:e}))))}}));const e=this.getConfig();(null==e?void 0:e.form)&&this.processSelectFields(t,e.form),this.formData=t}processSelectFields(t,e){Object.entries(e).forEach((([e,i])=>{const o=t[e];"select"===i.type&&o&&(t[e]=this.convertToSelectArray(o)),"array"===i.type&&Array.isArray(o)&&i.itemConfig&&o.forEach((t=>{this.processSelectFields(t,i.itemConfig)}))}))}convertToSelectArray(t){return Array.isArray(t)?t.map((t=>"string"==typeof t?{name:t,value:t}:t)):"string"==typeof t?[{name:t,value:t}]:[t]}isKeyValueField(t){var e;const i=this.getConfig(),o=null==i?void 0:i.form;return"key-value"===(null===(e=null==o?void 0:o[t])||void 0===e?void 0:e.type)}getConfig(){if(this.node&&this.nodeUI){const t=this.getNodeConfig();if(("execute_actions"===this.nodeUI.type||"terminal"===this.nodeUI.type)&&this.action)return fp[this.action.type]||null;if(t)return t}return this.action&&fp[this.action.type]||null}getNodeConfig(){return this.nodeUI&&this.nodeUI.type?yp[this.nodeUI.type]:null}getHeaderColor(){var t,e;const i=this.getConfig();return(null==i?void 0:i.group)?(null===(t=Jh[i.group])||void 0===t?void 0:t.color)||(null===(e=tu[i.group])||void 0===e?void 0:e.color):"#aaaaaa"}handleDialogButtonClick(t){const e=t.detail.button;"Save"===e.name?this.handleSave():"Cancel"===e.name&&this.handleCancel()}handleSave(){var t,e,i,o;const n=this.processFormDataForSave();if(!this.isTranslating){const t=this.validateForm();if(!t.valid)return this.errors=t.errors,void this.expandGroupsWithErrors(t.errors)}if(this.isTranslating){if(this.action){const t=fp[this.action.type];if((null==t?void 0:t.localizable)&&t.fromLocalizationFormData){const e=t.fromLocalizationFormData(n,this.action);return this.updateLocalization(this.languageCode,this.action.uuid,e),void this.fireCustomEvent(Mo.NodeEditCancelled,{})}}if(this.node){const s=this.getNodeConfig();if("categories"===(null==s?void 0:s.localizable)&&s.fromLocalizationFormData){const r=s.fromLocalizationFormData(n,this.node),a=(null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||{};return((null===(o=null===(i=this.node)||void 0===i?void 0:i.router)||void 0===o?void 0:o.categories)||[]).forEach((t=>{const e=t.uuid,i=r[e];i?this.updateLocalization(this.languageCode,e,i):a[e]&&this.updateLocalization(this.languageCode,e,{})})),void this.fireCustomEvent(Mo.NodeEditCancelled,{})}}}if(this.node&&this.node.router){const t=this.formDataToNode(n),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(n):void 0;this.fireCustomEvent(Mo.NodeSaved,{node:t,uiConfig:i})}else if(this.action){const t=this.formDataToAction(n);this.fireCustomEvent(Mo.ActionSaved,{action:t})}else if(this.node){const t=this.formDataToNode(n),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(n):void 0;this.fireCustomEvent(Mo.NodeSaved,{node:t,uiConfig:i})}}updateLocalization(t,e,i){_d.getState().updateLocalization(t,e,i)}processFormDataForSave(){const t={...this.formData};return Object.keys(t).forEach((e=>{const i=t[e];if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){const o={};i.forEach((({key:t,value:e})=>{""===t.trim()&&""===e.trim()||(o[t]=e)})),t[e]=o}else if(Array.isArray(i)&&0===i.length){this.isKeyValueField(e)&&(t[e]={})}})),t}handleCancel(){this.fireCustomEvent(Mo.NodeEditCancelled,{})}validateForm(){const t={},e=this.getConfig();if(e&&(e.form&&Object.entries(e.form).forEach((([e,i])=>{const o=this.formData[e];if("select"===i.type&&i.allowCreate){let i=this.formData[e];i=Array.isArray(i)?i.find((t=>t.arbitrary)):null,i&&i.arbitrary&&(t[e]='There was an error creating "'+i.name+'"')}!this.isTranslating&&i.required&&(!o||Array.isArray(o)&&0===o.length)&&(t[e]=`${i.label||e} is required.`),"string"==typeof o&&i.minLength&&o.length<i.minLength&&(t[e]=`${i.label||e} must be at least ${i.minLength} characters`),"string"==typeof o&&i.maxLength&&o.length>i.maxLength&&(t[e]=`${i.label||e} must be no more than ${i.maxLength} characters`)})),this.validateCategoryNames(t),e.validate)){let i;e.sanitize&&e.sanitize(this.formData),i=this.action?e.validate({...this.action,...this.formData}):e.validate(this.formData),Object.assign(t,i.errors)}return this.validateKeyValueUniqueness(t),{valid:0===Object.keys(t).length,errors:t}}validateKeyValueUniqueness(t){Object.entries(this.formData).forEach((([e,i])=>{if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){let o=!1;i.forEach((({key:t,value:e})=>{""===t.trim()&&""!==e.trim()&&(o=!0)}));const n=i.filter((({key:t})=>""!==t.trim())).map((({key:t})=>t.trim())),s=new Set(n);n.length!==s.size&&(o=!0),o&&(t[e]="Please resolve validation errors to continue")}}))}validateCategoryNames(t){const e=["other","failure","success","all responses","no response"];Object.entries(this.formData).forEach((([i,o])=>{if(Array.isArray(o)&&"categories"===i){const n=o.filter((t=>(null==t?void 0:t.name)&&""!==t.name.trim())).filter((t=>{const i=t.name.trim().toLowerCase();return e.includes(i)})).map((t=>t.name.trim()));n.length>0&&(t[i]=`Reserved category names cannot be used: ${n.join(", ")}`)}}))}formDataToNode(t=this.formData){var e;if(!this.node)throw new Error("No node to update");let i={...this.node};const o=this.getNodeConfig(),n=void 0!==(null==o?void 0:o.fromFormData);if(!n&&this.node.actions&&this.node.actions.length>0&&(i.actions=this.node.actions.map((e=>{if(this.action&&e.uuid===this.action.uuid){const i=fp[e.type];return(null==i?void 0:i.fromFormData)?i.fromFormData(t):{...e,...t}}return e}))),n)i=o.fromFormData(t,i);else if(this.node.router){if(i.router={...this.node.router},void 0!==t.result_name&&(i.router.result_name=t.result_name),null===(e=null==o?void 0:o.router)||void 0===e?void 0:e.rules){const t=i.router.categories||[],e=i.exits||[],n=[],s=[],r=new Map;if(o.router.rules.forEach((t=>{r.has(t.categoryName)||r.set(t.categoryName,[]),r.get(t.categoryName).push(t)})),r.forEach(((i,o)=>{const r=t.find((t=>t.name===o));if(r){n.push(r);const t=e.find((t=>t.uuid===r.exit_uuid));t&&s.push(t)}else{const t=Xt(),e=Xt();n.push({uuid:t,name:o,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}})),o.router.defaultCategory){if(!n.find((t=>t.name===o.router.defaultCategory))){const i=t.find((t=>t.name===o.router.defaultCategory));if(i){n.push(i);const t=e.find((t=>t.uuid===i.exit_uuid));t&&s.push(t)}else{const t=Xt(),e=Xt();n.push({uuid:t,name:o.router.defaultCategory,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}}i.router.categories=n,i.exits=s}}else Object.keys(t).forEach((e=>{"uuid"!==e&&"actions"!==e&&"exits"!==e&&"router"!==e&&(i[e]=t[e])}));return i}formDataToAction(t=this.formData){if(!this.action)throw new Error("No action to update");const e=fp[this.action.type];return(null==e?void 0:e.fromFormData)?e.fromFormData(t):{...this.action,...t}}handleFormFieldChange(t,e){const i=e.target;let o;if(o="TEMBA-CHECKBOX"===i.tagName?i.checked:void 0!==i.values?i.values:i.value,this.formData={...this.formData,[t]:o},this.errors[t]){const e={...this.errors};delete e[t],this.errors=e}this.updateComputedFields(t),this.updateGroupCollapseStates(),this.requestUpdate()}updateGroupCollapseStates(){const t=this.getConfig();(null==t?void 0:t.layout)&&this.updateGroupCollapseStatesRecursive(t.layout)}updateGroupCollapseStatesRecursive(t){t.forEach((t=>{if("object"==typeof t&&"group"===t.type){const{label:e,collapsed:i,collapsible:o}=t;if(o&&"function"==typeof i){const t=i(this.formData);this.groupCollapseState[e]!==t&&(this.groupCollapseState={...this.groupCollapseState,[e]:t})}this.updateGroupCollapseStatesRecursive(t.items)}else"object"==typeof t&&"row"===t.type&&this.updateGroupCollapseStatesRecursive(t.items)}))}updateComputedFields(t){const e=this.getConfig();(null==e?void 0:e.form)&&Object.entries(e.form).forEach((([e,i])=>{var o;if((null===(o=i.dependsOn)||void 0===o?void 0:o.includes(t))&&i.computeValue){const t=this.formData[e],o=i.computeValue(this.formData,t,this.originalFormData);this.formData={...this.formData,[e]:o}}}))}isFieldVisible(t,e){var i;if(null===(i=e.conditions)||void 0===i?void 0:i.visible)try{return e.conditions.visible(this.formData)}catch(e){return console.error(`Error checking visibility for ${t}:`,e),!0}return!0}renderNewField(t,e,i){if(!this.isFieldVisible(t,e))return H``;const o=this.errors[t]?[this.errors[t]]:[],n=e.maxWidth?`max-width: ${e.maxWidth};`:"",s=this.isTranslating&&this.action&&t in this.action?this.renderOriginalValue(t,this.action[t]):H``,r=this.renderFieldContent(t,e,i,o),a=H` ${s} ${r} `;return n?H`<div style="${n}">${a}</div>`:a}renderOptionalField(t,e,i){const o=i&&""!==i.toString().trim(),n=this.revealedOptionalFields.has(t);return o||n?this.renderNewField(t,e,i):H`
11843
11852
  <div class="optional-field-link">
11844
11853
  <a
11845
11854
  @click="${e=>{e.preventDefault(),this.revealOptionalField(t)}}"
@@ -11867,7 +11876,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11867
11876
  <div class="original-value">
11868
11877
  <div class="original-value-content">${i}</div>
11869
11878
  </div>
11870
- `:H``}renderFieldContent(t,e,i,o){const n=this.isTranslating?{...e,required:!1}:e;return ow.renderField(t,n,i,{errors:o,onChange:i=>{var o,n;if(t&&"key-value"===e.type){const e=i;e.detail&&this.handleNewFieldChange(t,e.detail.value)}else if(t&&"array"===e.type)this.handleNewFieldChange(t,i.target.value);else if(t&&"message-editor"===e.type)this.handleMessageEditorChange(t,i);else if(t&&"media"===e.type){const e=(null===(n=null===(o=i.target.attachments)||void 0===o?void 0:o[0])||void 0===n?void 0:n.url)||"";this.handleNewFieldChange(t,e)}else this.handleFormFieldChange(t,i)},showLabel:!0,formData:this.formData,additionalData:{attachments:this.formData.attachments||[]}})}handleGroupToggle(t){this.groupCollapseState={...this.groupCollapseState,[t]:!this.groupCollapseState[t]}}handleGroupMouseEnter(t){this.groupHoverState={...this.groupHoverState,[t]:!0}}handleGroupMouseLeave(t){this.groupHoverState={...this.groupHoverState,[t]:!1}}expandGroupsWithErrors(t){const e=this.getConfig();if(!(null==e?void 0:e.layout))return;const i=new Set(Object.keys(t));this.expandGroupsWithErrorsRecursive(e.layout,i)}expandGroupsWithErrorsRecursive(t,e){t.forEach((t=>{if("object"==typeof t&&"group"===t.type){this.collectFieldsFromItems(t.items).some((t=>e.has(t)))&&(this.groupCollapseState={...this.groupCollapseState,[t.label]:!1}),this.expandGroupsWithErrorsRecursive(t.items,e)}else"object"==typeof t&&"row"===t.type&&this.expandGroupsWithErrorsRecursive(t.items,e)}))}renderLayoutItem(t,e,i){if("string"==typeof t)return this.renderLayoutItem({type:"field",field:t},e,i);switch(t.type){case"field":if(e.form[t.field]&&!i.has(t.field)){i.add(t.field);const o=e.form[t.field];return o.optionalLink?this.renderOptionalField(t.field,o,this.formData[t.field]):this.renderNewField(t.field,o,this.formData[t.field])}return H``;case"row":return this.renderRow(t,e,i);case"group":return this.renderGroup(t,e,i);case"spacer":default:return H``;case"text":return H`<div class="form-text">${t.text}</div>`}}renderRow(t,e,i){const{items:o,gap:n="1rem",label:s,helpText:r,inlineLabels:a,marginBottom:l}=t,d=this.collectFieldsFromItems(o).filter((t=>{var i;return null===(i=e.form)||void 0===i?void 0:i[t]})).filter((t=>{const i=e.form[t];return this.isFieldVisible(t,i)}));if(0===d.length)return H``;const c=new Map;d.forEach((t=>{const i=e.form[t];i.maxWidth?c.set(t,`flex: 0 0 ${i.maxWidth};`):c.set(t,"flex: 1 1 0;")}));const h=H`
11879
+ `:H``}renderFieldContent(t,e,i,o){const n=this.isTranslating?{...e,required:!1}:e;return sw.renderField(t,n,i,{errors:o,onChange:i=>{var o,n;if(t&&"key-value"===e.type){const e=i;e.detail&&this.handleNewFieldChange(t,e.detail.value)}else if(t&&"array"===e.type)this.handleNewFieldChange(t,i.target.value);else if(t&&"message-editor"===e.type)this.handleMessageEditorChange(t,i);else if(t&&"media"===e.type){const e=(null===(n=null===(o=i.target.attachments)||void 0===o?void 0:o[0])||void 0===n?void 0:n.url)||"";this.handleNewFieldChange(t,e)}else this.handleFormFieldChange(t,i)},showLabel:!0,formData:this.formData,additionalData:{attachments:this.formData.attachments||[]}})}handleGroupToggle(t){this.groupCollapseState={...this.groupCollapseState,[t]:!this.groupCollapseState[t]}}handleGroupMouseEnter(t){this.groupHoverState={...this.groupHoverState,[t]:!0}}handleGroupMouseLeave(t){this.groupHoverState={...this.groupHoverState,[t]:!1}}expandGroupsWithErrors(t){const e=this.getConfig();if(!(null==e?void 0:e.layout))return;const i=new Set(Object.keys(t));this.expandGroupsWithErrorsRecursive(e.layout,i)}expandGroupsWithErrorsRecursive(t,e){t.forEach((t=>{if("object"==typeof t&&"group"===t.type){this.collectFieldsFromItems(t.items).some((t=>e.has(t)))&&(this.groupCollapseState={...this.groupCollapseState,[t.label]:!1}),this.expandGroupsWithErrorsRecursive(t.items,e)}else"object"==typeof t&&"row"===t.type&&this.expandGroupsWithErrorsRecursive(t.items,e)}))}renderLayoutItem(t,e,i){if("string"==typeof t)return this.renderLayoutItem({type:"field",field:t},e,i);switch(t.type){case"field":if(e.form[t.field]&&!i.has(t.field)){i.add(t.field);const o=e.form[t.field];return o.optionalLink?this.renderOptionalField(t.field,o,this.formData[t.field]):this.renderNewField(t.field,o,this.formData[t.field])}return H``;case"row":return this.renderRow(t,e,i);case"group":return this.renderGroup(t,e,i);case"spacer":default:return H``;case"text":return H`<div class="form-text">${t.text}</div>`}}renderRow(t,e,i){const{items:o,gap:n="1rem",label:s,helpText:r,inlineLabels:a,marginBottom:l}=t,d=this.collectFieldsFromItems(o).filter((t=>{var i;return null===(i=e.form)||void 0===i?void 0:i[t]})).filter((t=>{const i=e.form[t];return this.isFieldVisible(t,i)}));if(0===d.length)return H``;const c=new Map;d.forEach((t=>{const i=e.form[t];i.maxWidth?c.set(t,`flex: 0 0 ${i.maxWidth};`):c.set(t,"flex: 1 1 0;")}));const h=H`
11871
11880
  <div
11872
11881
  class="form-row"
11873
11882
  style="display: flex; gap: ${n};${l?` margin-bottom: ${l};`:""}"
@@ -11971,7 +11980,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11971
11980
  @click=${()=>this.handleIssueClick(t)}
11972
11981
  >
11973
11982
  <temba-icon name="alert_warning" size="1.2"></temba-icon>
11974
- <span class="issue-text">${Oh(t)}</span>
11983
+ <span class="issue-text">${zh(t)}</span>
11975
11984
  </div>
11976
11985
  `))}
11977
11986
  `}render(){var t,e,i,o,n,s;if(!this.isOpen)return H``;const r=this.isTranslating?"#505050":this.getHeaderColor(),a=(this.isTranslating,"#fff"),l=this.getConfig(),d=(null==l?void 0:l.dialogSize)||"medium",c=this.isTranslating?Sd().getLanguageName(this.languageCode):"";let h=(null==l?void 0:l.name)||"Edit";return this.isTranslating&&(h=c?`${c} - ${h}`:h),H`
@@ -11994,7 +12003,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
11994
12003
 
11995
12004
  <div slot="gutter">${this.renderGutter()}</div>
11996
12005
  </temba-dialog>
11997
- `}}t([mt({type:Object})],nw.prototype,"action",void 0),t([mt({type:Object})],nw.prototype,"node",void 0),t([mt({type:Object})],nw.prototype,"nodeUI",void 0),t([mt({attribute:!1})],nw.prototype,"dialogOrigin",void 0),t([mt({type:Boolean})],nw.prototype,"isOpen",void 0),t([gt()],nw.prototype,"formData",void 0),t([gt()],nw.prototype,"originalFormData",void 0),t([gt()],nw.prototype,"errors",void 0),t([gt()],nw.prototype,"groupCollapseState",void 0),t([gt()],nw.prototype,"groupHoverState",void 0),t([gt()],nw.prototype,"revealedOptionalFields",void 0),t([kd(_d,(t=>t.languageCode))],nw.prototype,"languageCode",void 0),t([kd(_d,(t=>t.isTranslating))],nw.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.flowDefinition))],nw.prototype,"flowDefinition",void 0),t([kd(_d,(t=>t.issuesByNode))],nw.prototype,"issuesByNode",void 0),t([kd(_d,(t=>t.issuesByAction))],nw.prototype,"issuesByAction",void 0);class sw extends xo{constructor(){super(...arguments),this._items=[],this.minItems=0,this.maintainEmptyItem=!1}getContainerClass(){return"base-list-editor"}renderAddButton(){return H`
12006
+ `}}t([mt({type:Object})],rw.prototype,"action",void 0),t([mt({type:Object})],rw.prototype,"node",void 0),t([mt({type:Object})],rw.prototype,"nodeUI",void 0),t([mt({attribute:!1})],rw.prototype,"dialogOrigin",void 0),t([mt({type:Boolean})],rw.prototype,"isOpen",void 0),t([gt()],rw.prototype,"formData",void 0),t([gt()],rw.prototype,"originalFormData",void 0),t([gt()],rw.prototype,"errors",void 0),t([gt()],rw.prototype,"groupCollapseState",void 0),t([gt()],rw.prototype,"groupHoverState",void 0),t([gt()],rw.prototype,"revealedOptionalFields",void 0),t([kd(_d,(t=>t.languageCode))],rw.prototype,"languageCode",void 0),t([kd(_d,(t=>t.isTranslating))],rw.prototype,"isTranslating",void 0),t([kd(_d,(t=>t.flowDefinition))],rw.prototype,"flowDefinition",void 0),t([kd(_d,(t=>t.issuesByNode))],rw.prototype,"issuesByNode",void 0),t([kd(_d,(t=>t.issuesByAction))],rw.prototype,"issuesByAction",void 0);class aw extends xo{constructor(){super(...arguments),this._items=[],this.minItems=0,this.maintainEmptyItem=!1}getContainerClass(){return"base-list-editor"}renderAddButton(){return H`
11998
12007
  <button class="add-btn" @click=${()=>this.addItem()}>Add Item</button>
11999
12008
  `}shouldShowAddButton(){return!this.maintainEmptyItem&&(!this.maxItems||this._items.length<this.maxItems)}renderWidget(){const t=this.displayItems;return H`
12000
12009
  <div class=${this.getContainerClass()}>
@@ -12006,7 +12015,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12006
12015
  </div>
12007
12016
  ${this.shouldShowAddButton()?this.renderAddButton():""}
12008
12017
  </div>
12009
- `}cleanItems(t){return this.maintainEmptyItem?t.filter((t=>!this.isEmptyItem(t))):t}get displayItems(){const t=[...this._items];if(this.maintainEmptyItem){t.some((t=>this.isEmptyItem(t)))||this.maxItems&&!(t.length<this.maxItems)||t.push(this.createEmptyItem())}return t}handleItemChange(t,e){const i=[...this._items];i[t]=e,this.updateValue(i)}handleFieldChange(t,e,i){const o=[...this._items];if(t>=this._items.length){if(this.maxItems&&this._items.length>=this.maxItems)return;for(;o.length<=t;)o.push(this.createEmptyItem())}const n=o[t]||this.createEmptyItem();o[t]={...n,[e]:i},this.updateValue(o)}addItem(t){if(this.maxItems&&this._items.length>=this.maxItems)return;const e=t||this.createEmptyItem(),i=[...this._items,e];this.updateValue(i)}removeItem(t){if(this._items.length<=this.minItems)return;const e=this._items.filter(((e,i)=>i!==t));this.updateValue(e)}canRemoveItem(t){const e=this.displayItems[t];return!(this._items.length<=this.minItems)&&(!this.maintainEmptyItem||!this.isEmptyItem(e))}updateValue(t){this._items=t,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0}))}itemsEqual(t,e){return JSON.stringify(t)===JSON.stringify(e)}}t([mt({attribute:!1})],sw.prototype,"_items",void 0),t([mt({type:Number})],sw.prototype,"minItems",void 0),t([mt({type:Number})],sw.prototype,"maxItems",void 0),t([mt({type:Boolean})],sw.prototype,"maintainEmptyItem",void 0);let rw=class extends sw{constructor(){super(),this.keyPlaceholder="Key",this.valuePlaceholder="Value",this.showValidation=!0,this.keyErrors={},this.maintainEmptyItem=!0,this._items=[]}get value(){return this._items.filter((({key:t,value:e})=>""!==t.trim()||""!==e.trim()))}set value(t){Array.isArray(t)?this._items=[...t]:this._items=Object.entries(t||{}).map((([t,e])=>({key:t,value:"string"==typeof e?e:String(e)}))),this.requestUpdate()}isEmptyItem(t){return""===t.key.trim()&&""===t.value.trim()}createEmptyItem(){return{key:"",value:""}}cleanItems(t){return t.filter((({key:t,value:e})=>""!==t.trim()||""!==e.trim()))}toRecord(){const t={};return this._items.forEach((({key:e,value:i})=>{""===e.trim()&&""===i.trim()||(t[e]=i)})),t}validateKeys(){const t={};this._items.forEach((({key:e,value:i},o)=>{""===e.trim()&&""!==i.trim()&&(t[o]="Key is required when value is provided")}));const e=this._items.map((({key:t},e)=>({key:t.trim(),index:e}))).filter((({key:t})=>""!==t)),i=new Map;return e.forEach((({key:t,index:e})=>{i.has(t)||i.set(t,[]),i.get(t).push(e)})),i.forEach(((e,i)=>{e.length>1&&e.forEach((e=>{t[e]||(t[e]=`Duplicate key "${i}"`)}))})),this.keyErrors=t,0===Object.keys(t).length}clearKeyErrors(){this.keyErrors={}}updateValue(t){this._items=t,this.clearKeyErrors(),this.validateKeys(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0})),this.requestUpdate()}handleKeyChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:e,value:i.value})}handleValueChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:i.key,value:e})}renderItem(t,e){const i=this.canRemoveItem(e),o=this.showValidation&&this.keyErrors[e]?this.keyErrors[e]:"";return H`
12018
+ `}cleanItems(t){return this.maintainEmptyItem?t.filter((t=>!this.isEmptyItem(t))):t}get displayItems(){const t=[...this._items];if(this.maintainEmptyItem){t.some((t=>this.isEmptyItem(t)))||this.maxItems&&!(t.length<this.maxItems)||t.push(this.createEmptyItem())}return t}handleItemChange(t,e){const i=[...this._items];i[t]=e,this.updateValue(i)}handleFieldChange(t,e,i){const o=[...this._items];if(t>=this._items.length){if(this.maxItems&&this._items.length>=this.maxItems)return;for(;o.length<=t;)o.push(this.createEmptyItem())}const n=o[t]||this.createEmptyItem();o[t]={...n,[e]:i},this.updateValue(o)}addItem(t){if(this.maxItems&&this._items.length>=this.maxItems)return;const e=t||this.createEmptyItem(),i=[...this._items,e];this.updateValue(i)}removeItem(t){if(this._items.length<=this.minItems)return;const e=this._items.filter(((e,i)=>i!==t));this.updateValue(e)}canRemoveItem(t){const e=this.displayItems[t];return!(this._items.length<=this.minItems)&&(!this.maintainEmptyItem||!this.isEmptyItem(e))}updateValue(t){this._items=t,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0}))}itemsEqual(t,e){return JSON.stringify(t)===JSON.stringify(e)}}t([mt({attribute:!1})],aw.prototype,"_items",void 0),t([mt({type:Number})],aw.prototype,"minItems",void 0),t([mt({type:Number})],aw.prototype,"maxItems",void 0),t([mt({type:Boolean})],aw.prototype,"maintainEmptyItem",void 0);let lw=class extends aw{constructor(){super(),this.keyPlaceholder="Key",this.valuePlaceholder="Value",this.showValidation=!0,this.keyErrors={},this.maintainEmptyItem=!0,this._items=[]}get value(){return this._items.filter((({key:t,value:e})=>""!==t.trim()||""!==e.trim()))}set value(t){Array.isArray(t)?this._items=[...t]:this._items=Object.entries(t||{}).map((([t,e])=>({key:t,value:"string"==typeof e?e:String(e)}))),this.requestUpdate()}isEmptyItem(t){return""===t.key.trim()&&""===t.value.trim()}createEmptyItem(){return{key:"",value:""}}cleanItems(t){return t.filter((({key:t,value:e})=>""!==t.trim()||""!==e.trim()))}toRecord(){const t={};return this._items.forEach((({key:e,value:i})=>{""===e.trim()&&""===i.trim()||(t[e]=i)})),t}validateKeys(){const t={};this._items.forEach((({key:e,value:i},o)=>{""===e.trim()&&""!==i.trim()&&(t[o]="Key is required when value is provided")}));const e=this._items.map((({key:t},e)=>({key:t.trim(),index:e}))).filter((({key:t})=>""!==t)),i=new Map;return e.forEach((({key:t,index:e})=>{i.has(t)||i.set(t,[]),i.get(t).push(e)})),i.forEach(((e,i)=>{e.length>1&&e.forEach((e=>{t[e]||(t[e]=`Duplicate key "${i}"`)}))})),this.keyErrors=t,0===Object.keys(t).length}clearKeyErrors(){this.keyErrors={}}updateValue(t){this._items=t,this.clearKeyErrors(),this.validateKeys(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0})),this.requestUpdate()}handleKeyChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:e,value:i.value})}handleValueChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:i.key,value:e})}renderItem(t,e){const i=this.canRemoveItem(e),o=this.showValidation&&this.keyErrors[e]?this.keyErrors[e]:"";return H`
12010
12019
  <div class="row">
12011
12020
  <temba-textinput
12012
12021
  .value=${t.key}
@@ -12068,7 +12077,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12068
12077
  width: 32px;
12069
12078
  height: 32px;
12070
12079
  }
12071
- `}};t([mt({type:String})],rw.prototype,"keyPlaceholder",void 0),t([mt({type:String})],rw.prototype,"valuePlaceholder",void 0),t([mt({type:Boolean})],rw.prototype,"showValidation",void 0),t([gt()],rw.prototype,"keyErrors",void 0),t([mt({type:Array})],rw.prototype,"value",null),rw=t([ht("temba-key-value-editor")],rw);let aw=class extends sw{constructor(){super(),this.itemConfig={},this.itemLabel="Item",this.sortable=!1,this.maintainEmptyItem=!0,this.focusInfo=null,this._items=[]}get value(){return[...this._items]}set value(t){this._items=t||[],this.requestUpdate()}isEmptyItem(t){if(this.isEmptyItemFn)return this.isEmptyItemFn(t);const e=Object.values(t);return 0===e.length||e.every((t=>null==t||""===t))}cleanItems(t){return t.filter((t=>{const e=Object.values(t);return e.length>0&&e.some((t=>null!=t&&""!==t))}))}captureFocus(){var t,e,i,o,n,s,r;const a=null===(t=this.shadowRoot)||void 0===t?void 0:t.activeElement,l=document.activeElement;let d=a||l;if(l&&(null===(e=this.shadowRoot)||void 0===e?void 0:e.contains(l))&&(d=l),!d)return void(this.focusInfo=null);let c=d,h=null;for(;c;){if(null===(i=c.classList)||void 0===i?void 0:i.contains("array-item")){h=c;break}if(c.parentElement)c=c.parentElement;else{if(!c.parentNode||!c.parentNode.host)break;c=c.parentNode.host}}if(!h)return void(this.focusInfo=null);const u=null===(o=h.id)||void 0===o?void 0:o.match(/array-item-(\d+)/);if(!u)return void(this.focusInfo=null);const p=parseInt(u[1],10);let m="";if((null===(n=d.tagName)||void 0===n?void 0:n.toLowerCase().startsWith("temba-"))&&(m=d.name||d.getAttribute("name")||""),!m&&d.hasAttribute&&d.hasAttribute("name")&&(m=d.getAttribute("name")||""),!m){let t=d;for(;t&&t!==h;){if(t.hasAttribute&&t.hasAttribute("data-field-name")){m=t.getAttribute("data-field-name")||"";break}t=t.parentElement}}if(!m)return void(this.focusInfo=null);let g=d;if(null===(s=d.tagName)||void 0===s?void 0:s.toLowerCase().startsWith("temba-")){const t=(null===(r=d.shadowRoot)||void 0===r?void 0:r.querySelector("input, textarea"))||d.querySelector("input, textarea");t&&(g=t)}const f=g.selectionStart,v=g.selectionEnd;this.focusInfo={itemIndex:p,fieldName:m,selectionStart:f,selectionEnd:v}}restoreFocus(){var t,e;if(!this.focusInfo)return;const{itemIndex:i,fieldName:o,selectionStart:n,selectionEnd:s}=this.focusInfo,r=`array-item-${i}`,a=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById(r);if(a)this.attemptFocusRestore(a,o,n,s),this.focusInfo=null;else{const t=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelectorAll(".array-item");if(t&&t.length>i){const e=t[i];e&&this.attemptFocusRestore(e,o,n,s)}this.focusInfo=null}}attemptFocusRestore(t,e,i,o){const n=t.querySelector(`[data-field-name="${e}"]`);let s=null;if(n&&(s=n.querySelector("temba-textinput, temba-completion, input, textarea")),!s){const i=[`temba-textinput[name="${e}"]`,`temba-completion[name="${e}"]`,`input[name="${e}"]`,`textarea[name="${e}"]`,`[name="${e}"]`];for(const e of i)if(s=t.querySelector(e),s)break}s&&requestAnimationFrame((()=>{requestAnimationFrame((()=>{var t,e;try{if(s.focus(),void 0!==i&&void 0!==o){let n=s;if(null===(t=s.tagName)||void 0===t?void 0:t.toLowerCase().startsWith("temba-")){const t=(null===(e=s.shadowRoot)||void 0===e?void 0:e.querySelector("input, textarea"))||s.querySelector("input, textarea");t&&"setSelectionRange"in t&&(n=t)}"setSelectionRange"in n&&n.setSelectionRange(i,o)}}catch(t){}}))}))}createEmptyItem(){return{}}handleFieldChange(t,e,i){let o;this.onItemChange?o=this.onItemChange(t,e,i,this._items):(o=[...this._items],o[t]={...o[t],[e]:i}),this.updateValue(o)}willUpdate(t){super.willUpdate(t),(t.has("_items")||t.has("value"))&&this.captureFocus()}updated(t){super.updated(t),(t.has("_items")||t.has("value"))&&this.restoreFocus()}handleOrderChanged(t){const e=t.detail;if(e.swap&&Array.isArray(e.swap)&&2===e.swap.length){const[t,i]=e.swap;if(t!==i&&t>=0&&i>=0&&t<this._items.length&&i<this._items.length){const e=[...this._items],o=e.splice(t,1)[0];e.splice(i,0,o),this.updateValue(e)}}}renderWidget(){const t=this.displayItems.map(((t,e)=>{const i=this.renderItem(t,e);return this.sortable&&!this.isEmptyItem(t)?H`
12080
+ `}};t([mt({type:String})],lw.prototype,"keyPlaceholder",void 0),t([mt({type:String})],lw.prototype,"valuePlaceholder",void 0),t([mt({type:Boolean})],lw.prototype,"showValidation",void 0),t([gt()],lw.prototype,"keyErrors",void 0),t([mt({type:Array})],lw.prototype,"value",null),lw=t([ht("temba-key-value-editor")],lw);let dw=class extends aw{constructor(){super(),this.itemConfig={},this.itemLabel="Item",this.sortable=!1,this.maintainEmptyItem=!0,this.focusInfo=null,this._items=[]}get value(){return[...this._items]}set value(t){this._items=t||[],this.requestUpdate()}isEmptyItem(t){if(this.isEmptyItemFn)return this.isEmptyItemFn(t);const e=Object.values(t);return 0===e.length||e.every((t=>null==t||""===t))}cleanItems(t){return t.filter((t=>{const e=Object.values(t);return e.length>0&&e.some((t=>null!=t&&""!==t))}))}captureFocus(){var t,e,i,o,n,s,r;const a=null===(t=this.shadowRoot)||void 0===t?void 0:t.activeElement,l=document.activeElement;let d=a||l;if(l&&(null===(e=this.shadowRoot)||void 0===e?void 0:e.contains(l))&&(d=l),!d)return void(this.focusInfo=null);let c=d,h=null;for(;c;){if(null===(i=c.classList)||void 0===i?void 0:i.contains("array-item")){h=c;break}if(c.parentElement)c=c.parentElement;else{if(!c.parentNode||!c.parentNode.host)break;c=c.parentNode.host}}if(!h)return void(this.focusInfo=null);const u=null===(o=h.id)||void 0===o?void 0:o.match(/array-item-(\d+)/);if(!u)return void(this.focusInfo=null);const p=parseInt(u[1],10);let m="";if((null===(n=d.tagName)||void 0===n?void 0:n.toLowerCase().startsWith("temba-"))&&(m=d.name||d.getAttribute("name")||""),!m&&d.hasAttribute&&d.hasAttribute("name")&&(m=d.getAttribute("name")||""),!m){let t=d;for(;t&&t!==h;){if(t.hasAttribute&&t.hasAttribute("data-field-name")){m=t.getAttribute("data-field-name")||"";break}t=t.parentElement}}if(!m)return void(this.focusInfo=null);let g=d;if(null===(s=d.tagName)||void 0===s?void 0:s.toLowerCase().startsWith("temba-")){const t=(null===(r=d.shadowRoot)||void 0===r?void 0:r.querySelector("input, textarea"))||d.querySelector("input, textarea");t&&(g=t)}const f=g.selectionStart,v=g.selectionEnd;this.focusInfo={itemIndex:p,fieldName:m,selectionStart:f,selectionEnd:v}}restoreFocus(){var t,e;if(!this.focusInfo)return;const{itemIndex:i,fieldName:o,selectionStart:n,selectionEnd:s}=this.focusInfo,r=`array-item-${i}`,a=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById(r);if(a)this.attemptFocusRestore(a,o,n,s),this.focusInfo=null;else{const t=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelectorAll(".array-item");if(t&&t.length>i){const e=t[i];e&&this.attemptFocusRestore(e,o,n,s)}this.focusInfo=null}}attemptFocusRestore(t,e,i,o){const n=t.querySelector(`[data-field-name="${e}"]`);let s=null;if(n&&(s=n.querySelector("temba-textinput, temba-completion, input, textarea")),!s){const i=[`temba-textinput[name="${e}"]`,`temba-completion[name="${e}"]`,`input[name="${e}"]`,`textarea[name="${e}"]`,`[name="${e}"]`];for(const e of i)if(s=t.querySelector(e),s)break}s&&requestAnimationFrame((()=>{requestAnimationFrame((()=>{var t,e;try{if(s.focus(),void 0!==i&&void 0!==o){let n=s;if(null===(t=s.tagName)||void 0===t?void 0:t.toLowerCase().startsWith("temba-")){const t=(null===(e=s.shadowRoot)||void 0===e?void 0:e.querySelector("input, textarea"))||s.querySelector("input, textarea");t&&"setSelectionRange"in t&&(n=t)}"setSelectionRange"in n&&n.setSelectionRange(i,o)}}catch(t){}}))}))}createEmptyItem(){return{}}handleFieldChange(t,e,i){let o;this.onItemChange?o=this.onItemChange(t,e,i,this._items):(o=[...this._items],o[t]={...o[t],[e]:i}),this.updateValue(o)}willUpdate(t){super.willUpdate(t),(t.has("_items")||t.has("value"))&&this.captureFocus()}updated(t){super.updated(t),(t.has("_items")||t.has("value"))&&this.restoreFocus()}handleOrderChanged(t){const e=t.detail;if(e.swap&&Array.isArray(e.swap)&&2===e.swap.length){const[t,i]=e.swap;if(t!==i&&t>=0&&i>=0&&t<this._items.length&&i<this._items.length){const e=[...this._items],o=e.splice(t,1)[0];e.splice(i,0,o),this.updateValue(e)}}}renderWidget(){const t=this.displayItems.map(((t,e)=>{const i=this.renderItem(t,e);return this.sortable&&!this.isEmptyItem(t)?H`
12072
12081
  <div class="sortable" id="array-item-${e}">${i}</div>
12073
12082
  `:i}));return this.sortable?H`
12074
12083
  <div class=${this.getContainerClass()}>
@@ -12092,7 +12101,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12092
12101
  </div>
12093
12102
  ${this.shouldShowAddButton()?this.renderAddButton():""}
12094
12103
  </div>
12095
- `}computeFieldValue(t,e,i){const o=this._items[t]||{},n=o[e];return i.computeValue?i.computeValue(o,n):n}renderArrayField(t,e,i){const o=this.computeFieldValue(t,e,i),n="select"===i.type&&i.flavor||"small";let s="";i.width?s=`width: ${i.width};`:i.maxWidth&&(s=`max-width: ${i.maxWidth};`);const r=ow.renderField(e,i,o,{showLabel:!1,flavor:n,extraClasses:"form-control",onChange:o=>{let n;const s=o.target;n="select"===i.type?s.values:s.value,this.handleFieldChange(t,e,n)}});return s?H`<div style="${s}">${r}</div>`:r}renderItem(t,e){const i=this.canRemoveItem(e),o=[];let n=!1;return Object.entries(this.itemConfig).forEach((([t,i])=>{var s;let r=!0;if(null===(s=i.conditions)||void 0===s?void 0:s.visible)try{const t=this._items[e]||{};r=i.conditions.visible(t)}catch(e){console.error(`Error checking visibility for ${t}:`,e)}if(r){!i.width&&!i.maxWidth&&"text"===i.type&&(n=!0),o.push(H`
12104
+ `}computeFieldValue(t,e,i){const o=this._items[t]||{},n=o[e];return i.computeValue?i.computeValue(o,n):n}renderArrayField(t,e,i){const o=this.computeFieldValue(t,e,i),n="select"===i.type&&i.flavor||"small";let s="";i.width?s=`width: ${i.width};`:i.maxWidth&&(s=`max-width: ${i.maxWidth};`);const r=sw.renderField(e,i,o,{showLabel:!1,flavor:n,extraClasses:"form-control",onChange:o=>{let n;const s=o.target;n="select"===i.type?s.values:s.value,this.handleFieldChange(t,e,n)}});return s?H`<div style="${s}">${r}</div>`:r}renderItem(t,e){const i=this.canRemoveItem(e),o=[];let n=!1;return Object.entries(this.itemConfig).forEach((([t,i])=>{var s;let r=!0;if(null===(s=i.conditions)||void 0===s?void 0:s.visible)try{const t=this._items[e]||{};r=i.conditions.visible(t)}catch(e){console.error(`Error checking visibility for ${t}:`,e)}if(r){!i.width&&!i.maxWidth&&"text"===i.type&&(n=!0),o.push(H`
12096
12105
  <div
12097
12106
  data-field-name="${t}"
12098
12107
  style="${i.width||i.maxWidth||"select"===i.type?"flex:none":"flex:1"}"
@@ -12188,7 +12197,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12188
12197
  cursor: grab;
12189
12198
  color: #ccc;
12190
12199
  }
12191
- `}};t([mt({type:Object})],aw.prototype,"itemConfig",void 0),t([mt({type:String})],aw.prototype,"itemLabel",void 0),t([mt({type:Function})],aw.prototype,"onItemChange",void 0),t([mt({type:Function})],aw.prototype,"isEmptyItemFn",void 0),t([mt({type:Boolean})],aw.prototype,"sortable",void 0),t([mt({type:Boolean})],aw.prototype,"maintainEmptyItem",void 0),t([mt({type:Array})],aw.prototype,"value",null),aw=t([ht("temba-array-editor")],aw);class lw extends xo{constructor(){super(...arguments),this.name="",this.placeholder="",this.textarea=!0,this.autogrow=!0,this.minHeight=60,this.submitOnEnter=!1,this.attachments=[],this.accept="",this.maxAttachments=3,this.endpoint="",this.pendingDrop=!1,this.uploading=!1}static get styles(){return a`
12200
+ `}};t([mt({type:Object})],dw.prototype,"itemConfig",void 0),t([mt({type:String})],dw.prototype,"itemLabel",void 0),t([mt({type:Function})],dw.prototype,"onItemChange",void 0),t([mt({type:Function})],dw.prototype,"isEmptyItemFn",void 0),t([mt({type:Boolean})],dw.prototype,"sortable",void 0),t([mt({type:Boolean})],dw.prototype,"maintainEmptyItem",void 0),t([mt({type:Array})],dw.prototype,"value",null),dw=t([ht("temba-array-editor")],dw);class cw extends xo{constructor(){super(...arguments),this.name="",this.placeholder="",this.textarea=!0,this.autogrow=!0,this.minHeight=60,this.submitOnEnter=!1,this.attachments=[],this.accept="",this.maxAttachments=3,this.endpoint="",this.pendingDrop=!1,this.uploading=!1}static get styles(){return a`
12192
12201
  ${super.styles}
12193
12202
  :host {
12194
12203
  display: block;
@@ -12354,7 +12363,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12354
12363
  ignoreDrops
12355
12364
  ></temba-media-picker>`}
12356
12365
  </div>
12357
- `}}t([mt({type:String})],lw.prototype,"name",void 0),t([mt({type:String})],lw.prototype,"placeholder",void 0),t([mt({type:Boolean})],lw.prototype,"textarea",void 0),t([mt({type:Boolean})],lw.prototype,"autogrow",void 0),t([mt({type:Number})],lw.prototype,"minHeight",void 0),t([mt({type:Number})],lw.prototype,"maxLength",void 0),t([mt({type:Boolean})],lw.prototype,"session",void 0),t([mt({type:Boolean})],lw.prototype,"submitOnEnter",void 0),t([mt({type:Boolean})],lw.prototype,"gsm",void 0),t([mt({type:Boolean})],lw.prototype,"disableCompletion",void 0),t([mt({type:String})],lw.prototype,"counter",void 0),t([mt({type:Array})],lw.prototype,"attachments",void 0),t([mt({type:String})],lw.prototype,"accept",void 0),t([mt({type:Number,attribute:"max-attachments"})],lw.prototype,"maxAttachments",void 0),t([mt({type:String})],lw.prototype,"endpoint",void 0),t([mt({type:Boolean,attribute:!1})],lw.prototype,"pendingDrop",void 0),t([mt({type:Boolean,attribute:!1})],lw.prototype,"uploading",void 0);class dw extends Ne{constructor(){super(...arguments),this.color="#6B7280",this.order=0,this.top=100,this.hidden=!1}static get styles(){return a`
12366
+ `}}t([mt({type:String})],cw.prototype,"name",void 0),t([mt({type:String})],cw.prototype,"placeholder",void 0),t([mt({type:Boolean})],cw.prototype,"textarea",void 0),t([mt({type:Boolean})],cw.prototype,"autogrow",void 0),t([mt({type:Number})],cw.prototype,"minHeight",void 0),t([mt({type:Number})],cw.prototype,"maxLength",void 0),t([mt({type:Boolean})],cw.prototype,"session",void 0),t([mt({type:Boolean})],cw.prototype,"submitOnEnter",void 0),t([mt({type:Boolean})],cw.prototype,"gsm",void 0),t([mt({type:Boolean})],cw.prototype,"disableCompletion",void 0),t([mt({type:String})],cw.prototype,"counter",void 0),t([mt({type:Array})],cw.prototype,"attachments",void 0),t([mt({type:String})],cw.prototype,"accept",void 0),t([mt({type:Number,attribute:"max-attachments"})],cw.prototype,"maxAttachments",void 0),t([mt({type:String})],cw.prototype,"endpoint",void 0),t([mt({type:Boolean,attribute:!1})],cw.prototype,"pendingDrop",void 0),t([mt({type:Boolean,attribute:!1})],cw.prototype,"uploading",void 0);class hw extends Ne{constructor(){super(...arguments),this.color="#6B7280",this.order=0,this.top=100,this.hidden=!1}static get styles(){return a`
12358
12367
  .tab.hidden {
12359
12368
  transform: translateX(calc(100% + var(--floating-tab-right, 0px)));
12360
12369
  }
@@ -12411,14 +12420,14 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12411
12420
  margin-left: 12px;
12412
12421
  opacity: 1;
12413
12422
  }
12414
- `}connectedCallback(){super.connectedCallback(),dw.allTabs.push(this),dw.updateAllPositions()}disconnectedCallback(){super.disconnectedCallback();const t=dw.allTabs.indexOf(this);t>-1&&dw.allTabs.splice(t,1),dw.updateAllPositions()}static updateAllPositions(){const t=[...dw.allTabs].sort(((t,e)=>t.order-e.order));t.forEach(((t,e)=>{t.top=dw.START_TOP+e*(dw.TAB_HEIGHT+dw.TAB_GAP)}))}updated(t){super.updated(t),t.has("hidden")&&this.classList.toggle("hidden",this.hidden)}handleClick(){dw.allTabs.forEach((t=>{t.hidden=!0})),this.fireCustomEvent(Mo.ButtonClicked,{action:"toggle"})}static showAllTabs(){dw.allTabs.forEach((t=>{t.hidden=!1}))}static hideAllTabs(){dw.allTabs.forEach((t=>{t.hidden=!0}))}render(){const t=`\n background-color: ${this.color};\n top: ${this.top}px;\n `,e=ae({tab:!0,hidden:this.hidden});return H`
12423
+ `}connectedCallback(){super.connectedCallback(),hw.allTabs.push(this),hw.updateAllPositions()}disconnectedCallback(){super.disconnectedCallback();const t=hw.allTabs.indexOf(this);t>-1&&hw.allTabs.splice(t,1),hw.updateAllPositions()}static updateAllPositions(){const t=[...hw.allTabs].sort(((t,e)=>t.order-e.order));t.forEach(((t,e)=>{t.top=hw.START_TOP+e*(hw.TAB_HEIGHT+hw.TAB_GAP)}))}updated(t){super.updated(t),t.has("hidden")&&this.classList.toggle("hidden",this.hidden)}handleClick(){hw.allTabs.forEach((t=>{t.hidden=!0})),this.fireCustomEvent(Mo.ButtonClicked,{action:"toggle"})}static showAllTabs(){hw.allTabs.forEach((t=>{t.hidden=!1}))}static hideAllTabs(){hw.allTabs.forEach((t=>{t.hidden=!0}))}render(){const t=`\n background-color: ${this.color};\n top: ${this.top}px;\n `,e=ae({tab:!0,hidden:this.hidden});return H`
12415
12424
  <div class="${e}" style="${t}" @click=${this.handleClick}>
12416
12425
  <div class="icon-container">
12417
12426
  ${this.icon?H`<temba-icon size="1.5" name="${this.icon}"></temba-icon>`:""}
12418
12427
  </div>
12419
12428
  <div class="label">${this.label}</div>
12420
12429
  </div>
12421
- `}}dw.TAB_HEIGHT=50,dw.TAB_GAP=4,dw.START_TOP=115,dw.allTabs=[],t([mt({type:String})],dw.prototype,"icon",void 0),t([mt({type:String})],dw.prototype,"label",void 0),t([mt({type:String})],dw.prototype,"color",void 0),t([mt({type:Number})],dw.prototype,"order",void 0),t([gt()],dw.prototype,"top",void 0),t([mt({type:Boolean})],dw.prototype,"hidden",void 0);class cw extends Ne{constructor(){super(...arguments),this.header="",this.width=500,this.minHeight=200,this.maxHeight=800,this.top=100,this.left=-1,this.hidden=!0,this.dragging=!1,this.chromeless=!1,this.color="#6B7280",this.leftBoundaryMargin=0,this.rightBoundaryMargin=0,this.topBoundaryMargin=0,this.bottomBoundaryMargin=0,this.dragStartX=0,this.dragStartY=0,this.dragOffsetX=0,this.dragOffsetY=0,this.positionFromRight=!1,this.defaultTop=100,this.defaultLeft=-1,this.handleSlotMouseDown=t=>{t.target.closest(".drag-handle")&&(this.dragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.dragOffsetX=this.left,this.dragOffsetY=this.top,document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),t.preventDefault())},this.handleMouseMove=t=>{var e;if(!this.dragging)return;const i=t.clientX-this.dragStartX,o=t.clientY-this.dragStartY;this.left=this.dragOffsetX+i,this.top=this.dragOffsetY+o;this.left=Math.max(20-this.leftBoundaryMargin,Math.min(this.left,window.innerWidth-this.width-20+this.rightBoundaryMargin));const n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),s=(null==n?void 0:n.offsetHeight)||this.maxHeight||window.innerHeight,r=Math.max(20-this.topBoundaryMargin,window.innerHeight-s-20+this.bottomBoundaryMargin);this.top=Math.max(20-this.topBoundaryMargin,Math.min(this.top,r))},this.handleMouseUp=()=>{this.dragging=!1,document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.positionFromRight=!1},this.handleResize=()=>{var t;if(this.hidden)return;const e=20,i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".window"),o=(null==i?void 0:i.offsetHeight)||this.maxHeight||window.innerHeight;if(this.positionFromRight)this.left=window.innerWidth-this.width-e+this.rightBoundaryMargin;else{const t=e-this.leftBoundaryMargin,i=window.innerWidth-this.width-e+this.rightBoundaryMargin;this.left<t?this.left=t:this.left>i&&(this.left=i)}const n=e-this.topBoundaryMargin,s=Math.max(e-this.topBoundaryMargin,window.innerHeight-o-e+this.bottomBoundaryMargin);this.top<n?this.top=n:this.top>s&&(this.top=s)}}static get styles(){return a`
12430
+ `}}hw.TAB_HEIGHT=50,hw.TAB_GAP=4,hw.START_TOP=115,hw.allTabs=[],t([mt({type:String})],hw.prototype,"icon",void 0),t([mt({type:String})],hw.prototype,"label",void 0),t([mt({type:String})],hw.prototype,"color",void 0),t([mt({type:Number})],hw.prototype,"order",void 0),t([gt()],hw.prototype,"top",void 0),t([mt({type:Boolean})],hw.prototype,"hidden",void 0);class uw extends Ne{constructor(){super(...arguments),this.header="",this.width=500,this.minHeight=200,this.maxHeight=800,this.top=100,this.left=-1,this.hidden=!0,this.dragging=!1,this.chromeless=!1,this.color="#6B7280",this.leftBoundaryMargin=0,this.rightBoundaryMargin=0,this.topBoundaryMargin=0,this.bottomBoundaryMargin=0,this.dragStartX=0,this.dragStartY=0,this.dragOffsetX=0,this.dragOffsetY=0,this.positionFromRight=!1,this.defaultTop=100,this.defaultLeft=-1,this.handleSlotMouseDown=t=>{t.target.closest(".drag-handle")&&(this.dragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.dragOffsetX=this.left,this.dragOffsetY=this.top,document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),t.preventDefault())},this.handleMouseMove=t=>{var e;if(!this.dragging)return;const i=t.clientX-this.dragStartX,o=t.clientY-this.dragStartY;this.left=this.dragOffsetX+i,this.top=this.dragOffsetY+o;this.left=Math.max(20-this.leftBoundaryMargin,Math.min(this.left,window.innerWidth-this.width-20+this.rightBoundaryMargin));const n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),s=(null==n?void 0:n.offsetHeight)||this.maxHeight||window.innerHeight,r=Math.max(20-this.topBoundaryMargin,window.innerHeight-s-20+this.bottomBoundaryMargin);this.top=Math.max(20-this.topBoundaryMargin,Math.min(this.top,r))},this.handleMouseUp=()=>{this.dragging=!1,document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.positionFromRight=!1},this.handleResize=()=>{var t;if(this.hidden)return;const e=20,i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".window"),o=(null==i?void 0:i.offsetHeight)||this.maxHeight||window.innerHeight;if(this.positionFromRight)this.left=window.innerWidth-this.width-e+this.rightBoundaryMargin;else{const t=e-this.leftBoundaryMargin,i=window.innerWidth-this.width-e+this.rightBoundaryMargin;this.left<t?this.left=t:this.left>i&&(this.left=i)}const n=e-this.topBoundaryMargin,s=Math.max(e-this.topBoundaryMargin,window.innerHeight-o-e+this.bottomBoundaryMargin);this.top<n?this.top=n:this.top>s&&(this.top=s)}}static get styles(){return a`
12422
12431
  .window.hidden {
12423
12432
  transform: translateX(100%);
12424
12433
  opacity: 0;
@@ -12509,7 +12518,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12509
12518
  user-select: none;
12510
12519
  border: 1px solid red;
12511
12520
  }
12512
- `}firstUpdated(t){super.firstUpdated(t),this.defaultTop=this.top,this.defaultLeft=this.left,-1===this.left&&(this.positionFromRight=!0),this.chromeless&&this.setupDragHandles(),window.addEventListener("resize",this.handleResize)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.handleResize)}setupDragHandles(){this.addEventListener("mousedown",this.handleSlotMouseDown)}updated(t){super.updated(t),t.has("hidden")&&(this.hidden&&!t.get("hidden")&&-1===this.defaultLeft&&(this.positionFromRight=!0),!this.hidden&&t.get("hidden")&&(this.top=this.defaultTop,this.positionFromRight?this.left=window.innerWidth-this.width-20:this.left=this.defaultLeft)),t.has("chromeless")&&this.chromeless&&this.setupDragHandles()}handleClose(){this.hidden=!0,dw.showAllTabs(),this.fireCustomEvent(Mo.DialogHidden)}handleHeaderMouseDown(t){t.target.closest(".close-button")||(this.dragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.dragOffsetX=this.left,this.dragOffsetY=this.top,document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),t.preventDefault())}show(){this.hidden=!1}hide(){this.hidden=!0}close(){this.hidden=!0,dw.showAllTabs(),this.fireCustomEvent(Mo.DialogHidden)}render(){const t=this.minHeight?`min-height: ${this.minHeight}px;`:"",e=this.maxHeight?`max-height: ${this.maxHeight}px;`:"",i=`\n width: ${this.width}px;\n ${t}\n ${e}\n top: ${this.top}px;\n left: ${this.left}px;\n --header-color: ${this.color};\n `,o=ae({window:!0,dragging:this.dragging,hidden:this.hidden,chromeless:this.chromeless});return H`
12521
+ `}firstUpdated(t){super.firstUpdated(t),this.defaultTop=this.top,this.defaultLeft=this.left,-1===this.left&&(this.positionFromRight=!0),this.chromeless&&this.setupDragHandles(),window.addEventListener("resize",this.handleResize)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.handleResize)}setupDragHandles(){this.addEventListener("mousedown",this.handleSlotMouseDown)}updated(t){super.updated(t),t.has("hidden")&&(this.hidden&&!t.get("hidden")&&-1===this.defaultLeft&&(this.positionFromRight=!0),!this.hidden&&t.get("hidden")&&(this.top=this.defaultTop,this.positionFromRight?this.left=window.innerWidth-this.width-20:this.left=this.defaultLeft)),t.has("chromeless")&&this.chromeless&&this.setupDragHandles()}handleClose(){this.hidden=!0,hw.showAllTabs(),this.fireCustomEvent(Mo.DialogHidden)}handleHeaderMouseDown(t){t.target.closest(".close-button")||(this.dragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.dragOffsetX=this.left,this.dragOffsetY=this.top,document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),t.preventDefault())}show(){this.hidden=!1}hide(){this.hidden=!0}close(){this.hidden=!0,hw.showAllTabs(),this.fireCustomEvent(Mo.DialogHidden)}render(){const t=this.minHeight?`min-height: ${this.minHeight}px;`:"",e=this.maxHeight?`max-height: ${this.maxHeight}px;`:"",i=`\n width: ${this.width}px;\n ${t}\n ${e}\n top: ${this.top}px;\n left: ${this.left}px;\n --header-color: ${this.color};\n `,o=ae({window:!0,dragging:this.dragging,hidden:this.hidden,chromeless:this.chromeless});return H`
12513
12522
  <div class="${o}" style="${i}">
12514
12523
  ${this.chromeless?"":H`
12515
12524
  <div class="header" @mousedown=${this.handleHeaderMouseDown}>
@@ -12523,7 +12532,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
12523
12532
  <slot></slot>
12524
12533
  </div>
12525
12534
  </div>
12526
- `}}t([mt({type:String})],cw.prototype,"header",void 0),t([mt({type:Number})],cw.prototype,"width",void 0),t([mt({type:Number})],cw.prototype,"minHeight",void 0),t([mt({type:Number})],cw.prototype,"maxHeight",void 0),t([mt({type:Number})],cw.prototype,"top",void 0),t([mt({type:Number})],cw.prototype,"left",void 0),t([mt({type:Boolean})],cw.prototype,"hidden",void 0),t([mt({type:Boolean})],cw.prototype,"dragging",void 0),t([mt({type:Boolean})],cw.prototype,"chromeless",void 0),t([mt({type:String})],cw.prototype,"color",void 0),t([mt({type:Number})],cw.prototype,"leftBoundaryMargin",void 0),t([mt({type:Number})],cw.prototype,"rightBoundaryMargin",void 0),t([mt({type:Number})],cw.prototype,"topBoundaryMargin",void 0),t([mt({type:Number})],cw.prototype,"bottomBoundaryMargin",void 0);const hw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_a.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_b.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_c.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_d.jpg"],uw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_video_a.mp4"],pw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_audio_a.mp3"],mw=["geo:47.6062,-122.3321","geo:-0.1807,-78.4678","geo:-2.9001,-79.0059","geo:-1.9536,30.0606"],gw={small:{phoneWidth:270,phoneTotalHeight:530,phoneScreenHeight:376,contextWidth:336,contextHeight:416,contextOffset:48,optionPaneWidth:44,optionPaneGap:10,windowPadding:24,cutoutHeight:32,cutoutPadding:12,cutoutFontSize:10,cutoutIslandWidth:80,cutoutIslandHeight:20,cutoutIslandTop:6},medium:{phoneWidth:300,phoneTotalHeight:600,phoneScreenHeight:470,contextWidth:420,contextHeight:520,contextOffset:60,optionPaneWidth:44,optionPaneGap:12,windowPadding:30,cutoutHeight:40,cutoutPadding:16,cutoutFontSize:12,cutoutIslandWidth:100,cutoutIslandHeight:24,cutoutIslandTop:8},large:{phoneWidth:360,phoneTotalHeight:700,phoneScreenHeight:564,contextWidth:504,contextHeight:624,contextOffset:72,optionPaneWidth:44,optionPaneGap:14,windowPadding:36,cutoutHeight:50,cutoutPadding:20,cutoutFontSize:14,cutoutIslandWidth:120,cutoutIslandHeight:30,cutoutIslandTop:10}};class fw extends Ne{constructor(){super(...arguments),this.flow="",this.endpoint="",this.animationTime=200,this.events=[],this.previousEventCount=0,this.chat=null,this.session=null,this.context=null,this.contact={uuid:"fb3787ab-2eda-48a0-a2bc-e2ddadec1286",urns:["tel:+12065551212"],fields:{},groups:[],language:"eng",status:"active",created_on:(new Date).toISOString()},this.sprinting=!1,this.inputValue="",this.expandedPaths=new Set,this.copiedExpression="",this.toastMessage="",this.showAllKeys=!0,this.previousWindowWidth=0,this.currentQuickReplies=[],this.isVisible=!1,this.attachmentMenuOpen=!1,this.boundClickOutsideHandler=null,this.imageIndex=Math.floor(Math.random()*hw.length),this.videoIndex=Math.floor(Math.random()*uw.length),this.audioIndex=Math.floor(Math.random()*pw.length),this.locationIndex=Math.floor(Math.random()*mw.length)}static get styles(){return a`
12535
+ `}}t([mt({type:String})],uw.prototype,"header",void 0),t([mt({type:Number})],uw.prototype,"width",void 0),t([mt({type:Number})],uw.prototype,"minHeight",void 0),t([mt({type:Number})],uw.prototype,"maxHeight",void 0),t([mt({type:Number})],uw.prototype,"top",void 0),t([mt({type:Number})],uw.prototype,"left",void 0),t([mt({type:Boolean})],uw.prototype,"hidden",void 0),t([mt({type:Boolean})],uw.prototype,"dragging",void 0),t([mt({type:Boolean})],uw.prototype,"chromeless",void 0),t([mt({type:String})],uw.prototype,"color",void 0),t([mt({type:Number})],uw.prototype,"leftBoundaryMargin",void 0),t([mt({type:Number})],uw.prototype,"rightBoundaryMargin",void 0),t([mt({type:Number})],uw.prototype,"topBoundaryMargin",void 0),t([mt({type:Number})],uw.prototype,"bottomBoundaryMargin",void 0);const pw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_a.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_b.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_c.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_d.jpg"],mw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_video_a.mp4"],gw=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_audio_a.mp3"],fw=["geo:47.6062,-122.3321","geo:-0.1807,-78.4678","geo:-2.9001,-79.0059","geo:-1.9536,30.0606"],vw={small:{phoneWidth:270,phoneTotalHeight:530,phoneScreenHeight:376,contextWidth:336,contextHeight:416,contextOffset:48,optionPaneWidth:44,optionPaneGap:10,windowPadding:24,cutoutHeight:32,cutoutPadding:12,cutoutFontSize:10,cutoutIslandWidth:80,cutoutIslandHeight:20,cutoutIslandTop:6},medium:{phoneWidth:300,phoneTotalHeight:600,phoneScreenHeight:470,contextWidth:420,contextHeight:520,contextOffset:60,optionPaneWidth:44,optionPaneGap:12,windowPadding:30,cutoutHeight:40,cutoutPadding:16,cutoutFontSize:12,cutoutIslandWidth:100,cutoutIslandHeight:24,cutoutIslandTop:8},large:{phoneWidth:360,phoneTotalHeight:700,phoneScreenHeight:564,contextWidth:504,contextHeight:624,contextOffset:72,optionPaneWidth:44,optionPaneGap:14,windowPadding:36,cutoutHeight:50,cutoutPadding:20,cutoutFontSize:14,cutoutIslandWidth:120,cutoutIslandHeight:30,cutoutIslandTop:10}};class yw extends Ne{constructor(){super(...arguments),this.flow="",this.endpoint="",this.animationTime=200,this.events=[],this.previousEventCount=0,this.chat=null,this.session=null,this.context=null,this.contact={uuid:"fb3787ab-2eda-48a0-a2bc-e2ddadec1286",urns:["tel:+12065551212"],fields:{},groups:[],language:"eng",status:"active",created_on:(new Date).toISOString()},this.sprinting=!1,this.inputValue="",this.expandedPaths=new Set,this.copiedExpression="",this.toastMessage="",this.showAllKeys=!0,this.previousWindowWidth=0,this.currentQuickReplies=[],this.isVisible=!1,this.attachmentMenuOpen=!1,this.boundClickOutsideHandler=null,this.imageIndex=Math.floor(Math.random()*pw.length),this.videoIndex=Math.floor(Math.random()*mw.length),this.audioIndex=Math.floor(Math.random()*gw.length),this.locationIndex=Math.floor(Math.random()*fw.length)}static get styles(){return a`
12527
12536
  temba-floating-tab {
12528
12537
  --floating-tab-right: 15px;
12529
12538
  }
@@ -13065,7 +13074,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13065
13074
  .attachment-menu-item temba-icon {
13066
13075
  color: #007aff;
13067
13076
  }
13068
- `}resetAttachmentIndices(){this.imageIndex=2,this.videoIndex=0,this.audioIndex=0,this.locationIndex=0}get sizeConfig(){return gw[this.size]||gw.medium}get windowWidth(){const t=this.sizeConfig;return t.contextWidth+t.phoneWidth+t.optionPaneWidth+t.optionPaneGap+t.contextOffset}get leftBoundaryMargin(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset}get contextClosedLeft(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset-t.phoneWidth}connectedCallback(){super.connectedCallback()}firstUpdated(t){super.firstUpdated(t),this.chat=this.shadowRoot.querySelector("temba-chat"),this.chat&&this.events.length>0&&this.chat.addMessages(this.events,null,!0),this.setupCustomScrollbar()}setupCustomScrollbar(){var t,e,i;const o=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-chat"),n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".custom-scrollbar-container"),s=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".custom-scrollbar-content");o&&n&&s&&o.updateComplete.then((()=>{var t;const e=null===(t=o.shadowRoot)||void 0===t?void 0:t.querySelector(".scroll");if(!e)return;let i=!1;e.addEventListener("scroll",(()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-Math.abs(e.scrollTop);n.scrollTop=t,requestAnimationFrame((()=>i=!1))}})),n.addEventListener("scroll",(()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-n.scrollTop;e.scrollTop=-t,requestAnimationFrame((()=>i=!1))}}));const r=()=>{const t=e.scrollHeight-e.clientHeight,i=n.clientHeight;if(t<=0)return void(s.style.height="100%");const o=t+i;s.style.height=`${o}px`,Math.abs(e.scrollTop)<5&&(n.scrollTop=n.scrollHeight)};new MutationObserver(r).observe(e,{childList:!0,subtree:!0,attributes:!0});new ResizeObserver(r).observe(e),r()}))}updated(t){super.updated(t),(t.has("currentQuickReplies")||t.has("keyboardVisible")||t.has("attachmentMenuOpen"))&&this.updateBottomInputHeight(),t.has("flow")&&this.flow&&(this.endpoint=`/flow/simulate/${this.flow}/`),t.has("attachmentMenuOpen")&&(this.attachmentMenuOpen?(this.boundClickOutsideHandler||(this.boundClickOutsideHandler=this.handleClickOutsideAttachmentMenu.bind(this)),setTimeout((()=>{document.addEventListener("click",this.boundClickOutsideHandler)}),0)):this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)),t.has("size")?requestAnimationFrame((()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById("phone-window");if(i){const t=this.previousWindowWidth||i.width,o=i.left+t,n=this.sizeConfig,s=this.windowWidth;this.previousWindowWidth=s,i.width=s,i.leftBoundaryMargin=this.leftBoundaryMargin,i.topBoundaryMargin=n.windowPadding,i.bottomBoundaryMargin=n.windowPadding;let r=o-s;const a=20,l=a-this.leftBoundaryMargin,d=window.innerWidth-s-a+i.rightBoundaryMargin;r=Math.max(l,Math.min(r,d)),i.left=r;const c=null===(e=i.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),h=(null==c?void 0:c.offsetHeight)||n.phoneTotalHeight,u=Math.max(a-n.windowPadding,window.innerHeight-h-a+n.windowPadding);i.top=Math.max(a-n.windowPadding,Math.min(i.top,u))}})):this.previousWindowWidth||(this.previousWindowWidth=this.windowWidth)}disconnectedCallback(){super.disconnectedCallback(),this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)}handleShow(){this.shadowRoot.getElementById("phone-window").show(),this.isVisible=!0,Sd().getState().setSimulatorActive(!0),this.chat||(this.chat=this.shadowRoot.querySelector("temba-chat")),this.session||this.startFlow()}async startFlow(){const t=(new Date).toISOString();this.contact={...this.contact,created_on:t};const e={contact:this.contact,trigger:{type:"manual",triggered_on:t,flow:{uuid:this.flow,name:"New Chat"},params:{}}};try{const t=await pe(this.endpoint,e);this.updateRunContext(t.json)}catch(e){console.error("Failed to start simulation:",e);const i={uuid:Jt(),type:"error",created_on:new Date(t),_rendered:{html:H`<p>Failed to start simulation</p>`,type:fc.Error}};this.chat?this.chat.addMessages([i],null,!0):this.events=[...this.events,i]}}updateRunContext(t,e){var i;const o=[];if(e&&(e.uuid||(e.uuid=Jt()),"string"==typeof e.created_on&&(e.created_on=new Date(e.created_on)),o.push(e)),t.session&&(this.session=t.session,t.contact&&(this.contact=t.contact)),t.context&&(this.context=t.context),this.currentQuickReplies=[],t.events&&t.events.length>0)for(const e of t.events){if("msg_received"===e.type)continue;if(("msg_created"===e.type||"ivr_created"===e.type)&&!e.msg)continue;const t={...e,uuid:e.uuid||Jt(),created_on:"string"==typeof e.created_on?new Date(e.created_on):e.created_on};this.prerenderEvent(t),"msg_created"===t.type&&(null===(i=t.msg)||void 0===i?void 0:i.quick_replies)&&(this.currentQuickReplies=t.msg.quick_replies);const n="msg_created"===t.type||"ivr_created"===t.type,s=t.msg;if(n){const t=s.text&&s.text.trim().length>0,e=s.attachments&&s.attachments.length>0;if(!t&&!e)continue}else if(!t._rendered)continue;o.push(t)}this.chat?this.chat.addMessages(o,null,!0):this.events=[...this.events,...o],this.sprinting=!1,this.requestUpdate(),this.scrollToBottom(),this.updateActivity()}updateActivity(){if(!this.session)return;const t={},e={};for(const i of this.session.runs){if(i.path)for(let e=0;e<i.path.length-1;e++){const o=i.path[e],n=i.path[e+1];if(o.exit_uuid&&n.node_uuid){const e=o.exit_uuid+":"+n.node_uuid;t[e]=(t[e]||0)+1}}if(("active"===i.status||"waiting"===i.status)&&i.path&&i.path.length>0){const t=i.path[i.path.length-1];t&&t.node_uuid&&(e[t.node_uuid]=(e[t.node_uuid]||0)+1)}}Sd().getState().updateSimulatorActivity({segments:t,nodes:e}),this.following&&this.fireFollowEvent()}fireFollowEvent(){var t;if(!this.session||!this.session.runs||0===this.session.runs.length)return;let e=this.session.runs.find((t=>"active"===t.status||"waiting"===t.status));if(e||(e=this.session.runs.find((t=>"completed"===t.status))),e&&e.path&&e.path.length>0){const i=e.path[e.path.length-1];i&&i.node_uuid&&this.fireCustomEvent(Mo.FollowSimulation,{flowUuid:(null===(t=e.flow)||void 0===t?void 0:t.uuid)||this.flow,nodeUuid:i.node_uuid})}}scrollToBottom(){if(this.chat)return this.chat.scrollToBottom(),void setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".message-input input");e&&e.focus()}),50);setTimeout((()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".phone-screen");i&&(i.scrollTop=i.scrollHeight),this.previousEventCount=this.events.length;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".message-input input");o&&o.focus()}),50)}prerenderEvent(t){if(t._rendered||t.type===_c.MSG_CREATED||t.type===_c.MSG_RECEIVED)return;if("error"===t.type||"failure"===t.type)return void(t._rendered={html:Cc(t,!0),type:fc.Error});if("warning"===t.type)return void(t._rendered={html:Cc(t,!0),type:fc.Note});const e=Cc(t,!0);e&&(t._rendered={html:e,type:fc.Inline})}handleClose(){this.shadowRoot.getElementById("phone-window").handleClose(),this.isVisible=!1,Sd().getState().setSimulatorActive(!1)}handleReset(){this.events=[],this.session=null,this.context=null,this.inputValue="",this.sprinting=!1,this.previousEventCount=0,this.currentQuickReplies=[],this.chat&&this.chat.reset(),Sd().getState().updateSimulatorActivity({segments:{},nodes:{}}),this.contact={uuid:"fb3787ab-2eda-48a0-a2bc-e2ddadec1286",urns:["tel:+12065551212"],fields:{},groups:[],language:"eng",status:"active",created_on:(new Date).toISOString()},this.startFlow()}handleToggleFollow(){this.following=!this.following}handleCycleSize(){const t=["small","medium","large"],e=(t.indexOf(this.size)+1)%t.length;this.size=t[e]}handleToggleContextExplorer(){this.contextExplorerOpen=!this.contextExplorerOpen,this.contextExplorerOpen&&requestAnimationFrame((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById("phone-window");if(e){const t=20-this.sizeConfig.contextOffset;e.left<t&&(e.left=t)}}))}togglePath(t){this.expandedPaths.has(t)?this.expandedPaths.delete(t):this.expandedPaths.add(t),this.requestUpdate()}isExpandable(t){if(null===t||"object"!=typeof t)return!1;if(Array.isArray(t))return t.length>0;return Object.keys(t).filter((t=>"__default__"!==t)).length>0}renderContextValue(t){return null==t?"":"boolean"==typeof t||"number"==typeof t||"string"==typeof t?H`<span class="context-value">${t}</span>`:Array.isArray(t)?H`<span class="context-value">[${t.length}]</span>`:""}buildExpression(t){return`@${t}`}async handleCopyExpression(t,e){e.stopPropagation();const i=this.buildExpression(t);try{await navigator.clipboard.writeText(i),this.copiedExpression=i,setTimeout((()=>{this.copiedExpression=""}),2e3)}catch(t){console.error("Failed to copy expression:",t)}}handleToggleShowAllKeys(){this.showAllKeys=!this.showAllKeys,this.toastMessage=this.showAllKeys?"Showing all keys":"Filtering out keys without values",setTimeout((()=>{this.toastMessage=""}),2e3)}renderContextTree(t,e=""){if(!t||"object"!=typeof t)return H``;let i=Array.isArray(t)?t.map(((t,e)=>[String(e),t])):Object.entries(t).filter((([t])=>"__default__"!==t));return this.showAllKeys||(i=i.filter((([,t])=>!!this.isExpandable(t)||null!=t&&("boolean"==typeof t||"number"==typeof t||"string"==typeof t||Array.isArray(t))))),H`${i.map((([t,i])=>{const o=e?`${e}.${t}`:t,n=this.expandedPaths.has(o),s=this.isExpandable(i);let r=i;return s&&!Array.isArray(i)&&null!==i&&"object"==typeof i&&"__default__"in i&&(r=i.__default__),H`
13077
+ `}resetAttachmentIndices(){this.imageIndex=2,this.videoIndex=0,this.audioIndex=0,this.locationIndex=0}get sizeConfig(){return vw[this.size]||vw.medium}get windowWidth(){const t=this.sizeConfig;return t.contextWidth+t.phoneWidth+t.optionPaneWidth+t.optionPaneGap+t.contextOffset}get leftBoundaryMargin(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset}get contextClosedLeft(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset-t.phoneWidth}connectedCallback(){super.connectedCallback()}firstUpdated(t){super.firstUpdated(t),this.chat=this.shadowRoot.querySelector("temba-chat"),this.chat&&this.events.length>0&&this.chat.addMessages(this.events,null,!0),this.setupCustomScrollbar()}setupCustomScrollbar(){var t,e,i;const o=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-chat"),n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".custom-scrollbar-container"),s=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".custom-scrollbar-content");o&&n&&s&&o.updateComplete.then((()=>{var t;const e=null===(t=o.shadowRoot)||void 0===t?void 0:t.querySelector(".scroll");if(!e)return;let i=!1;e.addEventListener("scroll",(()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-Math.abs(e.scrollTop);n.scrollTop=t,requestAnimationFrame((()=>i=!1))}})),n.addEventListener("scroll",(()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-n.scrollTop;e.scrollTop=-t,requestAnimationFrame((()=>i=!1))}}));const r=()=>{const t=e.scrollHeight-e.clientHeight,i=n.clientHeight;if(t<=0)return void(s.style.height="100%");const o=t+i;s.style.height=`${o}px`,Math.abs(e.scrollTop)<5&&(n.scrollTop=n.scrollHeight)};new MutationObserver(r).observe(e,{childList:!0,subtree:!0,attributes:!0});new ResizeObserver(r).observe(e),r()}))}updated(t){super.updated(t),(t.has("currentQuickReplies")||t.has("keyboardVisible")||t.has("attachmentMenuOpen"))&&this.updateBottomInputHeight(),t.has("flow")&&this.flow&&(this.endpoint=`/flow/simulate/${this.flow}/`),t.has("attachmentMenuOpen")&&(this.attachmentMenuOpen?(this.boundClickOutsideHandler||(this.boundClickOutsideHandler=this.handleClickOutsideAttachmentMenu.bind(this)),setTimeout((()=>{document.addEventListener("click",this.boundClickOutsideHandler)}),0)):this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)),t.has("size")?requestAnimationFrame((()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById("phone-window");if(i){const t=this.previousWindowWidth||i.width,o=i.left+t,n=this.sizeConfig,s=this.windowWidth;this.previousWindowWidth=s,i.width=s,i.leftBoundaryMargin=this.leftBoundaryMargin,i.topBoundaryMargin=n.windowPadding,i.bottomBoundaryMargin=n.windowPadding;let r=o-s;const a=20,l=a-this.leftBoundaryMargin,d=window.innerWidth-s-a+i.rightBoundaryMargin;r=Math.max(l,Math.min(r,d)),i.left=r;const c=null===(e=i.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),h=(null==c?void 0:c.offsetHeight)||n.phoneTotalHeight,u=Math.max(a-n.windowPadding,window.innerHeight-h-a+n.windowPadding);i.top=Math.max(a-n.windowPadding,Math.min(i.top,u))}})):this.previousWindowWidth||(this.previousWindowWidth=this.windowWidth)}disconnectedCallback(){super.disconnectedCallback(),this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)}handleShow(){this.shadowRoot.getElementById("phone-window").show(),this.isVisible=!0,Sd().getState().setSimulatorActive(!0),this.chat||(this.chat=this.shadowRoot.querySelector("temba-chat")),this.session||this.startFlow()}async startFlow(){const t=(new Date).toISOString();this.contact={...this.contact,created_on:t};const e={contact:this.contact,trigger:{type:"manual",triggered_on:t,flow:{uuid:this.flow,name:"New Chat"},params:{}}};try{const t=await pe(this.endpoint,e);this.updateRunContext(t.json)}catch(e){console.error("Failed to start simulation:",e);const i={uuid:Jt(),type:"error",created_on:new Date(t),_rendered:{html:H`<p>Failed to start simulation</p>`,type:fc.Error}};this.chat?this.chat.addMessages([i],null,!0):this.events=[...this.events,i]}}updateRunContext(t,e){var i;const o=[];if(e&&(e.uuid||(e.uuid=Jt()),"string"==typeof e.created_on&&(e.created_on=new Date(e.created_on)),o.push(e)),t.session&&(this.session=t.session,t.contact&&(this.contact=t.contact)),t.context&&(this.context=t.context),this.currentQuickReplies=[],t.events&&t.events.length>0)for(const e of t.events){if("msg_received"===e.type)continue;if(("msg_created"===e.type||"ivr_created"===e.type)&&!e.msg)continue;const t={...e,uuid:e.uuid||Jt(),created_on:"string"==typeof e.created_on?new Date(e.created_on):e.created_on};this.prerenderEvent(t),"msg_created"===t.type&&(null===(i=t.msg)||void 0===i?void 0:i.quick_replies)&&(this.currentQuickReplies=t.msg.quick_replies);const n="msg_created"===t.type||"ivr_created"===t.type,s=t.msg;if(n){const t=s.text&&s.text.trim().length>0,e=s.attachments&&s.attachments.length>0;if(!t&&!e)continue}else if(!t._rendered)continue;o.push(t)}this.chat?this.chat.addMessages(o,null,!0):this.events=[...this.events,...o],this.sprinting=!1,this.requestUpdate(),this.scrollToBottom(),this.updateActivity()}updateActivity(){if(!this.session)return;const t={},e={};for(const i of this.session.runs){if(i.path)for(let e=0;e<i.path.length-1;e++){const o=i.path[e],n=i.path[e+1];if(o.exit_uuid&&n.node_uuid){const e=o.exit_uuid+":"+n.node_uuid;t[e]=(t[e]||0)+1}}if(("active"===i.status||"waiting"===i.status)&&i.path&&i.path.length>0){const t=i.path[i.path.length-1];t&&t.node_uuid&&(e[t.node_uuid]=(e[t.node_uuid]||0)+1)}}Sd().getState().updateSimulatorActivity({segments:t,nodes:e}),this.following&&this.fireFollowEvent()}fireFollowEvent(){var t;if(!this.session||!this.session.runs||0===this.session.runs.length)return;let e=this.session.runs.find((t=>"active"===t.status||"waiting"===t.status));if(e||(e=this.session.runs.find((t=>"completed"===t.status))),e&&e.path&&e.path.length>0){const i=e.path[e.path.length-1];i&&i.node_uuid&&this.fireCustomEvent(Mo.FollowSimulation,{flowUuid:(null===(t=e.flow)||void 0===t?void 0:t.uuid)||this.flow,nodeUuid:i.node_uuid})}}scrollToBottom(){if(this.chat)return this.chat.scrollToBottom(),void setTimeout((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".message-input input");e&&e.focus()}),50);setTimeout((()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".phone-screen");i&&(i.scrollTop=i.scrollHeight),this.previousEventCount=this.events.length;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".message-input input");o&&o.focus()}),50)}prerenderEvent(t){if(t._rendered||t.type===_c.MSG_CREATED||t.type===_c.MSG_RECEIVED)return;if("error"===t.type||"failure"===t.type)return void(t._rendered={html:Cc(t,!0),type:fc.Error});if("warning"===t.type)return void(t._rendered={html:Cc(t,!0),type:fc.Note});const e=Cc(t,!0);e&&(t._rendered={html:e,type:fc.Inline})}handleClose(){this.shadowRoot.getElementById("phone-window").handleClose(),this.isVisible=!1,Sd().getState().setSimulatorActive(!1)}handleReset(){this.events=[],this.session=null,this.context=null,this.inputValue="",this.sprinting=!1,this.previousEventCount=0,this.currentQuickReplies=[],this.chat&&this.chat.reset(),Sd().getState().updateSimulatorActivity({segments:{},nodes:{}}),this.contact={uuid:"fb3787ab-2eda-48a0-a2bc-e2ddadec1286",urns:["tel:+12065551212"],fields:{},groups:[],language:"eng",status:"active",created_on:(new Date).toISOString()},this.startFlow()}handleToggleFollow(){this.following=!this.following}handleCycleSize(){const t=["small","medium","large"],e=(t.indexOf(this.size)+1)%t.length;this.size=t[e]}handleToggleContextExplorer(){this.contextExplorerOpen=!this.contextExplorerOpen,this.contextExplorerOpen&&requestAnimationFrame((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById("phone-window");if(e){const t=20-this.sizeConfig.contextOffset;e.left<t&&(e.left=t)}}))}togglePath(t){this.expandedPaths.has(t)?this.expandedPaths.delete(t):this.expandedPaths.add(t),this.requestUpdate()}isExpandable(t){if(null===t||"object"!=typeof t)return!1;if(Array.isArray(t))return t.length>0;return Object.keys(t).filter((t=>"__default__"!==t)).length>0}renderContextValue(t){return null==t?"":"boolean"==typeof t||"number"==typeof t||"string"==typeof t?H`<span class="context-value">${t}</span>`:Array.isArray(t)?H`<span class="context-value">[${t.length}]</span>`:""}buildExpression(t){return`@${t}`}async handleCopyExpression(t,e){e.stopPropagation();const i=this.buildExpression(t);try{await navigator.clipboard.writeText(i),this.copiedExpression=i,setTimeout((()=>{this.copiedExpression=""}),2e3)}catch(t){console.error("Failed to copy expression:",t)}}handleToggleShowAllKeys(){this.showAllKeys=!this.showAllKeys,this.toastMessage=this.showAllKeys?"Showing all keys":"Filtering out keys without values",setTimeout((()=>{this.toastMessage=""}),2e3)}renderContextTree(t,e=""){if(!t||"object"!=typeof t)return H``;let i=Array.isArray(t)?t.map(((t,e)=>[String(e),t])):Object.entries(t).filter((([t])=>"__default__"!==t));return this.showAllKeys||(i=i.filter((([,t])=>!!this.isExpandable(t)||null!=t&&("boolean"==typeof t||"number"==typeof t||"string"==typeof t||Array.isArray(t))))),H`${i.map((([t,i])=>{const o=e?`${e}.${t}`:t,n=this.expandedPaths.has(o),s=this.isExpandable(i);let r=i;return s&&!Array.isArray(i)&&null!==i&&"object"==typeof i&&"__default__"in i&&(r=i.__default__),H`
13069
13078
  <div>
13070
13079
  <div
13071
13080
  class="context-item ${s?"context-item-expandable":""}"
@@ -13090,7 +13099,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13090
13099
  ${this.renderContextTree(i,o)}
13091
13100
  </div>`:H``}
13092
13101
  </div>
13093
- `}))}`}async resume(t,e){if(!t&&!e||!this.session)return;this.sprinting=!0,this.inputValue="",this.currentQuickReplies=[],this.attachmentMenuOpen=!1;const i=(new Date).toISOString(),o={uuid:Jt(),type:"msg_received",created_on:i,msg:{uuid:Jt(),text:t||"",urn:this.contact.urns[0],direction:"in",type:"text",attachments:e?[e]:[],quick_replies:[],channel:{uuid:Jt(),name:"Simulator"}}},n={...o,created_on:new Date(i)};this.chat?this.chat.addMessages([n],null,!0):this.events=[...this.events,n],this.requestUpdate(),this.scrollToBottom();const s={session:this.session,contact:this.contact,resume:{type:"msg",event:o,resumed_on:i}};try{const t=await pe(this.endpoint,s);await new Promise((t=>setTimeout(t,400))),this.updateRunContext(t.json,null)}catch(t){console.error("Failed to resume simulation:",t);const e={uuid:Jt(),type:"error",created_on:new Date(i),_rendered:{html:H`<p>Failed to send message</p>`,type:fc.Error}};this.chat?this.chat.addMessages([e],null,!0):this.events=[...this.events,e],this.sprinting=!1}}handleKeyUp(t){if("Enter"===t.key){const e=t.target.value.trim();e&&this.resume(e)}}handleInput(t){const e=t.target;this.inputValue=e.value}handleQuickReplyClick(t){!this.sprinting&&t&&this.resume(t)}handleToggleAttachmentMenu(){this.attachmentMenuOpen=!this.attachmentMenuOpen}handleClickOutsideAttachmentMenu(t){var e,i;if(!this.attachmentMenuOpen)return;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".attachment-menu"),n=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".attachment-button");if(!o||!n)return;const s=o.contains(t.target),r=n.contains(t.target);s||r||(this.attachmentMenuOpen=!1)}handleSendAttachment(t){let e="";switch(t){case"image":e=`image/jpeg:${hw[this.imageIndex]}`,this.imageIndex=(this.imageIndex+1)%hw.length;break;case"video":e=`video/mp4:${uw[this.videoIndex]}`,this.videoIndex=(this.videoIndex+1)%uw.length;break;case"audio":e=`audio/mp3:${pw[this.audioIndex]}`,this.audioIndex=(this.audioIndex+1)%pw.length;break;case"location":e=mw[this.locationIndex],this.locationIndex=(this.locationIndex+1)%mw.length}e&&this.resume("",e)}updateBottomInputHeight(){requestAnimationFrame((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".bottom-input-container");if(e){const t=e.offsetHeight;this.style.setProperty("--bottom-input-height",`${t}px`)}}))}render(){var t;if(this.viewingRevision||0===(null===(t=this.definition)||void 0===t?void 0:t.nodes.length))return H``;const e=this.sizeConfig,i=`\n --phone-width: ${e.phoneWidth}px;\n --phone-total-height: ${e.phoneTotalHeight}px;\n --context-width: ${e.contextWidth}px;\n --context-offset: ${e.contextOffset}px;\n --option-pane-width: ${e.optionPaneWidth}px;\n --option-pane-gap: ${e.optionPaneGap}px;\n --window-padding: ${e.windowPadding}px;\n --phone-screen-height: ${e.phoneScreenHeight}px;\n --context-height: ${e.contextHeight}px;\n --context-closed-left: ${this.contextClosedLeft}px;\n --cutout-height: ${e.cutoutHeight}px;\n --cutout-padding: ${e.cutoutPadding}px;\n --cutout-font-size: ${e.cutoutFontSize}px;\n --cutout-island-width: ${e.cutoutIslandWidth}px;\n --cutout-island-height: ${e.cutoutIslandHeight}px;\n --cutout-island-top: ${e.cutoutIslandTop}px;\n --animation-time: ${this.animationTime}ms;\n `;return H`
13102
+ `}))}`}async resume(t,e){if(!t&&!e||!this.session)return;this.sprinting=!0,this.inputValue="",this.currentQuickReplies=[],this.attachmentMenuOpen=!1;const i=(new Date).toISOString(),o={uuid:Jt(),type:"msg_received",created_on:i,msg:{uuid:Jt(),text:t||"",urn:this.contact.urns[0],direction:"in",type:"text",attachments:e?[e]:[],quick_replies:[],channel:{uuid:Jt(),name:"Simulator"}}},n={...o,created_on:new Date(i)};this.chat?this.chat.addMessages([n],null,!0):this.events=[...this.events,n],this.requestUpdate(),this.scrollToBottom();const s={session:this.session,contact:this.contact,resume:{type:"msg",event:o,resumed_on:i}};try{const t=await pe(this.endpoint,s);await new Promise((t=>setTimeout(t,400))),this.updateRunContext(t.json,null)}catch(t){console.error("Failed to resume simulation:",t);const e={uuid:Jt(),type:"error",created_on:new Date(i),_rendered:{html:H`<p>Failed to send message</p>`,type:fc.Error}};this.chat?this.chat.addMessages([e],null,!0):this.events=[...this.events,e],this.sprinting=!1}}handleKeyUp(t){if("Enter"===t.key){const e=t.target.value.trim();e&&this.resume(e)}}handleInput(t){const e=t.target;this.inputValue=e.value}handleQuickReplyClick(t){!this.sprinting&&t&&this.resume(t)}handleToggleAttachmentMenu(){this.attachmentMenuOpen=!this.attachmentMenuOpen}handleClickOutsideAttachmentMenu(t){var e,i;if(!this.attachmentMenuOpen)return;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".attachment-menu"),n=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".attachment-button");if(!o||!n)return;const s=o.contains(t.target),r=n.contains(t.target);s||r||(this.attachmentMenuOpen=!1)}handleSendAttachment(t){let e="";switch(t){case"image":e=`image/jpeg:${pw[this.imageIndex]}`,this.imageIndex=(this.imageIndex+1)%pw.length;break;case"video":e=`video/mp4:${mw[this.videoIndex]}`,this.videoIndex=(this.videoIndex+1)%mw.length;break;case"audio":e=`audio/mp3:${gw[this.audioIndex]}`,this.audioIndex=(this.audioIndex+1)%gw.length;break;case"location":e=fw[this.locationIndex],this.locationIndex=(this.locationIndex+1)%fw.length}e&&this.resume("",e)}updateBottomInputHeight(){requestAnimationFrame((()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".bottom-input-container");if(e){const t=e.offsetHeight;this.style.setProperty("--bottom-input-height",`${t}px`)}}))}render(){var t;if(this.viewingRevision||0===(null===(t=this.definition)||void 0===t?void 0:t.nodes.length))return H``;const e=this.sizeConfig,i=`\n --phone-width: ${e.phoneWidth}px;\n --phone-total-height: ${e.phoneTotalHeight}px;\n --context-width: ${e.contextWidth}px;\n --context-offset: ${e.contextOffset}px;\n --option-pane-width: ${e.optionPaneWidth}px;\n --option-pane-gap: ${e.optionPaneGap}px;\n --window-padding: ${e.windowPadding}px;\n --phone-screen-height: ${e.phoneScreenHeight}px;\n --context-height: ${e.contextHeight}px;\n --context-closed-left: ${this.contextClosedLeft}px;\n --cutout-height: ${e.cutoutHeight}px;\n --cutout-padding: ${e.cutoutPadding}px;\n --cutout-font-size: ${e.cutoutFontSize}px;\n --cutout-island-width: ${e.cutoutIslandWidth}px;\n --cutout-island-height: ${e.cutoutIslandHeight}px;\n --cutout-island-top: ${e.cutoutIslandTop}px;\n --animation-time: ${this.animationTime}ms;\n `;return H`
13094
13103
  <temba-floating-window
13095
13104
  style="--transition-duration: ${this.animationTime}ms"
13096
13105
  id="phone-window"
@@ -13268,7 +13277,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13268
13277
  .hidden=${this.isVisible}
13269
13278
  @temba-button-clicked=${this.handleShow}
13270
13279
  ></temba-floating-tab>
13271
- `}}function vw(t,e){window.customElements.get(t)||window.customElements.define(t,e)}t([kd(_d,(t=>t.flowDefinition))],fw.prototype,"definition",void 0),t([kd(_d,(t=>t.viewingRevision))],fw.prototype,"viewingRevision",void 0),t([mt({type:String})],fw.prototype,"flow",void 0),t([mt({type:String})],fw.prototype,"endpoint",void 0),t([mt({type:Number})],fw.prototype,"animationTime",void 0),t([_e("simulator-size","small")],fw.prototype,"size",void 0),t([mt({type:Array})],fw.prototype,"events",void 0),t([mt({type:Object})],fw.prototype,"session",void 0),t([mt({type:Object})],fw.prototype,"context",void 0),t([mt({type:Object})],fw.prototype,"contact",void 0),t([mt({type:Boolean})],fw.prototype,"sprinting",void 0),t([mt({type:String})],fw.prototype,"inputValue",void 0),t([_e("simulator-follow",!0)],fw.prototype,"following",void 0),t([_e("simulator-context-open",!1)],fw.prototype,"contextExplorerOpen",void 0),t([mt({type:Object})],fw.prototype,"expandedPaths",void 0),t([mt({type:String})],fw.prototype,"copiedExpression",void 0),t([mt({type:String})],fw.prototype,"toastMessage",void 0),t([mt({type:Boolean})],fw.prototype,"showAllKeys",void 0),t([mt({type:Array})],fw.prototype,"currentQuickReplies",void 0),t([mt({type:Boolean})],fw.prototype,"isVisible",void 0),t([mt({type:Boolean})],fw.prototype,"attachmentMenuOpen",void 0),vw("temba-anchor",qc),vw("temba-alert",Ic),vw("temba-store",Ad),vw("temba-textinput",Io),vw("temba-datepicker",rh),vw("temba-range-picker",W_),vw("temba-date",mh),vw("temba-completion",Ud),vw("temba-checkbox",wo),vw("temba-select",qd),vw("temba-options",Ed),vw("temba-loading",Yd),vw("temba-lightbox",fh),vw("temba-button",Zd),vw("temba-omnibox",Rc),vw("temba-tip",Nc),vw("temba-contact-name",Wc),vw("temba-contact-name-fetch",sh),vw("temba-contact-field",Kc),vw("temba-contact-fields",Yc),vw("temba-field-manager",dh),vw("temba-urn",Zc),vw("temba-content-menu",uh),vw("temba-dialog",Hd),vw("temba-modax",Wd),vw("temba-charcount",oc),vw("temba-contact-chat",Sc),vw("temba-contact-details",class extends rc{static get styles(){return a`
13280
+ `}}function bw(t,e){window.customElements.get(t)||window.customElements.define(t,e)}t([kd(_d,(t=>t.flowDefinition))],yw.prototype,"definition",void 0),t([kd(_d,(t=>t.viewingRevision))],yw.prototype,"viewingRevision",void 0),t([mt({type:String})],yw.prototype,"flow",void 0),t([mt({type:String})],yw.prototype,"endpoint",void 0),t([mt({type:Number})],yw.prototype,"animationTime",void 0),t([_e("simulator-size","small")],yw.prototype,"size",void 0),t([mt({type:Array})],yw.prototype,"events",void 0),t([mt({type:Object})],yw.prototype,"session",void 0),t([mt({type:Object})],yw.prototype,"context",void 0),t([mt({type:Object})],yw.prototype,"contact",void 0),t([mt({type:Boolean})],yw.prototype,"sprinting",void 0),t([mt({type:String})],yw.prototype,"inputValue",void 0),t([_e("simulator-follow",!0)],yw.prototype,"following",void 0),t([_e("simulator-context-open",!1)],yw.prototype,"contextExplorerOpen",void 0),t([mt({type:Object})],yw.prototype,"expandedPaths",void 0),t([mt({type:String})],yw.prototype,"copiedExpression",void 0),t([mt({type:String})],yw.prototype,"toastMessage",void 0),t([mt({type:Boolean})],yw.prototype,"showAllKeys",void 0),t([mt({type:Array})],yw.prototype,"currentQuickReplies",void 0),t([mt({type:Boolean})],yw.prototype,"isVisible",void 0),t([mt({type:Boolean})],yw.prototype,"attachmentMenuOpen",void 0),bw("temba-anchor",qc),bw("temba-alert",Ic),bw("temba-store",Ad),bw("temba-textinput",Io),bw("temba-datepicker",rh),bw("temba-range-picker",Y_),bw("temba-date",mh),bw("temba-completion",Ud),bw("temba-checkbox",wo),bw("temba-select",qd),bw("temba-options",Ed),bw("temba-loading",Yd),bw("temba-lightbox",fh),bw("temba-button",Zd),bw("temba-omnibox",Rc),bw("temba-tip",Nc),bw("temba-contact-name",Wc),bw("temba-contact-name-fetch",sh),bw("temba-contact-field",Kc),bw("temba-contact-fields",Yc),bw("temba-field-manager",dh),bw("temba-urn",Zc),bw("temba-content-menu",uh),bw("temba-dialog",Hd),bw("temba-modax",Wd),bw("temba-charcount",oc),bw("temba-contact-chat",Sc),bw("temba-contact-details",class extends rc{static get styles(){return a`
13272
13281
  .urn {
13273
13282
  display: flex;
13274
13283
  padding: 0.4em 1em 0.8em 1em;
@@ -13349,7 +13358,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13349
13358
  disabled
13350
13359
  ></temba-contact-field>
13351
13360
  </div>
13352
- `}}),vw("temba-ticket-list",Tc),vw("temba-notification-list",class extends $c{static get styles(){return a`
13361
+ `}}),bw("temba-ticket-list",Tc),bw("temba-notification-list",class extends $c{static get styles(){return a`
13353
13362
  :host {
13354
13363
  --option-hover-bg: #f9f9f9;
13355
13364
  }
@@ -13392,7 +13401,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13392
13401
  </div>`}}renderHeader(){return H`<div class="header">
13393
13402
  <temba-icon name="notification"></temba-icon>
13394
13403
  <div class="title">Notifications</div>
13395
- </div>`}scrollToTop(){window.setTimeout((()=>{this.shadowRoot.querySelector("temba-options").scrollToTop()}),1e3)}}),vw("temba-list",$c),vw("temba-sortable-list",$d),vw("temba-run-list",oh),vw("temba-flow-details",nh),vw("temba-label",Hc),vw("temba-menu",Fc),vw("temba-contact-search",Oc),vw("temba-icon",Lc),vw("temba-dropdown",Uc),vw("temba-tabs",jc),vw("temba-tab",Vc),vw("temba-contact-badges",Qc),vw("temba-contact-pending",th),vw("temba-slider",eh),vw("temba-content-menu",uh),vw("temba-compose",gh),vw("temba-color-picker",vh),vw("temba-resizer",yh),vw("temba-thumbnail",wh),vw("temba-webchat",Sh),vw("temba-image-picker",Eh),vw("temba-mask",$h),vw("temba-user",wl),vw("temba-template-editor",Th),vw("temba-toast",Dh),vw("temba-chat",xc),vw("temba-media-picker",Ih),vw("temba-flow-editor",xp),vw("temba-node-editor",nw),vw("temba-flow-node",bp),vw("temba-sticky-note",_p),vw("temba-canvas-menu",wp),vw("temba-node-type-selector",kp),vw("temba-contact-notepad",Cp),vw("temba-progress",Sp),vw("temba-start-progress",Ap),vw("temba-shortcuts",Ep),vw("temba-popup-select",$p),vw("temba-user-select",Tp),vw("temba-workspace-select",Dp),vw("temba-chart",H_),vw("temba-key-value-editor",rw),vw("temba-array-editor",aw),vw("temba-message-editor",lw),vw("temba-floating-tab",dw),vw("temba-floating-window",cw),vw("temba-simulator",fw);class yw extends dt{static get styles(){return a`
13404
+ </div>`}scrollToTop(){window.setTimeout((()=>{this.shadowRoot.querySelector("temba-options").scrollToTop()}),1e3)}}),bw("temba-list",$c),bw("temba-sortable-list",$d),bw("temba-run-list",oh),bw("temba-flow-details",nh),bw("temba-label",Hc),bw("temba-menu",Fc),bw("temba-contact-search",Oc),bw("temba-icon",Lc),bw("temba-dropdown",Uc),bw("temba-tabs",jc),bw("temba-tab",Vc),bw("temba-contact-badges",Qc),bw("temba-contact-pending",th),bw("temba-slider",eh),bw("temba-content-menu",uh),bw("temba-compose",gh),bw("temba-color-picker",vh),bw("temba-resizer",yh),bw("temba-thumbnail",wh),bw("temba-webchat",Sh),bw("temba-image-picker",Eh),bw("temba-mask",$h),bw("temba-user",wl),bw("temba-template-editor",Th),bw("temba-toast",Dh),bw("temba-chat",xc),bw("temba-media-picker",Ih),bw("temba-flow-editor",wp),bw("temba-node-editor",rw),bw("temba-flow-node",_p),bw("temba-sticky-note",kp),bw("temba-canvas-menu",Cp),bw("temba-node-type-selector",Sp),bw("temba-contact-notepad",Ap),bw("temba-progress",Ep),bw("temba-start-progress",$p),bw("temba-shortcuts",Tp),bw("temba-popup-select",Dp),bw("temba-user-select",Mp),bw("temba-workspace-select",Ip),bw("temba-chart",Z_),bw("temba-key-value-editor",lw),bw("temba-array-editor",dw),bw("temba-message-editor",cw),bw("temba-floating-tab",hw),bw("temba-floating-window",uw),bw("temba-simulator",yw);class xw extends dt{static get styles(){return a`
13396
13405
  :host {
13397
13406
  line-height: normal;
13398
13407
  }
@@ -13600,7 +13609,7 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13600
13609
  ></temba-textinput>
13601
13610
  </div>
13602
13611
  </temba-dialog>
13603
- `}}t([mt({type:Array,attribute:!1})],yw.prototype,"path",void 0),t([mt()],yw.prototype,"endpoint",void 0),t([mt()],yw.prototype,"osmId",void 0),t([mt({type:Object})],yw.prototype,"hovered",void 0),t([mt({type:Object})],yw.prototype,"editFeature",void 0),t([mt({type:String,attribute:!1})],yw.prototype,"editFeatureAliases",void 0);"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var bw={exports:{}};(function(t){var e="1.5.1+build.2e3e0ffb",i=Object.freeze;function o(t){var e,i,o,n;for(i=1,o=arguments.length;i<o;i++)for(e in n=arguments[i])t[e]=n[e];return t}Object.freeze=function(t){return t};var n=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}();function s(t,e){var i=Array.prototype.slice;if(t.bind)return t.bind.apply(t,i.call(arguments,1));var o=i.call(arguments,2);return function(){return t.apply(e,o.length?o.concat(i.call(arguments)):arguments)}}var r=0;function a(t){return t._leaflet_id=t._leaflet_id||++r,t._leaflet_id}function l(t,e,i){var o,n,s,r;return r=function(){o=!1,n&&(s.apply(i,n),n=!1)},s=function(){o?n=arguments:(t.apply(i,arguments),setTimeout(r,e),o=!0)},s}function d(t,e,i){var o=e[1],n=e[0],s=o-n;return t===o&&i?t:((t-n)%s+s)%s+n}function c(){return!1}function h(t,e){return e=void 0===e?6:e,+(Math.round(t+"e+"+e)+"e-"+e)}function u(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function p(t){return u(t).split(/\s+/)}function m(t,e){for(var i in t.hasOwnProperty("options")||(t.options=t.options?n(t.options):{}),e)t.options[i]=e[i];return t.options}function g(t,e,i){var o=[];for(var n in t)o.push(encodeURIComponent(i?n.toUpperCase():n)+"="+encodeURIComponent(t[n]));return(e&&-1!==e.indexOf("?")?"&":"?")+o.join("&")}var f=/\{ *([\w_-]+) *\}/g;function v(t,e){return t.replace(f,(function(t,i){var o=e[i];if(void 0===o)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o}))}var y=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function b(t,e){for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function _(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var w=0;function k(t){var e=+new Date,i=Math.max(0,16-(e-w));return w=e+i,window.setTimeout(t,i)}var C=window.requestAnimationFrame||_("RequestAnimationFrame")||k,S=window.cancelAnimationFrame||_("CancelAnimationFrame")||_("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function A(t,e,i){if(!i||C!==k)return C.call(window,s(t,e));t.call(e)}function E(t){t&&S.call(window,t)}var $=(Object.freeze||Object)({freeze:i,extend:o,create:n,bind:s,lastId:r,stamp:a,throttle:l,wrapNum:d,falseFn:c,formatNum:h,trim:u,splitWords:p,setOptions:m,getParamString:g,template:v,isArray:y,indexOf:b,emptyImageUrl:x,requestFn:C,cancelFn:S,requestAnimFrame:A,cancelAnimFrame:E});function T(){}function D(t){if("undefined"!=typeof L&&L&&L.Mixin){t=y(t)?t:[t];for(var e=0;e<t.length;e++)t[e]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}T.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},i=e.__super__=this.prototype,s=n(i);for(var r in s.constructor=e,e.prototype=s,this)this.hasOwnProperty(r)&&"prototype"!==r&&"__super__"!==r&&(e[r]=this[r]);return t.statics&&(o(e,t.statics),delete t.statics),t.includes&&(D(t.includes),o.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=o(n(s.options),t.options)),o(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){i.callInitHooks&&i.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=s._initHooks.length;t<e;t++)s._initHooks[t].call(this)}},e},T.include=function(t){return o(this.prototype,t),this},T.mergeOptions=function(t){return o(this.prototype.options,t),this},T.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};var M={on:function(t,e,i){if("object"==typeof t)for(var o in t)this._on(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._on(t[n],e,i);return this},off:function(t,e,i){if(t)if("object"==typeof t)for(var o in t)this._off(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._off(t[n],e,i);else delete this._events;return this},_on:function(t,e,i){this._events=this._events||{};var o=this._events[t];o||(o=[],this._events[t]=o),i===this&&(i=void 0);for(var n={fn:e,ctx:i},s=o,r=0,a=s.length;r<a;r++)if(s[r].fn===e&&s[r].ctx===i)return;s.push(n)},_off:function(t,e,i){var o,n,s;if(this._events&&(o=this._events[t]))if(e){if(i===this&&(i=void 0),o)for(n=0,s=o.length;n<s;n++){var r=o[n];if(r.ctx===i&&r.fn===e)return r.fn=c,this._firingCount&&(this._events[t]=o=o.slice()),void o.splice(n,1)}}else{for(n=0,s=o.length;n<s;n++)o[n].fn=c;delete this._events[t]}},fire:function(t,e,i){if(!this.listens(t,i))return this;var n=o({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var l=s[r];l.fn.call(l.ctx||this,n)}this._firingCount--}}return i&&this._propagateEvent(n),this},listens:function(t,e){var i=this._events&&this._events[t];if(i&&i.length)return!0;if(e)for(var o in this._eventParents)if(this._eventParents[o].listens(t,e))return!0;return!1},once:function(t,e,i){if("object"==typeof t){for(var o in t)this.once(o,t[o],e);return this}var n=s((function(){this.off(t,e,i).off(t,n,i)}),this);return this.on(t,e,i).on(t,n,i)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[a(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[a(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,o({layer:t.target,propagatedFrom:t.target},t),!0)}};M.addEventListener=M.on,M.removeEventListener=M.clearAllEventListeners=M.off,M.addOneTimeEventListener=M.once,M.fireEvent=M.fire,M.hasEventListeners=M.listens;var I=T.extend(M);function O(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e}var z=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};function P(t,e,i){return t instanceof O?t:y(t)?new O(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new O(t.x,t.y):new O(t,e,i)}function R(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function N(t,e){return!t||t instanceof R?t:new R(t,e)}function B(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function F(t,e){return t instanceof B?t:new B(t,e)}function q(t,e,i){if(isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=+t,this.lng=+e,void 0!==i&&(this.alt=+i)}function U(t,e,i){return t instanceof q?t:y(t)&&"object"!=typeof t[0]?3===t.length?new q(t[0],t[1],t[2]):2===t.length?new q(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new q(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===e?null:new q(t,e,i)}O.prototype={clone:function(){return new O(this.x,this.y)},add:function(t){return this.clone()._add(P(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(P(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new O(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new O(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=z(this.x),this.y=z(this.y),this},distanceTo:function(t){var e=(t=P(t)).x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return(t=P(t)).x===this.x&&t.y===this.y},contains:function(t){return t=P(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+h(this.x)+", "+h(this.y)+")"}},R.prototype={extend:function(t){return t=P(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new O((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new O(this.min.x,this.max.y)},getTopRight:function(){return new O(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return(t="number"==typeof t[0]||t instanceof O?P(t):N(t))instanceof R?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>=e.x&&o.x<=i.x,r=n.y>=e.y&&o.y<=i.y;return s&&r},overlaps:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>e.x&&o.x<i.x,r=n.y>e.y&&o.y<i.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},B.prototype={extend:function(t){var e,i,o=this._southWest,n=this._northEast;if(t instanceof q)e=t,i=t;else{if(!(t instanceof B))return t?this.extend(U(t)||F(t)):this;if(e=t._southWest,i=t._northEast,!e||!i)return this}return o||n?(o.lat=Math.min(e.lat,o.lat),o.lng=Math.min(e.lng,o.lng),n.lat=Math.max(i.lat,n.lat),n.lng=Math.max(i.lng,n.lng)):(this._southWest=new q(e.lat,e.lng),this._northEast=new q(i.lat,i.lng)),this},pad:function(t){var e=this._southWest,i=this._northEast,o=Math.abs(e.lat-i.lat)*t,n=Math.abs(e.lng-i.lng)*t;return new B(new q(e.lat-o,e.lng-n),new q(i.lat+o,i.lng+n))},getCenter:function(){return new q((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new q(this.getNorth(),this.getWest())},getSouthEast:function(){return new q(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof q||"lat"in t?U(t):F(t);var e,i,o=this._southWest,n=this._northEast;return t instanceof B?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=o.lat&&i.lat<=n.lat&&e.lng>=o.lng&&i.lng<=n.lng},intersects:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>=e.lat&&o.lat<=i.lat,r=n.lng>=e.lng&&o.lng<=i.lng;return s&&r},overlaps:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>e.lat&&o.lat<i.lat,r=n.lng>e.lng&&o.lng<i.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,e){return!!t&&(t=F(t),this._southWest.equals(t.getSouthWest(),e)&&this._northEast.equals(t.getNorthEast(),e))},isValid:function(){return!(!this._southWest||!this._northEast)}},q.prototype={equals:function(t,e){return!!t&&(t=U(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===e?1e-9:e))},toString:function(t){return"LatLng("+h(this.lat,t)+", "+h(this.lng,t)+")"},distanceTo:function(t){return V.distance(this,U(t))},wrap:function(){return V.wrapLatLng(this)},toBounds:function(t){var e=180*t/40075017,i=e/Math.cos(Math.PI/180*this.lat);return F([this.lat-e,this.lng-i],[this.lat+e,this.lng+i])},clone:function(){return new q(this.lat,this.lng,this.alt)}};var j={latLngToPoint:function(t,e){var i=this.projection.project(t),o=this.scale(e);return this.transformation._transform(i,o)},pointToLatLng:function(t,e){var i=this.scale(e),o=this.transformation.untransform(t,i);return this.projection.unproject(o)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var e=this.projection.bounds,i=this.scale(t);return new R(this.transformation.transform(e.min,i),this.transformation.transform(e.max,i))},infinite:!1,wrapLatLng:function(t){var e=this.wrapLng?d(t.lng,this.wrapLng,!0):t.lng;return new q(this.wrapLat?d(t.lat,this.wrapLat,!0):t.lat,e,t.alt)},wrapLatLngBounds:function(t){var e=t.getCenter(),i=this.wrapLatLng(e),o=e.lat-i.lat,n=e.lng-i.lng;if(0===o&&0===n)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new B(new q(s.lat-o,s.lng-n),new q(r.lat-o,r.lng-n))}},V=o({},j,{wrapLng:[-180,180],R:6371e3,distance:function(t,e){var i=Math.PI/180,o=t.lat*i,n=e.lat*i,s=Math.sin((e.lat-t.lat)*i/2),r=Math.sin((e.lng-t.lng)*i/2),a=s*s+Math.cos(o)*Math.cos(n)*r*r,l=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*l}}),H=6378137,W={R:H,MAX_LATITUDE:85.0511287798,project:function(t){var e=Math.PI/180,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),n=Math.sin(o*e);return new O(this.R*t.lng*e,this.R*Math.log((1+n)/(1-n))/2)},unproject:function(t){var e=180/Math.PI;return new q((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*e,t.x*e/this.R)},bounds:function(){var t=H*Math.PI;return new R([-t,-t],[t,t])}()};function Z(t,e,i,o){if(y(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=e,this._c=i,this._d=o}function Y(t,e,i,o){return new Z(t,e,i,o)}Z.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new O((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}};var G=o({},V,{code:"EPSG:3857",projection:W,transformation:function(){var t=.5/(Math.PI*W.R);return Y(t,.5,-t,.5)}()}),K=o({},G,{code:"EPSG:900913"});function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,e){var i,o,n,s,r,a,l="";for(i=0,n=t.length;i<n;i++){for(o=0,s=(r=t[i]).length;o<s;o++)l+=(o?"L":"M")+(a=r[o]).x+" "+a.y;l+=e?Tt?"z":"x":""}return l||"M0 0"}var J=document.documentElement.style,tt="ActiveXObject"in window,et=tt&&!document.addEventListener,it="msLaunchUri"in navigator&&!("documentMode"in document),ot=Mt("webkit"),nt=Mt("android"),st=Mt("android 2")||Mt("android 3"),rt=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),at=nt&&Mt("Google")&&rt<537&&!("AudioNode"in window),lt=!!window.opera,dt=Mt("chrome"),ct=Mt("gecko")&&!ot&&!lt&&!tt,ht=!dt&&Mt("safari"),ut=Mt("phantom"),pt="OTransition"in J,mt=0===navigator.platform.indexOf("Win"),gt=tt&&"transition"in J,ft="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!st,vt="MozPerspective"in J,yt=!window.L_DISABLE_3D&&(gt||ft||vt)&&!pt&&!ut,bt="undefined"!=typeof orientation||Mt("mobile"),xt=bt&&ot,_t=bt&&ft,wt=!window.PointerEvent&&window.MSPointerEvent,kt=!(!window.PointerEvent&&!wt),Ct=!window.L_NO_TOUCH&&(kt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),St=bt&&lt,At=bt&&ct,Et=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,$t=!!document.createElement("canvas").getContext,Tt=!(!document.createElementNS||!X("svg").createSVGRect),Dt=!Tt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}();function Mt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var It=(Object.freeze||Object)({ie:tt,ielt9:et,edge:it,webkit:ot,android:nt,android23:st,androidStock:at,opera:lt,chrome:dt,gecko:ct,safari:ht,phantom:ut,opera12:pt,win:mt,ie3d:gt,webkit3d:ft,gecko3d:vt,any3d:yt,mobile:bt,mobileWebkit:xt,mobileWebkit3d:_t,msPointer:wt,pointer:kt,touch:Ct,mobileOpera:St,mobileGecko:At,retina:Et,canvas:$t,svg:Tt,vml:Dt}),Ot=wt?"MSPointerDown":"pointerdown",Lt=wt?"MSPointerMove":"pointermove",zt=wt?"MSPointerUp":"pointerup",Pt=wt?"MSPointerCancel":"pointercancel",Rt=["INPUT","SELECT","OPTION"],Nt={},Bt=!1,Ft=0;function qt(t,e,i,o){return"touchstart"===e?jt(t,i,o):"touchmove"===e?Yt(t,i,o):"touchend"===e&&Gt(t,i,o),this}function Ut(t,e,i){var o=t["_leaflet_"+e+i];return"touchstart"===e?t.removeEventListener(Ot,o,!1):"touchmove"===e?t.removeEventListener(Lt,o,!1):"touchend"===e&&(t.removeEventListener(zt,o,!1),t.removeEventListener(Pt,o,!1)),this}function jt(t,e,i){var o=s((function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Rt.indexOf(t.target.tagName)<0))return;je(t)}Zt(t,e)}));t["_leaflet_touchstart"+i]=o,t.addEventListener(Ot,o,!1),Bt||(document.documentElement.addEventListener(Ot,Vt,!0),document.documentElement.addEventListener(Lt,Ht,!0),document.documentElement.addEventListener(zt,Wt,!0),document.documentElement.addEventListener(Pt,Wt,!0),Bt=!0)}function Vt(t){Nt[t.pointerId]=t,Ft++}function Ht(t){Nt[t.pointerId]&&(Nt[t.pointerId]=t)}function Wt(t){delete Nt[t.pointerId],Ft--}function Zt(t,e){for(var i in t.touches=[],Nt)t.touches.push(Nt[i]);t.changedTouches=[t],e(t)}function Yt(t,e,i){var o=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&Zt(t,e)};t["_leaflet_touchmove"+i]=o,t.addEventListener(Lt,o,!1)}function Gt(t,e,i){var o=function(t){Zt(t,e)};t["_leaflet_touchend"+i]=o,t.addEventListener(zt,o,!1),t.addEventListener(Pt,o,!1)}var Kt=wt?"MSPointerDown":kt?"pointerdown":"touchstart",Xt=wt?"MSPointerUp":kt?"pointerup":"touchend",Qt="_leaflet_";function Jt(t,e,i){var o,n,s=!1,r=250;function a(t){var e;if(kt){if(!it||"mouse"===t.pointerType)return;e=Ft}else e=t.touches.length;if(!(e>1)){var i=Date.now(),a=i-(o||i);n=t.touches?t.touches[0]:t,s=a>0&&a<=r,o=i}}function l(t){if(s&&!n.cancelBubble){if(kt){if(!it||"mouse"===t.pointerType)return;var i,r,a={};for(r in n)i=n[r],a[r]=i&&i.bind?i.bind(n):i;n=a}n.type="dblclick",n.button=0,e(n),o=null}}return t[Qt+Kt+i]=a,t[Qt+Xt+i]=l,t[Qt+"dblclick"+i]=e,t.addEventListener(Kt,a,!1),t.addEventListener(Xt,l,!1),t.addEventListener("dblclick",e,!1),this}function te(t,e){var i=t[Qt+Kt+e],o=t[Qt+Xt+e],n=t[Qt+"dblclick"+e];return t.removeEventListener(Kt,i,!1),t.removeEventListener(Xt,o,!1),it||t.removeEventListener("dblclick",n,!1),this}var ee,ie,oe,ne,se,re=ke(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ae=ke(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),le="webkitTransition"===ae||"OTransition"===ae?ae+"End":"transitionend";function de(t){return"string"==typeof t?document.getElementById(t):t}function ce(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!i||"auto"===i)&&document.defaultView){var o=document.defaultView.getComputedStyle(t,null);i=o?o[e]:null}return"auto"===i?null:i}function he(t,e,i){var o=document.createElement(t);return o.className=e||"",i&&i.appendChild(o),o}function ue(t){var e=t.parentNode;e&&e.removeChild(t)}function pe(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function me(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function fe(t,e){if(void 0!==t.classList)return t.classList.contains(e);var i=xe(t);return i.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(i)}function ve(t,e){if(void 0!==t.classList)for(var i=p(e),o=0,n=i.length;o<n;o++)t.classList.add(i[o]);else if(!fe(t,e)){var s=xe(t);be(t,(s?s+" ":"")+e)}}function ye(t,e){void 0!==t.classList?t.classList.remove(e):be(t,u((" "+xe(t)+" ").replace(" "+e+" "," ")))}function be(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e}function xe(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function _e(t,e){"opacity"in t.style?t.style.opacity=e:"filter"in t.style&&we(t,e)}function we(t,e){var i=!1,o="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(o)}catch(t){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+o+"(opacity="+e+")"}function ke(t){for(var e=document.documentElement.style,i=0;i<t.length;i++)if(t[i]in e)return t[i];return!1}function Ce(t,e,i){var o=e||new O(0,0);t.style[re]=(gt?"translate("+o.x+"px,"+o.y+"px)":"translate3d("+o.x+"px,"+o.y+"px,0)")+(i?" scale("+i+")":"")}function Se(t,e){t._leaflet_pos=e,yt?Ce(t,e):(t.style.left=e.x+"px",t.style.top=e.y+"px")}function Ae(t){return t._leaflet_pos||new O(0,0)}if("onselectstart"in document)ee=function(){ze(window,"selectstart",je)},ie=function(){Re(window,"selectstart",je)};else{var Ee=ke(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);ee=function(){if(Ee){var t=document.documentElement.style;oe=t[Ee],t[Ee]="none"}},ie=function(){Ee&&(document.documentElement.style[Ee]=oe,oe=void 0)}}function $e(){ze(window,"dragstart",je)}function Te(){Re(window,"dragstart",je)}function De(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Me(),ne=t,se=t.style.outline,t.style.outline="none",ze(window,"keydown",Me))}function Me(){ne&&(ne.style.outline=se,ne=void 0,se=void 0,Re(window,"keydown",Me))}function Ie(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function Oe(t){var e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}var Le=(Object.freeze||Object)({TRANSFORM:re,TRANSITION:ae,TRANSITION_END:le,get:de,getStyle:ce,create:he,remove:ue,empty:pe,toFront:me,toBack:ge,hasClass:fe,addClass:ve,removeClass:ye,setClass:be,getClass:xe,setOpacity:_e,testProp:ke,setTransform:Ce,setPosition:Se,getPosition:Ae,disableTextSelection:ee,enableTextSelection:ie,disableImageDrag:$e,enableImageDrag:Te,preventOutline:De,restoreOutline:Me,getSizedParentNode:Ie,getScale:Oe});function ze(t,e,i,o){if("object"==typeof e)for(var n in e)Ne(t,n,e[n],i);else for(var s=0,r=(e=p(e)).length;s<r;s++)Ne(t,e[s],i,o);return this}var Pe="_leaflet_events";function Re(t,e,i,o){if("object"==typeof e)for(var n in e)Be(t,n,e[n],i);else if(e)for(var s=0,r=(e=p(e)).length;s<r;s++)Be(t,e[s],i,o);else{for(var a in t[Pe])Be(t,a,t[Pe][a]);delete t[Pe]}return this}function Ne(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):"");if(t[Pe]&&t[Pe][n])return this;var s=function(e){return i.call(o||t,e||window.event)},r=s;kt&&0===e.indexOf("touch")?qt(t,e,s,n):!Ct||"dblclick"!==e||!Jt||kt&&dt?"addEventListener"in t?"mousewheel"===e?t.addEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):"mouseenter"===e||"mouseleave"===e?(s=function(e){e=e||window.event,Qe(t,e)&&r(e)},t.addEventListener("mouseenter"===e?"mouseover":"mouseout",s,!1)):("click"===e&&nt&&(s=function(t){Je(t,r)}),t.addEventListener(e,s,!1)):"attachEvent"in t&&t.attachEvent("on"+e,s):Jt(t,s,n),t[Pe]=t[Pe]||{},t[Pe][n]=s}function Be(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):""),s=t[Pe]&&t[Pe][n];if(!s)return this;kt&&0===e.indexOf("touch")?Ut(t,e,n):!Ct||"dblclick"!==e||!te||kt&&dt?"removeEventListener"in t?"mousewheel"===e?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):t.removeEventListener("mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,s,!1):"detachEvent"in t&&t.detachEvent("on"+e,s):te(t,n),t[Pe][n]=null}function Fe(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Xe(t),this}function qe(t){return Ne(t,"mousewheel",Fe),this}function Ue(t){return ze(t,"mousedown touchstart dblclick",Fe),Ne(t,"click",Ke),this}function je(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Ve(t){return je(t),Fe(t),this}function He(t,e){if(!e)return new O(t.clientX,t.clientY);var i=Oe(e),o=i.boundingClientRect;return new O((t.clientX-o.left)/i.x-e.clientLeft,(t.clientY-o.top)/i.y-e.clientTop)}var We=mt&&dt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Ze(t){return it?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/We:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Ye,Ge={};function Ke(t){Ge[t.type]=!0}function Xe(t){var e=Ge[t.type];return Ge[t.type]=!1,e}function Qe(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(t){return!1}return i!==t}function Je(t,e){var i=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,o=Ye&&i-Ye;o&&o>100&&o<500||t.target._simulatedClick&&!t._simulated?Ve(t):(Ye=i,e(t))}var ti=(Object.freeze||Object)({on:ze,off:Re,stopPropagation:Fe,disableScrollPropagation:qe,disableClickPropagation:Ue,preventDefault:je,stop:Ve,getMousePosition:He,getWheelDelta:Ze,fakeStop:Ke,skipped:Xe,isExternalTarget:Qe,addListener:ze,removeListener:Re}),ei=I.extend({run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(o||.5,.2),this._startPos=Ae(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=A(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e<i?this._runFrame(this._easeOut(e/i),t):(this._runFrame(1),this._complete())},_runFrame:function(t,e){var i=this._startPos.add(this._offset.multiplyBy(t));e&&i._round(),Se(this._el,i),this.fire("step")},_complete:function(){E(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),ii=I.extend({options:{crs:G,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,e){e=m(this,e),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=s(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),void 0!==e.zoom&&(this._zoom=this._limitZoom(e.zoom)),e.center&&void 0!==e.zoom&&this.setView(U(e.center),e.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ae&&yt&&!St&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),ze(this._proxy,le,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,i){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(U(t),e,this.options.maxBounds),i=i||{},this._stop(),this._loaded&&!i.reset&&!0!==i&&(void 0!==i.animate&&(i.zoom=o({animate:i.animate},i.zoom),i.pan=o({animate:i.animate,duration:i.duration},i.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,i.zoom):this._tryAnimatedPan(t,i.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=t,this)},zoomIn:function(t,e){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,e)},zoomOut:function(t,e){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,e)},setZoomAround:function(t,e,i){var o=this.getZoomScale(e),n=this.getSize().divideBy(2),s=(t instanceof O?t:this.latLngToContainerPoint(t)).subtract(n).multiplyBy(1-1/o),r=this.containerPointToLatLng(n.add(s));return this.setView(r,e,{zoom:i})},_getBoundsCenterZoom:function(t,e){e=e||{},t=t.getBounds?t.getBounds():F(t);var i=P(e.paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getBoundsZoom(t,!1,i.add(o));if((n="number"==typeof e.maxZoom?Math.min(e.maxZoom,n):n)===1/0)return{center:t.getCenter(),zoom:n};var s=o.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),n),a=this.project(t.getNorthEast(),n);return{center:this.unproject(r.add(a).divideBy(2).add(s),n),zoom:n}},fitBounds:function(t,e){if(!(t=F(t)).isValid())throw new Error("Bounds are not valid.");var i=this._getBoundsCenterZoom(t,e);return this.setView(i.center,i.zoom,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t,e){if(e=e||{},!(t=P(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==e.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new ei,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),!1!==e.animate){ve(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,e,i){if(!1===(i=i||{}).animate||!yt)return this.setView(t,e,i);this._stop();var o=this.project(this.getCenter()),n=this.project(t),s=this.getSize(),r=this._zoom;t=U(t),e=void 0===e?r:e;var a=Math.max(s.x,s.y),l=a*this.getZoomScale(r,e),d=n.distanceTo(o)||1,c=1.42,h=c*c;function u(t){var e=(l*l-a*a+(t?-1:1)*h*h*d*d)/(2*(t?l:a)*h*d),i=Math.sqrt(e*e+1)-e;return i<1e-9?-18:Math.log(i)}function p(t){return(Math.exp(t)-Math.exp(-t))/2}function m(t){return(Math.exp(t)+Math.exp(-t))/2}function g(t){return p(t)/m(t)}var f=u(0);function v(t){return a*(m(f)/m(f+c*t))}function y(t){return a*(m(f)*g(f+c*t)-p(f))/h}function b(t){return 1-Math.pow(1-t,1.5)}var x=Date.now(),_=(u(1)-f)/c,w=i.duration?1e3*i.duration:1e3*_*.8;function k(){var i=(Date.now()-x)/w,s=b(i)*_;i<=1?(this._flyToFrame=A(k,this),this._move(this.unproject(o.add(n.subtract(o).multiplyBy(y(s)/d)),r),this.getScaleZoom(a/v(s),r),{flyTo:!0})):this._move(t,e)._moveEnd(!0)}return this._moveStart(!0,i.noMoveStart),k.call(this),this},flyToBounds:function(t,e){var i=this._getBoundsCenterZoom(t,e);return this.flyTo(i.center,i.zoom,e)},setMaxBounds:function(t){return(t=F(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var e=this.options.minZoom;return this.options.minZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var e=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),o=this._limitCenter(i,this._zoom,F(t));return i.equals(o)||this.panTo(o,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=P((e=e||{}).paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getCenter(),s=this.project(n),r=this.project(t),a=this.getPixelBounds(),l=a.getSize().divideBy(2),d=N([a.min.add(i),a.max.subtract(o)]);if(!d.contains(r)){this._enforcingBounds=!0;var c=s.subtract(r),h=P(r.x+c.x,r.y+c.y);(r.x<d.min.x||r.x>d.max.x)&&(h.x=s.x-c.x,c.x>0?h.x+=l.x-i.x:h.x-=l.x-o.x),(r.y<d.min.y||r.y>d.max.y)&&(h.y=s.y-c.y,c.y>0?h.y+=l.y-i.y:h.y-=l.y-o.y),this.panTo(this.unproject(h),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=o({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),r=i.divideBy(2).round(),a=n.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(s(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=o({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=s(this._handleGeolocationResponse,this),i=s(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=new q(t.coords.latitude,t.coords.longitude),i=e.toBounds(2*t.coords.accuracy),o=this._locateOptions;if(o.setView){var n=this.getBoundsZoom(i);this.setView(e,o.maxZoom?Math.min(n,o.maxZoom):n)}var s={latlng:e,bounds:i,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ue(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(E(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ue(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var i=he("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new B(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=F(t),i=P(i||[0,0]);var o=this.getZoom()||0,n=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),l=this.getSize().subtract(i),d=N(this.project(a,o),this.project(r,o)).getSize(),c=yt?this.options.zoomSnap:1,h=l.x/d.x,u=l.y/d.y,p=e?Math.max(h,u):Math.min(h,u);return o=this.getScaleZoom(p,o),c&&(o=Math.round(o/(c/100))*(c/100),o=e?Math.ceil(o/c)*c:Math.floor(o/c)*c),Math.max(n,Math.min(s,o))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new O(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new R(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs;e=void 0===e?this._zoom:e;var o=i.zoom(t*i.scale(e));return isNaN(o)?1/0:o},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(U(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(P(t),e)},layerPointToLatLng:function(t){var e=P(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(U(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(U(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(U(t),U(e))},containerPointToLayerPoint:function(t){return P(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return P(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(P(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(U(t)))},mouseEventToContainerPoint:function(t){return He(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=de(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");ze(e,"scroll",this._onScroll,this),this._containerId=a(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&yt,ve(t,"leaflet-container"+(Ct?" leaflet-touch":"")+(Et?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(ht?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=ce(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Se(this._mapPane,new O(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ve(t.markerPane,"leaflet-zoom-hide"),ve(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){Se(this._mapPane,new O(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var o=this._zoom!==e;this._moveStart(o,!1)._move(t,e)._moveEnd(o),this.fire("viewreset"),i&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return E(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Se(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[a(this._container)]=this;var e=t?Re:ze;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),yt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){E(this._resizeRequest),this._resizeRequest=A((function(){this.invalidateSize({debounceMoveend:!0})}),this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,o=[],n="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[a(s)])&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(n&&!Qe(s,t))break;if(o.push(i),n)break}if(s===this._container)break;s=s.parentNode}return o.length||r||n||!Qe(s,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Xe(t)){var e=t.type;"mousedown"!==e&&"keypress"!==e&&"keyup"!==e&&"keydown"!==e||De(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){if("click"===t.type){var n=o({},t);n.type="preclick",this._fireDOMEvent(n,n.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e))).length){var s=i[0];"contextmenu"===e&&s.listens(e,!0)&&je(t);var r={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var l=0;l<i.length;l++)if(i[l].fire(e,r,!0),r.originalEvent._stopped||!1===i[l].options.bubblingMouseEvents&&-1!==b(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,e=this._handlers.length;t<e;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,{target:this}):this.on("load",t,e),this},_getMapPanePos:function(){return Ae(this._mapPane)||new O(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,e){return(t&&void 0!==e?this._getNewPixelOrigin(t,e):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return this.project(t,e)._subtract(o)},_latLngBoundsToNewLayerBounds:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return N([this.project(t.getSouthWest(),e)._subtract(o),this.project(t.getNorthWest(),e)._subtract(o),this.project(t.getSouthEast(),e)._subtract(o),this.project(t.getNorthEast(),e)._subtract(o)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var o=this.project(t,e),n=this.getSize().divideBy(2),s=new R(o.subtract(n),o.add(n)),r=this._getBoundsOffset(s,i,e);return r.round().equals([0,0])?t:this.unproject(o.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),o=new R(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(o,e))},_getBoundsOffset:function(t,e,i){var o=N(this.project(e.getNorthEast(),i),this.project(e.getSouthWest(),i)),n=o.min.subtract(t.min),s=o.max.subtract(t.max);return new O(this._rebound(n.x,-s.x),this._rebound(n.y,-s.y))},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),o=yt?this.options.zoomSnap:1;return o&&(t=Math.round(t/o)*o),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){ye(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(i)||(this.panBy(i,e),0))},_createAnimProxy:function(){var t=this._proxy=he("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",(function(t){var e=re,i=this._proxy.style[e];Ce(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),i===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()}),this),this.on("load moveend",(function(){var t=this.getCenter(),e=this.getZoom();Ce(this._proxy,this.project(t,e),this.getZoomScale(e,1))}),this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ue(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||!1===i.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var o=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/o);return!(!0!==i.animate&&!this.getSize().contains(n)||(A((function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)}),this),0))},_animateZoom:function(t,e,i,o){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,ve(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:o}),setTimeout(s(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&ye(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),A((function(){this._moveEnd(!0)}),this))}});function oi(t,e){return new ii(t,e)}var ni=T.extend({options:{position:"topright"},initialize:function(t){m(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),o=t._controlCorners[i];return ve(e,"leaflet-control"),-1!==i.indexOf("bottom")?o.insertBefore(e,o.firstChild):o.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ue(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),si=function(t){return new ni(t)};ii.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e="leaflet-",i=this._controlContainer=he("div",e+"control-container",this._container);function o(o,n){var s=e+o+" "+e+n;t[o+n]=he("div",s,i)}o("top","left"),o("top","right"),o("bottom","left"),o("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ue(this._controlCorners[t]);ue(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ri=ni.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,o){return i<o?-1:o<i?1:0}},initialize:function(t,e,i){for(var o in m(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[o],o);for(o in e)this._addLayer(e[o],o,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return ni.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._map?this._update():this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var e=this._getLayer(a(t));return e&&this._layers.splice(this._layers.indexOf(e),1),this._map?this._update():this},expand:function(){ve(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(ve(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):ye(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return ye(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=he("div",t),i=this.options.collapsed;e.setAttribute("aria-haspopup",!0),Ue(e),qe(e);var o=this._section=he("section",t+"-list");i&&(this._map.on("click",this.collapse,this),nt||ze(e,{mouseenter:this.expand,mouseleave:this.collapse},this));var n=this._layersLink=he("a",t+"-toggle",e);n.href="#",n.title="Layers",Ct?(ze(n,"click",Ve),ze(n,"click",this.expand,this)):ze(n,"focus",this.expand,this),i||this.expand(),this._baseLayersList=he("div",t+"-base",o),this._separator=he("div",t+"-separator",o),this._overlaysList=he("div",t+"-overlays",o),e.appendChild(o)},_getLayer:function(t){for(var e=0;e<this._layers.length;e++)if(this._layers[e]&&a(this._layers[e].layer)===t)return this._layers[e]},_addLayer:function(t,e,i){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:e,overlay:i}),this.options.sortLayers&&this._layers.sort(s((function(t,e){return this.options.sortFunction(t.layer,e.layer,t.name,e.name)}),this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;pe(this._baseLayersList),pe(this._overlaysList),this._layerControlInputs=[];var t,e,i,o,n=0;for(i=0;i<this._layers.length;i++)o=this._layers[i],this._addItem(o),e=e||o.overlay,t=t||!o.overlay,n+=o.overlay?0:1;return this.options.hideSingleBase&&(t=t&&n>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(a(t.target)),i=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,e){var i='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(e?' checked="checked"':"")+"/>",o=document.createElement("div");return o.innerHTML=i,o.firstChild},_addItem:function(t){var e,i=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=o):e=this._createRadioElement("leaflet-base-layers_"+a(this),o),this._layerControlInputs.push(e),e.layerId=a(t.layer),ze(e,"click",this._onInputClick,this);var n=document.createElement("span");n.innerHTML=" "+t.name;var s=document.createElement("div");return i.appendChild(s),s.appendChild(e),s.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,o=[],n=[];this._handlingClick=!0;for(var s=i.length-1;s>=0;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?o.push(e):t.checked||n.push(e);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])&&this._map.removeLayer(n[s]);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])||this._map.addLayer(o[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,e,i=this._layerControlInputs,o=this._map.getZoom(),n=i.length-1;n>=0;n--)t=i[n],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&o<e.options.minZoom||void 0!==e.options.maxZoom&&o>e.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ai=function(t,e,i){return new ri(t,e,i)},li=ni.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=he("div",e+" leaflet-bar"),o=this.options;return this._zoomInButton=this._createButton(o.zoomInText,o.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(o.zoomOutText,o.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,o,n){var s=he("a",i,o);return s.innerHTML=t,s.href="#",s.title=e,s.setAttribute("role","button"),s.setAttribute("aria-label",e),Ue(s),ze(s,"click",Ve),ze(s,"click",n,this),ze(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";ye(this._zoomInButton,e),ye(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&ve(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&ve(this._zoomInButton,e)}});ii.mergeOptions({zoomControl:!0}),ii.addInitHook((function(){this.options.zoomControl&&(this.zoomControl=new li,this.addControl(this.zoomControl))}));var di=function(t){return new li(t)},ci=ni.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=he("div",e),o=this.options;return this._addScales(o,e+"-line",i),t.on(o.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=he("div",e,i)),t.imperial&&(this._iScale=he("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,o,n=3.2808399*t;n>5280?(e=n/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+" mi",i/e)):(o=this._getRoundNum(n),this._updateScale(this._iScale,o+" ft",o/n))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return e*(i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1)}}),hi=function(t){return new ci(t)},ui=ni.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){m(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=he("div","leaflet-control-attribution"),Ue(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}}});ii.mergeOptions({attributionControl:!0}),ii.addInitHook((function(){this.options.attributionControl&&(new ui).addTo(this)}));var pi=function(t){return new ui(t)};ni.Layers=ri,ni.Zoom=li,ni.Scale=ci,ni.Attribution=ui,si.layers=ai,si.zoom=di,si.scale=hi,si.attribution=pi;var mi=T.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});mi.addTo=function(t,e){return t.addHandler(e,this),this};var gi,fi={Events:M},vi=Ct?"touchstart mousedown":"mousedown",yi={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},bi={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},xi=I.extend({options:{clickTolerance:3},initialize:function(t,e,i,o){m(this,o),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(ze(this._dragStartTarget,vi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(xi._dragging===this&&this.finishDrag(),Re(this._dragStartTarget,vi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!fe(this._element,"leaflet-zoom-anim")&&!(xi._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(xi._dragging=this,this._preventOutline&&De(this._element),$e(),ee(),this._moving)))){this.fire("down");var e=t.touches?t.touches[0]:t,i=Ie(this._element);this._startPoint=new O(e.clientX,e.clientY),this._parentScale=Oe(i),ze(document,bi[t.type],this._onMove,this),ze(document,yi[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new O(e.clientX,e.clientY)._subtract(this._startPoint);(i.x||i.y)&&(Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,je(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Ae(this._element).subtract(i),ve(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),ve(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(i),this._moving=!0,E(this._animRequest),this._lastEvent=t,this._animRequest=A(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Se(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in ye(document.body,"leaflet-dragging"),this._lastTarget&&(ye(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),bi)Re(document,bi[t],this._onMove,this),Re(document,yi[t],this._onUp,this);Te(),ie(),this._moved&&this._moving&&(E(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,xi._dragging=!1}});function _i(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=Ci(t=Ai(t,i),i)}function wi(t,e,i){return Math.sqrt(Mi(t,e,i,!0))}function ki(t,e,i){return Mi(t,e,i)}function Ci(t,e){var i=t.length,o=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(i);o[0]=o[i-1]=1,Si(t,o,e,0,i-1);var n,s=[];for(n=0;n<i;n++)o[n]&&s.push(t[n]);return s}function Si(t,e,i,o,n){var s,r,a,l=0;for(r=o+1;r<=n-1;r++)(a=Mi(t[r],t[o],t[n],!0))>l&&(s=r,l=a);l>i&&(e[s]=1,Si(t,e,i,o,s),Si(t,e,i,s,n))}function Ai(t,e){for(var i=[t[0]],o=1,n=0,s=t.length;o<s;o++)Di(t[o],t[n])>e&&(i.push(t[o]),n=o);return n<s-1&&i.push(t[s-1]),i}function Ei(t,e,i,o,n){var s,r,a,l=o?gi:Ti(t,i),d=Ti(e,i);for(gi=d;;){if(!(l|d))return[t,e];if(l&d)return!1;a=Ti(r=$i(t,e,s=l||d,i,n),i),s===l?(t=r,l=a):(e=r,d=a)}}function $i(t,e,i,o,n){var s,r,a=e.x-t.x,l=e.y-t.y,d=o.min,c=o.max;return 8&i?(s=t.x+a*(c.y-t.y)/l,r=c.y):4&i?(s=t.x+a*(d.y-t.y)/l,r=d.y):2&i?(s=c.x,r=t.y+l*(c.x-t.x)/a):1&i&&(s=d.x,r=t.y+l*(d.x-t.x)/a),new O(s,r,n)}function Ti(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i}function Di(t,e){var i=e.x-t.x,o=e.y-t.y;return i*i+o*o}function Mi(t,e,i,o){var n,s=e.x,r=e.y,a=i.x-s,l=i.y-r,d=a*a+l*l;return d>0&&((n=((t.x-s)*a+(t.y-r)*l)/d)>1?(s=i.x,r=i.y):n>0&&(s+=a*n,r+=l*n)),a=t.x-s,l=t.y-r,o?a*a+l*l:new O(s,r)}function Ii(t){return!y(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Oi(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Ii(t)}var Li=(Object.freeze||Object)({simplify:_i,pointToSegmentDistance:wi,closestPointOnSegment:ki,clipSegment:Ei,_getEdgeIntersection:$i,_getBitCode:Ti,_sqClosestPointOnSegment:Mi,isFlat:Ii,_flat:Oi});function zi(t,e,i){var o,n,s,r,a,l,d,c,h,u=[1,4,2,8];for(n=0,d=t.length;n<d;n++)t[n]._code=Ti(t[n],e);for(r=0;r<4;r++){for(c=u[r],o=[],n=0,s=(d=t.length)-1;n<d;s=n++)a=t[n],l=t[s],a._code&c?l._code&c||((h=$i(l,a,c,e,i))._code=Ti(h,e),o.push(h)):(l._code&c&&((h=$i(l,a,c,e,i))._code=Ti(h,e),o.push(h)),o.push(a));t=o}return t}var Pi=(Object.freeze||Object)({clipPolygon:zi}),Ri={project:function(t){return new O(t.lng,t.lat)},unproject:function(t){return new q(t.y,t.x)},bounds:new R([-180,-90],[180,90])},Ni={R:6378137,R_MINOR:6356752.314245179,bounds:new R([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,i=this.R,o=t.lat*e,n=this.R_MINOR/i,s=Math.sqrt(1-n*n),r=s*Math.sin(o),a=Math.tan(Math.PI/4-o/2)/Math.pow((1-r)/(1+r),s/2);return o=-i*Math.log(Math.max(a,1e-10)),new O(t.lng*e*i,o)},unproject:function(t){for(var e,i=180/Math.PI,o=this.R,n=this.R_MINOR/o,s=Math.sqrt(1-n*n),r=Math.exp(-t.y/o),a=Math.PI/2-2*Math.atan(r),l=0,d=.1;l<15&&Math.abs(d)>1e-7;l++)e=s*Math.sin(a),e=Math.pow((1-e)/(1+e),s/2),a+=d=Math.PI/2-2*Math.atan(r*e)-a;return new q(a*i,t.x*i/o)}},Bi=(Object.freeze||Object)({LonLat:Ri,Mercator:Ni,SphericalMercator:W}),Fi=o({},V,{code:"EPSG:3395",projection:Ni,transformation:function(){var t=.5/(Math.PI*Ni.R);return Y(t,.5,-t,.5)}()}),qi=o({},V,{code:"EPSG:4326",projection:Ri,transformation:Y(1/180,1,-1/180,.5)}),Ui=o({},j,{projection:Ri,transformation:Y(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var i=e.lng-t.lng,o=e.lat-t.lat;return Math.sqrt(i*i+o*o)},infinite:!0});j.Earth=V,j.EPSG3395=Fi,j.EPSG3857=G,j.EPSG900913=K,j.EPSG4326=qi,j.Simple=Ui;var ji=I.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[a(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[a(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once("remove",(function(){e.off(i,this)}),this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),e.fire("layeradd",{layer:this})}}});ii.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var e=a(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=a(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&a(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){for(var e=0,i=(t=t?y(t)?t:[t]:[]).length;e<i;e++)this.addLayer(t[e])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[a(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var e=a(t);this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,e=-1/0,i=this._getZoomSpan();for(var o in this._zoomBoundLayers){var n=this._zoomBoundLayers[o].options;t=void 0===n.minZoom?t:Math.min(t,n.minZoom),e=void 0===n.maxZoom?e:Math.max(e,n.maxZoom)}this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=t===1/0?void 0:t,i!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Vi=ji.extend({initialize:function(t,e){var i,o;if(m(this,e),this._layers={},t)for(i=0,o=t.length;i<o;i++)this.addLayer(t[i])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var e,i,o=Array.prototype.slice.call(arguments,1);for(e in this._layers)(i=this._layers[e])[t]&&i[t].apply(i,o);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return a(t)}}),Hi=function(t,e){return new Vi(t,e)},Wi=Vi.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Vi.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Vi.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new B;for(var e in this._layers){var i=this._layers[e];t.extend(i.getBounds?i.getBounds():i.getLatLng())}return t}}),Zi=function(t){return new Wi(t)},Yi=T.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){m(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var o=this._createImg(i,e&&"IMG"===e.tagName?e:null);return this._setIconStyles(o,t),o},_setIconStyles:function(t,e){var i=this.options,o=i[e+"Size"];"number"==typeof o&&(o=[o,o]);var n=P(o),s=P("shadow"===e&&i.shadowAnchor||i.iconAnchor||n&&n.divideBy(2,!0));t.className="leaflet-marker-"+e+" "+(i.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),n&&(t.style.width=n.x+"px",t.style.height=n.y+"px")},_createImg:function(t,e){return(e=e||document.createElement("img")).src=t,e},_getIconUrl:function(t){return Et&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});function Gi(t){return new Yi(t)}var Ki=Yi.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ki.imagePath||(Ki.imagePath=this._detectIconPath()),(this.options.imagePath||Ki.imagePath)+Yi.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=he("div","leaflet-default-icon-path",document.body),e=ce(t,"background-image")||ce(t,"backgroundImage");return document.body.removeChild(t),e=null===e||0!==e.indexOf("url")?"":e.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Xi=mi.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new xi(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),ve(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&ye(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var e=this._marker,i=e._map,o=this._marker.options.autoPanSpeed,n=this._marker.options.autoPanPadding,s=Ae(e._icon),r=i.getPixelBounds(),a=i.getPixelOrigin(),l=N(r.min._subtract(a).add(n),r.max._subtract(a).subtract(n));if(!l.contains(s)){var d=P((Math.max(l.max.x,s.x)-l.max.x)/(r.max.x-l.max.x)-(Math.min(l.min.x,s.x)-l.min.x)/(r.min.x-l.min.x),(Math.max(l.max.y,s.y)-l.max.y)/(r.max.y-l.max.y)-(Math.min(l.min.y,s.y)-l.min.y)/(r.min.y-l.min.y)).multiplyBy(o);i.panBy(d,{animate:!1}),this._draggable._newPos._add(d),this._draggable._startPos._add(d),Se(e._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=A(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(E(this._panRequest),this._panRequest=A(this._adjustPan.bind(this,t)))},_onDrag:function(t){var e=this._marker,i=e._shadow,o=Ae(e._icon),n=e._map.layerPointToLatLng(o);i&&Se(i,o),e._latlng=n,t.latlng=n,t.oldLatLng=this._oldLatLng,e.fire("move",t).fire("drag",t)},_onDragEnd:function(t){E(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Qi=ji.extend({options:{icon:new Ki,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,e){m(this,e),this._latlng=U(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=U(t),this.update(),this.fire("move",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=t.icon.createIcon(this._icon),o=!1;i!==this._icon&&(this._icon&&this._removeIcon(),o=!0,t.title&&(i.title=t.title),"IMG"===i.tagName&&(i.alt=t.alt||"")),ve(i,e),t.keyboard&&(i.tabIndex="0"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var n=t.icon.createShadow(this._shadow),s=!1;n!==this._shadow&&(this._removeShadow(),s=!0),n&&(ve(n,e),n.alt=""),this._shadow=n,t.opacity<1&&this._updateOpacity(),o&&this.getPane().appendChild(this._icon),this._initInteraction(),n&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ue(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ue(this._shadow),this._shadow=null},_setPos:function(t){Se(this._icon,t),this._shadow&&Se(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(ve(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Xi)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Xi(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&_e(this._icon,t),this._shadow&&_e(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Ji(t,e){return new Qi(t,e)}var to=ji.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return m(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),eo=to.extend({options:{fill:!0,radius:10},initialize:function(t,e){m(this,e),this._latlng=U(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=U(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var e=t&&t.radius||this._radius;return to.prototype.setStyle.call(this,t),this.setRadius(e),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,e=this._radiusY||t,i=this._clickTolerance(),o=[t+i,e+i];this._pxBounds=new R(this._point.subtract(o),this._point.add(o))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function io(t,e){return new eo(t,e)}var oo=eo.extend({initialize:function(t,e,i){if("number"==typeof e&&(e=o({},i,{radius:e})),m(this,e),this._latlng=U(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new B(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:to.prototype.setStyle,_project:function(){var t=this._latlng.lng,e=this._latlng.lat,i=this._map,o=i.options.crs;if(o.distance===V.distance){var n=Math.PI/180,s=this._mRadius/V.R/n,r=i.project([e+s,t]),a=i.project([e-s,t]),l=r.add(a).divideBy(2),d=i.unproject(l).lat,c=Math.acos((Math.cos(s*n)-Math.sin(e*n)*Math.sin(d*n))/(Math.cos(e*n)*Math.cos(d*n)))/n;(isNaN(c)||0===c)&&(c=s/Math.cos(Math.PI/180*e)),this._point=l.subtract(i.getPixelOrigin()),this._radius=isNaN(c)?0:l.x-i.project([d,t-c]).x,this._radiusY=l.y-r.y}else{var h=o.unproject(o.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(h).x}this._updateBounds()}});function no(t,e,i){return new oo(t,e,i)}var so=to.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){m(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,o=1/0,n=null,s=Mi,r=0,a=this._parts.length;r<a;r++)for(var l=this._parts[r],d=1,c=l.length;d<c;d++){var h=s(t,e=l[d-1],i=l[d],!0);h<o&&(o=h,n=s(t,e,i))}return n&&(n.distance=Math.sqrt(o)),n},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a=this._rings[0],l=a.length;if(!l)return null;for(t=0,e=0;t<l-1;t++)e+=a[t].distanceTo(a[t+1])/2;if(0===e)return this._map.layerPointToLatLng(a[0]);for(t=0,o=0;t<l-1;t++)if(n=a[t],s=a[t+1],(o+=i=n.distanceTo(s))>e)return r=(o-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-n.x),s.y-r*(s.y-n.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=U(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new B,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Ii(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=Ii(t),o=0,n=t.length;o<n;o++)i?(e[o]=U(t[o]),this._bounds.extend(e[o])):e[o]=this._convertLatLngs(t[o]);return e},_project:function(){var t=new R;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),e=new O(t,t);this._pxBounds=new R([this._rawPxBounds.min.subtract(e),this._rawPxBounds.max.add(e)])},_projectLatlngs:function(t,e,i){var o,n,s=t[0]instanceof q,r=t.length;if(s){for(n=[],o=0;o<r;o++)n[o]=this._map.latLngToLayerPoint(t[o]),i.extend(n[o]);e.push(n)}else for(o=0;o<r;o++)this._projectLatlngs(t[o],e,i)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var e,i,o,n,s,r,a,l=this._parts;for(e=0,o=0,n=this._rings.length;e<n;e++)for(i=0,s=(a=this._rings[e]).length;i<s-1;i++)(r=Ei(a[i],a[i+1],t,i,!0))&&(l[o]=l[o]||[],l[o].push(r[0]),r[1]===a[i+1]&&i!==s-2||(l[o].push(r[1]),o++))}},_simplifyPoints:function(){for(var t=this._parts,e=this.options.smoothFactor,i=0,o=t.length;i<o;i++)t[i]=_i(t[i],e)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,e){var i,o,n,s,r,a,l=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(i=0,s=this._parts.length;i<s;i++)for(o=0,n=(r=(a=this._parts[i]).length)-1;o<r;n=o++)if((e||0!==o)&&wi(t,a[n],a[o])<=l)return!0;return!1}});function ro(t,e){return new so(t,e)}so._flat=Oi;var ao=so.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a,l,d=this._rings[0],c=d.length;if(!c)return null;for(s=r=a=0,t=0,e=c-1;t<c;e=t++)i=d[t],o=d[e],n=i.y*o.x-o.y*i.x,r+=(i.x+o.x)*n,a+=(i.y+o.y)*n,s+=3*n;return l=0===s?d[0]:[r/s,a/s],this._map.layerPointToLatLng(l)},_convertLatLngs:function(t){var e=so.prototype._convertLatLngs.call(this,t),i=e.length;return i>=2&&e[0]instanceof q&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){so.prototype._setLatLngs.call(this,t),Ii(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Ii(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new O(e,e);if(t=new R(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var o,n=0,s=this._rings.length;n<s;n++)(o=zi(this._rings[n],t,!0)).length&&this._parts.push(o)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var e,i,o,n,s,r,a,l,d=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(n=0,a=this._parts.length;n<a;n++)for(s=0,r=(l=(e=this._parts[n]).length)-1;s<l;r=s++)i=e[s],o=e[r],i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(d=!d);return d||so.prototype._containsPoint.call(this,t,!0)}});function lo(t,e){return new ao(t,e)}var co=Wi.extend({initialize:function(t,e){m(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,o,n=y(t)?t:t.features;if(n){for(e=0,i=n.length;e<i;e++)((o=n[e]).geometries||o.geometry||o.features||o.coordinates)&&this.addData(o);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=ho(t,s);return r?(r.feature=vo(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=o({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer((function(e){this._setLayerStyle(e,t)}),this)},_setLayerStyle:function(t,e){t.setStyle&&("function"==typeof e&&(e=e(t.feature)),t.setStyle(e))}});function ho(t,e){var i,o,n,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,l=[],d=e&&e.pointToLayer,c=e&&e.coordsToLatLng||uo;if(!a&&!r)return null;switch(r.type){case"Point":return i=c(a),d?d(t,i):new Qi(i);case"MultiPoint":for(n=0,s=a.length;n<s;n++)i=c(a[n]),l.push(d?d(t,i):new Qi(i));return new Wi(l);case"LineString":case"MultiLineString":return o=po(a,"LineString"===r.type?0:1,c),new so(o,e);case"Polygon":case"MultiPolygon":return o=po(a,"Polygon"===r.type?1:2,c),new ao(o,e);case"GeometryCollection":for(n=0,s=r.geometries.length;n<s;n++){var h=ho({geometry:r.geometries[n],type:"Feature",properties:t.properties},e);h&&l.push(h)}return new Wi(l);default:throw new Error("Invalid GeoJSON object.")}}function uo(t){return new q(t[1],t[0],t[2])}function po(t,e,i){for(var o,n=[],s=0,r=t.length;s<r;s++)o=e?po(t[s],e-1,i):(i||uo)(t[s]),n.push(o);return n}function mo(t,e){return e="number"==typeof e?e:6,void 0!==t.alt?[h(t.lng,e),h(t.lat,e),h(t.alt,e)]:[h(t.lng,e),h(t.lat,e)]}function go(t,e,i,o){for(var n=[],s=0,r=t.length;s<r;s++)n.push(e?go(t[s],e-1,i,o):mo(t[s],o));return!e&&i&&n.push(n[0]),n}function fo(t,e){return t.feature?o({},t.feature,{geometry:e}):vo(e)}function vo(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var yo={toGeoJSON:function(t){return fo(this,{type:"Point",coordinates:mo(this.getLatLng(),t)})}};function bo(t,e){return new co(t,e)}Qi.include(yo),oo.include(yo),eo.include(yo),so.include({toGeoJSON:function(t){var e=!Ii(this._latlngs);return fo(this,{type:(e?"Multi":"")+"LineString",coordinates:go(this._latlngs,e?1:0,!1,t)})}}),ao.include({toGeoJSON:function(t){var e=!Ii(this._latlngs),i=e&&!Ii(this._latlngs[0]),o=go(this._latlngs,i?2:e?1:0,!0,t);return e||(o=[o]),fo(this,{type:(i?"Multi":"")+"Polygon",coordinates:o})}}),Vi.include({toMultiPoint:function(t){var e=[];return this.eachLayer((function(i){e.push(i.toGeoJSON(t).geometry.coordinates)})),fo(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===e)return this.toMultiPoint(t);var i="GeometryCollection"===e,o=[];return this.eachLayer((function(e){if(e.toGeoJSON){var n=e.toGeoJSON(t);if(i)o.push(n.geometry);else{var s=vo(n);"FeatureCollection"===s.type?o.push.apply(o,s.features):o.push(s)}}})),i?fo(this,{geometries:o,type:"GeometryCollection"}):{type:"FeatureCollection",features:o}}});var xo=bo,_o=ji.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,e,i){this._url=t,this._bounds=F(e),m(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ve(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ue(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&me(this._image),this},bringToBack:function(){return this._map&&ge(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=F(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,e=this._image=t?this._url:he("img");ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=c,e.onmousemove=c,e.onload=s(this.fire,this,"load"),e.onerror=s(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Ce(this._image,i,e)},_reset:function(){var t=this._image,e=new R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();Se(t,e.min),t.style.width=i.x+"px",t.style.height=i.y+"px"},_updateOpacity:function(){_e(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),wo=function(t,e,i){return new _o(t,e,i)},ko=_o.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,e=this._image=t?this._url:he("video");if(ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),e.onselectstart=c,e.onmousemove=c,e.onloadeddata=s(this.fire,this,"load"),t){for(var i=e.getElementsByTagName("source"),o=[],n=0;n<i.length;n++)o.push(i[n].src);this._url=i.length>0?o:[e.src]}else{y(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&e.style.hasOwnProperty("objectFit")&&(e.style.objectFit="fill"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop;for(var r=0;r<this._url.length;r++){var a=he("source");a.src=this._url[r],e.appendChild(a)}}}});function Co(t,e,i){return new ko(t,e,i)}var So=_o.extend({_initImage:function(){var t=this._image=this._url;ve(t,"leaflet-image-layer"),this._zoomAnimated&&ve(t,"leaflet-zoom-animated"),t.onselectstart=c,t.onmousemove=c}});function Ao(t,e,i){return new So(t,e,i)}var Eo=ji.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,e){m(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&_e(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&_e(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(_e(this._container,0),this._removeTimeout=setTimeout(s(ue,void 0,this._container),200)):ue(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=U(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&me(this._container),this},bringToBack:function(){return this._map&&ge(this._container),this},_prepareOpen:function(t,e,i){if(e instanceof ji||(i=e,e=t),e instanceof Wi)for(var o in t._layers){e=t._layers[o];break}if(!i)if(e.getCenter)i=e.getCenter();else{if(!e.getLatLng)throw new Error("Unable to get source layer LatLng.");i=e.getLatLng()}return this._source=e,this.update(),i},_updateContent:function(){if(this._content){var t=this._contentNode,e="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=P(this.options.offset),i=this._getAnchor();this._zoomAnimated?Se(this._container,t.add(i)):e=e.add(t).add(i);var o=this._containerBottom=-e.y,n=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=o+"px",this._container.style.left=n+"px"}},_getAnchor:function(){return[0,0]}}),$o=Eo.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){Eo.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof to||this._source.on("preclick",Fe))},onRemove:function(t){Eo.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof to||this._source.off("preclick",Fe))},getEvents:function(){var t=Eo.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",e=this._container=he("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),i=this._wrapper=he("div",t+"-content-wrapper",e);if(this._contentNode=he("div",t+"-content",i),Ue(i),qe(this._contentNode),ze(i,"contextmenu",Fe),this._tipContainer=he("div",t+"-tip-container",e),this._tip=he("div",t+"-tip",this._tipContainer),this.options.closeButton){var o=this._closeButton=he("a",t+"-close-button",e);o.href="#close",o.innerHTML="&#215;",ze(o,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var o=t.offsetHeight,n=this.options.maxHeight,s="leaflet-popup-scrolled";n&&o>n?(e.height=n+"px",ve(t,s)):ye(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();Se(this._container,e.add(i))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,e=parseInt(ce(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+e,o=this._containerWidth,n=new O(this._containerLeft,-i-this._containerBottom);n._add(Ae(this._container));var s=t.layerPointToContainerPoint(n),r=P(this.options.autoPanPadding),a=P(this.options.autoPanPaddingTopLeft||r),l=P(this.options.autoPanPaddingBottomRight||r),d=t.getSize(),c=0,h=0;s.x+o+l.x>d.x&&(c=s.x+o-d.x+l.x),s.x-c-a.x<0&&(c=s.x-a.x),s.y+i+l.y>d.y&&(h=s.y+i-d.y+l.y),s.y-h-a.y<0&&(h=s.y-a.y),(c||h)&&t.fire("autopanstart").panBy([c,h])}},_onCloseButtonClick:function(t){this._close(),Ve(t)},_getAnchor:function(){return P(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),To=function(t,e){return new $o(t,e)};ii.mergeOptions({closePopupOnClick:!0}),ii.include({openPopup:function(t,e,i){return t instanceof $o||(t=new $o(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),ji.include({bindPopup:function(t,e){return t instanceof $o?(m(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new $o(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){return this._popup&&this._map&&(e=this._popup._prepareOpen(this,t,e),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(Ve(t),e instanceof to?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Do=Eo.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){Eo.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){Eo.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=Eo.prototype.getEvents.call(this);return Ct&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=he("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,i=this._container,o=e.latLngToContainerPoint(e.getCenter()),n=e.layerPointToContainerPoint(t),s=this.options.direction,r=i.offsetWidth,a=i.offsetHeight,l=P(this.options.offset),d=this._getAnchor();"top"===s?t=t.add(P(-r/2+l.x,-a+l.y+d.y,!0)):"bottom"===s?t=t.subtract(P(r/2-l.x,-l.y,!0)):"center"===s?t=t.subtract(P(r/2+l.x,a/2-d.y+l.y,!0)):"right"===s||"auto"===s&&n.x<o.x?(s="right",t=t.add(P(l.x+d.x,d.y-a/2+l.y,!0))):(s="left",t=t.subtract(P(r+d.x-l.x,a/2-d.y-l.y,!0))),ye(i,"leaflet-tooltip-right"),ye(i,"leaflet-tooltip-left"),ye(i,"leaflet-tooltip-top"),ye(i,"leaflet-tooltip-bottom"),ve(i,"leaflet-tooltip-"+s),Se(i,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&_e(this._container,t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(e)},_getAnchor:function(){return P(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Mo=function(t,e){return new Do(t,e)};ii.include({openTooltip:function(t,e,i){return t instanceof Do||(t=new Do(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),ji.include({bindTooltip:function(t,e){return t instanceof Do?(m(t,e),this._tooltip=t,t._source=this):(this._tooltip&&!e||(this._tooltip=new Do(e,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var e=t?"off":"on",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),Ct&&(i.click=this._openTooltip)),this[e](i),this._tooltipHandlersAdded=!t}},openTooltip:function(t,e){return this._tooltip&&this._map&&(e=this._tooltip._prepareOpen(this,t,e),this._map.openTooltip(this._tooltip,e),this._tooltip.options.interactive&&this._tooltip._container&&(ve(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(ye(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var e=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(e,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var e,i,o=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(e=this._map.mouseEventToContainerPoint(t.originalEvent),i=this._map.containerPointToLayerPoint(e),o=this._map.layerPointToLatLng(i)),this._tooltip.setLatLng(o)}});var Io=Yi.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var e=t&&"DIV"===t.tagName?t:document.createElement("div"),i=this.options;if(i.html instanceof Element?(pe(e),e.appendChild(i.html)):e.innerHTML=!1!==i.html?i.html:"",i.bgPos){var o=P(i.bgPos);e.style.backgroundPosition=-o.x+"px "+-o.y+"px"}return this._setIconStyles(e,"icon"),e},createShadow:function(){return null}});function Oo(t){return new Io(t)}Yi.Default=Ki;var Lo=ji.extend({options:{tileSize:256,opacity:1,updateWhenIdle:bt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){m(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ue(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(me(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(ge(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=l(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof O?t:new O(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,o=-t(-1/0,1/0),n=0,s=i.length;n<s;n++)e=i[n].style.zIndex,i[n]!==this._container&&e&&(o=t(o,+e));isFinite(o)&&(this.options.zIndex=o+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){_e(this._container,this.options.opacity);var t=+new Date,e=!1,i=!1;for(var o in this._tiles){var n=this._tiles[o];if(n.current&&n.loaded){var s=Math.min(1,(t-n.loaded)/200);_e(n.el,s),s<1?e=!0:(n.active?i=!0:this._onOpaqueTile(n),n.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),e&&(E(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this))}},_onOpaqueTile:c,_initContainer:function(){this._container||(this._container=he("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,e=this.options.maxZoom;if(void 0!==t){for(var i in this._levels)this._levels[i].el.children.length||i===t?(this._levels[i].el.style.zIndex=e-Math.abs(t-i),this._onUpdateLevel(i)):(ue(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var o=this._levels[t],n=this._map;return o||((o=this._levels[t]={}).el=he("div","leaflet-tile-container leaflet-zoom-animated",this._container),o.el.style.zIndex=e,o.origin=n.project(n.unproject(n.getPixelOrigin()),t).round(),o.zoom=t,this._setZoomTransform(o,n.getCenter(),n.getZoom()),c(o.el.offsetWidth),this._onCreateLevel(o)),this._level=o,o}},_onUpdateLevel:c,_onRemoveLevel:c,_onCreateLevel:c,_pruneTiles:function(){if(this._map){var t,e,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)if((e=this._tiles[t]).current&&!e.active){var o=e.coords;this._retainParent(o.x,o.y,o.z,o.z-5)||this._retainChildren(o.x,o.y,o.z,o.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var e in this._tiles)this._tiles[e].coords.z===t&&this._removeTile(e)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ue(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,e,i,o){var n=Math.floor(t/2),s=Math.floor(e/2),r=i-1,a=new O(+n,+s);a.z=+r;var l=this._tileCoordsToKey(a),d=this._tiles[l];return d&&d.active?(d.retain=!0,!0):(d&&d.loaded&&(d.retain=!0),r>o&&this._retainParent(n,s,r,o))},_retainChildren:function(t,e,i,o){for(var n=2*t;n<2*t+2;n++)for(var s=2*e;s<2*e+2;s++){var r=new O(n,s);r.z=i+1;var a=this._tileCoordsToKey(r),l=this._tiles[a];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),i+1<o&&this._retainChildren(n,s,i+1,o))}},_resetView:function(t){var e=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),e,e)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var e=this.options;return void 0!==e.minNativeZoom&&t<e.minNativeZoom?e.minNativeZoom:void 0!==e.maxNativeZoom&&e.maxNativeZoom<t?e.maxNativeZoom:t},_setView:function(t,e,i,o){var n=this._clampZoom(Math.round(e));(void 0!==this.options.maxZoom&&n>this.options.maxZoom||void 0!==this.options.minZoom&&n<this.options.minZoom)&&(n=void 0);var s=this.options.updateWhenZooming&&n!==this._tileZoom;o&&!s||(this._tileZoom=n,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==n&&this._update(t),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(t,e)},_setZoomTransforms:function(t,e){for(var i in this._levels)this._setZoomTransform(this._levels[i],t,e)},_setZoomTransform:function(t,e,i){var o=this._map.getZoomScale(i,t.zoom),n=t.origin.multiplyBy(o).subtract(this._map._getNewPixelOrigin(e,i)).round();yt?Ce(t.el,n,o):Se(t.el,n)},_resetGrid:function(){var t=this._map,e=t.options.crs,i=this._tileSize=this.getTileSize(),o=this._tileZoom,n=this._map.getPixelWorldBounds(this._tileZoom);n&&(this._globalTileRange=this._pxBoundsToTileRange(n)),this._wrapX=e.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,e.wrapLng[0]],o).x/i.x),Math.ceil(t.project([0,e.wrapLng[1]],o).x/i.y)],this._wrapY=e.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([e.wrapLat[0],0],o).y/i.x),Math.ceil(t.project([e.wrapLat[1],0],o).y/i.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var e=this._map,i=e._animatingZoom?Math.max(e._animateToZoom,e.getZoom()):e.getZoom(),o=e.getZoomScale(i,this._tileZoom),n=e.project(t,this._tileZoom).floor(),s=e.getSize().divideBy(2*o);return new R(n.subtract(s),n.add(s))},_update:function(t){var e=this._map;if(e){var i=this._clampZoom(e.getZoom());if(void 0===t&&(t=e.getCenter()),void 0!==this._tileZoom){var o=this._getTiledPixelBounds(t),n=this._pxBoundsToTileRange(o),s=n.getCenter(),r=[],a=this.options.keepBuffer,l=new R(n.getBottomLeft().subtract([a,-a]),n.getTopRight().add([a,-a]));if(!(isFinite(n.min.x)&&isFinite(n.min.y)&&isFinite(n.max.x)&&isFinite(n.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var d in this._tiles){var c=this._tiles[d].coords;c.z===this._tileZoom&&l.contains(new O(c.x,c.y))||(this._tiles[d].current=!1)}if(Math.abs(i-this._tileZoom)>1)this._setView(t,i);else{for(var h=n.min.y;h<=n.max.y;h++)for(var u=n.min.x;u<=n.max.x;u++){var p=new O(u,h);if(p.z=this._tileZoom,this._isValidTile(p)){var m=this._tiles[this._tileCoordsToKey(p)];m?m.current=!0:r.push(p)}}if(r.sort((function(t,e){return t.distanceTo(s)-e.distanceTo(s)})),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var g=document.createDocumentFragment();for(u=0;u<r.length;u++)this._addTile(r[u],g);this._level.el.appendChild(g)}}}}},_isValidTile:function(t){var e=this._map.options.crs;if(!e.infinite){var i=this._globalTileRange;if(!e.wrapLng&&(t.x<i.min.x||t.x>i.max.x)||!e.wrapLat&&(t.y<i.min.y||t.y>i.max.y))return!1}if(!this.options.bounds)return!0;var o=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(o)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),o=t.scaleBy(i),n=o.add(i);return[e.unproject(o,t.z),e.unproject(n,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),i=new B(e[0],e[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),i=new O(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(ue(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ve(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=c,t.onmousemove=c,et&&this.options.opacity<1&&_e(t,this.options.opacity),nt&&!st&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var i=this._getTilePos(t),o=this._tileCoordsToKey(t),n=this.createTile(this._wrapCoords(t),s(this._tileReady,this,t));this._initTile(n),this.createTile.length<2&&A(s(this._tileReady,this,t,null,n)),Se(n,i),this._tiles[o]={el:n,coords:t,current:!0},e.appendChild(n),this.fire("tileloadstart",{tile:n,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var o=this._tileCoordsToKey(t);(i=this._tiles[o])&&(i.loaded=+new Date,this._map._fadeAnimated?(_e(i.el,0),E(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(ve(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?A(this._pruneTiles,this):setTimeout(s(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new O(this._wrapX?d(t.x,this._wrapX):t.x,this._wrapY?d(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new R(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function zo(t){return new Lo(t)}var Po=Lo.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=m(this,e)).detectRetina&&Et&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),"string"==typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),nt||this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var i=document.createElement("img");return ze(i,"load",s(this._tileOnLoad,this,e,i)),ze(i,"error",s(this._tileOnError,this,e,i)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),i.alt="",i.setAttribute("role","presentation"),i.src=this.getTileUrl(t),i},getTileUrl:function(t){var e={r:Et?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=i),e["-y"]=i}return v(this._url,o(e,this.options))},_tileOnLoad:function(t,e){et?setTimeout(s(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var o=this.options.errorTileUrl;o&&e.getAttribute("src")!==o&&(e.src=o),t(i,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom;return this.options.zoomReverse&&(t=e-t),t+this.options.zoomOffset},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=c,e.onerror=c,e.complete||(e.src=x,ue(e),delete this._tiles[t]))},_removeTile:function(t){var e=this._tiles[t];if(e)return at||e.el.setAttribute("src",x),Lo.prototype._removeTile.call(this,t)},_tileReady:function(t,e,i){if(this._map&&(!i||i.getAttribute("src")!==x))return Lo.prototype._tileReady.call(this,t,e,i)}});function Ro(t,e){return new Po(t,e)}var No=Po.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var i=o({},this.defaultWmsParams);for(var n in e)n in this.options||(i[n]=e[n]);var s=(e=m(this,e)).detectRetina&&Et?2:1,r=this.getTileSize();i.width=r.x*s,i.height=r.y*s,this.wmsParams=i},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,Po.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),i=this._crs,o=N(i.project(e[0]),i.project(e[1])),n=o.min,s=o.max,r=(this._wmsVersion>=1.3&&this._crs===qi?[n.y,n.x,s.y,s.x]:[n.x,n.y,s.x,s.y]).join(","),a=Po.prototype.getTileUrl.call(this,t);return a+g(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return o(this.wmsParams,t),e||this.redraw(),this}});function Bo(t,e){return new No(t,e)}Po.WMS=No,Ro.wms=Bo;var Fo=ji.extend({options:{padding:.1,tolerance:0},initialize:function(t){m(this,t),a(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&ve(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var i=this._map.getZoomScale(e,this._zoom),o=Ae(this._container),n=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,e),r=this._map.project(t,e).subtract(s),a=n.multiplyBy(-i).add(o).add(n).subtract(r);yt?Ce(this._container,a,i):Se(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),i=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new R(i,i.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),qo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Fo.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");ze(t,"mousemove",l(this._onMouseMove,32,this),this),ze(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),ze(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){E(this._redrawRequest),delete this._ctx,ue(this._container),Re(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),o=Et?2:1;Se(e,t.min),e.width=o*i.x,e.height=o*i.y,e.style.width=i.x+"px",e.style.height=i.y+"px",Et&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Fo.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[a(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,o=e.prev;i?i.prev=o:this._drawLast=o,o?o.next=i:this._drawFirst=i,delete t._order,delete this._layers[a(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var e,i,o=t.options.dashArray.split(/[, ]+/),n=[];for(i=0;i<o.length;i++){if(e=Number(o[i]),isNaN(e))return;n.push(e)}t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||A(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var e=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new R,this._redrawBounds.extend(t._pxBounds.min.subtract([e,e])),this._redrawBounds.extend(t._pxBounds.max.add([e,e]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var e=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,e.x,e.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,e=this._redrawBounds;if(this._ctx.save(),e){var i=e.getSize();this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var o=this._drawFirst;o;o=o.next)t=o.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,e){if(this._drawing){var i,o,n,s,r=t._parts,a=r.length,l=this._ctx;if(a){for(l.beginPath(),i=0;i<a;i++){for(o=0,n=r[i].length;o<n;o++)s=r[i][o],l[o?"lineTo":"moveTo"](s.x,s.y);e&&l.closePath()}this._fillStroke(l,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var e=t._point,i=this._ctx,o=Math.max(Math.round(t._radius),1),n=(Math.max(Math.round(t._radiusY),1)||o)/o;1!==n&&(i.save(),i.scale(1,n)),i.beginPath(),i.arc(e.x,e.y/n,o,0,2*Math.PI,!1),1!==n&&i.restore(),this._fillStroke(i,t)}},_fillStroke:function(t,e){var i=e.options;i.fill&&(t.globalAlpha=i.fillOpacity,t.fillStyle=i.fillColor||i.color,t.fill(i.fillRule||"evenodd")),i.stroke&&0!==i.weight&&(t.setLineDash&&t.setLineDash(e.options&&e.options._dashArray||[]),t.globalAlpha=i.opacity,t.lineWidth=i.weight,t.strokeStyle=i.color,t.lineCap=i.lineCap,t.lineJoin=i.lineJoin,t.stroke())},_onClick:function(t){for(var e,i,o=this._map.mouseEventToLayerPoint(t),n=this._drawFirst;n;n=n.next)(e=n.layer).options.interactive&&e._containsPoint(o)&&!this._map._draggableMoved(e)&&(i=e);i&&(Ke(t),this._fireEvent([i],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var e=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,e)}},_handleMouseOut:function(t){var e=this._hoveredLayer;e&&(ye(this._container,"leaflet-interactive"),this._fireEvent([e],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,e){for(var i,o,n=this._drawFirst;n;n=n.next)(i=n.layer).options.interactive&&i._containsPoint(e)&&(o=i);o!==this._hoveredLayer&&(this._handleMouseOut(t),o&&(ve(this._container,"leaflet-interactive"),this._fireEvent([o],t,"mouseover"),this._hoveredLayer=o)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,e,i){this._map._fireDOMEvent(e,i||e.type,t)},_bringToFront:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;i&&(i.prev=o,o?o.next=i:i&&(this._drawFirst=i),e.prev=this._drawLast,this._drawLast.next=e,e.next=null,this._drawLast=e,this._requestRedraw(t))}},_bringToBack:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;o&&(o.next=i,i?i.prev=o:o&&(this._drawLast=o),e.prev=null,e.next=this._drawFirst,this._drawFirst.prev=e,this._drawFirst=e,this._requestRedraw(t))}}});function Uo(t){return $t?new qo(t):null}var jo=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),Vo={_initContainer:function(){this._container=he("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Fo.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=jo("shape");ve(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=jo("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;ue(e),t.removeInteractiveTarget(e),delete this._layers[a(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,o=t.options,n=t._container;n.stroked=!!o.stroke,n.filled=!!o.fill,o.stroke?(e||(e=t._stroke=jo("stroke")),n.appendChild(e),e.weight=o.weight+"px",e.color=o.color,e.opacity=o.opacity,o.dashArray?e.dashStyle=y(o.dashArray)?o.dashArray.join(" "):o.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=o.lineCap.replace("butt","flat"),e.joinstyle=o.lineJoin):e&&(n.removeChild(e),t._stroke=null),o.fill?(i||(i=t._fill=jo("fill")),n.appendChild(i),i.color=o.fillColor||o.color,i.opacity=o.fillOpacity):i&&(n.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),o=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+o+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){me(t._container)},_bringToBack:function(t){ge(t._container)}},Ho=Dt?jo:X,Wo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=Ho("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Ho("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ue(this._container),Re(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=t.getSize(),i=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Se(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=Ho("path");t.options.className&&ve(e,t.options.className),t.options.interactive&&ve(e,"leaflet-interactive"),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ue(t._path),t.removeInteractiveTarget(t._path),delete this._layers[a(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,i=t.options;e&&(i.stroke?(e.setAttribute("stroke",i.color),e.setAttribute("stroke-opacity",i.opacity),e.setAttribute("stroke-width",i.weight),e.setAttribute("stroke-linecap",i.lineCap),e.setAttribute("stroke-linejoin",i.lineJoin),i.dashArray?e.setAttribute("stroke-dasharray",i.dashArray):e.removeAttribute("stroke-dasharray"),i.dashOffset?e.setAttribute("stroke-dashoffset",i.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),i.fill?(e.setAttribute("fill",i.fillColor||i.color),e.setAttribute("fill-opacity",i.fillOpacity),e.setAttribute("fill-rule",i.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,Q(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),o="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",n=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+o+2*i+",0 "+o+2*-i+",0 ";this._setPath(t,n)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){me(t._path)},_bringToBack:function(t){ge(t._path)}});function Zo(t){return Tt||Dt?new Wo(t):null}Dt&&Wo.include(Vo),ii.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&Uo(t)||Zo(t)}});var Yo=ao.extend({initialize:function(t,e){ao.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=F(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Go(t,e){return new Yo(t,e)}Wo.create=Ho,Wo.pointsToPath=Q,co.geometryToLayer=ho,co.coordsToLatLng=uo,co.coordsToLatLngs=po,co.latLngToCoords=mo,co.latLngsToCoords=go,co.getFeature=fo,co.asFeature=vo,ii.mergeOptions({boxZoom:!0});var Ko=mi.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){ze(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Re(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ue(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ee(),$e(),this._startPoint=this._map.mouseEventToContainerPoint(t),ze(document,{contextmenu:Ve,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=he("div","leaflet-zoom-box",this._container),ve(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new R(this._point,this._startPoint),i=e.getSize();Se(this._box,e.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(ue(this._box),ye(this._container,"leaflet-crosshair")),ie(),Te(),Re(document,{contextmenu:Ve,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(s(this._resetState,this),0);var e=new B(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});ii.addInitHook("addHandler","boxZoom",Ko),ii.mergeOptions({doubleClickZoom:!0});var Xo=mi.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),o=e.options.zoomDelta,n=t.originalEvent.shiftKey?i-o:i+o;"center"===e.options.doubleClickZoom?e.setZoom(n):e.setZoomAround(t.containerPoint,n)}});ii.addInitHook("addHandler","doubleClickZoom",Xo),ii.mergeOptions({dragging:!0,inertia:!st,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Qo=mi.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new xi(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ve(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){ye(this._map._container,"leaflet-grab"),ye(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=N(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.x<e.min.x&&(t.x=this._viscousLimit(t.x,e.min.x)),t.y<e.min.y&&(t.y=this._viscousLimit(t.y,e.min.y)),t.x>e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,o=this._draggable._newPos.x,n=(o-e+i)%t+e-i,s=(o+e+i)%t-e-i,r=Math.abs(n+i)<Math.abs(s+i)?n:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var e=this._map,i=e.options,o=!i.inertia||this._times.length<2;if(e.fire("dragend",t),o)e.fire("moveend");else{this._prunePositions(+new Date);var n=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=i.easeLinearity,a=n.multiplyBy(r/s),l=a.distanceTo([0,0]),d=Math.min(i.inertiaMaxSpeed,l),c=a.multiplyBy(d/l),h=d/(i.inertiaDeceleration*r),u=c.multiplyBy(-h/2).round();u.x||u.y?(u=e._limitOffset(u,e.options.maxBounds),A((function(){e.panBy(u,{duration:h,easeLinearity:r,noMoveStart:!0,animate:!0})}))):e.fire("moveend")}}});ii.addInitHook("addHandler","dragging",Qo),ii.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Jo=mi.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),ze(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Re(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,e=document.documentElement,i=t.scrollTop||e.scrollTop,o=t.scrollLeft||e.scrollLeft;this._map._container.focus(),window.scrollTo(o,i)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var e,i,o=this._panKeys={},n=this.keyCodes;for(e=0,i=n.left.length;e<i;e++)o[n.left[e]]=[-1*t,0];for(e=0,i=n.right.length;e<i;e++)o[n.right[e]]=[t,0];for(e=0,i=n.down.length;e<i;e++)o[n.down[e]]=[0,t];for(e=0,i=n.up.length;e<i;e++)o[n.up[e]]=[0,-1*t]},_setZoomDelta:function(t){var e,i,o=this._zoomKeys={},n=this.keyCodes;for(e=0,i=n.zoomIn.length;e<i;e++)o[n.zoomIn[e]]=t;for(e=0,i=n.zoomOut.length;e<i;e++)o[n.zoomOut[e]]=-t},_addHooks:function(){ze(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Re(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e,i=t.keyCode,o=this._map;if(i in this._panKeys)o._panAnim&&o._panAnim._inProgress||(e=this._panKeys[i],t.shiftKey&&(e=P(e).multiplyBy(3)),o.panBy(e),o.options.maxBounds&&o.panInsideBounds(o.options.maxBounds));else if(i in this._zoomKeys)o.setZoom(o.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[i]);else{if(27!==i||!o._popup||!o._popup.options.closeOnEscapeKey)return;o.closePopup()}Ve(t)}}});ii.addInitHook("addHandler","keyboard",Jo),ii.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var tn=mi.extend({addHooks:function(){ze(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Re(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var e=Ze(t),i=this._map.options.wheelDebounceTime;this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(s(this._performZoom,this),o),Ve(t)},_performZoom:function(){var t=this._map,e=t.getZoom(),i=this._map.options.zoomSnap||0;t._stop();var o=this._delta/(4*this._map.options.wheelPxPerZoomLevel),n=4*Math.log(2/(1+Math.exp(-Math.abs(o))))/Math.LN2,s=i?Math.ceil(n/i)*i:n,r=t._limitZoom(e+(this._delta>0?s:-s))-e;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}});ii.addInitHook("addHandler","scrollWheelZoom",tn),ii.mergeOptions({tap:!0,tapTolerance:15});var en=mi.extend({addHooks:function(){ze(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Re(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(je(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var e=t.touches[0],i=e.target;this._startPos=this._newPos=new O(e.clientX,e.clientY),i.tagName&&"a"===i.tagName.toLowerCase()&&ve(i,"leaflet-active"),this._holdTimeout=setTimeout(s((function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",e))}),this),1e3),this._simulateEvent("mousedown",e),ze(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Re(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var e=t.changedTouches[0],i=e.target;i&&i.tagName&&"a"===i.tagName.toLowerCase()&&ye(i,"leaflet-active"),this._simulateEvent("mouseup",e),this._isTapValid()&&this._simulateEvent("click",e)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new O(e.clientX,e.clientY),this._simulateEvent("mousemove",e)},_simulateEvent:function(t,e){var i=document.createEvent("MouseEvents");i._simulated=!0,e.target._simulatedClick=!0,i.initMouseEvent(t,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(i)}});Ct&&!kt&&ii.addInitHook("addHandler","tap",en),ii.mergeOptions({touchZoom:Ct&&!st,bounceAtZoomLimits:!0});var on=mi.extend({addHooks:function(){ve(this._map._container,"leaflet-touch-zoom"),ze(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){ye(this._map._container,"leaflet-touch-zoom"),Re(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),"center"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(i.add(o)._divideBy(2))),this._startDist=i.distanceTo(o),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),ze(document,"touchmove",this._onTouchMove,this),ze(document,"touchend",this._onTouchEnd,this),je(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]),n=i.distanceTo(o)/this._startDist;if(this._zoom=e.getScaleZoom(n,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoom<e.getMinZoom()&&n<1||this._zoom>e.getMaxZoom()&&n>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===n)return}else{var r=i._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===n&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),E(this._animRequest);var a=s(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=A(a,this,!0),je(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,E(this._animRequest),Re(document,"touchmove",this._onTouchMove),Re(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});ii.addInitHook("addHandler","touchZoom",on),ii.BoxZoom=Ko,ii.DoubleClickZoom=Xo,ii.Drag=Qo,ii.Keyboard=Jo,ii.ScrollWheelZoom=tn,ii.Tap=en,ii.TouchZoom=on,Object.freeze=i,t.version=e,t.Control=ni,t.control=si,t.Browser=It,t.Evented=I,t.Mixin=fi,t.Util=$,t.Class=T,t.Handler=mi,t.extend=o,t.bind=s,t.stamp=a,t.setOptions=m,t.DomEvent=ti,t.DomUtil=Le,t.PosAnimation=ei,t.Draggable=xi,t.LineUtil=Li,t.PolyUtil=Pi,t.Point=O,t.point=P,t.Bounds=R,t.bounds=N,t.Transformation=Z,t.transformation=Y,t.Projection=Bi,t.LatLng=q,t.latLng=U,t.LatLngBounds=B,t.latLngBounds=F,t.CRS=j,t.GeoJSON=co,t.geoJSON=bo,t.geoJson=xo,t.Layer=ji,t.LayerGroup=Vi,t.layerGroup=Hi,t.FeatureGroup=Wi,t.featureGroup=Zi,t.ImageOverlay=_o,t.imageOverlay=wo,t.VideoOverlay=ko,t.videoOverlay=Co,t.SVGOverlay=So,t.svgOverlay=Ao,t.DivOverlay=Eo,t.Popup=$o,t.popup=To,t.Tooltip=Do,t.tooltip=Mo,t.Icon=Yi,t.icon=Gi,t.DivIcon=Io,t.divIcon=Oo,t.Marker=Qi,t.marker=Ji,t.TileLayer=Po,t.tileLayer=Ro,t.GridLayer=Lo,t.gridLayer=zo,t.SVG=Wo,t.svg=Zo,t.Renderer=Fo,t.Canvas=qo,t.canvas=Uo,t.Path=to,t.CircleMarker=eo,t.circleMarker=io,t.Circle=oo,t.circle=no,t.Polyline=so,t.polyline=ro,t.Polygon=ao,t.polygon=lo,t.Rectangle=Yo,t.rectangle=Go,t.Map=ii,t.map=oi;var nn=window.L;t.noConflict=function(){return window.L=nn,this},window.L=t})(bw.exports);var xw=bw.exports;const _w={weight:1,opacity:1,color:"white",fillOpacity:.7,fillColor:"#2387ca"},ww={weight:3,color:"white",fillOpacity:1,fillColor:"#2387ca"},kw=()=>_w;class Cw extends dt{static get styles(){return a`
13612
+ `}}t([mt({type:Array,attribute:!1})],xw.prototype,"path",void 0),t([mt()],xw.prototype,"endpoint",void 0),t([mt()],xw.prototype,"osmId",void 0),t([mt({type:Object})],xw.prototype,"hovered",void 0),t([mt({type:Object})],xw.prototype,"editFeature",void 0),t([mt({type:String,attribute:!1})],xw.prototype,"editFeatureAliases",void 0);"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var _w={exports:{}};(function(t){var e="1.5.1+build.2e3e0ffb",i=Object.freeze;function o(t){var e,i,o,n;for(i=1,o=arguments.length;i<o;i++)for(e in n=arguments[i])t[e]=n[e];return t}Object.freeze=function(t){return t};var n=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}();function s(t,e){var i=Array.prototype.slice;if(t.bind)return t.bind.apply(t,i.call(arguments,1));var o=i.call(arguments,2);return function(){return t.apply(e,o.length?o.concat(i.call(arguments)):arguments)}}var r=0;function a(t){return t._leaflet_id=t._leaflet_id||++r,t._leaflet_id}function l(t,e,i){var o,n,s,r;return r=function(){o=!1,n&&(s.apply(i,n),n=!1)},s=function(){o?n=arguments:(t.apply(i,arguments),setTimeout(r,e),o=!0)},s}function d(t,e,i){var o=e[1],n=e[0],s=o-n;return t===o&&i?t:((t-n)%s+s)%s+n}function c(){return!1}function h(t,e){return e=void 0===e?6:e,+(Math.round(t+"e+"+e)+"e-"+e)}function u(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function p(t){return u(t).split(/\s+/)}function m(t,e){for(var i in t.hasOwnProperty("options")||(t.options=t.options?n(t.options):{}),e)t.options[i]=e[i];return t.options}function g(t,e,i){var o=[];for(var n in t)o.push(encodeURIComponent(i?n.toUpperCase():n)+"="+encodeURIComponent(t[n]));return(e&&-1!==e.indexOf("?")?"&":"?")+o.join("&")}var f=/\{ *([\w_-]+) *\}/g;function v(t,e){return t.replace(f,(function(t,i){var o=e[i];if(void 0===o)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o}))}var y=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function b(t,e){for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function _(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var w=0;function k(t){var e=+new Date,i=Math.max(0,16-(e-w));return w=e+i,window.setTimeout(t,i)}var C=window.requestAnimationFrame||_("RequestAnimationFrame")||k,S=window.cancelAnimationFrame||_("CancelAnimationFrame")||_("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function A(t,e,i){if(!i||C!==k)return C.call(window,s(t,e));t.call(e)}function E(t){t&&S.call(window,t)}var $=(Object.freeze||Object)({freeze:i,extend:o,create:n,bind:s,lastId:r,stamp:a,throttle:l,wrapNum:d,falseFn:c,formatNum:h,trim:u,splitWords:p,setOptions:m,getParamString:g,template:v,isArray:y,indexOf:b,emptyImageUrl:x,requestFn:C,cancelFn:S,requestAnimFrame:A,cancelAnimFrame:E});function T(){}function D(t){if("undefined"!=typeof L&&L&&L.Mixin){t=y(t)?t:[t];for(var e=0;e<t.length;e++)t[e]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}T.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},i=e.__super__=this.prototype,s=n(i);for(var r in s.constructor=e,e.prototype=s,this)this.hasOwnProperty(r)&&"prototype"!==r&&"__super__"!==r&&(e[r]=this[r]);return t.statics&&(o(e,t.statics),delete t.statics),t.includes&&(D(t.includes),o.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=o(n(s.options),t.options)),o(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){i.callInitHooks&&i.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=s._initHooks.length;t<e;t++)s._initHooks[t].call(this)}},e},T.include=function(t){return o(this.prototype,t),this},T.mergeOptions=function(t){return o(this.prototype.options,t),this},T.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};var M={on:function(t,e,i){if("object"==typeof t)for(var o in t)this._on(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._on(t[n],e,i);return this},off:function(t,e,i){if(t)if("object"==typeof t)for(var o in t)this._off(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._off(t[n],e,i);else delete this._events;return this},_on:function(t,e,i){this._events=this._events||{};var o=this._events[t];o||(o=[],this._events[t]=o),i===this&&(i=void 0);for(var n={fn:e,ctx:i},s=o,r=0,a=s.length;r<a;r++)if(s[r].fn===e&&s[r].ctx===i)return;s.push(n)},_off:function(t,e,i){var o,n,s;if(this._events&&(o=this._events[t]))if(e){if(i===this&&(i=void 0),o)for(n=0,s=o.length;n<s;n++){var r=o[n];if(r.ctx===i&&r.fn===e)return r.fn=c,this._firingCount&&(this._events[t]=o=o.slice()),void o.splice(n,1)}}else{for(n=0,s=o.length;n<s;n++)o[n].fn=c;delete this._events[t]}},fire:function(t,e,i){if(!this.listens(t,i))return this;var n=o({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var l=s[r];l.fn.call(l.ctx||this,n)}this._firingCount--}}return i&&this._propagateEvent(n),this},listens:function(t,e){var i=this._events&&this._events[t];if(i&&i.length)return!0;if(e)for(var o in this._eventParents)if(this._eventParents[o].listens(t,e))return!0;return!1},once:function(t,e,i){if("object"==typeof t){for(var o in t)this.once(o,t[o],e);return this}var n=s((function(){this.off(t,e,i).off(t,n,i)}),this);return this.on(t,e,i).on(t,n,i)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[a(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[a(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,o({layer:t.target,propagatedFrom:t.target},t),!0)}};M.addEventListener=M.on,M.removeEventListener=M.clearAllEventListeners=M.off,M.addOneTimeEventListener=M.once,M.fireEvent=M.fire,M.hasEventListeners=M.listens;var I=T.extend(M);function O(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e}var z=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};function P(t,e,i){return t instanceof O?t:y(t)?new O(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new O(t.x,t.y):new O(t,e,i)}function R(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function N(t,e){return!t||t instanceof R?t:new R(t,e)}function B(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function F(t,e){return t instanceof B?t:new B(t,e)}function q(t,e,i){if(isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=+t,this.lng=+e,void 0!==i&&(this.alt=+i)}function U(t,e,i){return t instanceof q?t:y(t)&&"object"!=typeof t[0]?3===t.length?new q(t[0],t[1],t[2]):2===t.length?new q(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new q(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===e?null:new q(t,e,i)}O.prototype={clone:function(){return new O(this.x,this.y)},add:function(t){return this.clone()._add(P(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(P(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new O(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new O(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=z(this.x),this.y=z(this.y),this},distanceTo:function(t){var e=(t=P(t)).x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return(t=P(t)).x===this.x&&t.y===this.y},contains:function(t){return t=P(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+h(this.x)+", "+h(this.y)+")"}},R.prototype={extend:function(t){return t=P(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new O((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new O(this.min.x,this.max.y)},getTopRight:function(){return new O(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return(t="number"==typeof t[0]||t instanceof O?P(t):N(t))instanceof R?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>=e.x&&o.x<=i.x,r=n.y>=e.y&&o.y<=i.y;return s&&r},overlaps:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>e.x&&o.x<i.x,r=n.y>e.y&&o.y<i.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},B.prototype={extend:function(t){var e,i,o=this._southWest,n=this._northEast;if(t instanceof q)e=t,i=t;else{if(!(t instanceof B))return t?this.extend(U(t)||F(t)):this;if(e=t._southWest,i=t._northEast,!e||!i)return this}return o||n?(o.lat=Math.min(e.lat,o.lat),o.lng=Math.min(e.lng,o.lng),n.lat=Math.max(i.lat,n.lat),n.lng=Math.max(i.lng,n.lng)):(this._southWest=new q(e.lat,e.lng),this._northEast=new q(i.lat,i.lng)),this},pad:function(t){var e=this._southWest,i=this._northEast,o=Math.abs(e.lat-i.lat)*t,n=Math.abs(e.lng-i.lng)*t;return new B(new q(e.lat-o,e.lng-n),new q(i.lat+o,i.lng+n))},getCenter:function(){return new q((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new q(this.getNorth(),this.getWest())},getSouthEast:function(){return new q(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof q||"lat"in t?U(t):F(t);var e,i,o=this._southWest,n=this._northEast;return t instanceof B?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=o.lat&&i.lat<=n.lat&&e.lng>=o.lng&&i.lng<=n.lng},intersects:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>=e.lat&&o.lat<=i.lat,r=n.lng>=e.lng&&o.lng<=i.lng;return s&&r},overlaps:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>e.lat&&o.lat<i.lat,r=n.lng>e.lng&&o.lng<i.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,e){return!!t&&(t=F(t),this._southWest.equals(t.getSouthWest(),e)&&this._northEast.equals(t.getNorthEast(),e))},isValid:function(){return!(!this._southWest||!this._northEast)}},q.prototype={equals:function(t,e){return!!t&&(t=U(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===e?1e-9:e))},toString:function(t){return"LatLng("+h(this.lat,t)+", "+h(this.lng,t)+")"},distanceTo:function(t){return V.distance(this,U(t))},wrap:function(){return V.wrapLatLng(this)},toBounds:function(t){var e=180*t/40075017,i=e/Math.cos(Math.PI/180*this.lat);return F([this.lat-e,this.lng-i],[this.lat+e,this.lng+i])},clone:function(){return new q(this.lat,this.lng,this.alt)}};var j={latLngToPoint:function(t,e){var i=this.projection.project(t),o=this.scale(e);return this.transformation._transform(i,o)},pointToLatLng:function(t,e){var i=this.scale(e),o=this.transformation.untransform(t,i);return this.projection.unproject(o)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var e=this.projection.bounds,i=this.scale(t);return new R(this.transformation.transform(e.min,i),this.transformation.transform(e.max,i))},infinite:!1,wrapLatLng:function(t){var e=this.wrapLng?d(t.lng,this.wrapLng,!0):t.lng;return new q(this.wrapLat?d(t.lat,this.wrapLat,!0):t.lat,e,t.alt)},wrapLatLngBounds:function(t){var e=t.getCenter(),i=this.wrapLatLng(e),o=e.lat-i.lat,n=e.lng-i.lng;if(0===o&&0===n)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new B(new q(s.lat-o,s.lng-n),new q(r.lat-o,r.lng-n))}},V=o({},j,{wrapLng:[-180,180],R:6371e3,distance:function(t,e){var i=Math.PI/180,o=t.lat*i,n=e.lat*i,s=Math.sin((e.lat-t.lat)*i/2),r=Math.sin((e.lng-t.lng)*i/2),a=s*s+Math.cos(o)*Math.cos(n)*r*r,l=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*l}}),H=6378137,W={R:H,MAX_LATITUDE:85.0511287798,project:function(t){var e=Math.PI/180,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),n=Math.sin(o*e);return new O(this.R*t.lng*e,this.R*Math.log((1+n)/(1-n))/2)},unproject:function(t){var e=180/Math.PI;return new q((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*e,t.x*e/this.R)},bounds:function(){var t=H*Math.PI;return new R([-t,-t],[t,t])}()};function Z(t,e,i,o){if(y(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=e,this._c=i,this._d=o}function Y(t,e,i,o){return new Z(t,e,i,o)}Z.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new O((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}};var G=o({},V,{code:"EPSG:3857",projection:W,transformation:function(){var t=.5/(Math.PI*W.R);return Y(t,.5,-t,.5)}()}),K=o({},G,{code:"EPSG:900913"});function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,e){var i,o,n,s,r,a,l="";for(i=0,n=t.length;i<n;i++){for(o=0,s=(r=t[i]).length;o<s;o++)l+=(o?"L":"M")+(a=r[o]).x+" "+a.y;l+=e?Tt?"z":"x":""}return l||"M0 0"}var J=document.documentElement.style,tt="ActiveXObject"in window,et=tt&&!document.addEventListener,it="msLaunchUri"in navigator&&!("documentMode"in document),ot=Mt("webkit"),nt=Mt("android"),st=Mt("android 2")||Mt("android 3"),rt=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),at=nt&&Mt("Google")&&rt<537&&!("AudioNode"in window),lt=!!window.opera,dt=Mt("chrome"),ct=Mt("gecko")&&!ot&&!lt&&!tt,ht=!dt&&Mt("safari"),ut=Mt("phantom"),pt="OTransition"in J,mt=0===navigator.platform.indexOf("Win"),gt=tt&&"transition"in J,ft="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!st,vt="MozPerspective"in J,yt=!window.L_DISABLE_3D&&(gt||ft||vt)&&!pt&&!ut,bt="undefined"!=typeof orientation||Mt("mobile"),xt=bt&&ot,_t=bt&&ft,wt=!window.PointerEvent&&window.MSPointerEvent,kt=!(!window.PointerEvent&&!wt),Ct=!window.L_NO_TOUCH&&(kt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),St=bt&&lt,At=bt&&ct,Et=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,$t=!!document.createElement("canvas").getContext,Tt=!(!document.createElementNS||!X("svg").createSVGRect),Dt=!Tt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}();function Mt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var It=(Object.freeze||Object)({ie:tt,ielt9:et,edge:it,webkit:ot,android:nt,android23:st,androidStock:at,opera:lt,chrome:dt,gecko:ct,safari:ht,phantom:ut,opera12:pt,win:mt,ie3d:gt,webkit3d:ft,gecko3d:vt,any3d:yt,mobile:bt,mobileWebkit:xt,mobileWebkit3d:_t,msPointer:wt,pointer:kt,touch:Ct,mobileOpera:St,mobileGecko:At,retina:Et,canvas:$t,svg:Tt,vml:Dt}),Ot=wt?"MSPointerDown":"pointerdown",Lt=wt?"MSPointerMove":"pointermove",zt=wt?"MSPointerUp":"pointerup",Pt=wt?"MSPointerCancel":"pointercancel",Rt=["INPUT","SELECT","OPTION"],Nt={},Bt=!1,Ft=0;function qt(t,e,i,o){return"touchstart"===e?jt(t,i,o):"touchmove"===e?Yt(t,i,o):"touchend"===e&&Gt(t,i,o),this}function Ut(t,e,i){var o=t["_leaflet_"+e+i];return"touchstart"===e?t.removeEventListener(Ot,o,!1):"touchmove"===e?t.removeEventListener(Lt,o,!1):"touchend"===e&&(t.removeEventListener(zt,o,!1),t.removeEventListener(Pt,o,!1)),this}function jt(t,e,i){var o=s((function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Rt.indexOf(t.target.tagName)<0))return;je(t)}Zt(t,e)}));t["_leaflet_touchstart"+i]=o,t.addEventListener(Ot,o,!1),Bt||(document.documentElement.addEventListener(Ot,Vt,!0),document.documentElement.addEventListener(Lt,Ht,!0),document.documentElement.addEventListener(zt,Wt,!0),document.documentElement.addEventListener(Pt,Wt,!0),Bt=!0)}function Vt(t){Nt[t.pointerId]=t,Ft++}function Ht(t){Nt[t.pointerId]&&(Nt[t.pointerId]=t)}function Wt(t){delete Nt[t.pointerId],Ft--}function Zt(t,e){for(var i in t.touches=[],Nt)t.touches.push(Nt[i]);t.changedTouches=[t],e(t)}function Yt(t,e,i){var o=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&Zt(t,e)};t["_leaflet_touchmove"+i]=o,t.addEventListener(Lt,o,!1)}function Gt(t,e,i){var o=function(t){Zt(t,e)};t["_leaflet_touchend"+i]=o,t.addEventListener(zt,o,!1),t.addEventListener(Pt,o,!1)}var Kt=wt?"MSPointerDown":kt?"pointerdown":"touchstart",Xt=wt?"MSPointerUp":kt?"pointerup":"touchend",Qt="_leaflet_";function Jt(t,e,i){var o,n,s=!1,r=250;function a(t){var e;if(kt){if(!it||"mouse"===t.pointerType)return;e=Ft}else e=t.touches.length;if(!(e>1)){var i=Date.now(),a=i-(o||i);n=t.touches?t.touches[0]:t,s=a>0&&a<=r,o=i}}function l(t){if(s&&!n.cancelBubble){if(kt){if(!it||"mouse"===t.pointerType)return;var i,r,a={};for(r in n)i=n[r],a[r]=i&&i.bind?i.bind(n):i;n=a}n.type="dblclick",n.button=0,e(n),o=null}}return t[Qt+Kt+i]=a,t[Qt+Xt+i]=l,t[Qt+"dblclick"+i]=e,t.addEventListener(Kt,a,!1),t.addEventListener(Xt,l,!1),t.addEventListener("dblclick",e,!1),this}function te(t,e){var i=t[Qt+Kt+e],o=t[Qt+Xt+e],n=t[Qt+"dblclick"+e];return t.removeEventListener(Kt,i,!1),t.removeEventListener(Xt,o,!1),it||t.removeEventListener("dblclick",n,!1),this}var ee,ie,oe,ne,se,re=ke(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ae=ke(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),le="webkitTransition"===ae||"OTransition"===ae?ae+"End":"transitionend";function de(t){return"string"==typeof t?document.getElementById(t):t}function ce(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!i||"auto"===i)&&document.defaultView){var o=document.defaultView.getComputedStyle(t,null);i=o?o[e]:null}return"auto"===i?null:i}function he(t,e,i){var o=document.createElement(t);return o.className=e||"",i&&i.appendChild(o),o}function ue(t){var e=t.parentNode;e&&e.removeChild(t)}function pe(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function me(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function fe(t,e){if(void 0!==t.classList)return t.classList.contains(e);var i=xe(t);return i.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(i)}function ve(t,e){if(void 0!==t.classList)for(var i=p(e),o=0,n=i.length;o<n;o++)t.classList.add(i[o]);else if(!fe(t,e)){var s=xe(t);be(t,(s?s+" ":"")+e)}}function ye(t,e){void 0!==t.classList?t.classList.remove(e):be(t,u((" "+xe(t)+" ").replace(" "+e+" "," ")))}function be(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e}function xe(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function _e(t,e){"opacity"in t.style?t.style.opacity=e:"filter"in t.style&&we(t,e)}function we(t,e){var i=!1,o="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(o)}catch(t){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+o+"(opacity="+e+")"}function ke(t){for(var e=document.documentElement.style,i=0;i<t.length;i++)if(t[i]in e)return t[i];return!1}function Ce(t,e,i){var o=e||new O(0,0);t.style[re]=(gt?"translate("+o.x+"px,"+o.y+"px)":"translate3d("+o.x+"px,"+o.y+"px,0)")+(i?" scale("+i+")":"")}function Se(t,e){t._leaflet_pos=e,yt?Ce(t,e):(t.style.left=e.x+"px",t.style.top=e.y+"px")}function Ae(t){return t._leaflet_pos||new O(0,0)}if("onselectstart"in document)ee=function(){ze(window,"selectstart",je)},ie=function(){Re(window,"selectstart",je)};else{var Ee=ke(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);ee=function(){if(Ee){var t=document.documentElement.style;oe=t[Ee],t[Ee]="none"}},ie=function(){Ee&&(document.documentElement.style[Ee]=oe,oe=void 0)}}function $e(){ze(window,"dragstart",je)}function Te(){Re(window,"dragstart",je)}function De(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Me(),ne=t,se=t.style.outline,t.style.outline="none",ze(window,"keydown",Me))}function Me(){ne&&(ne.style.outline=se,ne=void 0,se=void 0,Re(window,"keydown",Me))}function Ie(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function Oe(t){var e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}var Le=(Object.freeze||Object)({TRANSFORM:re,TRANSITION:ae,TRANSITION_END:le,get:de,getStyle:ce,create:he,remove:ue,empty:pe,toFront:me,toBack:ge,hasClass:fe,addClass:ve,removeClass:ye,setClass:be,getClass:xe,setOpacity:_e,testProp:ke,setTransform:Ce,setPosition:Se,getPosition:Ae,disableTextSelection:ee,enableTextSelection:ie,disableImageDrag:$e,enableImageDrag:Te,preventOutline:De,restoreOutline:Me,getSizedParentNode:Ie,getScale:Oe});function ze(t,e,i,o){if("object"==typeof e)for(var n in e)Ne(t,n,e[n],i);else for(var s=0,r=(e=p(e)).length;s<r;s++)Ne(t,e[s],i,o);return this}var Pe="_leaflet_events";function Re(t,e,i,o){if("object"==typeof e)for(var n in e)Be(t,n,e[n],i);else if(e)for(var s=0,r=(e=p(e)).length;s<r;s++)Be(t,e[s],i,o);else{for(var a in t[Pe])Be(t,a,t[Pe][a]);delete t[Pe]}return this}function Ne(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):"");if(t[Pe]&&t[Pe][n])return this;var s=function(e){return i.call(o||t,e||window.event)},r=s;kt&&0===e.indexOf("touch")?qt(t,e,s,n):!Ct||"dblclick"!==e||!Jt||kt&&dt?"addEventListener"in t?"mousewheel"===e?t.addEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):"mouseenter"===e||"mouseleave"===e?(s=function(e){e=e||window.event,Qe(t,e)&&r(e)},t.addEventListener("mouseenter"===e?"mouseover":"mouseout",s,!1)):("click"===e&&nt&&(s=function(t){Je(t,r)}),t.addEventListener(e,s,!1)):"attachEvent"in t&&t.attachEvent("on"+e,s):Jt(t,s,n),t[Pe]=t[Pe]||{},t[Pe][n]=s}function Be(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):""),s=t[Pe]&&t[Pe][n];if(!s)return this;kt&&0===e.indexOf("touch")?Ut(t,e,n):!Ct||"dblclick"!==e||!te||kt&&dt?"removeEventListener"in t?"mousewheel"===e?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):t.removeEventListener("mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,s,!1):"detachEvent"in t&&t.detachEvent("on"+e,s):te(t,n),t[Pe][n]=null}function Fe(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Xe(t),this}function qe(t){return Ne(t,"mousewheel",Fe),this}function Ue(t){return ze(t,"mousedown touchstart dblclick",Fe),Ne(t,"click",Ke),this}function je(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Ve(t){return je(t),Fe(t),this}function He(t,e){if(!e)return new O(t.clientX,t.clientY);var i=Oe(e),o=i.boundingClientRect;return new O((t.clientX-o.left)/i.x-e.clientLeft,(t.clientY-o.top)/i.y-e.clientTop)}var We=mt&&dt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Ze(t){return it?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/We:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Ye,Ge={};function Ke(t){Ge[t.type]=!0}function Xe(t){var e=Ge[t.type];return Ge[t.type]=!1,e}function Qe(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(t){return!1}return i!==t}function Je(t,e){var i=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,o=Ye&&i-Ye;o&&o>100&&o<500||t.target._simulatedClick&&!t._simulated?Ve(t):(Ye=i,e(t))}var ti=(Object.freeze||Object)({on:ze,off:Re,stopPropagation:Fe,disableScrollPropagation:qe,disableClickPropagation:Ue,preventDefault:je,stop:Ve,getMousePosition:He,getWheelDelta:Ze,fakeStop:Ke,skipped:Xe,isExternalTarget:Qe,addListener:ze,removeListener:Re}),ei=I.extend({run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(o||.5,.2),this._startPos=Ae(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=A(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e<i?this._runFrame(this._easeOut(e/i),t):(this._runFrame(1),this._complete())},_runFrame:function(t,e){var i=this._startPos.add(this._offset.multiplyBy(t));e&&i._round(),Se(this._el,i),this.fire("step")},_complete:function(){E(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),ii=I.extend({options:{crs:G,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,e){e=m(this,e),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=s(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),void 0!==e.zoom&&(this._zoom=this._limitZoom(e.zoom)),e.center&&void 0!==e.zoom&&this.setView(U(e.center),e.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ae&&yt&&!St&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),ze(this._proxy,le,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,i){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(U(t),e,this.options.maxBounds),i=i||{},this._stop(),this._loaded&&!i.reset&&!0!==i&&(void 0!==i.animate&&(i.zoom=o({animate:i.animate},i.zoom),i.pan=o({animate:i.animate,duration:i.duration},i.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,i.zoom):this._tryAnimatedPan(t,i.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=t,this)},zoomIn:function(t,e){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,e)},zoomOut:function(t,e){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,e)},setZoomAround:function(t,e,i){var o=this.getZoomScale(e),n=this.getSize().divideBy(2),s=(t instanceof O?t:this.latLngToContainerPoint(t)).subtract(n).multiplyBy(1-1/o),r=this.containerPointToLatLng(n.add(s));return this.setView(r,e,{zoom:i})},_getBoundsCenterZoom:function(t,e){e=e||{},t=t.getBounds?t.getBounds():F(t);var i=P(e.paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getBoundsZoom(t,!1,i.add(o));if((n="number"==typeof e.maxZoom?Math.min(e.maxZoom,n):n)===1/0)return{center:t.getCenter(),zoom:n};var s=o.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),n),a=this.project(t.getNorthEast(),n);return{center:this.unproject(r.add(a).divideBy(2).add(s),n),zoom:n}},fitBounds:function(t,e){if(!(t=F(t)).isValid())throw new Error("Bounds are not valid.");var i=this._getBoundsCenterZoom(t,e);return this.setView(i.center,i.zoom,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t,e){if(e=e||{},!(t=P(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==e.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new ei,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),!1!==e.animate){ve(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,e,i){if(!1===(i=i||{}).animate||!yt)return this.setView(t,e,i);this._stop();var o=this.project(this.getCenter()),n=this.project(t),s=this.getSize(),r=this._zoom;t=U(t),e=void 0===e?r:e;var a=Math.max(s.x,s.y),l=a*this.getZoomScale(r,e),d=n.distanceTo(o)||1,c=1.42,h=c*c;function u(t){var e=(l*l-a*a+(t?-1:1)*h*h*d*d)/(2*(t?l:a)*h*d),i=Math.sqrt(e*e+1)-e;return i<1e-9?-18:Math.log(i)}function p(t){return(Math.exp(t)-Math.exp(-t))/2}function m(t){return(Math.exp(t)+Math.exp(-t))/2}function g(t){return p(t)/m(t)}var f=u(0);function v(t){return a*(m(f)/m(f+c*t))}function y(t){return a*(m(f)*g(f+c*t)-p(f))/h}function b(t){return 1-Math.pow(1-t,1.5)}var x=Date.now(),_=(u(1)-f)/c,w=i.duration?1e3*i.duration:1e3*_*.8;function k(){var i=(Date.now()-x)/w,s=b(i)*_;i<=1?(this._flyToFrame=A(k,this),this._move(this.unproject(o.add(n.subtract(o).multiplyBy(y(s)/d)),r),this.getScaleZoom(a/v(s),r),{flyTo:!0})):this._move(t,e)._moveEnd(!0)}return this._moveStart(!0,i.noMoveStart),k.call(this),this},flyToBounds:function(t,e){var i=this._getBoundsCenterZoom(t,e);return this.flyTo(i.center,i.zoom,e)},setMaxBounds:function(t){return(t=F(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var e=this.options.minZoom;return this.options.minZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var e=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),o=this._limitCenter(i,this._zoom,F(t));return i.equals(o)||this.panTo(o,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=P((e=e||{}).paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getCenter(),s=this.project(n),r=this.project(t),a=this.getPixelBounds(),l=a.getSize().divideBy(2),d=N([a.min.add(i),a.max.subtract(o)]);if(!d.contains(r)){this._enforcingBounds=!0;var c=s.subtract(r),h=P(r.x+c.x,r.y+c.y);(r.x<d.min.x||r.x>d.max.x)&&(h.x=s.x-c.x,c.x>0?h.x+=l.x-i.x:h.x-=l.x-o.x),(r.y<d.min.y||r.y>d.max.y)&&(h.y=s.y-c.y,c.y>0?h.y+=l.y-i.y:h.y-=l.y-o.y),this.panTo(this.unproject(h),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=o({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),r=i.divideBy(2).round(),a=n.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(s(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=o({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=s(this._handleGeolocationResponse,this),i=s(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=new q(t.coords.latitude,t.coords.longitude),i=e.toBounds(2*t.coords.accuracy),o=this._locateOptions;if(o.setView){var n=this.getBoundsZoom(i);this.setView(e,o.maxZoom?Math.min(n,o.maxZoom):n)}var s={latlng:e,bounds:i,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ue(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(E(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ue(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var i=he("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new B(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=F(t),i=P(i||[0,0]);var o=this.getZoom()||0,n=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),l=this.getSize().subtract(i),d=N(this.project(a,o),this.project(r,o)).getSize(),c=yt?this.options.zoomSnap:1,h=l.x/d.x,u=l.y/d.y,p=e?Math.max(h,u):Math.min(h,u);return o=this.getScaleZoom(p,o),c&&(o=Math.round(o/(c/100))*(c/100),o=e?Math.ceil(o/c)*c:Math.floor(o/c)*c),Math.max(n,Math.min(s,o))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new O(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new R(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs;e=void 0===e?this._zoom:e;var o=i.zoom(t*i.scale(e));return isNaN(o)?1/0:o},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(U(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(P(t),e)},layerPointToLatLng:function(t){var e=P(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(U(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(U(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(U(t),U(e))},containerPointToLayerPoint:function(t){return P(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return P(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(P(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(U(t)))},mouseEventToContainerPoint:function(t){return He(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=de(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");ze(e,"scroll",this._onScroll,this),this._containerId=a(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&yt,ve(t,"leaflet-container"+(Ct?" leaflet-touch":"")+(Et?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(ht?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=ce(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Se(this._mapPane,new O(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ve(t.markerPane,"leaflet-zoom-hide"),ve(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){Se(this._mapPane,new O(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var o=this._zoom!==e;this._moveStart(o,!1)._move(t,e)._moveEnd(o),this.fire("viewreset"),i&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return E(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Se(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[a(this._container)]=this;var e=t?Re:ze;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),yt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){E(this._resizeRequest),this._resizeRequest=A((function(){this.invalidateSize({debounceMoveend:!0})}),this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,o=[],n="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[a(s)])&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(n&&!Qe(s,t))break;if(o.push(i),n)break}if(s===this._container)break;s=s.parentNode}return o.length||r||n||!Qe(s,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Xe(t)){var e=t.type;"mousedown"!==e&&"keypress"!==e&&"keyup"!==e&&"keydown"!==e||De(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){if("click"===t.type){var n=o({},t);n.type="preclick",this._fireDOMEvent(n,n.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e))).length){var s=i[0];"contextmenu"===e&&s.listens(e,!0)&&je(t);var r={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var l=0;l<i.length;l++)if(i[l].fire(e,r,!0),r.originalEvent._stopped||!1===i[l].options.bubblingMouseEvents&&-1!==b(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,e=this._handlers.length;t<e;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,{target:this}):this.on("load",t,e),this},_getMapPanePos:function(){return Ae(this._mapPane)||new O(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,e){return(t&&void 0!==e?this._getNewPixelOrigin(t,e):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return this.project(t,e)._subtract(o)},_latLngBoundsToNewLayerBounds:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return N([this.project(t.getSouthWest(),e)._subtract(o),this.project(t.getNorthWest(),e)._subtract(o),this.project(t.getSouthEast(),e)._subtract(o),this.project(t.getNorthEast(),e)._subtract(o)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var o=this.project(t,e),n=this.getSize().divideBy(2),s=new R(o.subtract(n),o.add(n)),r=this._getBoundsOffset(s,i,e);return r.round().equals([0,0])?t:this.unproject(o.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),o=new R(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(o,e))},_getBoundsOffset:function(t,e,i){var o=N(this.project(e.getNorthEast(),i),this.project(e.getSouthWest(),i)),n=o.min.subtract(t.min),s=o.max.subtract(t.max);return new O(this._rebound(n.x,-s.x),this._rebound(n.y,-s.y))},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),o=yt?this.options.zoomSnap:1;return o&&(t=Math.round(t/o)*o),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){ye(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(i)||(this.panBy(i,e),0))},_createAnimProxy:function(){var t=this._proxy=he("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",(function(t){var e=re,i=this._proxy.style[e];Ce(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),i===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()}),this),this.on("load moveend",(function(){var t=this.getCenter(),e=this.getZoom();Ce(this._proxy,this.project(t,e),this.getZoomScale(e,1))}),this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ue(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||!1===i.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var o=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/o);return!(!0!==i.animate&&!this.getSize().contains(n)||(A((function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)}),this),0))},_animateZoom:function(t,e,i,o){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,ve(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:o}),setTimeout(s(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&ye(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),A((function(){this._moveEnd(!0)}),this))}});function oi(t,e){return new ii(t,e)}var ni=T.extend({options:{position:"topright"},initialize:function(t){m(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),o=t._controlCorners[i];return ve(e,"leaflet-control"),-1!==i.indexOf("bottom")?o.insertBefore(e,o.firstChild):o.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ue(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),si=function(t){return new ni(t)};ii.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e="leaflet-",i=this._controlContainer=he("div",e+"control-container",this._container);function o(o,n){var s=e+o+" "+e+n;t[o+n]=he("div",s,i)}o("top","left"),o("top","right"),o("bottom","left"),o("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ue(this._controlCorners[t]);ue(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ri=ni.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,o){return i<o?-1:o<i?1:0}},initialize:function(t,e,i){for(var o in m(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[o],o);for(o in e)this._addLayer(e[o],o,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return ni.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._map?this._update():this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var e=this._getLayer(a(t));return e&&this._layers.splice(this._layers.indexOf(e),1),this._map?this._update():this},expand:function(){ve(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(ve(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):ye(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return ye(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=he("div",t),i=this.options.collapsed;e.setAttribute("aria-haspopup",!0),Ue(e),qe(e);var o=this._section=he("section",t+"-list");i&&(this._map.on("click",this.collapse,this),nt||ze(e,{mouseenter:this.expand,mouseleave:this.collapse},this));var n=this._layersLink=he("a",t+"-toggle",e);n.href="#",n.title="Layers",Ct?(ze(n,"click",Ve),ze(n,"click",this.expand,this)):ze(n,"focus",this.expand,this),i||this.expand(),this._baseLayersList=he("div",t+"-base",o),this._separator=he("div",t+"-separator",o),this._overlaysList=he("div",t+"-overlays",o),e.appendChild(o)},_getLayer:function(t){for(var e=0;e<this._layers.length;e++)if(this._layers[e]&&a(this._layers[e].layer)===t)return this._layers[e]},_addLayer:function(t,e,i){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:e,overlay:i}),this.options.sortLayers&&this._layers.sort(s((function(t,e){return this.options.sortFunction(t.layer,e.layer,t.name,e.name)}),this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;pe(this._baseLayersList),pe(this._overlaysList),this._layerControlInputs=[];var t,e,i,o,n=0;for(i=0;i<this._layers.length;i++)o=this._layers[i],this._addItem(o),e=e||o.overlay,t=t||!o.overlay,n+=o.overlay?0:1;return this.options.hideSingleBase&&(t=t&&n>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(a(t.target)),i=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,e){var i='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(e?' checked="checked"':"")+"/>",o=document.createElement("div");return o.innerHTML=i,o.firstChild},_addItem:function(t){var e,i=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=o):e=this._createRadioElement("leaflet-base-layers_"+a(this),o),this._layerControlInputs.push(e),e.layerId=a(t.layer),ze(e,"click",this._onInputClick,this);var n=document.createElement("span");n.innerHTML=" "+t.name;var s=document.createElement("div");return i.appendChild(s),s.appendChild(e),s.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,o=[],n=[];this._handlingClick=!0;for(var s=i.length-1;s>=0;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?o.push(e):t.checked||n.push(e);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])&&this._map.removeLayer(n[s]);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])||this._map.addLayer(o[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,e,i=this._layerControlInputs,o=this._map.getZoom(),n=i.length-1;n>=0;n--)t=i[n],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&o<e.options.minZoom||void 0!==e.options.maxZoom&&o>e.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ai=function(t,e,i){return new ri(t,e,i)},li=ni.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=he("div",e+" leaflet-bar"),o=this.options;return this._zoomInButton=this._createButton(o.zoomInText,o.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(o.zoomOutText,o.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,o,n){var s=he("a",i,o);return s.innerHTML=t,s.href="#",s.title=e,s.setAttribute("role","button"),s.setAttribute("aria-label",e),Ue(s),ze(s,"click",Ve),ze(s,"click",n,this),ze(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";ye(this._zoomInButton,e),ye(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&ve(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&ve(this._zoomInButton,e)}});ii.mergeOptions({zoomControl:!0}),ii.addInitHook((function(){this.options.zoomControl&&(this.zoomControl=new li,this.addControl(this.zoomControl))}));var di=function(t){return new li(t)},ci=ni.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=he("div",e),o=this.options;return this._addScales(o,e+"-line",i),t.on(o.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=he("div",e,i)),t.imperial&&(this._iScale=he("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,o,n=3.2808399*t;n>5280?(e=n/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+" mi",i/e)):(o=this._getRoundNum(n),this._updateScale(this._iScale,o+" ft",o/n))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return e*(i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1)}}),hi=function(t){return new ci(t)},ui=ni.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){m(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=he("div","leaflet-control-attribution"),Ue(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}}});ii.mergeOptions({attributionControl:!0}),ii.addInitHook((function(){this.options.attributionControl&&(new ui).addTo(this)}));var pi=function(t){return new ui(t)};ni.Layers=ri,ni.Zoom=li,ni.Scale=ci,ni.Attribution=ui,si.layers=ai,si.zoom=di,si.scale=hi,si.attribution=pi;var mi=T.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});mi.addTo=function(t,e){return t.addHandler(e,this),this};var gi,fi={Events:M},vi=Ct?"touchstart mousedown":"mousedown",yi={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},bi={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},xi=I.extend({options:{clickTolerance:3},initialize:function(t,e,i,o){m(this,o),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(ze(this._dragStartTarget,vi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(xi._dragging===this&&this.finishDrag(),Re(this._dragStartTarget,vi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!fe(this._element,"leaflet-zoom-anim")&&!(xi._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(xi._dragging=this,this._preventOutline&&De(this._element),$e(),ee(),this._moving)))){this.fire("down");var e=t.touches?t.touches[0]:t,i=Ie(this._element);this._startPoint=new O(e.clientX,e.clientY),this._parentScale=Oe(i),ze(document,bi[t.type],this._onMove,this),ze(document,yi[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new O(e.clientX,e.clientY)._subtract(this._startPoint);(i.x||i.y)&&(Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,je(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Ae(this._element).subtract(i),ve(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),ve(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(i),this._moving=!0,E(this._animRequest),this._lastEvent=t,this._animRequest=A(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Se(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in ye(document.body,"leaflet-dragging"),this._lastTarget&&(ye(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),bi)Re(document,bi[t],this._onMove,this),Re(document,yi[t],this._onUp,this);Te(),ie(),this._moved&&this._moving&&(E(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,xi._dragging=!1}});function _i(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=Ci(t=Ai(t,i),i)}function wi(t,e,i){return Math.sqrt(Mi(t,e,i,!0))}function ki(t,e,i){return Mi(t,e,i)}function Ci(t,e){var i=t.length,o=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(i);o[0]=o[i-1]=1,Si(t,o,e,0,i-1);var n,s=[];for(n=0;n<i;n++)o[n]&&s.push(t[n]);return s}function Si(t,e,i,o,n){var s,r,a,l=0;for(r=o+1;r<=n-1;r++)(a=Mi(t[r],t[o],t[n],!0))>l&&(s=r,l=a);l>i&&(e[s]=1,Si(t,e,i,o,s),Si(t,e,i,s,n))}function Ai(t,e){for(var i=[t[0]],o=1,n=0,s=t.length;o<s;o++)Di(t[o],t[n])>e&&(i.push(t[o]),n=o);return n<s-1&&i.push(t[s-1]),i}function Ei(t,e,i,o,n){var s,r,a,l=o?gi:Ti(t,i),d=Ti(e,i);for(gi=d;;){if(!(l|d))return[t,e];if(l&d)return!1;a=Ti(r=$i(t,e,s=l||d,i,n),i),s===l?(t=r,l=a):(e=r,d=a)}}function $i(t,e,i,o,n){var s,r,a=e.x-t.x,l=e.y-t.y,d=o.min,c=o.max;return 8&i?(s=t.x+a*(c.y-t.y)/l,r=c.y):4&i?(s=t.x+a*(d.y-t.y)/l,r=d.y):2&i?(s=c.x,r=t.y+l*(c.x-t.x)/a):1&i&&(s=d.x,r=t.y+l*(d.x-t.x)/a),new O(s,r,n)}function Ti(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i}function Di(t,e){var i=e.x-t.x,o=e.y-t.y;return i*i+o*o}function Mi(t,e,i,o){var n,s=e.x,r=e.y,a=i.x-s,l=i.y-r,d=a*a+l*l;return d>0&&((n=((t.x-s)*a+(t.y-r)*l)/d)>1?(s=i.x,r=i.y):n>0&&(s+=a*n,r+=l*n)),a=t.x-s,l=t.y-r,o?a*a+l*l:new O(s,r)}function Ii(t){return!y(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Oi(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Ii(t)}var Li=(Object.freeze||Object)({simplify:_i,pointToSegmentDistance:wi,closestPointOnSegment:ki,clipSegment:Ei,_getEdgeIntersection:$i,_getBitCode:Ti,_sqClosestPointOnSegment:Mi,isFlat:Ii,_flat:Oi});function zi(t,e,i){var o,n,s,r,a,l,d,c,h,u=[1,4,2,8];for(n=0,d=t.length;n<d;n++)t[n]._code=Ti(t[n],e);for(r=0;r<4;r++){for(c=u[r],o=[],n=0,s=(d=t.length)-1;n<d;s=n++)a=t[n],l=t[s],a._code&c?l._code&c||((h=$i(l,a,c,e,i))._code=Ti(h,e),o.push(h)):(l._code&c&&((h=$i(l,a,c,e,i))._code=Ti(h,e),o.push(h)),o.push(a));t=o}return t}var Pi=(Object.freeze||Object)({clipPolygon:zi}),Ri={project:function(t){return new O(t.lng,t.lat)},unproject:function(t){return new q(t.y,t.x)},bounds:new R([-180,-90],[180,90])},Ni={R:6378137,R_MINOR:6356752.314245179,bounds:new R([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,i=this.R,o=t.lat*e,n=this.R_MINOR/i,s=Math.sqrt(1-n*n),r=s*Math.sin(o),a=Math.tan(Math.PI/4-o/2)/Math.pow((1-r)/(1+r),s/2);return o=-i*Math.log(Math.max(a,1e-10)),new O(t.lng*e*i,o)},unproject:function(t){for(var e,i=180/Math.PI,o=this.R,n=this.R_MINOR/o,s=Math.sqrt(1-n*n),r=Math.exp(-t.y/o),a=Math.PI/2-2*Math.atan(r),l=0,d=.1;l<15&&Math.abs(d)>1e-7;l++)e=s*Math.sin(a),e=Math.pow((1-e)/(1+e),s/2),a+=d=Math.PI/2-2*Math.atan(r*e)-a;return new q(a*i,t.x*i/o)}},Bi=(Object.freeze||Object)({LonLat:Ri,Mercator:Ni,SphericalMercator:W}),Fi=o({},V,{code:"EPSG:3395",projection:Ni,transformation:function(){var t=.5/(Math.PI*Ni.R);return Y(t,.5,-t,.5)}()}),qi=o({},V,{code:"EPSG:4326",projection:Ri,transformation:Y(1/180,1,-1/180,.5)}),Ui=o({},j,{projection:Ri,transformation:Y(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var i=e.lng-t.lng,o=e.lat-t.lat;return Math.sqrt(i*i+o*o)},infinite:!0});j.Earth=V,j.EPSG3395=Fi,j.EPSG3857=G,j.EPSG900913=K,j.EPSG4326=qi,j.Simple=Ui;var ji=I.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[a(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[a(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once("remove",(function(){e.off(i,this)}),this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),e.fire("layeradd",{layer:this})}}});ii.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var e=a(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=a(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&a(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){for(var e=0,i=(t=t?y(t)?t:[t]:[]).length;e<i;e++)this.addLayer(t[e])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[a(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var e=a(t);this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,e=-1/0,i=this._getZoomSpan();for(var o in this._zoomBoundLayers){var n=this._zoomBoundLayers[o].options;t=void 0===n.minZoom?t:Math.min(t,n.minZoom),e=void 0===n.maxZoom?e:Math.max(e,n.maxZoom)}this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=t===1/0?void 0:t,i!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Vi=ji.extend({initialize:function(t,e){var i,o;if(m(this,e),this._layers={},t)for(i=0,o=t.length;i<o;i++)this.addLayer(t[i])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var e,i,o=Array.prototype.slice.call(arguments,1);for(e in this._layers)(i=this._layers[e])[t]&&i[t].apply(i,o);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return a(t)}}),Hi=function(t,e){return new Vi(t,e)},Wi=Vi.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Vi.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Vi.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new B;for(var e in this._layers){var i=this._layers[e];t.extend(i.getBounds?i.getBounds():i.getLatLng())}return t}}),Zi=function(t){return new Wi(t)},Yi=T.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){m(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var o=this._createImg(i,e&&"IMG"===e.tagName?e:null);return this._setIconStyles(o,t),o},_setIconStyles:function(t,e){var i=this.options,o=i[e+"Size"];"number"==typeof o&&(o=[o,o]);var n=P(o),s=P("shadow"===e&&i.shadowAnchor||i.iconAnchor||n&&n.divideBy(2,!0));t.className="leaflet-marker-"+e+" "+(i.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),n&&(t.style.width=n.x+"px",t.style.height=n.y+"px")},_createImg:function(t,e){return(e=e||document.createElement("img")).src=t,e},_getIconUrl:function(t){return Et&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});function Gi(t){return new Yi(t)}var Ki=Yi.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ki.imagePath||(Ki.imagePath=this._detectIconPath()),(this.options.imagePath||Ki.imagePath)+Yi.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=he("div","leaflet-default-icon-path",document.body),e=ce(t,"background-image")||ce(t,"backgroundImage");return document.body.removeChild(t),e=null===e||0!==e.indexOf("url")?"":e.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Xi=mi.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new xi(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),ve(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&ye(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var e=this._marker,i=e._map,o=this._marker.options.autoPanSpeed,n=this._marker.options.autoPanPadding,s=Ae(e._icon),r=i.getPixelBounds(),a=i.getPixelOrigin(),l=N(r.min._subtract(a).add(n),r.max._subtract(a).subtract(n));if(!l.contains(s)){var d=P((Math.max(l.max.x,s.x)-l.max.x)/(r.max.x-l.max.x)-(Math.min(l.min.x,s.x)-l.min.x)/(r.min.x-l.min.x),(Math.max(l.max.y,s.y)-l.max.y)/(r.max.y-l.max.y)-(Math.min(l.min.y,s.y)-l.min.y)/(r.min.y-l.min.y)).multiplyBy(o);i.panBy(d,{animate:!1}),this._draggable._newPos._add(d),this._draggable._startPos._add(d),Se(e._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=A(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(E(this._panRequest),this._panRequest=A(this._adjustPan.bind(this,t)))},_onDrag:function(t){var e=this._marker,i=e._shadow,o=Ae(e._icon),n=e._map.layerPointToLatLng(o);i&&Se(i,o),e._latlng=n,t.latlng=n,t.oldLatLng=this._oldLatLng,e.fire("move",t).fire("drag",t)},_onDragEnd:function(t){E(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Qi=ji.extend({options:{icon:new Ki,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,e){m(this,e),this._latlng=U(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=U(t),this.update(),this.fire("move",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=t.icon.createIcon(this._icon),o=!1;i!==this._icon&&(this._icon&&this._removeIcon(),o=!0,t.title&&(i.title=t.title),"IMG"===i.tagName&&(i.alt=t.alt||"")),ve(i,e),t.keyboard&&(i.tabIndex="0"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var n=t.icon.createShadow(this._shadow),s=!1;n!==this._shadow&&(this._removeShadow(),s=!0),n&&(ve(n,e),n.alt=""),this._shadow=n,t.opacity<1&&this._updateOpacity(),o&&this.getPane().appendChild(this._icon),this._initInteraction(),n&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ue(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ue(this._shadow),this._shadow=null},_setPos:function(t){Se(this._icon,t),this._shadow&&Se(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(ve(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Xi)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Xi(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&_e(this._icon,t),this._shadow&&_e(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Ji(t,e){return new Qi(t,e)}var to=ji.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return m(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),eo=to.extend({options:{fill:!0,radius:10},initialize:function(t,e){m(this,e),this._latlng=U(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=U(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var e=t&&t.radius||this._radius;return to.prototype.setStyle.call(this,t),this.setRadius(e),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,e=this._radiusY||t,i=this._clickTolerance(),o=[t+i,e+i];this._pxBounds=new R(this._point.subtract(o),this._point.add(o))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function io(t,e){return new eo(t,e)}var oo=eo.extend({initialize:function(t,e,i){if("number"==typeof e&&(e=o({},i,{radius:e})),m(this,e),this._latlng=U(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new B(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:to.prototype.setStyle,_project:function(){var t=this._latlng.lng,e=this._latlng.lat,i=this._map,o=i.options.crs;if(o.distance===V.distance){var n=Math.PI/180,s=this._mRadius/V.R/n,r=i.project([e+s,t]),a=i.project([e-s,t]),l=r.add(a).divideBy(2),d=i.unproject(l).lat,c=Math.acos((Math.cos(s*n)-Math.sin(e*n)*Math.sin(d*n))/(Math.cos(e*n)*Math.cos(d*n)))/n;(isNaN(c)||0===c)&&(c=s/Math.cos(Math.PI/180*e)),this._point=l.subtract(i.getPixelOrigin()),this._radius=isNaN(c)?0:l.x-i.project([d,t-c]).x,this._radiusY=l.y-r.y}else{var h=o.unproject(o.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(h).x}this._updateBounds()}});function no(t,e,i){return new oo(t,e,i)}var so=to.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){m(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,o=1/0,n=null,s=Mi,r=0,a=this._parts.length;r<a;r++)for(var l=this._parts[r],d=1,c=l.length;d<c;d++){var h=s(t,e=l[d-1],i=l[d],!0);h<o&&(o=h,n=s(t,e,i))}return n&&(n.distance=Math.sqrt(o)),n},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a=this._rings[0],l=a.length;if(!l)return null;for(t=0,e=0;t<l-1;t++)e+=a[t].distanceTo(a[t+1])/2;if(0===e)return this._map.layerPointToLatLng(a[0]);for(t=0,o=0;t<l-1;t++)if(n=a[t],s=a[t+1],(o+=i=n.distanceTo(s))>e)return r=(o-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-n.x),s.y-r*(s.y-n.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=U(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new B,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Ii(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=Ii(t),o=0,n=t.length;o<n;o++)i?(e[o]=U(t[o]),this._bounds.extend(e[o])):e[o]=this._convertLatLngs(t[o]);return e},_project:function(){var t=new R;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),e=new O(t,t);this._pxBounds=new R([this._rawPxBounds.min.subtract(e),this._rawPxBounds.max.add(e)])},_projectLatlngs:function(t,e,i){var o,n,s=t[0]instanceof q,r=t.length;if(s){for(n=[],o=0;o<r;o++)n[o]=this._map.latLngToLayerPoint(t[o]),i.extend(n[o]);e.push(n)}else for(o=0;o<r;o++)this._projectLatlngs(t[o],e,i)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var e,i,o,n,s,r,a,l=this._parts;for(e=0,o=0,n=this._rings.length;e<n;e++)for(i=0,s=(a=this._rings[e]).length;i<s-1;i++)(r=Ei(a[i],a[i+1],t,i,!0))&&(l[o]=l[o]||[],l[o].push(r[0]),r[1]===a[i+1]&&i!==s-2||(l[o].push(r[1]),o++))}},_simplifyPoints:function(){for(var t=this._parts,e=this.options.smoothFactor,i=0,o=t.length;i<o;i++)t[i]=_i(t[i],e)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,e){var i,o,n,s,r,a,l=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(i=0,s=this._parts.length;i<s;i++)for(o=0,n=(r=(a=this._parts[i]).length)-1;o<r;n=o++)if((e||0!==o)&&wi(t,a[n],a[o])<=l)return!0;return!1}});function ro(t,e){return new so(t,e)}so._flat=Oi;var ao=so.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a,l,d=this._rings[0],c=d.length;if(!c)return null;for(s=r=a=0,t=0,e=c-1;t<c;e=t++)i=d[t],o=d[e],n=i.y*o.x-o.y*i.x,r+=(i.x+o.x)*n,a+=(i.y+o.y)*n,s+=3*n;return l=0===s?d[0]:[r/s,a/s],this._map.layerPointToLatLng(l)},_convertLatLngs:function(t){var e=so.prototype._convertLatLngs.call(this,t),i=e.length;return i>=2&&e[0]instanceof q&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){so.prototype._setLatLngs.call(this,t),Ii(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Ii(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new O(e,e);if(t=new R(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var o,n=0,s=this._rings.length;n<s;n++)(o=zi(this._rings[n],t,!0)).length&&this._parts.push(o)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var e,i,o,n,s,r,a,l,d=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(n=0,a=this._parts.length;n<a;n++)for(s=0,r=(l=(e=this._parts[n]).length)-1;s<l;r=s++)i=e[s],o=e[r],i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(d=!d);return d||so.prototype._containsPoint.call(this,t,!0)}});function lo(t,e){return new ao(t,e)}var co=Wi.extend({initialize:function(t,e){m(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,o,n=y(t)?t:t.features;if(n){for(e=0,i=n.length;e<i;e++)((o=n[e]).geometries||o.geometry||o.features||o.coordinates)&&this.addData(o);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=ho(t,s);return r?(r.feature=vo(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=o({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer((function(e){this._setLayerStyle(e,t)}),this)},_setLayerStyle:function(t,e){t.setStyle&&("function"==typeof e&&(e=e(t.feature)),t.setStyle(e))}});function ho(t,e){var i,o,n,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,l=[],d=e&&e.pointToLayer,c=e&&e.coordsToLatLng||uo;if(!a&&!r)return null;switch(r.type){case"Point":return i=c(a),d?d(t,i):new Qi(i);case"MultiPoint":for(n=0,s=a.length;n<s;n++)i=c(a[n]),l.push(d?d(t,i):new Qi(i));return new Wi(l);case"LineString":case"MultiLineString":return o=po(a,"LineString"===r.type?0:1,c),new so(o,e);case"Polygon":case"MultiPolygon":return o=po(a,"Polygon"===r.type?1:2,c),new ao(o,e);case"GeometryCollection":for(n=0,s=r.geometries.length;n<s;n++){var h=ho({geometry:r.geometries[n],type:"Feature",properties:t.properties},e);h&&l.push(h)}return new Wi(l);default:throw new Error("Invalid GeoJSON object.")}}function uo(t){return new q(t[1],t[0],t[2])}function po(t,e,i){for(var o,n=[],s=0,r=t.length;s<r;s++)o=e?po(t[s],e-1,i):(i||uo)(t[s]),n.push(o);return n}function mo(t,e){return e="number"==typeof e?e:6,void 0!==t.alt?[h(t.lng,e),h(t.lat,e),h(t.alt,e)]:[h(t.lng,e),h(t.lat,e)]}function go(t,e,i,o){for(var n=[],s=0,r=t.length;s<r;s++)n.push(e?go(t[s],e-1,i,o):mo(t[s],o));return!e&&i&&n.push(n[0]),n}function fo(t,e){return t.feature?o({},t.feature,{geometry:e}):vo(e)}function vo(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var yo={toGeoJSON:function(t){return fo(this,{type:"Point",coordinates:mo(this.getLatLng(),t)})}};function bo(t,e){return new co(t,e)}Qi.include(yo),oo.include(yo),eo.include(yo),so.include({toGeoJSON:function(t){var e=!Ii(this._latlngs);return fo(this,{type:(e?"Multi":"")+"LineString",coordinates:go(this._latlngs,e?1:0,!1,t)})}}),ao.include({toGeoJSON:function(t){var e=!Ii(this._latlngs),i=e&&!Ii(this._latlngs[0]),o=go(this._latlngs,i?2:e?1:0,!0,t);return e||(o=[o]),fo(this,{type:(i?"Multi":"")+"Polygon",coordinates:o})}}),Vi.include({toMultiPoint:function(t){var e=[];return this.eachLayer((function(i){e.push(i.toGeoJSON(t).geometry.coordinates)})),fo(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===e)return this.toMultiPoint(t);var i="GeometryCollection"===e,o=[];return this.eachLayer((function(e){if(e.toGeoJSON){var n=e.toGeoJSON(t);if(i)o.push(n.geometry);else{var s=vo(n);"FeatureCollection"===s.type?o.push.apply(o,s.features):o.push(s)}}})),i?fo(this,{geometries:o,type:"GeometryCollection"}):{type:"FeatureCollection",features:o}}});var xo=bo,_o=ji.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,e,i){this._url=t,this._bounds=F(e),m(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ve(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ue(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&me(this._image),this},bringToBack:function(){return this._map&&ge(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=F(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,e=this._image=t?this._url:he("img");ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=c,e.onmousemove=c,e.onload=s(this.fire,this,"load"),e.onerror=s(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Ce(this._image,i,e)},_reset:function(){var t=this._image,e=new R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();Se(t,e.min),t.style.width=i.x+"px",t.style.height=i.y+"px"},_updateOpacity:function(){_e(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),wo=function(t,e,i){return new _o(t,e,i)},ko=_o.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,e=this._image=t?this._url:he("video");if(ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),e.onselectstart=c,e.onmousemove=c,e.onloadeddata=s(this.fire,this,"load"),t){for(var i=e.getElementsByTagName("source"),o=[],n=0;n<i.length;n++)o.push(i[n].src);this._url=i.length>0?o:[e.src]}else{y(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&e.style.hasOwnProperty("objectFit")&&(e.style.objectFit="fill"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop;for(var r=0;r<this._url.length;r++){var a=he("source");a.src=this._url[r],e.appendChild(a)}}}});function Co(t,e,i){return new ko(t,e,i)}var So=_o.extend({_initImage:function(){var t=this._image=this._url;ve(t,"leaflet-image-layer"),this._zoomAnimated&&ve(t,"leaflet-zoom-animated"),t.onselectstart=c,t.onmousemove=c}});function Ao(t,e,i){return new So(t,e,i)}var Eo=ji.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,e){m(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&_e(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&_e(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(_e(this._container,0),this._removeTimeout=setTimeout(s(ue,void 0,this._container),200)):ue(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=U(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&me(this._container),this},bringToBack:function(){return this._map&&ge(this._container),this},_prepareOpen:function(t,e,i){if(e instanceof ji||(i=e,e=t),e instanceof Wi)for(var o in t._layers){e=t._layers[o];break}if(!i)if(e.getCenter)i=e.getCenter();else{if(!e.getLatLng)throw new Error("Unable to get source layer LatLng.");i=e.getLatLng()}return this._source=e,this.update(),i},_updateContent:function(){if(this._content){var t=this._contentNode,e="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=P(this.options.offset),i=this._getAnchor();this._zoomAnimated?Se(this._container,t.add(i)):e=e.add(t).add(i);var o=this._containerBottom=-e.y,n=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=o+"px",this._container.style.left=n+"px"}},_getAnchor:function(){return[0,0]}}),$o=Eo.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){Eo.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof to||this._source.on("preclick",Fe))},onRemove:function(t){Eo.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof to||this._source.off("preclick",Fe))},getEvents:function(){var t=Eo.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",e=this._container=he("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),i=this._wrapper=he("div",t+"-content-wrapper",e);if(this._contentNode=he("div",t+"-content",i),Ue(i),qe(this._contentNode),ze(i,"contextmenu",Fe),this._tipContainer=he("div",t+"-tip-container",e),this._tip=he("div",t+"-tip",this._tipContainer),this.options.closeButton){var o=this._closeButton=he("a",t+"-close-button",e);o.href="#close",o.innerHTML="&#215;",ze(o,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var o=t.offsetHeight,n=this.options.maxHeight,s="leaflet-popup-scrolled";n&&o>n?(e.height=n+"px",ve(t,s)):ye(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();Se(this._container,e.add(i))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,e=parseInt(ce(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+e,o=this._containerWidth,n=new O(this._containerLeft,-i-this._containerBottom);n._add(Ae(this._container));var s=t.layerPointToContainerPoint(n),r=P(this.options.autoPanPadding),a=P(this.options.autoPanPaddingTopLeft||r),l=P(this.options.autoPanPaddingBottomRight||r),d=t.getSize(),c=0,h=0;s.x+o+l.x>d.x&&(c=s.x+o-d.x+l.x),s.x-c-a.x<0&&(c=s.x-a.x),s.y+i+l.y>d.y&&(h=s.y+i-d.y+l.y),s.y-h-a.y<0&&(h=s.y-a.y),(c||h)&&t.fire("autopanstart").panBy([c,h])}},_onCloseButtonClick:function(t){this._close(),Ve(t)},_getAnchor:function(){return P(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),To=function(t,e){return new $o(t,e)};ii.mergeOptions({closePopupOnClick:!0}),ii.include({openPopup:function(t,e,i){return t instanceof $o||(t=new $o(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),ji.include({bindPopup:function(t,e){return t instanceof $o?(m(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new $o(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){return this._popup&&this._map&&(e=this._popup._prepareOpen(this,t,e),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(Ve(t),e instanceof to?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Do=Eo.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){Eo.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){Eo.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=Eo.prototype.getEvents.call(this);return Ct&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=he("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,i=this._container,o=e.latLngToContainerPoint(e.getCenter()),n=e.layerPointToContainerPoint(t),s=this.options.direction,r=i.offsetWidth,a=i.offsetHeight,l=P(this.options.offset),d=this._getAnchor();"top"===s?t=t.add(P(-r/2+l.x,-a+l.y+d.y,!0)):"bottom"===s?t=t.subtract(P(r/2-l.x,-l.y,!0)):"center"===s?t=t.subtract(P(r/2+l.x,a/2-d.y+l.y,!0)):"right"===s||"auto"===s&&n.x<o.x?(s="right",t=t.add(P(l.x+d.x,d.y-a/2+l.y,!0))):(s="left",t=t.subtract(P(r+d.x-l.x,a/2-d.y-l.y,!0))),ye(i,"leaflet-tooltip-right"),ye(i,"leaflet-tooltip-left"),ye(i,"leaflet-tooltip-top"),ye(i,"leaflet-tooltip-bottom"),ve(i,"leaflet-tooltip-"+s),Se(i,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&_e(this._container,t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(e)},_getAnchor:function(){return P(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Mo=function(t,e){return new Do(t,e)};ii.include({openTooltip:function(t,e,i){return t instanceof Do||(t=new Do(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),ji.include({bindTooltip:function(t,e){return t instanceof Do?(m(t,e),this._tooltip=t,t._source=this):(this._tooltip&&!e||(this._tooltip=new Do(e,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var e=t?"off":"on",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),Ct&&(i.click=this._openTooltip)),this[e](i),this._tooltipHandlersAdded=!t}},openTooltip:function(t,e){return this._tooltip&&this._map&&(e=this._tooltip._prepareOpen(this,t,e),this._map.openTooltip(this._tooltip,e),this._tooltip.options.interactive&&this._tooltip._container&&(ve(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(ye(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var e=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(e,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var e,i,o=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(e=this._map.mouseEventToContainerPoint(t.originalEvent),i=this._map.containerPointToLayerPoint(e),o=this._map.layerPointToLatLng(i)),this._tooltip.setLatLng(o)}});var Io=Yi.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var e=t&&"DIV"===t.tagName?t:document.createElement("div"),i=this.options;if(i.html instanceof Element?(pe(e),e.appendChild(i.html)):e.innerHTML=!1!==i.html?i.html:"",i.bgPos){var o=P(i.bgPos);e.style.backgroundPosition=-o.x+"px "+-o.y+"px"}return this._setIconStyles(e,"icon"),e},createShadow:function(){return null}});function Oo(t){return new Io(t)}Yi.Default=Ki;var Lo=ji.extend({options:{tileSize:256,opacity:1,updateWhenIdle:bt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){m(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ue(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(me(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(ge(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=l(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof O?t:new O(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,o=-t(-1/0,1/0),n=0,s=i.length;n<s;n++)e=i[n].style.zIndex,i[n]!==this._container&&e&&(o=t(o,+e));isFinite(o)&&(this.options.zIndex=o+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){_e(this._container,this.options.opacity);var t=+new Date,e=!1,i=!1;for(var o in this._tiles){var n=this._tiles[o];if(n.current&&n.loaded){var s=Math.min(1,(t-n.loaded)/200);_e(n.el,s),s<1?e=!0:(n.active?i=!0:this._onOpaqueTile(n),n.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),e&&(E(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this))}},_onOpaqueTile:c,_initContainer:function(){this._container||(this._container=he("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,e=this.options.maxZoom;if(void 0!==t){for(var i in this._levels)this._levels[i].el.children.length||i===t?(this._levels[i].el.style.zIndex=e-Math.abs(t-i),this._onUpdateLevel(i)):(ue(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var o=this._levels[t],n=this._map;return o||((o=this._levels[t]={}).el=he("div","leaflet-tile-container leaflet-zoom-animated",this._container),o.el.style.zIndex=e,o.origin=n.project(n.unproject(n.getPixelOrigin()),t).round(),o.zoom=t,this._setZoomTransform(o,n.getCenter(),n.getZoom()),c(o.el.offsetWidth),this._onCreateLevel(o)),this._level=o,o}},_onUpdateLevel:c,_onRemoveLevel:c,_onCreateLevel:c,_pruneTiles:function(){if(this._map){var t,e,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)if((e=this._tiles[t]).current&&!e.active){var o=e.coords;this._retainParent(o.x,o.y,o.z,o.z-5)||this._retainChildren(o.x,o.y,o.z,o.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var e in this._tiles)this._tiles[e].coords.z===t&&this._removeTile(e)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ue(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,e,i,o){var n=Math.floor(t/2),s=Math.floor(e/2),r=i-1,a=new O(+n,+s);a.z=+r;var l=this._tileCoordsToKey(a),d=this._tiles[l];return d&&d.active?(d.retain=!0,!0):(d&&d.loaded&&(d.retain=!0),r>o&&this._retainParent(n,s,r,o))},_retainChildren:function(t,e,i,o){for(var n=2*t;n<2*t+2;n++)for(var s=2*e;s<2*e+2;s++){var r=new O(n,s);r.z=i+1;var a=this._tileCoordsToKey(r),l=this._tiles[a];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),i+1<o&&this._retainChildren(n,s,i+1,o))}},_resetView:function(t){var e=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),e,e)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var e=this.options;return void 0!==e.minNativeZoom&&t<e.minNativeZoom?e.minNativeZoom:void 0!==e.maxNativeZoom&&e.maxNativeZoom<t?e.maxNativeZoom:t},_setView:function(t,e,i,o){var n=this._clampZoom(Math.round(e));(void 0!==this.options.maxZoom&&n>this.options.maxZoom||void 0!==this.options.minZoom&&n<this.options.minZoom)&&(n=void 0);var s=this.options.updateWhenZooming&&n!==this._tileZoom;o&&!s||(this._tileZoom=n,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==n&&this._update(t),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(t,e)},_setZoomTransforms:function(t,e){for(var i in this._levels)this._setZoomTransform(this._levels[i],t,e)},_setZoomTransform:function(t,e,i){var o=this._map.getZoomScale(i,t.zoom),n=t.origin.multiplyBy(o).subtract(this._map._getNewPixelOrigin(e,i)).round();yt?Ce(t.el,n,o):Se(t.el,n)},_resetGrid:function(){var t=this._map,e=t.options.crs,i=this._tileSize=this.getTileSize(),o=this._tileZoom,n=this._map.getPixelWorldBounds(this._tileZoom);n&&(this._globalTileRange=this._pxBoundsToTileRange(n)),this._wrapX=e.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,e.wrapLng[0]],o).x/i.x),Math.ceil(t.project([0,e.wrapLng[1]],o).x/i.y)],this._wrapY=e.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([e.wrapLat[0],0],o).y/i.x),Math.ceil(t.project([e.wrapLat[1],0],o).y/i.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var e=this._map,i=e._animatingZoom?Math.max(e._animateToZoom,e.getZoom()):e.getZoom(),o=e.getZoomScale(i,this._tileZoom),n=e.project(t,this._tileZoom).floor(),s=e.getSize().divideBy(2*o);return new R(n.subtract(s),n.add(s))},_update:function(t){var e=this._map;if(e){var i=this._clampZoom(e.getZoom());if(void 0===t&&(t=e.getCenter()),void 0!==this._tileZoom){var o=this._getTiledPixelBounds(t),n=this._pxBoundsToTileRange(o),s=n.getCenter(),r=[],a=this.options.keepBuffer,l=new R(n.getBottomLeft().subtract([a,-a]),n.getTopRight().add([a,-a]));if(!(isFinite(n.min.x)&&isFinite(n.min.y)&&isFinite(n.max.x)&&isFinite(n.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var d in this._tiles){var c=this._tiles[d].coords;c.z===this._tileZoom&&l.contains(new O(c.x,c.y))||(this._tiles[d].current=!1)}if(Math.abs(i-this._tileZoom)>1)this._setView(t,i);else{for(var h=n.min.y;h<=n.max.y;h++)for(var u=n.min.x;u<=n.max.x;u++){var p=new O(u,h);if(p.z=this._tileZoom,this._isValidTile(p)){var m=this._tiles[this._tileCoordsToKey(p)];m?m.current=!0:r.push(p)}}if(r.sort((function(t,e){return t.distanceTo(s)-e.distanceTo(s)})),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var g=document.createDocumentFragment();for(u=0;u<r.length;u++)this._addTile(r[u],g);this._level.el.appendChild(g)}}}}},_isValidTile:function(t){var e=this._map.options.crs;if(!e.infinite){var i=this._globalTileRange;if(!e.wrapLng&&(t.x<i.min.x||t.x>i.max.x)||!e.wrapLat&&(t.y<i.min.y||t.y>i.max.y))return!1}if(!this.options.bounds)return!0;var o=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(o)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),o=t.scaleBy(i),n=o.add(i);return[e.unproject(o,t.z),e.unproject(n,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),i=new B(e[0],e[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),i=new O(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(ue(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ve(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=c,t.onmousemove=c,et&&this.options.opacity<1&&_e(t,this.options.opacity),nt&&!st&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var i=this._getTilePos(t),o=this._tileCoordsToKey(t),n=this.createTile(this._wrapCoords(t),s(this._tileReady,this,t));this._initTile(n),this.createTile.length<2&&A(s(this._tileReady,this,t,null,n)),Se(n,i),this._tiles[o]={el:n,coords:t,current:!0},e.appendChild(n),this.fire("tileloadstart",{tile:n,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var o=this._tileCoordsToKey(t);(i=this._tiles[o])&&(i.loaded=+new Date,this._map._fadeAnimated?(_e(i.el,0),E(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(ve(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?A(this._pruneTiles,this):setTimeout(s(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new O(this._wrapX?d(t.x,this._wrapX):t.x,this._wrapY?d(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new R(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function zo(t){return new Lo(t)}var Po=Lo.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=m(this,e)).detectRetina&&Et&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),"string"==typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),nt||this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var i=document.createElement("img");return ze(i,"load",s(this._tileOnLoad,this,e,i)),ze(i,"error",s(this._tileOnError,this,e,i)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),i.alt="",i.setAttribute("role","presentation"),i.src=this.getTileUrl(t),i},getTileUrl:function(t){var e={r:Et?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=i),e["-y"]=i}return v(this._url,o(e,this.options))},_tileOnLoad:function(t,e){et?setTimeout(s(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var o=this.options.errorTileUrl;o&&e.getAttribute("src")!==o&&(e.src=o),t(i,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom;return this.options.zoomReverse&&(t=e-t),t+this.options.zoomOffset},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=c,e.onerror=c,e.complete||(e.src=x,ue(e),delete this._tiles[t]))},_removeTile:function(t){var e=this._tiles[t];if(e)return at||e.el.setAttribute("src",x),Lo.prototype._removeTile.call(this,t)},_tileReady:function(t,e,i){if(this._map&&(!i||i.getAttribute("src")!==x))return Lo.prototype._tileReady.call(this,t,e,i)}});function Ro(t,e){return new Po(t,e)}var No=Po.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var i=o({},this.defaultWmsParams);for(var n in e)n in this.options||(i[n]=e[n]);var s=(e=m(this,e)).detectRetina&&Et?2:1,r=this.getTileSize();i.width=r.x*s,i.height=r.y*s,this.wmsParams=i},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,Po.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),i=this._crs,o=N(i.project(e[0]),i.project(e[1])),n=o.min,s=o.max,r=(this._wmsVersion>=1.3&&this._crs===qi?[n.y,n.x,s.y,s.x]:[n.x,n.y,s.x,s.y]).join(","),a=Po.prototype.getTileUrl.call(this,t);return a+g(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return o(this.wmsParams,t),e||this.redraw(),this}});function Bo(t,e){return new No(t,e)}Po.WMS=No,Ro.wms=Bo;var Fo=ji.extend({options:{padding:.1,tolerance:0},initialize:function(t){m(this,t),a(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&ve(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var i=this._map.getZoomScale(e,this._zoom),o=Ae(this._container),n=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,e),r=this._map.project(t,e).subtract(s),a=n.multiplyBy(-i).add(o).add(n).subtract(r);yt?Ce(this._container,a,i):Se(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),i=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new R(i,i.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),qo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Fo.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");ze(t,"mousemove",l(this._onMouseMove,32,this),this),ze(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),ze(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){E(this._redrawRequest),delete this._ctx,ue(this._container),Re(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),o=Et?2:1;Se(e,t.min),e.width=o*i.x,e.height=o*i.y,e.style.width=i.x+"px",e.style.height=i.y+"px",Et&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Fo.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[a(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,o=e.prev;i?i.prev=o:this._drawLast=o,o?o.next=i:this._drawFirst=i,delete t._order,delete this._layers[a(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var e,i,o=t.options.dashArray.split(/[, ]+/),n=[];for(i=0;i<o.length;i++){if(e=Number(o[i]),isNaN(e))return;n.push(e)}t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||A(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var e=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new R,this._redrawBounds.extend(t._pxBounds.min.subtract([e,e])),this._redrawBounds.extend(t._pxBounds.max.add([e,e]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var e=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,e.x,e.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,e=this._redrawBounds;if(this._ctx.save(),e){var i=e.getSize();this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var o=this._drawFirst;o;o=o.next)t=o.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,e){if(this._drawing){var i,o,n,s,r=t._parts,a=r.length,l=this._ctx;if(a){for(l.beginPath(),i=0;i<a;i++){for(o=0,n=r[i].length;o<n;o++)s=r[i][o],l[o?"lineTo":"moveTo"](s.x,s.y);e&&l.closePath()}this._fillStroke(l,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var e=t._point,i=this._ctx,o=Math.max(Math.round(t._radius),1),n=(Math.max(Math.round(t._radiusY),1)||o)/o;1!==n&&(i.save(),i.scale(1,n)),i.beginPath(),i.arc(e.x,e.y/n,o,0,2*Math.PI,!1),1!==n&&i.restore(),this._fillStroke(i,t)}},_fillStroke:function(t,e){var i=e.options;i.fill&&(t.globalAlpha=i.fillOpacity,t.fillStyle=i.fillColor||i.color,t.fill(i.fillRule||"evenodd")),i.stroke&&0!==i.weight&&(t.setLineDash&&t.setLineDash(e.options&&e.options._dashArray||[]),t.globalAlpha=i.opacity,t.lineWidth=i.weight,t.strokeStyle=i.color,t.lineCap=i.lineCap,t.lineJoin=i.lineJoin,t.stroke())},_onClick:function(t){for(var e,i,o=this._map.mouseEventToLayerPoint(t),n=this._drawFirst;n;n=n.next)(e=n.layer).options.interactive&&e._containsPoint(o)&&!this._map._draggableMoved(e)&&(i=e);i&&(Ke(t),this._fireEvent([i],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var e=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,e)}},_handleMouseOut:function(t){var e=this._hoveredLayer;e&&(ye(this._container,"leaflet-interactive"),this._fireEvent([e],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,e){for(var i,o,n=this._drawFirst;n;n=n.next)(i=n.layer).options.interactive&&i._containsPoint(e)&&(o=i);o!==this._hoveredLayer&&(this._handleMouseOut(t),o&&(ve(this._container,"leaflet-interactive"),this._fireEvent([o],t,"mouseover"),this._hoveredLayer=o)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,e,i){this._map._fireDOMEvent(e,i||e.type,t)},_bringToFront:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;i&&(i.prev=o,o?o.next=i:i&&(this._drawFirst=i),e.prev=this._drawLast,this._drawLast.next=e,e.next=null,this._drawLast=e,this._requestRedraw(t))}},_bringToBack:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;o&&(o.next=i,i?i.prev=o:o&&(this._drawLast=o),e.prev=null,e.next=this._drawFirst,this._drawFirst.prev=e,this._drawFirst=e,this._requestRedraw(t))}}});function Uo(t){return $t?new qo(t):null}var jo=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),Vo={_initContainer:function(){this._container=he("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Fo.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=jo("shape");ve(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=jo("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;ue(e),t.removeInteractiveTarget(e),delete this._layers[a(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,o=t.options,n=t._container;n.stroked=!!o.stroke,n.filled=!!o.fill,o.stroke?(e||(e=t._stroke=jo("stroke")),n.appendChild(e),e.weight=o.weight+"px",e.color=o.color,e.opacity=o.opacity,o.dashArray?e.dashStyle=y(o.dashArray)?o.dashArray.join(" "):o.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=o.lineCap.replace("butt","flat"),e.joinstyle=o.lineJoin):e&&(n.removeChild(e),t._stroke=null),o.fill?(i||(i=t._fill=jo("fill")),n.appendChild(i),i.color=o.fillColor||o.color,i.opacity=o.fillOpacity):i&&(n.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),o=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+o+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){me(t._container)},_bringToBack:function(t){ge(t._container)}},Ho=Dt?jo:X,Wo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=Ho("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Ho("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ue(this._container),Re(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=t.getSize(),i=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Se(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=Ho("path");t.options.className&&ve(e,t.options.className),t.options.interactive&&ve(e,"leaflet-interactive"),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ue(t._path),t.removeInteractiveTarget(t._path),delete this._layers[a(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,i=t.options;e&&(i.stroke?(e.setAttribute("stroke",i.color),e.setAttribute("stroke-opacity",i.opacity),e.setAttribute("stroke-width",i.weight),e.setAttribute("stroke-linecap",i.lineCap),e.setAttribute("stroke-linejoin",i.lineJoin),i.dashArray?e.setAttribute("stroke-dasharray",i.dashArray):e.removeAttribute("stroke-dasharray"),i.dashOffset?e.setAttribute("stroke-dashoffset",i.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),i.fill?(e.setAttribute("fill",i.fillColor||i.color),e.setAttribute("fill-opacity",i.fillOpacity),e.setAttribute("fill-rule",i.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,Q(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),o="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",n=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+o+2*i+",0 "+o+2*-i+",0 ";this._setPath(t,n)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){me(t._path)},_bringToBack:function(t){ge(t._path)}});function Zo(t){return Tt||Dt?new Wo(t):null}Dt&&Wo.include(Vo),ii.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&Uo(t)||Zo(t)}});var Yo=ao.extend({initialize:function(t,e){ao.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=F(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Go(t,e){return new Yo(t,e)}Wo.create=Ho,Wo.pointsToPath=Q,co.geometryToLayer=ho,co.coordsToLatLng=uo,co.coordsToLatLngs=po,co.latLngToCoords=mo,co.latLngsToCoords=go,co.getFeature=fo,co.asFeature=vo,ii.mergeOptions({boxZoom:!0});var Ko=mi.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){ze(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Re(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ue(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ee(),$e(),this._startPoint=this._map.mouseEventToContainerPoint(t),ze(document,{contextmenu:Ve,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=he("div","leaflet-zoom-box",this._container),ve(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new R(this._point,this._startPoint),i=e.getSize();Se(this._box,e.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(ue(this._box),ye(this._container,"leaflet-crosshair")),ie(),Te(),Re(document,{contextmenu:Ve,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(s(this._resetState,this),0);var e=new B(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});ii.addInitHook("addHandler","boxZoom",Ko),ii.mergeOptions({doubleClickZoom:!0});var Xo=mi.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),o=e.options.zoomDelta,n=t.originalEvent.shiftKey?i-o:i+o;"center"===e.options.doubleClickZoom?e.setZoom(n):e.setZoomAround(t.containerPoint,n)}});ii.addInitHook("addHandler","doubleClickZoom",Xo),ii.mergeOptions({dragging:!0,inertia:!st,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Qo=mi.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new xi(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ve(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){ye(this._map._container,"leaflet-grab"),ye(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=N(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.x<e.min.x&&(t.x=this._viscousLimit(t.x,e.min.x)),t.y<e.min.y&&(t.y=this._viscousLimit(t.y,e.min.y)),t.x>e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,o=this._draggable._newPos.x,n=(o-e+i)%t+e-i,s=(o+e+i)%t-e-i,r=Math.abs(n+i)<Math.abs(s+i)?n:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var e=this._map,i=e.options,o=!i.inertia||this._times.length<2;if(e.fire("dragend",t),o)e.fire("moveend");else{this._prunePositions(+new Date);var n=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=i.easeLinearity,a=n.multiplyBy(r/s),l=a.distanceTo([0,0]),d=Math.min(i.inertiaMaxSpeed,l),c=a.multiplyBy(d/l),h=d/(i.inertiaDeceleration*r),u=c.multiplyBy(-h/2).round();u.x||u.y?(u=e._limitOffset(u,e.options.maxBounds),A((function(){e.panBy(u,{duration:h,easeLinearity:r,noMoveStart:!0,animate:!0})}))):e.fire("moveend")}}});ii.addInitHook("addHandler","dragging",Qo),ii.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Jo=mi.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),ze(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Re(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,e=document.documentElement,i=t.scrollTop||e.scrollTop,o=t.scrollLeft||e.scrollLeft;this._map._container.focus(),window.scrollTo(o,i)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var e,i,o=this._panKeys={},n=this.keyCodes;for(e=0,i=n.left.length;e<i;e++)o[n.left[e]]=[-1*t,0];for(e=0,i=n.right.length;e<i;e++)o[n.right[e]]=[t,0];for(e=0,i=n.down.length;e<i;e++)o[n.down[e]]=[0,t];for(e=0,i=n.up.length;e<i;e++)o[n.up[e]]=[0,-1*t]},_setZoomDelta:function(t){var e,i,o=this._zoomKeys={},n=this.keyCodes;for(e=0,i=n.zoomIn.length;e<i;e++)o[n.zoomIn[e]]=t;for(e=0,i=n.zoomOut.length;e<i;e++)o[n.zoomOut[e]]=-t},_addHooks:function(){ze(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Re(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e,i=t.keyCode,o=this._map;if(i in this._panKeys)o._panAnim&&o._panAnim._inProgress||(e=this._panKeys[i],t.shiftKey&&(e=P(e).multiplyBy(3)),o.panBy(e),o.options.maxBounds&&o.panInsideBounds(o.options.maxBounds));else if(i in this._zoomKeys)o.setZoom(o.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[i]);else{if(27!==i||!o._popup||!o._popup.options.closeOnEscapeKey)return;o.closePopup()}Ve(t)}}});ii.addInitHook("addHandler","keyboard",Jo),ii.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var tn=mi.extend({addHooks:function(){ze(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Re(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var e=Ze(t),i=this._map.options.wheelDebounceTime;this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(s(this._performZoom,this),o),Ve(t)},_performZoom:function(){var t=this._map,e=t.getZoom(),i=this._map.options.zoomSnap||0;t._stop();var o=this._delta/(4*this._map.options.wheelPxPerZoomLevel),n=4*Math.log(2/(1+Math.exp(-Math.abs(o))))/Math.LN2,s=i?Math.ceil(n/i)*i:n,r=t._limitZoom(e+(this._delta>0?s:-s))-e;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}});ii.addInitHook("addHandler","scrollWheelZoom",tn),ii.mergeOptions({tap:!0,tapTolerance:15});var en=mi.extend({addHooks:function(){ze(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Re(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(je(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var e=t.touches[0],i=e.target;this._startPos=this._newPos=new O(e.clientX,e.clientY),i.tagName&&"a"===i.tagName.toLowerCase()&&ve(i,"leaflet-active"),this._holdTimeout=setTimeout(s((function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",e))}),this),1e3),this._simulateEvent("mousedown",e),ze(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Re(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var e=t.changedTouches[0],i=e.target;i&&i.tagName&&"a"===i.tagName.toLowerCase()&&ye(i,"leaflet-active"),this._simulateEvent("mouseup",e),this._isTapValid()&&this._simulateEvent("click",e)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new O(e.clientX,e.clientY),this._simulateEvent("mousemove",e)},_simulateEvent:function(t,e){var i=document.createEvent("MouseEvents");i._simulated=!0,e.target._simulatedClick=!0,i.initMouseEvent(t,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(i)}});Ct&&!kt&&ii.addInitHook("addHandler","tap",en),ii.mergeOptions({touchZoom:Ct&&!st,bounceAtZoomLimits:!0});var on=mi.extend({addHooks:function(){ve(this._map._container,"leaflet-touch-zoom"),ze(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){ye(this._map._container,"leaflet-touch-zoom"),Re(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),"center"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(i.add(o)._divideBy(2))),this._startDist=i.distanceTo(o),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),ze(document,"touchmove",this._onTouchMove,this),ze(document,"touchend",this._onTouchEnd,this),je(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]),n=i.distanceTo(o)/this._startDist;if(this._zoom=e.getScaleZoom(n,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoom<e.getMinZoom()&&n<1||this._zoom>e.getMaxZoom()&&n>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===n)return}else{var r=i._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===n&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),E(this._animRequest);var a=s(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=A(a,this,!0),je(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,E(this._animRequest),Re(document,"touchmove",this._onTouchMove),Re(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});ii.addInitHook("addHandler","touchZoom",on),ii.BoxZoom=Ko,ii.DoubleClickZoom=Xo,ii.Drag=Qo,ii.Keyboard=Jo,ii.ScrollWheelZoom=tn,ii.Tap=en,ii.TouchZoom=on,Object.freeze=i,t.version=e,t.Control=ni,t.control=si,t.Browser=It,t.Evented=I,t.Mixin=fi,t.Util=$,t.Class=T,t.Handler=mi,t.extend=o,t.bind=s,t.stamp=a,t.setOptions=m,t.DomEvent=ti,t.DomUtil=Le,t.PosAnimation=ei,t.Draggable=xi,t.LineUtil=Li,t.PolyUtil=Pi,t.Point=O,t.point=P,t.Bounds=R,t.bounds=N,t.Transformation=Z,t.transformation=Y,t.Projection=Bi,t.LatLng=q,t.latLng=U,t.LatLngBounds=B,t.latLngBounds=F,t.CRS=j,t.GeoJSON=co,t.geoJSON=bo,t.geoJson=xo,t.Layer=ji,t.LayerGroup=Vi,t.layerGroup=Hi,t.FeatureGroup=Wi,t.featureGroup=Zi,t.ImageOverlay=_o,t.imageOverlay=wo,t.VideoOverlay=ko,t.videoOverlay=Co,t.SVGOverlay=So,t.svgOverlay=Ao,t.DivOverlay=Eo,t.Popup=$o,t.popup=To,t.Tooltip=Do,t.tooltip=Mo,t.Icon=Yi,t.icon=Gi,t.DivIcon=Io,t.divIcon=Oo,t.Marker=Qi,t.marker=Ji,t.TileLayer=Po,t.tileLayer=Ro,t.GridLayer=Lo,t.gridLayer=zo,t.SVG=Wo,t.svg=Zo,t.Renderer=Fo,t.Canvas=qo,t.canvas=Uo,t.Path=to,t.CircleMarker=eo,t.circleMarker=io,t.Circle=oo,t.circle=no,t.Polyline=so,t.polyline=ro,t.Polygon=ao,t.polygon=lo,t.Rectangle=Yo,t.rectangle=Go,t.Map=ii,t.map=oi;var nn=window.L;t.noConflict=function(){return window.L=nn,this},window.L=t})(_w.exports);var ww=_w.exports;const kw={weight:1,opacity:1,color:"white",fillOpacity:.7,fillColor:"#2387ca"},Cw={weight:3,color:"white",fillOpacity:1,fillColor:"#2387ca"},Sw=()=>kw;class Aw extends dt{static get styles(){return a`
13604
13613
  :host {
13605
13614
  display: block;
13606
13615
  padding: 0px;
@@ -13635,11 +13644,11 @@ const Z_=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
13635
13644
  color: var(--color-link-primary);
13636
13645
  cursor: pointer;
13637
13646
  }
13638
- `}constructor(){super(),this.osmId="",this.endpoint="",this.hovered=null,this.path=[],this.renderedMap=null,this.states=null,this.paths={},this.lastHovered=null}getRenderRoot(){return this.renderRoot}getEndpoint(){return this.endpoint+(this.endpoint.endsWith("/")?"":"/")}refreshMap(){const t=(t,e)=>{this.paths[t.properties.osm_id]=e,e.on({click:t=>{const e=t.target.feature.properties;if(e.osm_id!==this.path[this.path.length-1].osm_id){const i=t.originalEvent;i.stopPropagation(),i.preventDefault(),this.onFeatureClicked&&this.onFeatureClicked(e),this.hovered=null,this.path.push(e),this.osmId=e.osm_id,this.refreshMap()}},mouseover:t=>{const e=t.target.feature.properties;e.osm_id!==this.path[this.path.length-1].osm_id&&(t.target.setStyle(ww),this.hovered=e)},mouseout:t=>{t.target.setStyle(_w),this.hovered=null}})};re(this.getEndpoint()+"geometry/"+this.osmId+"/").then((e=>{this.states&&this.renderedMap.removeLayer(this.states);const i=e.json;0===this.path.length&&(this.path=[{name:i.name,osm_id:this.osmId,level:0}]),this.states=xw.geoJSON(i.geometry,{style:kw,onEachFeature:t}),this.renderedMap.fitBounds(this.states.getBounds(),{}),this.states.addTo(this.renderedMap)}))}updated(t){if(t.has("hovered")&&(this.lastHovered&&this.lastHovered.setStyle(_w),this.hovered)){const t=this.paths[this.hovered.osm_id];this.lastHovered=t,t&&t.setStyle(ww)}if(t.has("feature")&&this.feature&&(this.hovered=null,0!==this.path.length&&this.path[this.path.length-1].osm_id===this.feature.osm_id||this.path.push(this.feature)),t.has("osmId")){const t=[];for(const e of this.path)if(t.push(e),e.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(e);break}this.path=t,this.refreshMap()}}firstUpdated(t){const e=this.getRenderRoot().getElementById("alias-map");this.renderedMap=xw.map(e,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView([0,1],4),this.renderedMap.dragging.disable(),this.renderedMap.doubleClickZoom.disable(),this.refreshMap(),super.firstUpdated(t)}handleClickedBreadcrumb(t){this.osmId=t.currentTarget.getAttribute("data-osmid");const e=[];for(const t of this.path)if(e.push(t),t.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(t);break}this.path=e,this.refreshMap()}render(){return this.osmId?H`
13647
+ `}constructor(){super(),this.osmId="",this.endpoint="",this.hovered=null,this.path=[],this.renderedMap=null,this.states=null,this.paths={},this.lastHovered=null}getRenderRoot(){return this.renderRoot}getEndpoint(){return this.endpoint+(this.endpoint.endsWith("/")?"":"/")}refreshMap(){const t=(t,e)=>{this.paths[t.properties.osm_id]=e,e.on({click:t=>{const e=t.target.feature.properties;if(e.osm_id!==this.path[this.path.length-1].osm_id){const i=t.originalEvent;i.stopPropagation(),i.preventDefault(),this.onFeatureClicked&&this.onFeatureClicked(e),this.hovered=null,this.path.push(e),this.osmId=e.osm_id,this.refreshMap()}},mouseover:t=>{const e=t.target.feature.properties;e.osm_id!==this.path[this.path.length-1].osm_id&&(t.target.setStyle(Cw),this.hovered=e)},mouseout:t=>{t.target.setStyle(kw),this.hovered=null}})};re(this.getEndpoint()+"geometry/"+this.osmId+"/").then((e=>{this.states&&this.renderedMap.removeLayer(this.states);const i=e.json;0===this.path.length&&(this.path=[{name:i.name,osm_id:this.osmId,level:0}]),this.states=ww.geoJSON(i.geometry,{style:Sw,onEachFeature:t}),this.renderedMap.fitBounds(this.states.getBounds(),{}),this.states.addTo(this.renderedMap)}))}updated(t){if(t.has("hovered")&&(this.lastHovered&&this.lastHovered.setStyle(kw),this.hovered)){const t=this.paths[this.hovered.osm_id];this.lastHovered=t,t&&t.setStyle(Cw)}if(t.has("feature")&&this.feature&&(this.hovered=null,0!==this.path.length&&this.path[this.path.length-1].osm_id===this.feature.osm_id||this.path.push(this.feature)),t.has("osmId")){const t=[];for(const e of this.path)if(t.push(e),e.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(e);break}this.path=t,this.refreshMap()}}firstUpdated(t){const e=this.getRenderRoot().getElementById("alias-map");this.renderedMap=ww.map(e,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView([0,1],4),this.renderedMap.dragging.disable(),this.renderedMap.doubleClickZoom.disable(),this.refreshMap(),super.firstUpdated(t)}handleClickedBreadcrumb(t){this.osmId=t.currentTarget.getAttribute("data-osmid");const e=[];for(const t of this.path)if(e.push(t),t.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(t);break}this.path=e,this.refreshMap()}render(){return this.osmId?H`
13639
13648
  <link
13640
13649
  rel="stylesheet"
13641
13650
  href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css"
13642
13651
  />
13643
13652
  <div id="alias-map"></div>
13644
- `:H`<div>No osm map id</div>`}}t([mt()],Cw.prototype,"feature",void 0),t([mt()],Cw.prototype,"osmId",void 0),t([mt()],Cw.prototype,"endpoint",void 0),t([mt()],Cw.prototype,"onFeatureClicked",void 0),t([mt()],Cw.prototype,"hovered",void 0),t([mt()],Cw.prototype,"path",void 0),vw("leaflet-map",Cw),vw("alias-editor",yw)}();
13653
+ `:H`<div>No osm map id</div>`}}t([mt()],Aw.prototype,"feature",void 0),t([mt()],Aw.prototype,"osmId",void 0),t([mt()],Aw.prototype,"endpoint",void 0),t([mt()],Aw.prototype,"onFeatureClicked",void 0),t([mt()],Aw.prototype,"hovered",void 0),t([mt()],Aw.prototype,"path",void 0),bw("leaflet-map",Aw),bw("alias-editor",xw)}();
13645
13654
  //# sourceMappingURL=temba-components.js.map