calendar-link
Version:
📅 Calendar link generator for popular services, like Google, Outlook, and Yahoo.
1 lines • 35.5 kB
Source Map (JSON)
{"version":3,"file":"index.modern.mjs","sources":["../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/utc.js","../src/utils.ts","../src/index.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",f=\"date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,c=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+$(r,2,\"0\")+\":\"+$(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,u),s=n-i<0,a=e.clone().add(r+(s?-1:1),u);return+(-(r+(n-i)/(s?i-a:a-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:o,w:s,d:i,D:f,h:r,m:n,s:e,ms:t,Q:a}[h]||String(h||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},y=\"en\",M={};M[y]=d;var m=function(t){return t instanceof S},D=function(t,e,n){var r;if(!t)return y;if(\"string\"==typeof t)M[t]&&(r=t),e&&(M[t]=e,r=t);else{var i=t.name;M[i]=t,r=i}return!n&&r&&(y=r),r||!n&&y},v=function(t,e){if(m(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new S(n)},g=l;g.l=D,g.i=m,g.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var S=function(){function d(t){this.$L=D(t.locale,null,!0),this.parse(t)}var $=d.prototype;return $.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(g.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},$.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},$.$utils=function(){return g},$.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},$.isSame=function(t,e){var n=v(t);return this.startOf(e)<=n&&n<=this.endOf(e)},$.isAfter=function(t,e){return v(t)<this.startOf(e)},$.isBefore=function(t,e){return this.endOf(e)<v(t)},$.$g=function(t,e,n){return g.u(t)?this[e]:this.set(n,t)},$.unix=function(){return Math.floor(this.valueOf()/1e3)},$.valueOf=function(){return this.$d.getTime()},$.startOf=function(t,a){var h=this,c=!!g.u(a)||a,d=g.p(t),$=function(t,e){var n=g.w(h.$u?Date.UTC(h.$y,e,t):new Date(h.$y,e,t),h);return c?n:n.endOf(i)},l=function(t,e){return g.w(h.toDate()[t].apply(h.toDate(\"s\"),(c?[0,0,0,0]:[23,59,59,999]).slice(e)),h)},y=this.$W,M=this.$M,m=this.$D,D=\"set\"+(this.$u?\"UTC\":\"\");switch(d){case o:return c?$(1,0):$(31,11);case u:return c?$(1,M):$(0,M+1);case s:var v=this.$locale().weekStart||0,S=(y<v?y+7:y)-v;return $(c?m-S:m+(6-S),M);case i:case f:return l(D+\"Hours\",0);case r:return l(D+\"Minutes\",1);case n:return l(D+\"Seconds\",2);case e:return l(D+\"Milliseconds\",3);default:return this.clone()}},$.endOf=function(t){return this.startOf(t,!1)},$.$set=function(s,a){var h,c=g.p(s),d=\"set\"+(this.$u?\"UTC\":\"\"),$=(h={},h[i]=d+\"Date\",h[f]=d+\"Date\",h[u]=d+\"Month\",h[o]=d+\"FullYear\",h[r]=d+\"Hours\",h[n]=d+\"Minutes\",h[e]=d+\"Seconds\",h[t]=d+\"Milliseconds\",h)[c],l=c===i?this.$D+(a-this.$W):a;if(c===u||c===o){var y=this.clone().set(f,1);y.$d[$](l),y.init(),this.$d=y.set(f,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},$.set=function(t,e){return this.clone().$set(t,e)},$.get=function(t){return this[g.p(t)]()},$.add=function(t,a){var f,h=this;t=Number(t);var c=g.p(a),d=function(e){var n=v(h);return g.w(n.date(n.date()+Math.round(e*t)),h)};if(c===u)return this.set(u,this.$M+t);if(c===o)return this.set(o,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(f={},f[n]=6e4,f[r]=36e5,f[e]=1e3,f)[c]||1,l=this.$d.getTime()+t*$;return g.w(l,this)},$.subtract=function(t,e){return this.add(-1*t,e)},$.format=function(t){var e=this;if(!this.isValid())return\"Invalid Date\";var n=t||\"YYYY-MM-DDTHH:mm:ssZ\",r=g.z(this),i=this.$locale(),s=this.$H,u=this.$m,a=this.$M,o=i.weekdays,f=i.months,h=function(t,r,i,s){return t&&(t[r]||t(e,n))||i[r].substr(0,s)},d=function(t){return g.s(s%12||12,t,\"0\")},$=i.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:g.s(a+1,2,\"0\"),MMM:h(i.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:g.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(i.weekdaysMin,this.$W,o,2),ddd:h(i.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:g.s(s,2,\"0\"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:g.s(u,2,\"0\"),s:String(this.$s),ss:g.s(this.$s,2,\"0\"),SSS:g.s(this.$ms,3,\"0\"),Z:r};return n.replace(c,function(t,e){return e||l[t]||r.replace(\":\",\"\")})},$.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},$.diff=function(t,f,h){var c,d=g.p(f),$=v(t),l=6e4*($.utcOffset()-this.utcOffset()),y=this-$,M=g.m(this,$);return M=(c={},c[o]=M/12,c[u]=M,c[a]=M/3,c[s]=(y-l)/6048e5,c[i]=(y-l)/864e5,c[r]=y/36e5,c[n]=y/6e4,c[e]=y/1e3,c)[d]||y,h?M:g.a(M)},$.daysInMonth=function(){return this.endOf(u).$D},$.$locale=function(){return M[this.$L]},$.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=D(t,e,!0);return r&&(n.$L=r),n},$.clone=function(){return g.w(this.$d,this)},$.toDate=function(){return new Date(this.valueOf())},$.toJSON=function(){return this.isValid()?this.toISOString():null},$.toISOString=function(){return this.$d.toISOString()},$.toString=function(){return this.$d.toUTCString()},d}(),p=S.prototype;return v.prototype=p,[[\"$ms\",t],[\"$s\",e],[\"$m\",n],[\"$H\",r],[\"$W\",i],[\"$M\",u],[\"$y\",o],[\"$D\",f]].forEach(function(t){p[t[1]]=function(e){return this.$g(e,t[0],t[1])}}),v.extend=function(t,e){return t.$i||(t(e,S,v),t.$i=!0),v},v.locale=D,v.isDayjs=m,v.unix=function(t){return v(1e3*t)},v.en=M[y],v.Ls=M,v.p={},v});\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):t.dayjs_plugin_utc=i()}(this,function(){\"use strict\";return function(t,i,e){var s=i.prototype;e.utc=function(t){return new i({date:t,utc:!0,args:arguments})},s.utc=function(t){var i=e(this.toDate(),{locale:this.$L,utc:!0});return t?i.add(this.utcOffset(),\"minute\"):i},s.local=function(){return e(this.toDate(),{locale:this.$L,utc:!1})};var f=s.parse;s.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),f.call(this,t)};var n=s.init;s.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else n.call(this)};var u=s.utcOffset;s.utcOffset=function(t,i){var e=this.$utils().u;if(e(t))return this.$u?0:e(this.$offset)?u.call(this):this.$offset;var s=Math.abs(t)<=16?60*t:t,f=this;if(i)return f.$offset=s,f.$u=0===t,f;if(0!==t){var n=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(f=this.local().add(s+n,\"minute\")).$offset=s,f.$x.$localOffset=n}else f=this.utc();return f};var o=s.format;s.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return o.call(this,i)},s.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||(new Date).getTimezoneOffset());return this.$d.valueOf()-6e4*t},s.isUTC=function(){return!!this.$u},s.toISOString=function(){return this.toDate().toISOString()},s.toString=function(){return this.toDate().toUTCString()};var r=s.toDate;s.toDate=function(t){return\"s\"===t&&this.$offset?e(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():r.call(this)};var a=s.diff;s.diff=function(t,i,s){if(t&&this.$u===t.$u)return a.call(this,t,i,s);var f=this.local(),n=e(t).local();return a.call(f,n,i,s)}}});\n","export const TimeFormats = {\n dateTimeLocal: \"YYYY-MM-DD[T]HH:mm:ss\",\n dateTimeUTC: \"YYYYMMDD[T]HHmmss[Z]\",\n allDay: \"YYYYMMDD\",\n};\n","import dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\n\nimport {\n CalendarEvent,\n CalendarEventOrganizer,\n NormalizedCalendarEvent,\n Aol,\n Google,\n MsTeams,\n Outlook,\n Yahoo,\n} from \"./interfaces\";\nimport { TimeFormats } from \"./utils\";\n\ndayjs.extend(utc);\n\nfunction stringify(input: Record<string, any>): string {\n const params = new URLSearchParams();\n Object.keys(input)\n .sort()\n .forEach((key) => {\n const value = input[key];\n if (value != null) {\n params.append(key, value);\n }\n });\n return params.toString().replace(/\\+/g, \"%20\");\n}\n\nfunction formatTimes(\n { startTime, endTime }: NormalizedCalendarEvent,\n dateTimeFormat: keyof typeof TimeFormats\n): { start: string; end: string } {\n const format = TimeFormats[dateTimeFormat];\n return { start: startTime.format(format), end: endTime.format(format) };\n}\n\nexport const eventify = (event: CalendarEvent, toUtc: boolean = true): NormalizedCalendarEvent => {\n const { start, end, duration, ...rest } = event;\n const startTime = toUtc ? dayjs(start).utc() : dayjs(start);\n const endTime = end\n ? toUtc\n ? dayjs(end).utc()\n : dayjs(end)\n : (() => {\n if (event.allDay) {\n return startTime.add(1, \"day\");\n }\n if (duration && duration.length == 2) {\n const value = Number(duration[0]);\n const unit = duration[1];\n return startTime.add(value, unit);\n }\n return startTime;\n })();\n return {\n ...rest,\n startTime: startTime,\n endTime: endTime,\n };\n};\n\nexport const google = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent);\n const { start, end } = formatTimes(event, event.allDay ? \"allDay\" : \"dateTimeUTC\");\n const details: Google = {\n action: \"TEMPLATE\",\n text: event.title,\n details: event.description,\n location: event.location,\n trp: event.busy,\n dates: start + \"/\" + end,\n recur: event.rRule ? \"RRULE:\" + event.rRule : undefined,\n };\n if (event.guests && event.guests.length) {\n details.add = event.guests.join();\n }\n return `https://calendar.google.com/calendar/render?${stringify(details)}`;\n};\n\nexport const outlook = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent, false);\n const { start, end } = formatTimes(event, \"dateTimeLocal\");\n const details: Outlook = {\n path: \"/calendar/action/compose\",\n rru: \"addevent\",\n startdt: start,\n enddt: end,\n subject: event.title,\n body: event.description,\n location: event.location,\n allday: event.allDay || false,\n };\n return `https://outlook.live.com/calendar/0/action/compose?${stringify(details)}`;\n};\n\nexport const outlookMobile = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent, false);\n const { start, end } = formatTimes(event, \"dateTimeLocal\");\n const details: Outlook = {\n path: \"/calendar/action/compose\",\n rru: \"addevent\",\n startdt: start,\n enddt: end,\n subject: event.title,\n body: event.description,\n location: event.location,\n allday: event.allDay || false,\n };\n return `https://outlook.live.com/calendar/0/deeplink/compose?${stringify(details)}`;\n};\n\nexport const office365 = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent, false);\n const { start, end } = formatTimes(event, \"dateTimeLocal\");\n const details: Outlook = {\n path: \"/calendar/action/compose\",\n rru: \"addevent\",\n startdt: start,\n enddt: end,\n subject: event.title,\n body: event.description,\n location: event.location,\n allday: event.allDay || false,\n };\n return `https://outlook.office.com/calendar/0/action/compose?${stringify(details)}`;\n};\n\nexport const office365Mobile = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent, false);\n const { start, end } = formatTimes(event, \"dateTimeLocal\");\n const details: Outlook = {\n path: \"/calendar/action/compose\",\n rru: \"addevent\",\n startdt: start,\n enddt: end,\n subject: event.title,\n body: event.description,\n location: event.location,\n allday: event.allDay || false,\n };\n return `https://outlook.office.com/calendar/0/deeplink/compose?${stringify(details)}`;\n};\n\nexport const yahoo = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent);\n const { start, end } = formatTimes(event, event.allDay ? \"allDay\" : \"dateTimeUTC\");\n const details: Yahoo = {\n v: 60,\n title: event.title,\n st: start,\n et: end,\n desc: event.description,\n in_loc: event.location,\n dur: event.allDay ? \"allday\" : false,\n };\n return `https://calendar.yahoo.com/?${stringify(details)}`;\n};\n\nexport const aol = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent);\n const { start, end } = formatTimes(event, event.allDay ? \"allDay\" : \"dateTimeUTC\");\n const details: Aol = {\n v: 60,\n title: event.title,\n st: start,\n et: end,\n desc: event.description,\n in_loc: event.location,\n dur: event.allDay ? \"allday\" : false,\n };\n return `https://calendar.aol.com/?${stringify(details)}`;\n};\n\n// https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/deep-link-workflow?tabs=teamsjs-v2#configure-deep-link-manually-to-open-a-meeting-scheduling-dialog\nexport const msTeams = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent);\n const details: MsTeams = {\n subject: event.title,\n content: event.description,\n startTime: event.startTime.toISOString(),\n endTime: event.endTime.toISOString(),\n };\n if (event.guests && event.guests.length) {\n details.attendees = event.guests.join();\n }\n return `https://teams.microsoft.com/l/meeting/new?${stringify(details)}`;\n};\n\nexport const ics = (calendarEvent: CalendarEvent): string => {\n const event = eventify(calendarEvent);\n const formattedDescription: string = (event.description || \"\")\n .replace(/,/gm, \",\")\n .replace(/;/gm, \";\")\n .replace(/\\r\\n/gm, \"\\n\")\n .replace(/\\n/gm, \"\\\\n\")\n .replace(/(\\\\n)[\\s\\t]+/gm, \"\\\\n\");\n\n const formattedLocation: string = (event.location || \"\")\n .replace(/,/gm, \",\")\n .replace(/;/gm, \";\")\n .replace(/\\r\\n/gm, \"\\n\")\n .replace(/\\n/gm, \"\\\\n\")\n .replace(/(\\\\n)[\\s\\t]+/gm, \"\\\\n\");\n\n const { start, end } = formatTimes(event, event.allDay ? \"allDay\" : \"dateTimeUTC\");\n const dateStamp = dayjs(new Date()).utc().format(TimeFormats[\"dateTimeUTC\"]);\n const calendarChunks = [\n {\n key: \"BEGIN\",\n value: \"VCALENDAR\",\n },\n {\n key: \"VERSION\",\n value: \"2.0\",\n },\n {\n key: \"PRODID\",\n value: \"-//AnandChowdhary//calendar-link//EN\"\n },\n {\n key: \"BEGIN\",\n value: \"VEVENT\",\n },\n {\n key: \"URL\",\n value: event.url,\n },\n {\n key: \"DTSTART\",\n value: start,\n },\n {\n key: \"DTEND\",\n value: end,\n },\n {\n key: \"DTSTAMP\",\n value: dateStamp,\n },\n ...(event.allDay ? [\n {\n key: \"X-MICROSOFT-CDO-ALLDAYEVENT\",\n value: \"TRUE\"\n },\n {\n key: \"X-MICROSOFT-MSNCALENDAR-ALLDAYEVENT\",\n value: \"TRUE\"\n }] : []),\n {\n key: \"RRULE\",\n value: event.rRule,\n },\n {\n key: \"SUMMARY\",\n value: event.title,\n },\n {\n key: \"DESCRIPTION\",\n value: formattedDescription,\n },\n {\n key: \"LOCATION\",\n value: formattedLocation,\n },\n {\n key: \"ORGANIZER\",\n value: event.organizer,\n },\n {\n key: \"STATUS\",\n value: event.status,\n },\n {\n key: \"UID\",\n value: event.uid || Math.floor(Math.random() * 100000).toString().replace(\".\", \"\"),\n },\n {\n key: \"END\",\n value: \"VEVENT\",\n },\n {\n key: \"END\",\n value: \"VCALENDAR\",\n },\n ];\n\n let calendarUrl: string = \"\";\n\n calendarChunks.forEach((chunk) => {\n if (chunk.value) {\n if (chunk.key == \"ORGANIZER\") {\n const value = chunk.value as CalendarEventOrganizer;\n calendarUrl += `${chunk.key};${encodeURIComponent(\n `CN=${value.name}:MAILTO:${value.email}\\r\\n`\n )}`;\n } else {\n calendarUrl += `${chunk.key}:${encodeURIComponent(`${chunk.value}\\r\\n`)}`;\n }\n }\n });\n\n return `data:text/calendar;charset=utf8,${calendarUrl}`;\n};\n\nexport { CalendarEvent };\n"],"names":["module","t","e","n","r","i","s","u","a","o","f","h","c","d","name","weekdays","split","months","$","String","length","Array","join","l","z","utcOffset","Math","abs","floor","m","date","year","month","clone","add","ceil","p","M","y","w","D","ms","Q","toLowerCase","replace","S","v","args","arguments","g","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","substr","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","forEach","extend","$i","isDayjs","en","Ls","local","call","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","TimeFormats","dateTimeLocal","dateTimeUTC","allDay","stringify","input","params","URLSearchParams","Object","keys","sort","key","value","append","formatTimes","startTime","endTime","dateTimeFormat","start","end","dayjs","eventify","event","toUtc","duration","rest","google","calendarEvent","details","action","text","title","description","location","trp","busy","dates","recur","rRule","undefined","guests","outlook","path","rru","startdt","enddt","subject","body","allday","outlookMobile","office365","office365Mobile","yahoo","st","et","desc","in_loc","dur","aol","msTeams","content","attendees","ics","formattedDescription","formattedLocation","dateStamp","calendarChunks","url","organizer","status","uid","random","calendarUrl","chunk","encodeURIComponent","email"],"mappings":"obAAoEA,UAAqF,WAAwB,IAAIC,EAAE,cAAcC,EAAE,SAASC,EAAE,SAASC,EAAE,OAAOC,EAAE,MAAMC,EAAE,OAAOC,EAAE,QAAQC,EAAE,UAAUC,EAAE,OAAOC,EAAE,OAAOC,EAAE,6FAA6FC,EAAE,sFAAsFC,EAAE,CAACC,KAAK,KAAKC,SAAS,2DAA2DC,MAAM,KAAKC,OAAO,wFAAwFD,MAAM,MAAME,EAAE,SAASjB,EAAEC,EAAEC,GAAG,IAAIC,EAAEe,OAAOlB,GAAG,OAAOG,GAAGA,EAAEgB,QAAQlB,EAAED,EAAE,GAAGoB,MAAMnB,EAAE,EAAEE,EAAEgB,QAAQE,KAAKnB,GAAGF,CAAC,EAAEsB,EAAE,CAACjB,EAAEY,EAAEM,EAAE,SAASvB,GAAG,IAAIC,GAAGD,EAAEwB,YAAYtB,EAAEuB,KAAKC,IAAIzB,GAAGE,EAAEsB,KAAKE,MAAMzB,EAAE,IAAIE,EAAEF,EAAE,GAAG,OAAOD,GAAG,EAAE,IAAI,KAAKgB,EAAEd,EAAE,EAAE,KAAK,IAAIc,EAAEb,EAAE,EAAE,IAAI,EAAEwB,EAAE,SAAS5B,EAAEC,EAAEC,GAAG,GAAGD,EAAE4B,OAAO3B,EAAE2B,OAAO,OAAO7B,EAAEE,EAAED,GAAG,IAAIE,EAAE,IAAID,EAAE4B,OAAO7B,EAAE6B,SAAS5B,EAAE6B,QAAQ9B,EAAE8B,SAAS3B,EAAEH,EAAE+B,QAAQC,IAAI9B,EAAEG,GAAGD,EAAEH,EAAEE,EAAE,EAAEG,EAAEN,EAAE+B,QAAQC,IAAI9B,GAAGE,GAAG,EAAE,GAAGC,GAAG,UAAUH,GAAGD,EAAEE,IAAIC,EAAED,EAAEG,EAAEA,EAAEH,KAAK,EAAE,EAAEG,EAAE,SAASP,GAAG,OAAOA,EAAE,EAAEyB,KAAKS,KAAKlC,IAAI,EAAEyB,KAAKE,MAAM3B,EAAE,EAAEmC,EAAE,SAASzB,GAAG,MAAM,CAAC0B,EAAE9B,EAAE+B,EAAE7B,EAAE8B,EAAEjC,EAAEO,EAAER,EAAEmC,EAAE9B,EAAEC,EAAEP,EAAEyB,EAAE1B,EAAEG,EAAEJ,EAAEuC,GAAGxC,EAAEyC,EAAElC,GAAGG,IAAIQ,OAAOR,GAAG,IAAIgC,cAAcC,QAAQ,KAAK,GAAG,EAAErC,EAAE,SAASN,GAAG,YAAO,IAASA,CAAC,GAAGqC,EAAE,KAAKD,EAAE,GAAGA,EAAEC,GAAGzB,EAAE,IAAIgB,EAAE,SAAS5B,GAAG,OAAOA,aAAa4C,CAAC,EAAEL,EAAE,SAASvC,EAAEC,EAAEC,GAAG,IAAIC,EAAE,IAAIH,EAAE,OAAOqC,EAAE,GAAG,iBAAiBrC,EAAEoC,EAAEpC,KAAKG,EAAEH,GAAGC,IAAImC,EAAEpC,GAAGC,EAAEE,EAAEH,OAAO,CAAC,IAAII,EAAEJ,EAAEa,KAAKuB,EAAEhC,GAAGJ,EAAEG,EAAEC,CAAC,CAAC,OAAOF,GAAGC,IAAIkC,EAAElC,GAAGA,IAAID,GAAGmC,CAAC,EAAEQ,EAAE,SAAS7C,EAAEC,GAAG,GAAG2B,EAAE5B,GAAG,OAAOA,EAAEgC,QAAQ,IAAI9B,EAAE,iBAAiBD,EAAEA,EAAE,GAAG,OAAOC,EAAE2B,KAAK7B,EAAEE,EAAE4C,KAAKC,UAAU,IAAIH,EAAE1C,EAAE,EAAE8C,EAAE1B,EAAE0B,EAAE1B,EAAEiB,EAAES,EAAE5C,EAAEwB,EAAEoB,EAAEV,EAAE,SAAStC,EAAEC,GAAG,OAAO4C,EAAE7C,EAAE,CAACiD,OAAOhD,EAAEiD,GAAGC,IAAIlD,EAAEmD,GAAGC,EAAEpD,EAAEqD,GAAGC,QAAQtD,EAAEsD,SAAS,EAAE,IAAIX,EAAE,WAAW,SAAShC,EAAEZ,GAAGwD,KAAKN,GAAGX,EAAEvC,EAAEiD,OAAO,MAAK,GAAIO,KAAKC,MAAMzD,EAAE,CAAC,IAAIiB,EAAEL,EAAE8C,UAAU,OAAOzC,EAAEwC,MAAM,SAASzD,GAAGwD,KAAKG,GAAG,SAAS3D,GAAG,IAAIC,EAAED,EAAE6B,KAAK3B,EAAEF,EAAEmD,IAAI,GAAG,OAAOlD,EAAE,OAAO,IAAI2D,KAAKC,KAAK,GAAGb,EAAE1C,EAAEL,GAAG,OAAO,IAAI2D,KAAK,GAAG3D,aAAa2D,KAAK,OAAO,IAAIA,KAAK3D,GAAG,GAAG,iBAAiBA,IAAI,MAAM6D,KAAK7D,GAAG,CAAC,IAAIE,EAAEF,EAAE8D,MAAMrD,GAAG,GAAGP,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,GAAG,EAAEE,GAAGF,EAAE,IAAI,KAAK6D,UAAU,EAAE,GAAG,OAAO9D,EAAE,IAAI0D,KAAKA,KAAKK,IAAI9D,EAAE,GAAGC,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEE,IAAI,IAAIuD,KAAKzD,EAAE,GAAGC,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEE,EAAE,CAAC,CAAC,OAAO,IAAIuD,KAAK3D,EAAE,CAA3X,CAA6XD,GAAGwD,KAAKF,GAAGtD,EAAEqD,GAAG,GAAGG,KAAKU,MAAM,EAAEjD,EAAEiD,KAAK,WAAW,IAAIlE,EAAEwD,KAAKG,GAAGH,KAAKW,GAAGnE,EAAEoE,cAAcZ,KAAKa,GAAGrE,EAAEsE,WAAWd,KAAKe,GAAGvE,EAAEwE,UAAUhB,KAAKiB,GAAGzE,EAAE0E,SAASlB,KAAKmB,GAAG3E,EAAE4E,WAAWpB,KAAKqB,GAAG7E,EAAE8E,aAAatB,KAAKuB,GAAG/E,EAAEgF,aAAaxB,KAAKyB,IAAIjF,EAAEkF,iBAAiB,EAAEjE,EAAEkE,OAAO,WAAW,OAAOnC,CAAC,EAAE/B,EAAEmE,QAAQ,WAAW,QAAQ,iBAAiB5B,KAAKG,GAAG0B,WAAW,EAAEpE,EAAEqE,OAAO,SAAStF,EAAEC,GAAG,IAAIC,EAAE2C,EAAE7C,GAAG,OAAOwD,KAAK+B,QAAQtF,IAAIC,GAAGA,GAAGsD,KAAKgC,MAAMvF,EAAE,EAAEgB,EAAEwE,QAAQ,SAASzF,EAAEC,GAAG,OAAO4C,EAAE7C,GAAGwD,KAAK+B,QAAQtF,EAAE,EAAEgB,EAAEyE,SAAS,SAAS1F,EAAEC,GAAG,OAAOuD,KAAKgC,MAAMvF,GAAG4C,EAAE7C,EAAE,EAAEiB,EAAE0E,GAAG,SAAS3F,EAAEC,EAAEC,GAAG,OAAO8C,EAAE1C,EAAEN,GAAGwD,KAAKvD,GAAGuD,KAAKoC,IAAI1F,EAAEF,EAAE,EAAEiB,EAAE4E,KAAK,WAAW,OAAOpE,KAAKE,MAAM6B,KAAKsC,UAAU,IAAI,EAAE7E,EAAE6E,QAAQ,WAAW,OAAOtC,KAAKG,GAAGoC,SAAS,EAAE9E,EAAEsE,QAAQ,SAASvF,EAAEO,GAAG,IAAIG,EAAE8C,KAAK7C,IAAIqC,EAAE1C,EAAEC,IAAIA,EAAEK,EAAEoC,EAAEb,EAAEnC,GAAGiB,EAAE,SAASjB,EAAEC,GAAG,IAAIC,EAAE8C,EAAEV,EAAE5B,EAAE0C,GAAGQ,KAAKK,IAAIvD,EAAEyD,GAAGlE,EAAED,GAAG,IAAI4D,KAAKlD,EAAEyD,GAAGlE,EAAED,GAAGU,GAAG,OAAOC,EAAET,EAAEA,EAAEsF,MAAMpF,EAAE,EAAEkB,EAAE,SAAStB,EAAEC,GAAG,OAAO+C,EAAEV,EAAE5B,EAAEsF,SAAShG,GAAGiG,MAAMvF,EAAEsF,OAAO,MAAMrF,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMuF,MAAMjG,IAAIS,EAAE,EAAE2B,EAAEmB,KAAKiB,GAAGrC,EAAEoB,KAAKa,GAAGzC,EAAE4B,KAAKe,GAAGhC,EAAE,OAAOiB,KAAKJ,GAAG,MAAM,IAAI,OAAOxC,GAAG,KAAKJ,EAAE,OAAOG,EAAEM,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAKX,EAAE,OAAOK,EAAEM,EAAE,EAAEmB,GAAGnB,EAAE,EAAEmB,EAAE,GAAG,KAAK/B,EAAE,IAAIwC,EAAEW,KAAK2C,UAAUC,WAAW,EAAExD,GAAGP,EAAEQ,EAAER,EAAE,EAAEA,GAAGQ,EAAE,OAAO5B,EAAEN,EAAEiB,EAAEgB,EAAEhB,GAAG,EAAEgB,GAAGR,GAAG,KAAKhC,EAAE,KAAKK,EAAE,OAAOa,EAAEiB,EAAE,QAAQ,GAAG,KAAKpC,EAAE,OAAOmB,EAAEiB,EAAE,UAAU,GAAG,KAAKrC,EAAE,OAAOoB,EAAEiB,EAAE,UAAU,GAAG,KAAKtC,EAAE,OAAOqB,EAAEiB,EAAE,eAAe,GAAG,QAAQ,OAAOiB,KAAKxB,QAAQ,EAAEf,EAAEuE,MAAM,SAASxF,GAAG,OAAOwD,KAAK+B,QAAQvF,GAAE,EAAG,EAAEiB,EAAEoF,KAAK,SAAShG,EAAEE,GAAG,IAAIG,EAAEC,EAAEqC,EAAEb,EAAE9B,GAAGO,EAAE,OAAO4C,KAAKJ,GAAG,MAAM,IAAInC,GAAGP,EAAE,GAAGA,EAAEN,GAAGQ,EAAE,OAAOF,EAAED,GAAGG,EAAE,OAAOF,EAAEJ,GAAGM,EAAE,QAAQF,EAAEF,GAAGI,EAAE,WAAWF,EAAEP,GAAGS,EAAE,QAAQF,EAAER,GAAGU,EAAE,UAAUF,EAAET,GAAGW,EAAE,UAAUF,EAAEV,GAAGY,EAAE,eAAeF,GAAGC,GAAGW,EAAEX,IAAIP,EAAEoD,KAAKe,IAAIhE,EAAEiD,KAAKiB,IAAIlE,EAAE,GAAGI,IAAIL,GAAGK,IAAIH,EAAE,CAAC,IAAI6B,EAAEmB,KAAKxB,QAAQ4D,IAAInF,EAAE,GAAG4B,EAAEsB,GAAG1C,GAAGK,GAAGe,EAAE6B,OAAOV,KAAKG,GAAGtB,EAAEuD,IAAInF,EAAEgB,KAAK6E,IAAI9C,KAAKe,GAAGlC,EAAEkE,gBAAgB5C,EAAE,MAAM1C,GAAGuC,KAAKG,GAAG1C,GAAGK,GAAG,OAAOkC,KAAKU,OAAOV,IAAI,EAAEvC,EAAE2E,IAAI,SAAS5F,EAAEC,GAAG,OAAOuD,KAAKxB,QAAQqE,KAAKrG,EAAEC,EAAE,EAAEgB,EAAEuF,IAAI,SAASxG,GAAG,OAAOwD,KAAKR,EAAEb,EAAEnC,KAAK,EAAEiB,EAAEgB,IAAI,SAASjC,EAAEO,GAAG,IAAIE,EAAEC,EAAE8C,KAAKxD,EAAEyG,OAAOzG,GAAG,IAAIW,EAAEqC,EAAEb,EAAE5B,GAAGK,EAAE,SAASX,GAAG,IAAIC,EAAE2C,EAAEnC,GAAG,OAAOsC,EAAEV,EAAEpC,EAAE2B,KAAK3B,EAAE2B,OAAOJ,KAAKiF,MAAMzG,EAAED,IAAIU,EAAE,EAAE,GAAGC,IAAIL,EAAE,OAAOkD,KAAKoC,IAAItF,EAAEkD,KAAKa,GAAGrE,GAAG,GAAGW,IAAIH,EAAE,OAAOgD,KAAKoC,IAAIpF,EAAEgD,KAAKW,GAAGnE,GAAG,GAAGW,IAAIP,EAAE,OAAOQ,EAAE,GAAG,GAAGD,IAAIN,EAAE,OAAOO,EAAE,GAAG,IAAIK,GAAGR,EAAE,GAAGA,EAAEP,GAAG,IAAIO,EAAEN,GAAG,KAAKM,EAAER,GAAG,IAAIQ,GAAGE,IAAI,EAAEW,EAAEkC,KAAKG,GAAGoC,UAAU/F,EAAEiB,EAAE,OAAO+B,EAAEV,EAAEhB,EAAEkC,KAAK,EAAEvC,EAAE0F,SAAS,SAAS3G,EAAEC,GAAG,OAAOuD,KAAKvB,KAAK,EAAEjC,EAAEC,EAAE,EAAEgB,EAAE2F,OAAO,SAAS5G,GAAG,IAAIC,EAAEuD,KAAK,IAAIA,KAAK4B,UAAU,MAAM,eAAe,IAAIlF,EAAEF,GAAG,uBAAuBG,EAAE6C,EAAEzB,EAAEiC,MAAMpD,EAAEoD,KAAK2C,UAAU9F,EAAEmD,KAAKmB,GAAGrE,EAAEkD,KAAKqB,GAAGtE,EAAEiD,KAAKa,GAAG7D,EAAEJ,EAAEU,SAASL,EAAEL,EAAEY,OAAON,EAAE,SAASV,EAAEG,EAAEC,EAAEC,GAAG,OAAOL,IAAIA,EAAEG,IAAIH,EAAEC,EAAEC,KAAKE,EAAED,GAAG0G,OAAO,EAAExG,EAAE,EAAEO,EAAE,SAASZ,GAAG,OAAOgD,EAAE3C,EAAEA,EAAE,IAAI,GAAGL,EAAE,IAAI,EAAEiB,EAAEb,EAAE0G,UAAU,SAAS9G,EAAEC,EAAEC,GAAG,IAAIC,EAAEH,EAAE,GAAG,KAAK,KAAK,OAAOE,EAAEC,EAAEuC,cAAcvC,CAAC,EAAEmB,EAAE,CAACyF,GAAG7F,OAAOsC,KAAKW,IAAI+B,OAAO,GAAGc,KAAKxD,KAAKW,GAAG/B,EAAE7B,EAAE,EAAE0G,GAAGjE,EAAE3C,EAAEE,EAAE,EAAE,EAAE,KAAK2G,IAAIxG,EAAEN,EAAE+G,YAAY5G,EAAEE,EAAE,GAAG2G,KAAK1G,EAAED,EAAEF,GAAGgC,EAAEiB,KAAKe,GAAG8C,GAAGrE,EAAE3C,EAAEmD,KAAKe,GAAG,EAAE,KAAK3D,EAAEM,OAAOsC,KAAKiB,IAAI6C,GAAG5G,EAAEN,EAAEmH,YAAY/D,KAAKiB,GAAGjE,EAAE,GAAGgH,IAAI9G,EAAEN,EAAEqH,cAAcjE,KAAKiB,GAAGjE,EAAE,GAAGkH,KAAKlH,EAAEgD,KAAKiB,IAAIkD,EAAEzG,OAAOb,GAAGuH,GAAG5E,EAAE3C,EAAEA,EAAE,EAAE,KAAKK,EAAEE,EAAE,GAAGiH,GAAGjH,EAAE,GAAGL,EAAEU,EAAEZ,EAAEC,GAAE,GAAIwH,EAAE7G,EAAEZ,EAAEC,GAAE,GAAIsB,EAAEV,OAAOZ,GAAGyH,GAAG/E,EAAE3C,EAAEC,EAAE,EAAE,KAAKD,EAAEa,OAAOsC,KAAKuB,IAAIiD,GAAGhF,EAAE3C,EAAEmD,KAAKuB,GAAG,EAAE,KAAKkD,IAAIjF,EAAE3C,EAAEmD,KAAKyB,IAAI,EAAE,KAAKiD,EAAE/H,GAAG,OAAOD,EAAEyC,QAAQhC,EAAE,SAASX,EAAEC,GAAG,OAAOA,GAAGqB,EAAEtB,IAAIG,EAAEwC,QAAQ,IAAI,GAAG,EAAE,EAAE1B,EAAEO,UAAU,WAAW,OAAO,IAAIC,KAAKiF,MAAMlD,KAAKG,GAAGwE,oBAAoB,GAAG,EAAElH,EAAEmH,KAAK,SAASpI,EAAES,EAAEC,GAAG,IAAIC,EAAEC,EAAEoC,EAAEb,EAAE1B,GAAGQ,EAAE4B,EAAE7C,GAAGsB,EAAE,KAAKL,EAAEO,YAAYgC,KAAKhC,aAAaa,EAAEmB,KAAKvC,EAAEmB,EAAEY,EAAEpB,EAAE4B,KAAKvC,GAAG,OAAOmB,GAAGzB,EAAE,GAAGA,EAAEH,GAAG4B,EAAE,GAAGzB,EAAEL,GAAG8B,EAAEzB,EAAEJ,GAAG6B,EAAE,EAAEzB,EAAEN,IAAIgC,EAAEf,GAAG,OAAOX,EAAEP,IAAIiC,EAAEf,GAAG,MAAMX,EAAER,GAAGkC,EAAE,KAAK1B,EAAET,GAAGmC,EAAE,IAAI1B,EAAEV,GAAGoC,EAAE,IAAI1B,GAAGC,IAAIyB,EAAE3B,EAAE0B,EAAEY,EAAEzC,EAAE6B,EAAE,EAAEnB,EAAEsF,YAAY,WAAW,OAAO/C,KAAKgC,MAAMlF,GAAGiE,EAAE,EAAEtD,EAAEkF,QAAQ,WAAW,OAAO/D,EAAEoB,KAAKN,GAAG,EAAEjC,EAAEgC,OAAO,SAASjD,EAAEC,GAAG,IAAID,EAAE,OAAOwD,KAAKN,GAAG,IAAIhD,EAAEsD,KAAKxB,QAAQ7B,EAAEoC,EAAEvC,EAAEC,GAAE,GAAI,OAAOE,IAAID,EAAEgD,GAAG/C,GAAGD,CAAC,EAAEe,EAAEe,MAAM,WAAW,OAAOgB,EAAEV,EAAEkB,KAAKG,GAAGH,KAAK,EAAEvC,EAAE+E,OAAO,WAAW,OAAO,IAAIpC,KAAKJ,KAAKsC,UAAU,EAAE7E,EAAEoH,OAAO,WAAW,OAAO7E,KAAK4B,UAAU5B,KAAK8E,cAAc,IAAI,EAAErH,EAAEqH,YAAY,WAAW,OAAO9E,KAAKG,GAAG2E,aAAa,EAAErH,EAAEoE,SAAS,WAAW,OAAO7B,KAAKG,GAAG4E,aAAa,EAAE3H,CAAC,CAA/xI,GAAmyIuB,EAAES,EAAEc,UAAU,OAAOb,EAAEa,UAAUvB,EAAE,CAAC,CAAC,MAAMnC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKE,GAAG,CAAC,KAAKE,GAAG,CAAC,KAAKC,IAAI+H,QAAQ,SAASxI,GAAGmC,EAAEnC,EAAE,IAAI,SAASC,GAAG,OAAOuD,KAAKmC,GAAG1F,EAAED,EAAE,GAAGA,EAAE,GAAG,CAAC,GAAG6C,EAAE4F,OAAO,SAASzI,EAAEC,GAAG,OAAOD,EAAE0I,KAAK1I,EAAEC,EAAE2C,EAAEC,GAAG7C,EAAE0I,IAAG,GAAI7F,CAAC,EAAEA,EAAEI,OAAOV,EAAEM,EAAE8F,QAAQ/G,EAAEiB,EAAEgD,KAAK,SAAS7F,GAAG,OAAO6C,EAAE,IAAI7C,EAAE,EAAE6C,EAAE+F,GAAGxG,EAAEC,GAAGQ,EAAEgG,GAAGzG,EAAES,EAAEV,EAAE,GAAGU,CAAC,CAApsM5C,uBCAfF,UAA+H,SAASC,EAAEI,EAAEH,GAAG,IAAII,EAAED,EAAEsD,UAAUzD,EAAEkD,IAAI,SAASnD,GAAG,OAAO,IAAII,EAAE,CAACyB,KAAK7B,EAAEmD,KAAI,EAAGL,KAAKC,WAAW,EAAE1C,EAAE8C,IAAI,SAASnD,GAAG,IAAII,EAAEH,EAAEuD,KAAKwC,SAAS,CAAC/C,OAAOO,KAAKN,GAAGC,KAAI,IAAK,OAAOnD,EAAEI,EAAE6B,IAAIuB,KAAKhC,YAAY,UAAUpB,CAAC,EAAEC,EAAEyI,MAAM,WAAW,OAAO7I,EAAEuD,KAAKwC,SAAS,CAAC/C,OAAOO,KAAKN,GAAGC,KAAI,GAAI,EAAE,IAAI1C,EAAEJ,EAAEoD,MAAMpD,EAAEoD,MAAM,SAASzD,GAAGA,EAAEmD,MAAMK,KAAKJ,IAAG,GAAII,KAAK2B,SAAS7E,EAAEN,EAAEuD,WAAWC,KAAKD,QAAQvD,EAAEuD,SAAS9C,EAAEsI,KAAKvF,KAAKxD,EAAE,EAAE,IAAIE,EAAEG,EAAE6D,KAAK7D,EAAE6D,KAAK,WAAW,GAAGV,KAAKJ,GAAG,CAAC,IAAIpD,EAAEwD,KAAKG,GAAGH,KAAKW,GAAGnE,EAAEgJ,iBAAiBxF,KAAKa,GAAGrE,EAAEiJ,cAAczF,KAAKe,GAAGvE,EAAEkJ,aAAa1F,KAAKiB,GAAGzE,EAAEmJ,YAAY3F,KAAKmB,GAAG3E,EAAEoJ,cAAc5F,KAAKqB,GAAG7E,EAAEqJ,gBAAgB7F,KAAKuB,GAAG/E,EAAEsJ,gBAAgB9F,KAAKyB,IAAIjF,EAAEuJ,oBAAoB,MAAMrJ,EAAE6I,KAAKvF,KAAK,EAAE,IAAIlD,EAAED,EAAEmB,UAAUnB,EAAEmB,UAAU,SAASxB,EAAEI,GAAG,IAAIH,EAAEuD,KAAK2B,SAAS7E,EAAE,GAAGL,EAAED,GAAG,OAAOwD,KAAKJ,GAAG,EAAEnD,EAAEuD,KAAKD,SAASjD,EAAEyI,KAAKvF,MAAMA,KAAKD,QAAQ,IAAIlD,EAAEoB,KAAKC,IAAI1B,IAAI,GAAG,GAAGA,EAAEA,EAAES,EAAE+C,KAAK,GAAGpD,EAAE,OAAOK,EAAE8C,QAAQlD,EAAEI,EAAE2C,GAAG,IAAIpD,EAAES,EAAE,GAAG,IAAIT,EAAE,CAAC,IAAIE,EAAEsD,KAAKJ,GAAGI,KAAKwC,SAASmC,qBAAqB,EAAE3E,KAAKhC,aAAaf,EAAE+C,KAAKsF,QAAQ7G,IAAI5B,EAAEH,EAAE,WAAWqD,QAAQlD,EAAEI,EAAE6C,GAAGkG,aAAatJ,CAAC,MAAMO,EAAE+C,KAAKL,MAAM,OAAO1C,CAAC,EAAE,IAAID,EAAEH,EAAEuG,OAAOvG,EAAEuG,OAAO,SAAS5G,GAAkD,OAAOQ,EAAEuI,KAAKvF,KAAvDxD,IAAIwD,KAAKJ,GAAG,yBAAyB,IAAyB,EAAE/C,EAAEyF,QAAQ,WAAW,IAAI9F,EAAEwD,KAAK2B,SAAS7E,EAAEkD,KAAKD,SAAS,EAAEC,KAAKD,SAASC,KAAKF,GAAGkG,eAAc,IAAK5F,MAAMuE,qBAAqB,OAAO3E,KAAKG,GAAGmC,UAAU,IAAI9F,CAAC,EAAEK,EAAEoJ,MAAM,WAAW,QAAQjG,KAAKJ,EAAE,EAAE/C,EAAEiI,YAAY,WAAW,OAAO9E,KAAKwC,SAASsC,aAAa,EAAEjI,EAAEgF,SAAS,WAAW,OAAO7B,KAAKwC,SAASuC,aAAa,EAAE,IAAIpI,EAAEE,EAAE2F,OAAO3F,EAAE2F,OAAO,SAAShG,GAAG,MAAM,MAAMA,GAAGwD,KAAKD,QAAQtD,EAAEuD,KAAKoD,OAAO,4BAA4BZ,SAAS7F,EAAE4I,KAAKvF,KAAK,EAAE,IAAIjD,EAAEF,EAAE+H,KAAK/H,EAAE+H,KAAK,SAASpI,EAAEI,EAAEC,GAAG,GAAGL,GAAGwD,KAAKJ,KAAKpD,EAAEoD,GAAG,OAAO7C,EAAEwI,KAAKvF,KAAKxD,EAAEI,EAAEC,GAAG,IAAII,EAAE+C,KAAKsF,QAAQ5I,EAAED,EAAED,GAAG8I,QAAQ,OAAOvI,EAAEwI,KAAKtI,EAAEP,EAAEE,EAAEC,EAAE,CAAC,UCAv4DqJ,EAAc,CACzBC,cAAe,wBACfC,YAAa,uBACbC,OAAQ,YCcV,SAASC,EAAUC,GACjB,MAAMC,EAAS,IAAIC,gBASnB,OARAC,OAAOC,KAAKJ,GACTK,OACA5B,QAAS6B,IACR,MAAMC,EAAQP,EAAMM,GACP,MAATC,GACFN,EAAOO,OAAOF,EAAKC,EACpB,GAEEN,EAAO3E,WAAW1C,QAAQ,MAAO,MACzC,CAED,SAAS6H,GACPC,UAAEA,EAAFC,QAAaA,GACbC,GAEA,MAAM/D,EAAS8C,EAAYiB,GAC3B,MAAO,CAAEC,MAAOH,EAAU7D,OAAOA,GAASiE,IAAKH,EAAQ9D,OAAOA,GAC/D,CArBDkE,EAAMrC,OAAOtF,GAuBA4H,MAAAA,EAAW,CAACC,EAAsBC,GAAiB,KAC9D,MAAML,MAAEA,EAAFC,IAASA,EAATK,SAAcA,GAAsBF,EAATG,qIAASH,8BACpCP,EAAYQ,EAAQH,EAAMF,GAAOzH,MAAQ2H,EAAMF,GAC/CF,EAAUG,EACZI,EACEH,EAAMD,GAAK1H,MACX2H,EAAMD,GACR,MACE,GAAIG,EAAMnB,OACR,OAAOY,EAAUxI,IAAI,EAAG,OAE1B,GAAIiJ,GAA+B,GAAnBA,EAAS/J,OAAa,CACpC,MAAMmJ,EAAQ7D,OAAOyE,EAAS,IAE9B,OAAOT,EAAUxI,IAAIqI,EADRY,EAAS,GAEvB,CACD,OAAOT,CATT,EAAA,GAWJ,YACKU,GACHV,UAAWA,EACXC,QAASA,KAIAU,EAAUC,IACrB,MAAML,EAAQD,EAASM,IACjBT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAOA,EAAMnB,OAAS,SAAW,eAC9DyB,EAAkB,CACtBC,OAAQ,WACRC,KAAMR,EAAMS,MACZH,QAASN,EAAMU,YACfC,SAAUX,EAAMW,SAChBC,IAAKZ,EAAMa,KACXC,MAAOlB,EAAQ,IAAMC,EACrBkB,MAAOf,EAAMgB,MAAQ,SAAWhB,EAAMgB,WAAQC,GAKhD,OAHIjB,EAAMkB,QAAUlB,EAAMkB,OAAO/K,SAC/BmK,EAAQrJ,IAAM+I,EAAMkB,OAAO7K,uDAEyByI,EAAUwB,MAGrDa,EAAWd,IACtB,MAAML,EAAQD,EAASM,GAAe,IAChCT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAO,iBAW1C,4DAA6DlB,EAVpC,CACvBsC,KAAM,2BACNC,IAAK,WACLC,QAAS1B,EACT2B,MAAO1B,EACP2B,QAASxB,EAAMS,MACfgB,KAAMzB,EAAMU,YACZC,SAAUX,EAAMW,SAChBe,OAAQ1B,EAAMnB,SAAU,OAKf8C,EAAiBtB,IAC5B,MAAML,EAAQD,EAASM,GAAe,IAChCT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAO,iBAW1C,8DAA+DlB,EAVtC,CACvBsC,KAAM,2BACNC,IAAK,WACLC,QAAS1B,EACT2B,MAAO1B,EACP2B,QAASxB,EAAMS,MACfgB,KAAMzB,EAAMU,YACZC,SAAUX,EAAMW,SAChBe,OAAQ1B,EAAMnB,SAAU,OAKf+C,EAAavB,IACxB,MAAML,EAAQD,EAASM,GAAe,IAChCT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAO,iBAW1C,8DAA+DlB,EAVtC,CACvBsC,KAAM,2BACNC,IAAK,WACLC,QAAS1B,EACT2B,MAAO1B,EACP2B,QAASxB,EAAMS,MACfgB,KAAMzB,EAAMU,YACZC,SAAUX,EAAMW,SAChBe,OAAQ1B,EAAMnB,SAAU,OAKfgD,EAAmBxB,IAC9B,MAAML,EAAQD,EAASM,GAAe,IAChCT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAO,iBAW1C,gEAAiElB,EAVxC,CACvBsC,KAAM,2BACNC,IAAK,WACLC,QAAS1B,EACT2B,MAAO1B,EACP2B,QAASxB,EAAMS,MACfgB,KAAMzB,EAAMU,YACZC,SAAUX,EAAMW,SAChBe,OAAQ1B,EAAMnB,SAAU,OAKfiD,EAASzB,IACpB,MAAML,EAAQD,EAASM,IACjBT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAOA,EAAMnB,OAAS,SAAW,eAUpE,qCAAsCC,EATf,CACrBjH,EAAG,GACH4I,MAAOT,EAAMS,MACbsB,GAAInC,EACJoC,GAAInC,EACJoC,KAAMjC,EAAMU,YACZwB,OAAQlC,EAAMW,SACdwB,MAAKnC,EAAMnB,QAAS,cAKXuD,EAAO/B,IAChB,MAAML,EAAQD,EAASM,IACjBT,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAOA,EAAMnB,OAAS,SAAW,eAUpE,mCAAoCC,EATf,CACnBjH,EAAG,GACH4I,MAAOT,EAAMS,MACbsB,GAAInC,EACJoC,GAAInC,EACJoC,KAAMjC,EAAMU,YACZwB,OAAQlC,EAAMW,SACdwB,MAAKnC,EAAMnB,QAAS,cAMbwD,EAAWhC,IACtB,MAAML,EAAQD,EAASM,GACjBC,EAAmB,CACvBkB,QAASxB,EAAMS,MACf6B,QAAStC,EAAMU,YACfjB,UAAWO,EAAMP,UAAUnC,cAC3BoC,QAASM,EAAMN,QAAQpC,eAKzB,OAHI0C,EAAMkB,QAAUlB,EAAMkB,OAAO/K,SAC/BmK,EAAQiC,UAAYvC,EAAMkB,OAAO7K,qDAEiByI,EAAUwB,MAGnDkC,EAAOnC,IAClB,MAAML,EAAQD,EAASM,GACjBoC,GAAgCzC,EAAMU,aAAe,IACxD/I,QAAQ,MAAO,KACfA,QAAQ,MAAO,KACfA,QAAQ,SAAU,MAClBA,QAAQ,OAAQ,OAChBA,QAAQ,iBAAkB,OAEvB+K,GAA6B1C,EAAMW,UAAY,IAClDhJ,QAAQ,MAAO,KACfA,QAAQ,MAAO,KACfA,QAAQ,SAAU,MAClBA,QAAQ,OAAQ,OAChBA,QAAQ,iBAAkB,QAEvBiI,MAAEA,EAAFC,IAASA,GAAQL,EAAYQ,EAAOA,EAAMnB,OAAS,SAAW,eAC9D8D,EAAY7C,EAAM,IAAIlH,MAAQT,MAAMyD,OAAO8C,EAAW,aACtDkE,EAAiB,CACrB,CACEvD,IAAK,QACLC,MAAO,aAET,CACED,IAAK,UACLC,MAAO,OAET,CACED,IAAK,SACLC,MAAO,wCAET,CACED,IAAK,QACLC,MAAO,UAET,CACED,IAAK,MACLC,MAAOU,EAAM6C,KAEf,CACExD,IAAK,UACLC,MAAOM,GAET,CACEP,IAAK,QACLC,MAAOO,GAET,CACER,IAAK,UACLC,MAAOqD,MAEL3C,EAAMnB,OAAS,CACjB,CACEQ,IAAK,8BACLC,MAAO,QAET,CACED,IAAK,sCACLC,MAAO,SACJ,GACP,CACED,IAAK,QACLC,MAAOU,EAAMgB,OAEf,CACE3B,IAAK,UACLC,MAAOU,EAAMS,OAEf,CACEpB,IAAK,cACLC,MAAOmD,GAET,CACEpD,IAAK,WACLC,MAAOoD,GAET,CACErD,IAAK,YACLC,MAAOU,EAAM8C,WAEf,CACEzD,IAAK,SACLC,MAAOU,EAAM+C,QAEf,CACE1D,IAAK,MACLC,MAAOU,EAAMgD,KAAOvM,KAAKE,MAAsB,IAAhBF,KAAKwM,UAAmB5I,WAAW1C,QAAQ,IAAK,KAEjF,CACE0H,IAAK,MACLC,MAAO,UAET,CACED,IAAK,MACLC,MAAO,cAIX,IAAI4D,EAAsB,GAe1B,OAbAN,EAAepF,QAAS2F,IACtB,GAAIA,EAAM7D,MACR,GAAiB,aAAb6D,EAAM9D,IAAoB,CAC5B,MAAMC,EAAQ6D,EAAM7D,MACpB4D,MAAkBC,EAAM9D,OAAO+D,yBACvB9D,EAAMzJ,eAAeyJ,EAAM+D,cAEpC,MACCH,MAAkBC,EAAM9D,OAAO+D,sBAAsBD,EAAM7D,cAE9D,sCAGuC4D"}