{"version":3,"file":"6.9blWG-zf.mjs","sources":["../../../../../../src/routes/profile/[id]/+page.ts","../../../../../../src/lib/components/TimelineCarousel.svelte","../../../../../../src/lib/utils/education.ts","../../../../../../src/lib/utils/truncate.ts","../../../../../../src/routes/profile/[id]/+page.svelte"],"sourcesContent":["// Data is now loaded in +layout.ts\nexport const load = async () => ({})\n","<!-- SimplifiedCarousel.svelte -->\n<script lang=\"ts\">\n  import { onMount } from 'svelte'\n  import { page } from '$app/stores'\n\n  interface TimelineEvent {\n    title: string\n    date: string\n    description: string\n    link?: string\n  }\n\n  export let events: TimelineEvent[] = []\n  export let visibleItems = 3\n  export let showScrollbar = false\n  export let itemSpacing = '1rem'\n  export let title = ''\n  export let hasMoreServices = false\n\n  let scrollable: HTMLElement | undefined\n  let prevButton: HTMLButtonElement | undefined\n  let nextButton: HTMLButtonElement | undefined\n  let isOverflowing = false\n\n  function scrollPrev (): void {\n    if (!scrollable) return\n\n    const itemWidth = scrollable.offsetWidth / visibleItems\n    const scrollAmount = itemWidth * Math.floor(visibleItems / 2)\n    scrollable.scrollBy({ left: -scrollAmount, behavior: 'smooth' })\n  }\n\n  function scrollNext (): void {\n    if (!scrollable) return\n\n    const itemWidth = scrollable.offsetWidth / visibleItems\n    const scrollAmount = itemWidth * Math.floor(visibleItems / 2)\n    scrollable.scrollBy({ left: scrollAmount, behavior: 'smooth' })\n  }\n\n  function updateButtonStates (): void {\n    if (!scrollable || !prevButton || !nextButton) return\n\n    isOverflowing = scrollable.scrollWidth > scrollable.clientWidth\n\n    prevButton.disabled = scrollable.scrollLeft < 1\n    nextButton.disabled = scrollable.scrollLeft >= (scrollable.scrollWidth - scrollable.offsetWidth - 1)\n  }\n\n  onMount(() => {\n    if (!scrollable) return\n\n    let debounced: number\n    scrollable.addEventListener('scroll', () => {\n      window.clearTimeout(debounced)\n      debounced = window.setTimeout(updateButtonStates, 200)\n    })\n\n    if ('ResizeObserver' in window) {\n      new ResizeObserver(() => {\n        updateButtonStates()\n      }).observe(scrollable)\n    }\n\n    updateButtonStates()\n  })\n</script>\n\n<div class=\"carousel\" role=\"region\" aria-roledescription=\"carousel\" aria-label={title || 'Featured activities'}>\n  <!-- Navigation buttons -->\n  {#if events.length > visibleItems}\n    <div class=\"carousel-buttons\" role=\"group\" aria-label=\"Slide controls\">\n      <button\n        bind:this={prevButton}\n        class=\"carousel-prev\"\n        type=\"button\"\n        on:click={scrollPrev}>\n        <span class=\"sr-only\">Previous slide</span>\n        <svg class=\"icon\" aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 32 32\">\n          <path d=\"M32 15H5.3l12-11.5-2.6-2.7L0 15l14.7 14.2 2.6-2.7-12-11.5H32v-4z\"/>\n        </svg>\n      </button>\n      <button\n        bind:this={nextButton}\n        class=\"carousel-next\"\n        type=\"button\"\n        on:click={scrollNext}>\n        <span class=\"sr-only\">Next slide</span>\n        <svg class=\"icon\" aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 32 32\">\n          <path d=\"M0 15h26.7l-12-11.5 2.6-2.7L32 15 17.3 29.2l-2.6-2.7 12-11.5H0v-4z\"/>\n        </svg>\n      </button>\n    </div>\n  {/if}\n\n  <div\n    bind:this={scrollable}\n    class=\"carousel-scrollable  \"\n    class:show-scrollbar={showScrollbar}\n    class:is-overflowing={isOverflowing}>\n\n    <ol class=\"carousel-list\" role=\"list\" style=\"--item-width: calc(100% / {visibleItems}); --item-spacing: {itemSpacing};\">\n      {#each events as event, i}\n        <li class=\"timeline-item\" role=\"listitem\" aria-roledescription=\"slide\" aria-label={`Slide ${i + 1} of ${events.length}: ${event.title}`}>\n          <div class=\"timeline-marker\">\n            <div class=\"timeline-dot\"></div>\n            <div class=\"timeline-line\"></div>\n          </div>\n          <div class=\"timeline-content\">\n            {#if event.link}\n            <a href={event.link ?? '#'} class=\"timeline-title\">\n              {event.title}\n            </a>\n            {:else}\n            <span class=\"timeline-title\">{event.title}</span>\n            {/if}\n            <p>{event.description}</p>\n            <time class=\"timeline-date\">{event.date}</time>\n          </div>\n        </li>\n      {/each}\n      {#if hasMoreServices}\n      <li class=\"timeline-item\" role=\"listitem\" aria-roledescription=\"slide\" aria-label={`Slide ${events.length + 1} of ${events.length + 1}: Explore colleges and departments`}>\n        <div class=\"timeline-marker\">\n            <div class=\"timeline-dot timeline-dot--end \"></div>\n            <div class=\"timeline-line\"></div>\n          </div>\n        <div class=\"timeline-content timeline-more-link mt-8 \">\n          <a href=\"{$page.url.pathname}/activity/service\" class=\"btn\">View all activities</a>\n        </div>\n      </li>\n      {/if}\n    </ol>\n  </div>\n</div>\n\n<style>\n  .carousel {\n    position: relative;\n    width: 100%;\n  }\n\n  .carousel-scrollable {\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    padding-bottom: 0.5rem;\n    scroll-behavior: smooth;\n    scroll-padding-inline: 1rem;\n    -webkit-overflow-scrolling: touch;\n    scrollbar-width: none;\n    -ms-overflow-style: none;\n  }\n\n  .carousel-scrollable::-webkit-scrollbar {\n    display: none;\n  }\n  .carousel-scrollable.show-scrollbar {\n    scrollbar-width: thin;\n    -ms-overflow-style: auto;\n  }\n\n  .carousel-scrollable.show-scrollbar::-webkit-scrollbar {\n    display: block;\n    height: 0.5rem;\n  }\n\n  .carousel-scrollable.show-scrollbar::-webkit-scrollbar-track {\n    background-color: #f1f1f1;\n    border-radius: 4px;\n  }\n\n  .carousel-scrollable.show-scrollbar::-webkit-scrollbar-thumb {\n    background-color: #888;\n    border-radius: 4px;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-scrollable {\n      scroll-behavior: auto;\n    }\n  }\n\n  .carousel-list {\n    display: flex;\n    list-style: none;\n    padding: 0;\n    margin: 0;\n    white-space: nowrap;\n  }\n\n  .carousel-buttons {\n    position: absolute;\n    right: 5px;\n    top: 2rem;\n    z-index: 1;\n    display: flex;\n    gap: 0.25rem;\n  }\n\n  .carousel-prev,\n  .carousel-next {\n    border: 0;\n    padding: 0.5rem;\n    background-color: white;\n    color: var(--color-maroon-500);\n    font-size: 1.75rem;\n    cursor: pointer;\n  }\n\n  .carousel-prev:focus,\n  .carousel-next:focus {\n    outline: 2px solid transparent;\n    outline-offset: -2px;\n    box-shadow: inset 0 0 0 0.125rem var(--color-focus);\n  }\n\n  :global(.carousel-prev[disabled]),\n  :global(.carousel-next[disabled]) {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n\n  .icon {\n    width: 1em;\n    height: 1em;\n    vertical-align: text-top;\n  }\n\n  .carousel {\n    container-type: inline-size;\n    container-name: carousel;\n  }\n\n  /* Timeline styling */\n  .timeline-item {\n    flex: 0 0 var(--item-width);\n    padding-block:1rem;\n    white-space: normal;\n    transition: opacity 0.5s linear;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .timeline-marker {\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.5rem;\n    margin-inline-start:4px;\n  }\n\n  .timeline-dot {\n    width: 1.25rem;\n    height: 1.25rem;\n    background-color: #c8b299;\n    transform: rotate(45deg);\n    flex-shrink: 0;\n  }\n  .timeline-dot--end {\n    width:0;\n    margin-left:-4px;\n  }\n\n  .timeline-line {\n    height: 0.125rem;\n    background-color: #e5dfd7;\n    flex-grow: 1;\n  }\n\n  .timeline-content {\n    padding: 0.5rem 0;\n    padding-inline-start:2rem;\n  }\n\n  .timeline-title {\n    color: #8B2942;\n    text-decoration: none;\n    font-weight: 600;\n    font-size: 0.875rem;\n    text-transform: uppercase;\n    display: inline-block;\n    margin-bottom: 0.25rem;\n  }\n\n  a.timeline-title:hover {\n    text-decoration: underline;\n  }\n\n  a.timeline-title:focus {\n    outline: 2px solid var(--color-focus, #7dccdd);\n    outline-offset: 2px;\n  }\n\n  .timeline-date {\n    display: block;\n    margin-top: 0.5rem;\n    font-size: 0.875rem;\n    color: #595959;\n  }\n\n  /* Mobile layout using container queries */\n  @container carousel (max-width: 640px) {\n    .carousel-scrollable {\n      overflow-x: visible;\n      overflow-y: visible;\n      padding-bottom: 0;\n    }\n\n    .carousel-list {\n      flex-direction: column;\n      position: relative;\n    }\n\n    .carousel-list::before {\n      content: \"\";\n      position: absolute;\n      left: 0.825rem;\n      top: 0.625rem;\n      bottom: 0.625rem;\n      width: 0.125rem;\n      background-color: #e5dfd7;\n    }\n\n    .timeline-item {\n      width: 100%;\n      margin-bottom: 1.5rem;\n      padding-left: 2.5rem;\n      position: relative;\n    }\n\n    .timeline-item + .timeline-item {\n      margin-left: 0;\n    }\n\n    .timeline-marker {\n      position: absolute;\n      left: 0;\n      top: 0;\n      flex-direction: column;\n      margin-bottom: 0;\n    }\n\n    .timeline-line {\n      display: none;\n    }\n\n    .carousel-buttons {\n      display: none;\n    }\n  }\n\n  @media (max-width: 640px) {\n    .carousel-buttons {\n      display: none;\n    }\n      .timeline-content {\n        padding-inline-start:0;\n      }\n  }\n</style>\n","import type { Education } from '$lib/queries/profile'\n\nexport interface EducationGroup {\n  label: string\n  entries: Education[]\n}\n\n// Display order and labels for the Degree Types shown on the profile, per ADR-0002.\nconst DEGREE_TYPE_GROUPS: { degreeType: string, label: string }[] = [\n  { degreeType: 'Special Professional', label: 'Special Professional Degree' },\n  { degreeType: 'Doctorate', label: 'Doctorate Degree' },\n  { degreeType: \"Master's\", label: \"Master's Degree\" },\n  { degreeType: \"Bachelor's\", label: \"Bachelor's Degree\" }\n]\n\nexport function degreeLabel (code: string): string {\n  return code.trim().toUpperCase() === 'PHD' ? 'PhD' : code\n}\n\n/**\n * Groups entries by Degree Type in display order, keeping the input order within\n * each group. Entries with any other or no Degree Type are dropped, and empty\n * groups are omitted.\n */\nexport function groupEducationByDegreeType (entries: Education[]): EducationGroup[] {\n  return DEGREE_TYPE_GROUPS\n    .map(({ degreeType, label }) => ({ label, entries: entries.filter(entry => entry.DEGREE_TYPE === degreeType) }))\n    .filter(group => group.entries.length > 0)\n}\n\nexport interface EducationCard {\n  degreeLine: string\n  supportingAreaLine?: string\n  schoolLine: string\n}\n\nexport function formatEducationCard (entry: Education): EducationCard {\n  const label = entry.DEG ? degreeLabel(entry.DEG) : undefined\n  return {\n    degreeLine: label && entry.MAJOR ? `${label} in ${entry.MAJOR}` : (label ?? entry.MAJOR ?? ''),\n    supportingAreaLine: entry.SUPPAREA || undefined,\n    schoolLine: [entry.SCHOOL, entry.DTY_COMP].filter(Boolean).join(', ')\n  }\n}\n","import { browser } from '$app/environment'\n\nexport function truncateRichText (html: string | null | undefined, length: number): { html: string, wasTruncated: boolean } {\n  if (!html) {\n    return { html: '', wasTruncated: false }\n  }\n\n  if (!browser) {\n    return { html, wasTruncated: false }\n  }\n\n  const parser = new DOMParser()\n  const doc = parser.parseFromString(`<div class=\"trunc\">${html}</div>`, 'text/html')\n  const container = doc.querySelector('.trunc')\n\n  const fullText = container?.textContent ?? ''\n  if (fullText.length <= length) {\n    return { html, wasTruncated: false }\n  }\n\n  // Find word boundary\n  const lastSpace = fullText.lastIndexOf(' ', length)\n  const targetLength = lastSpace > 0 ? lastSpace : length\n\n  // Get all text nodes at once\n  if (!container) return { html, wasTruncated: false }\n\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT)\n  let charCount = 0\n  let node: Node | null\n\n  while ((node = walker.nextNode())) {\n    const textNode = node as Text\n    const nodeLength = textNode.textContent?.length ?? 0\n\n    if (charCount + nodeLength >= targetLength) {\n      const range = document.createRange()\n      range.setStart(container, 0)\n      range.setEnd(textNode, targetLength - charCount)\n\n      const fragment = range.cloneContents()\n      const temp = document.createElement('div')\n      temp.appendChild(fragment)\n\n      return { html: temp.innerHTML + '… ', wasTruncated: true }\n    }\n    charCount += nodeLength\n  }\n\n  return { html, wasTruncated: false }\n}\n","<script lang=\"ts\">\n  import Header from '$lib/components/Header.svelte'\n  import ProfileImage from '$lib/components/ProfileImage.svelte'\n  import TimelineCarousel from '$lib/components/TimelineCarousel.svelte'\n  import type {\n    Faculty,\n    InstitutionalService,\n    IntellectualProperty,\n    ProfessionalService,\n    PublicService,\n  } from '$lib/queries/profile'\n  import {\n    formatEducationCard,\n    groupEducationByDegreeType,\n  } from '$lib/utils/education'\n  import { generateSrcset, getOptimizedSrc } from '$lib/utils/image'\n  import {\n    allocateFeaturedIp,\n    formatIpCitationLine,\n    formatPatentCard,\n    groupIpByFormat,\n  } from '$lib/utils/intellectual-property'\n  import { truncateRichText } from '$lib/utils/truncate'\n  import { onMount } from 'svelte'\n  import { isNotBlank, sortby } from 'txstate-utils'\n\n  export let data: { faculty: Faculty }\n\n  const { faculty } = data\n\n  const BANNER_IP = 'https://docs.gato.txst.edu/723166/w/2000/_DSC2226.jpg'\n  const BANNER_GRANTS =\n    'https://docs.gato.txst.edu/723180/w/2000/featured-grants-banner.jpg'\n  const BANNER_AWARDS =\n    'https://docs.gato.txst.edu/723202/w/2000/featured-awards-banner.jpg'\n  const BANNER_SIZES = '(max-width: 768px) 100vw, 50vw'\n\n  $: grants =\n    faculty.activities?.filter(\n      (activity) =>\n        activity?.__typename === 'ContractGrant' &&\n        isNotBlank(activity.description)\n    ) ?? []\n  $: scholarlyCreativeWorks =\n    faculty.activities?.filter(\n      (activity) =>\n        [\n          'IntellectualContribution',\n          'CompositionArt',\n          'ProductionArt',\n          'CollectionArt',\n          'ResidenciesArt',\n          'ArtReview',\n        ].includes(activity?.__typename ?? '') &&\n        isNotBlank(activity?.description)\n    ) ?? []\n  $: awards =\n    faculty.activities?.filter(\n      (activity) =>\n        activity?.__typename === 'AwardHonor' &&\n        isNotBlank(activity.description)\n    ) ?? []\n  $: intellectualProperty =\n    faculty.activities?.filter(\n      (activity): activity is IntellectualProperty =>\n        activity?.__typename === 'IntellectualProperty'\n    ) ?? []\n  $: ipByCategory = groupIpByFormat(intellectualProperty)\n  $: featuredIp = allocateFeaturedIp(ipByCategory, 6)\n  $: hasIp = intellectualProperty.length > 0\n  $: hasMoreIp =\n    intellectualProperty.length >\n    featuredIp.copyrights.length +\n      featuredIp.patents.length +\n      featuredIp.trademarks.length\n  type ServiceActivity =\n    ProfessionalService | InstitutionalService | PublicService\n  $: allServiceActivities = sortby(\n    faculty.activities?.filter(\n      (activity): activity is ServiceActivity =>\n        activity !== null &&\n        [\n          'ProfessionalService',\n          'InstitutionalService',\n          'PublicService',\n        ].includes(activity.__typename) &&\n        isNotBlank(activity.description)\n    ) ?? [],\n    'featured',\n    true\n  )\n  $: professionalservices = allServiceActivities.slice(0, 6)\n  $: hasMoreServices = allServiceActivities.length > 6\n  $: educationCards = groupEducationByDegreeType(\n    faculty.education ?? []\n  ).flatMap((group) =>\n    group.entries.map((entry) => ({ label: group.label, entry }))\n  )\n  $: hasEducation = educationCards.length > 0\n\n  const monthNames = [\n    'January',\n    'February',\n    'March',\n    'April',\n    'May',\n    'June',\n    'July',\n    'August',\n    'September',\n    'October',\n    'November',\n    'December',\n  ]\n\n  const formatActivityDate = (date?: {\n    year?: number\n    month?: number\n    day?: number\n  }) => {\n    if (!date?.year) return ''\n    return date.month\n      ? `${monthNames[date.month - 1]} ${date.year}`\n      : `${date.year}`\n  }\n\n  const formatDateRange = (\n    start?: { year?: number; month?: number; day?: number },\n    end?: { year?: number; month?: number; day?: number }\n  ) => {\n    const startStr = formatActivityDate(start)\n    const endStr = formatActivityDate(end)\n\n    if (startStr && endStr) return `${startStr} - ${endStr}`\n    if (startStr && !end) return `${startStr} - Present`\n    return startStr || endStr\n  }\n\n  $: events = professionalservices.map((activity) => ({\n    title: activity.ROLE ?? '',\n    date: formatDateRange(activity.dateStarted, activity.dateCompleted),\n    description: activity.ORG ?? '',\n  }))\n\n  function possessive(name: string) {\n    return name.endsWith('s') ? `${name}'` : `${name}'s`\n  }\n\n  let truncatedTeaching = { html: '', wasTruncated: false }\n\n  let truncatedResearch = { html: '', wasTruncated: false }\n\n  onMount(() => {\n    truncatedTeaching = faculty.profile?.teaching\n      ? truncateRichText(faculty.profile.teaching, 700)\n      : { html: '', wasTruncated: false }\n    truncatedResearch = faculty.profile?.research\n      ? truncateRichText(faculty.profile.research, 700)\n      : { html: '', wasTruncated: false }\n  })\n</script>\n\n<svelte:head>\n  <title>TXST Faculty Profiles - {faculty.fullname}</title>\n</svelte:head>\n\n<div class=\"gradient-wrap [ bg-red-200 py-xl mb-2xl ]\">\n  <Header className=\"mt-6\" />\n  <main id=\"main-content\">\n    <section class=\"intro wrapper\">\n      <div\n        class=\"flex prose intro-main [ flex flex-col md:flex-row p-xs-l text-white relative ]\"\n      >\n        <div class=\"content flow prose [ md:basis-9/12 ]\">\n          <h2 class=\"name\">{faculty.fullname}</h2>\n          <div class=\"contact-info flow\">\n            <div class=\"basic-info flow\">\n              <ul class=\"titles [ max-w-72 sm:max-w-full ]\">\n                {#each faculty.positions as position}\n                  <li class=\"text-wrap\">\n                    {position.title}\n                    {#if position.department && !position.title?.includes('Dean')}\n                      - {position.department}\n                    {/if}\n                  </li>\n                {/each}\n              </ul>\n            </div>\n            <div class=\"detail-info [ flex items-start ]\">\n              <ul class=\"detail-list [ flex gap-4 flex-wrap ]\">\n                {#if faculty.officeLocation}\n                  <li class=\"labelled-icon\">\n                    <svg\n                      aria-hidden=\"true\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"17\"\n                      viewBox=\"0 0 16 17\"\n                      fill=\"currentColor\"\n                    >\n                      <path\n                        fill-rule=\"evenodd\"\n                        clip-rule=\"evenodd\"\n                        d=\"M3.78226 10.5257L8.00001 15.5L12.2195 10.5236C12.2419 10.4971 12.3919 10.2999 12.3919 10.2999L12.3926 10.2986C13.1128 9.34991 13.5018 8.19111 13.5 7C13.5 5.54131 12.9205 4.14236 11.8891 3.11091C10.8576 2.07946 9.4587 1.5 8.00001 1.5C6.54131 1.5 5.14237 2.07946 4.11092 3.11091C3.07947 4.14236 2.50001 5.54131 2.50001 7C2.49832 8.1916 2.88761 9.35084 3.60816 10.2999C3.60816 10.2999 3.75831 10.4971 3.78226 10.5257ZM4.43028 9.72905C4.41601 9.71025 4.4064 9.6976 4.40626 9.6975C3.81725 8.92167 3.4989 7.97409 3.50001 7C3.50001 5.80653 3.97411 4.66193 4.81802 3.81802C5.66194 2.97411 6.80653 2.5 8.00001 2.5C9.19348 2.5 10.3381 2.97411 11.182 3.81802C12.0259 4.66193 12.5 5.80653 12.5 7C12.5012 7.97356 12.183 8.92064 11.5944 9.6961C11.5942 9.6965 11.477 9.85135 11.455 9.87895L8.00001 13.9539L4.54956 9.8847C4.53057 9.86107 4.46591 9.77594 4.43028 9.72905ZM6.61108 9.07868C7.0222 9.35338 7.50555 9.5 8 9.5C8.66281 9.49925 9.29826 9.23561 9.76693 8.76693C10.2356 8.29826 10.4992 7.66281 10.5 7C10.5 6.50555 10.3534 6.0222 10.0787 5.61108C9.80397 5.19995 9.41353 4.87952 8.95671 4.6903C8.49989 4.50108 7.99723 4.45157 7.51228 4.54804C7.02732 4.6445 6.58187 4.8826 6.23223 5.23223C5.8826 5.58187 5.6445 6.02732 5.54804 6.51228C5.45157 6.99723 5.50108 7.49989 5.6903 7.95671C5.87952 8.41352 6.19995 8.80397 6.61108 9.07868ZM7.16665 5.7528C7.41332 5.58797 7.70333 5.5 8 5.5C8.39769 5.50044 8.77897 5.65861 9.06018 5.93982C9.34139 6.22103 9.49956 6.60231 9.5 7C9.5 7.29667 9.41203 7.58668 9.24721 7.83336C9.08238 8.08003 8.84812 8.27229 8.57403 8.38582C8.29994 8.49935 7.99834 8.52906 7.70737 8.47118C7.41639 8.4133 7.14912 8.27044 6.93934 8.06066C6.72956 7.85088 6.5867 7.58361 6.52882 7.29264C6.47095 7.00167 6.50065 6.70007 6.61418 6.42598C6.72771 6.15189 6.91997 5.91762 7.16665 5.7528Z\"\n                      />\n                    </svg><a\n                      href=\"https://www.facilities.txst.edu/pdc/maps.html\"\n                      class=\"location\"\n                      >{faculty.officeLocation.building ?? ''}\n                      {faculty.officeLocation.room ?? ''}</a\n                    >\n                  </li>\n                {/if}\n                {#if faculty.officePhone}\n                  <li class=\"labelled-icon\">\n                    <svg\n                      aria-hidden=\"true\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"17\"\n                      viewBox=\"0 0 16 17\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M13 15H12.915C3.09 14.435 1.695 6.145 1.5 3.615C1.48429 3.41829 1.50755 3.22041 1.56844 3.03271C1.62933 2.845 1.72666 2.67115 1.85486 2.52113C1.98306 2.3711 2.13959 2.24784 2.31551 2.15842C2.49142 2.069 2.68325 2.01516 2.88 2H5.635C5.83528 1.99981 6.031 2.05976 6.19682 2.17208C6.36263 2.28441 6.4909 2.44394 6.565 2.63L7.325 4.5C7.39818 4.68177 7.41634 4.88104 7.37722 5.07305C7.33811 5.26505 7.24345 5.44134 7.105 5.58L6.04 6.655C6.20636 7.60037 6.65909 8.47183 7.33695 9.15148C8.01481 9.83112 8.88507 10.2862 9.83 10.455L10.915 9.38C11.0557 9.24308 11.2337 9.15063 11.4266 9.11417C11.6196 9.07771 11.819 9.09887 12 9.175L13.885 9.93C14.0683 10.0064 14.2246 10.1357 14.3341 10.3013C14.4437 10.467 14.5014 10.6614 14.5 10.86V13.5C14.5 13.8978 14.342 14.2794 14.0607 14.5607C13.7794 14.842 13.3978 15 13 15ZM3 3C2.86739 3 2.74022 3.05268 2.64645 3.14645C2.55268 3.24022 2.5 3.36739 2.5 3.5V3.54C2.73 6.5 4.205 13.5 12.97 14C13.0357 14.0041 13.1015 13.9951 13.1638 13.9737C13.226 13.9522 13.2833 13.9187 13.3326 13.875C13.3818 13.8314 13.422 13.7784 13.4507 13.7192C13.4794 13.66 13.4962 13.5957 13.5 13.53V10.86L11.615 10.105L10.18 11.53L9.94 11.5C5.59 10.955 5 6.605 5 6.56L4.97 6.32L6.39 4.885L5.64 3H3Z\"\n                        fill=\"white\"\n                      />\n                    </svg><a href={faculty.officePhone} class=\"phone\"\n                      >{faculty.officePhone}</a\n                    >\n                  </li>\n                {/if}\n                {#if faculty.EMAIL}\n                  <li class=\"labelled-icon\">\n                    <svg\n                      aria-hidden=\"true\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"17\"\n                      viewBox=\"0 0 16 17\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M14 3.5H2C1.73478 3.5 1.48043 3.60536 1.29289 3.79289C1.10536 3.98043 1 4.23478 1 4.5V12.5C1 12.7652 1.10536 13.0196 1.29289 13.2071C1.48043 13.3946 1.73478 13.5 2 13.5H14C14.2652 13.5 14.5196 13.3946 14.7071 13.2071C14.8946 13.0196 15 12.7652 15 12.5V4.5C15 4.23478 14.8946 3.98043 14.7071 3.79289C14.5196 3.60536 14.2652 3.5 14 3.5ZM12.9 4.5L8 7.89L3.1 4.5H12.9ZM2 12.5V4.955L7.715 8.91C7.7987 8.96806 7.89813 8.99918 8 8.99918C8.10187 8.99918 8.2013 8.96806 8.285 8.91L14 4.955V12.5H2Z\"\n                        fill=\"white\"\n                      />\n                    </svg><a href={`mailto:${faculty.EMAIL}`} class=\"email\"\n                      >{faculty.EMAIL}</a\n                    >\n                  </li>\n                {/if}\n                {#if faculty.WEBSITE}\n                  <li class=\"labelled-icon\">\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"17\"\n                      viewBox=\"0 0 16 17\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M8 1.5C6.61553 1.5 5.26216 1.91054 4.11101 2.67971C2.95987 3.44888 2.06266 4.54213 1.53285 5.82122C1.00303 7.1003 0.86441 8.50776 1.13451 9.86563C1.4046 11.2235 2.07129 12.4708 3.05026 13.4497C4.02922 14.4287 5.2765 15.0954 6.63437 15.3655C7.99224 15.6356 9.3997 15.497 10.6788 14.9672C11.9579 14.4373 13.0511 13.5401 13.8203 12.389C14.5895 11.2378 15 9.88447 15 8.5C15 6.64348 14.2625 4.86301 12.9497 3.55025C11.637 2.2375 9.85652 1.5 8 1.5ZM14 8H11C10.9416 6.15854 10.4646 4.35458 9.605 2.725C10.7893 3.04895 11.8457 3.72842 12.6316 4.67171C13.4175 5.615 13.8952 6.77669 14 8ZM8 14.5C7.88846 14.5075 7.77654 14.5075 7.665 14.5C6.62915 12.8481 6.05426 10.9491 6 9H10C9.95026 10.9477 9.38058 12.8466 8.35 14.5C8.23348 14.5082 8.11653 14.5082 8 14.5ZM6 8C6.04975 6.05234 6.61942 4.15341 7.65 2.5C7.87264 2.47498 8.09737 2.47498 8.32 2.5C9.36114 4.1504 9.94124 6.04953 10 8H6ZM6.38 2.725C5.52565 4.35582 5.05373 6.15972 5 8H2C2.10485 6.77669 2.58247 5.615 3.3684 4.67171C4.15432 3.72842 5.21072 3.04895 6.395 2.725H6.38ZM2.025 9H5.025C5.07718 10.8399 5.54739 12.6438 6.4 14.275C5.21943 13.9476 4.16739 13.2666 3.38528 12.3236C2.60317 11.3806 2.12848 10.2208 2.025 9ZM9.605 14.275C10.4646 12.6454 10.9416 10.8415 11 9H14C13.8952 10.2233 13.4175 11.385 12.6316 12.3283C11.8457 13.2716 10.7893 13.9511 9.605 14.275Z\"\n                        fill=\"white\"\n                      />\n                    </svg><a\n                      href={faculty.WEBSITE.startsWith('http://') ||\n                      faculty.WEBSITE.startsWith('https://')\n                        ? faculty.WEBSITE\n                        : `//${faculty.WEBSITE}`}\n                      class=\"personal-website wrap-anywhere\"\n                      >{faculty.WEBSITE}</a\n                    >\n                  </li>\n                {/if}\n                {#if faculty.LINK}\n                  <li class=\"labelled-icon\">\n                    <svg\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      width=\"16\"\n                      height=\"17\"\n                      viewBox=\"0 0 16 17\"\n                      fill=\"none\"\n                    >\n                      <path\n                        d=\"M8 1.5C6.61553 1.5 5.26216 1.91054 4.11101 2.67971C2.95987 3.44888 2.06266 4.54213 1.53285 5.82122C1.00303 7.1003 0.86441 8.50776 1.13451 9.86563C1.4046 11.2235 2.07129 12.4708 3.05026 13.4497C4.02922 14.4287 5.2765 15.0954 6.63437 15.3655C7.99224 15.6356 9.3997 15.497 10.6788 14.9672C11.9579 14.4373 13.0511 13.5401 13.8203 12.389C14.5895 11.2378 15 9.88447 15 8.5C15 6.64348 14.2625 4.86301 12.9497 3.55025C11.637 2.2375 9.85652 1.5 8 1.5ZM14 8H11C10.9416 6.15854 10.4646 4.35458 9.605 2.725C10.7893 3.04895 11.8457 3.72842 12.6316 4.67171C13.4175 5.615 13.8952 6.77669 14 8ZM8 14.5C7.88846 14.5075 7.77654 14.5075 7.665 14.5C6.62915 12.8481 6.05426 10.9491 6 9H10C9.95026 10.9477 9.38058 12.8466 8.35 14.5C8.23348 14.5082 8.11653 14.5082 8 14.5ZM6 8C6.04975 6.05234 6.61942 4.15341 7.65 2.5C7.87264 2.47498 8.09737 2.47498 8.32 2.5C9.36114 4.1504 9.94124 6.04953 10 8H6ZM6.38 2.725C5.52565 4.35582 5.05373 6.15972 5 8H2C2.10485 6.77669 2.58247 5.615 3.3684 4.67171C4.15432 3.72842 5.21072 3.04895 6.395 2.725H6.38ZM2.025 9H5.025C5.07718 10.8399 5.54739 12.6438 6.4 14.275C5.21943 13.9476 4.16739 13.2666 3.38528 12.3236C2.60317 11.3806 2.12848 10.2208 2.025 9ZM9.605 14.275C10.4646 12.6454 10.9416 10.8415 11 9H14C13.8952 10.2233 13.4175 11.385 12.6316 12.3283C11.8457 13.2716 10.7893 13.9511 9.605 14.275Z\"\n                        fill=\"white\"\n                      />\n                    </svg><a\n                      href={faculty.LINK.startsWith('http://') ||\n                      faculty.LINK.startsWith('https://')\n                        ? faculty.LINK\n                        : `//${faculty.LINK}`}\n                      class=\"orcid-link wrap-anywhere\">{faculty.LINK}</a\n                    >\n                  </li>\n                {/if}\n                <!-- <li class=\"labelled-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 3V4H7.4C7.07053 5.41357 6.39729 6.72398 5.44 7.815C6.16331 8.55291 7.0362 9.12745 8 9.5L7.645 10.42C6.56294 9.98533 5.58242 9.33165 4.765 8.5C3.93248 9.32042 2.95179 9.97535 1.875 10.43L1.5 9.5C2.45828 9.09433 3.33306 8.51453 4.08 7.79C3.40416 6.96583 2.89474 6.01831 2.58 5H3.63C3.88469 5.75906 4.2724 6.46675 4.775 7.09C5.54601 6.2023 6.09296 5.14268 6.37 4H1V3H4.5V1.5H5.5V3H9ZM15 15H13.925L13.125 13H9.7L8.9 15H7.825L10.825 7.5H12L15 15ZM11.41 8.72L10.1 12H12.725L11.41 8.72Z\" fill=\"white\"/>\n                      </svg><span class=\"language\">English, Spanish</span></li> -->\n              </ul>\n            </div>\n          </div>\n        </div>\n        {#if faculty.portrait || faculty.UPLOAD_PHOTO}\n          <ProfileImage\n            portrait={faculty.portrait}\n            uploadPhoto={faculty.UPLOAD_PHOTO}\n            fullname={faculty.fullname}\n            userId={faculty.user_id}\n            size=\"large\"\n            shape=\"brand\"\n          />\n        {/if}\n      </div>\n    </section>\n    {#if faculty.profile?.teaching || faculty.profile?.research || grants.length > 0 || scholarlyCreativeWorks.length > 0 || awards.length > 0 || events.length > 0 || hasIp || faculty.UPLOAD_VITA}\n      <nav class=\"wrapper\">\n        <ul class=\"reel reel-container [ pb-10 -mt-6 px-2xl pt-2 ]\">\n          {#if faculty.profile?.bio}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/detail\"\n                data-button-variant=\"secondary\"\n                class=\"btn [ flex flex-nowrap ]\">Bio & expertise</a\n              >\n            </li>\n          {/if}\n          {#if hasIp}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/activity/intellectual-property\"\n                data-button-variant=\"secondary\"\n                class=\"btn\">Intellectual Property</a\n              >\n            </li>\n          {/if}\n          {#if grants.length > 0}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/activity/grants\"\n                data-button-variant=\"secondary\"\n                class=\"btn\">Grants</a\n              >\n            </li>\n          {/if}\n          {#if scholarlyCreativeWorks.length > 0}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/activity/scholarly-creative\"\n                data-button-variant=\"secondary\"\n                class=\"btn\">Scholarly/Creative work</a\n              >\n            </li>\n          {/if}\n          {#if awards.length > 0}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/activity/awards\"\n                data-button-variant=\"secondary\"\n                class=\"btn\">Awards</a\n              >\n            </li>\n          {/if}\n          {#if events.length > 0}\n            <li>\n              <a\n                href=\"/profile/{faculty.user_id}/activity/service\"\n                data-button-variant=\"secondary\"\n                class=\"btn\">Service</a\n              >\n            </li>\n          {/if}\n          {#if faculty.UPLOAD_VITA}\n            {@const cvFilename =\n              faculty.UPLOAD_VITA.split('/').pop() || 'cv.pdf'}\n            <li class=\"ml-auto\">\n              <a\n                href=\"/api/cv/{faculty.user_id}/{cvFilename}\"\n                data-button-variant=\"secondary\"\n                class=\"btn\"\n                aria-label=\"Download faculty CV\"\n                ><span class=\"labelled-icon\"\n                  ><span class=\"faculty-cv\">CV</span>\n                  <svg\n                    width=\"16\"\n                    height=\"16\"\n                    viewBox=\"0 0 16 16\"\n                    fill=\"none\"\n                    aria-hidden=\"true\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                  >\n                    <rect\n                      width=\"16\"\n                      height=\"16\"\n                      style=\"mix-blend-mode:multiply\"\n                    />\n                    <path\n                      fill-rule=\"evenodd\"\n                      clip-rule=\"evenodd\"\n                      d=\"M12.295 6.295L13 7L8 12L3 7L3.705 6.295L7.5 10.085V1H8.5V10.085L12.295 6.295ZM13 14V12H14V14C14 14.2652 13.8946 14.5196 13.7071 14.7071C13.5196 14.8946 13.2652 15 13 15H3C2.73478 15 2.48043 14.8946 2.29289 14.7071C2.10536 14.5196 2 14.2652 2 14V12H3V14H13Z\"\n                      fill=\"white\"\n                    />\n                  </svg>\n                </span></a\n              >\n            </li>\n          {/if}\n        </ul>\n      </nav>\n    {/if}\n  </main>\n</div>\n\n<article\n  class=\"detail-sections-wrapper wrapper flow\"\n  style=\"--flow-space: var(--space-3xl)\"\n>\n  {#if faculty.profile?.bio}\n    <section\n      aria-labelledby=\"bio-and-education-title\"\n      class=\"bio-and-education prose flow [ p-xs-l ]\"\n      class:sandstone={!faculty.profile.teaching && !faculty.profile.research}\n    >\n      <h3 id=\"bio-and-education-title\" class=\"section-title\">\n        Biography and expertise\n      </h3>\n      <div class=\"bio-content\">{@html faculty.profile.bio}</div>\n    </section>\n  {/if}\n  {#if hasEducation}\n    <section\n      aria-labelledby=\"education-title\"\n      class=\"education prose flow bg-sandstone-200 p-xs-l rounded-m\"\n      style=\"--underline-color: var(--color-maroon-500);\"\n    >\n      <h3 id=\"education-title\" class=\"section-title\">Education</h3>\n      <div\n        class=\"grid gap-l\"\n        data-layout=\"education\"\n        style=\"--flow-space: var(--space-l); --education-columns-tablet: {Math.min(\n          educationCards.length,\n          3\n        )}; --education-columns-desktop: {Math.min(educationCards.length, 5)};\"\n      >\n        {#each educationCards as { label, entry } (entry.id)}\n          {@const card = formatEducationCard(entry)}\n          <div class=\"flow\" style=\"--flow-space: var(--space-xs);\">\n            <h4\n              class=\"uppercase tracking-uppercase text-maroon-500 font-bold text-step--1\"\n            >\n              {label}\n            </h4>\n            <div class=\"flow\" style=\"--flow-space: var(--space-3xs);\">\n              <p class=\"text-step-0\">{card.degreeLine}</p>\n              {#if card.supportingAreaLine}<p class=\"text-step-0\">\n                  {card.supportingAreaLine}\n                </p>{/if}\n            </div>\n            <p class=\"text-gray-600 text-step--1\">{card.schoolLine}</p>\n          </div>\n        {/each}\n      </div>\n    </section>\n  {/if}\n  {#if faculty.profile && (faculty.profile.teaching || faculty.profile.research)}\n    <div class=\"interests [ grid ]\" data-layout=\"50-50\">\n      {#if faculty.profile.teaching}\n        <div\n          class=\"teaching-interests card-text prose section-card__text flow p-xs-l\"\n        >\n          <h3 class=\"section-title\">Teaching Interests</h3>\n          <div class=\"content\">\n            {@html truncatedTeaching.html}\n            {#if truncatedTeaching.wasTruncated}\n              <a\n                href=\"/profile/{faculty.user_id}/detail#teaching\"\n                data-button-variant=\"tertiary\"\n                class=\"more-link text-maroon-500\">Read more</a\n              >\n            {/if}\n          </div>\n        </div>\n      {/if}\n      {#if faculty.profile.research}\n        <div\n          class=\"research-interests card-text prose section-card__text flow p-xs-l\"\n        >\n          <h3 class=\"section-title\">Research Interests</h3>\n          <div class=\"content\">\n            {@html truncatedResearch.html}\n            {#if truncatedResearch.wasTruncated}\n              <a\n                href=\"/profile/{faculty.user_id}/detail#research\"\n                data-button-variant=\"tertiary\"\n                class=\"more-link\">Read more</a\n              >\n            {/if}\n          </div>\n        </div>\n      {/if}\n    </div>\n  {/if}\n  {#if hasIp}\n    <section\n      aria-labelledby=\"featured-intellectual-property-title\"\n      class=\"featured-intellectual-property flow section-card section-card--reverse\"\n    >\n      <div class=\"card-text prose section-card__text flow p-xs-l\">\n        <h3 id=\"featured-intellectual-property-title\" class=\"section-title\">\n          Intellectual Property\n        </h3>\n        {#if featuredIp.copyrights.length > 0}\n          <h4 class=\"section-subtitle\">Copyrights</h4>\n          <ul>\n            {#each featuredIp.copyrights as item}\n              <li>{@html formatIpCitationLine(item)}</li>\n            {/each}\n          </ul>\n        {/if}\n        {#if featuredIp.patents.length > 0}\n          <h4 class=\"section-subtitle\">Patents</h4>\n          <ul>\n            {#each featuredIp.patents as item}\n              {@const card = formatPatentCard(item)}\n              <li>\n                {@html card.citationLine}{#if card.dateLine}<br /><span\n                    class=\"text-step--2\">{card.dateLine}</span\n                  >{/if}\n              </li>\n            {/each}\n          </ul>\n        {/if}\n        {#if featuredIp.trademarks.length > 0}\n          <h4 class=\"section-subtitle\">Trademarks</h4>\n          <ul>\n            {#each featuredIp.trademarks as item}\n              <li>{@html formatIpCitationLine(item)}</li>\n            {/each}\n          </ul>\n        {/if}\n        {#if hasMoreIp}\n          <a\n            href=\"/profile/{faculty.user_id}/activity/intellectual-property\"\n            class=\"btn\">View all intellectual property</a\n          >\n        {/if}\n      </div>\n      <div class=\"section-card__img\">\n        <img\n          src={getOptimizedSrc(BANNER_IP)}\n          srcset={generateSrcset(BANNER_IP)}\n          sizes={BANNER_SIZES}\n          class=\"max-h-[668px]\"\n          alt=\"\"\n        />\n      </div>\n    </section>\n  {/if}\n  {#if grants.length > 0}\n    <section\n      aria-labelledby=\"featured-grants-title\"\n      class=\"featured-grants flow section-card\"\n    >\n      <div class=\"card-text prose section-card__text flow p-xs-l\">\n        <h3 id=\"featured-grants-title\" class=\"section-title\">\n          Featured grants\n        </h3>\n        <ul>\n          {#each grants.slice(0, 5) as grant}\n            <li>{@html grant?.description}</li>\n          {/each}\n        </ul>\n        {#if grants.length > 5}\n          <a href=\"/profile/{faculty.user_id}/activity/grants\" class=\"btn\"\n            >View all grants</a\n          >\n        {/if}\n      </div>\n      <div class=\"section-card__img\">\n        <img\n          src={getOptimizedSrc(BANNER_GRANTS)}\n          srcset={generateSrcset(BANNER_GRANTS)}\n          sizes={BANNER_SIZES}\n          class=\"max-h-[668px]\"\n          alt=\"\"\n        />\n      </div>\n    </section>\n  {/if}\n  {#if scholarlyCreativeWorks.length > 0}\n    <section\n      aria-labelledby=\"featured-scholarly-creative-works-title\"\n      class=\"featured-scholarly-creative-works flow\"\n    >\n      <div class=\"card-text prose flow p-xs-l\">\n        <h3 id=\"featured-scholarly-creative-works-title\" class=\"section-title\">\n          Featured scholarly/creative works\n        </h3>\n        <ul>\n          {#each scholarlyCreativeWorks.slice(0, 5) as work}\n            <li>{@html work?.description}</li>\n          {/each}\n        </ul>\n        {#if scholarlyCreativeWorks.length > 5}\n          <a\n            href=\"/profile/{faculty.user_id}/activity/scholarly-creative\"\n            class=\"btn\">View all scholarly/creative works</a\n          >\n        {/if}\n      </div>\n    </section>\n  {/if}\n  {#if awards.length > 0}\n    <section\n      aria-labelledby=\"featured-awards-title\"\n      class=\"featured-awards flow section-card section-card--reverse\"\n    >\n      <div class=\"card-text prose section-card__text flow p-xs-l\">\n        <h3 id=\"featured-awards-title\" class=\"section-title\">\n          Featured awards\n        </h3>\n        <ul>\n          {#each awards.slice(0, 5) as award}\n            <li>{@html award?.description}</li>\n          {/each}\n        </ul>\n        {#if awards.length > 5}\n          <a href=\"/profile/{faculty.user_id}/activity/awards\" class=\"btn\"\n            >View all awards</a\n          >\n        {/if}\n      </div>\n      <div class=\"section-card__img\">\n        <img\n          src={getOptimizedSrc(BANNER_AWARDS)}\n          srcset={generateSrcset(BANNER_AWARDS)}\n          sizes={BANNER_SIZES}\n          class=\"max-h-[668px]\"\n          alt=\"\"\n        />\n      </div>\n    </section>\n  {/if}\n  <!-- service activities -->\n  {#if events.length > 0}\n    <section\n      aria-labelledby=\"featured-service-activities-title\"\n      class=\" flow\"\n      style=\"--flow-space:4em;\"\n    >\n      <h3\n        id=\"featured-service-activities-title\"\n        class=\"section-title\"\n        style=\"--underline-color: var(--color-dark);\"\n      >\n        Featured service activities\n      </h3>\n      <TimelineCarousel\n        title=\"Featured service activities timeline\"\n        visibleItems={3}\n        {events}\n        {hasMoreServices}\n      />\n    </section>\n  {/if}\n  <!-- empty state with image on left-->\n  {#if !grants.length && !scholarlyCreativeWorks.length && !awards.length && !events.length && !hasIp && !faculty.profile?.bio && !hasEducation}\n    <section\n      aria-labelledby=\"empty-state-title\"\n      class=\"empty-state prose flow section-card\"\n    >\n      <div class=\"section-card__img\">\n        <img\n          src={getOptimizedSrc(BANNER_AWARDS)}\n          srcset={generateSrcset(BANNER_AWARDS)}\n          sizes={BANNER_SIZES}\n          class=\"max-h-[668px]\"\n          alt=\"\"\n        />\n      </div>\n      <div class=\"card-text prose section-card__text flow p-xs-l\">\n        <h3\n          id=\"empty-state-title\"\n          class=\"section-title\"\n          style=\"--underline-color: var(--color-sandstone-500);\"\n        >\n          Profile in progress\n        </h3>\n        <p>\n          {possessive(faculty.fullname)} profile is in progress. We look forward to\n          sharing more about their work at Texas State University as details become\n          available.\n        </p>\n        <!-- contact faculty by email link/btn -->\n        <a href=\"mailto:{faculty.EMAIL}\" class=\"btn\">Contact faculty</a>\n      </div>\n    </section>\n  {/if}\n</article>\n"],"names":["load","insert_hydration","target","div","anchor","append_hydration","button0","button1","ctx","t_value","span","dirty","set_data","t","a","t3_value","t5_value","create_if_block_1","li","div2","div3","p","time","t3","t5","create_if_block_2","i","create_if_block","attr","div1","div1_aria_label_value","div0","ol","events","$$props","visibleItems","showScrollbar","itemSpacing","title","hasMoreServices","scrollable","prevButton","nextButton","isOverflowing","scrollPrev","scrollAmount","scrollNext","updateButtonStates","$$invalidate","onMount","debounced","$$value","DEGREE_TYPE_GROUPS","degreeLabel","code","groupEducationByDegreeType","entries","degreeType","label","entry","group","formatEducationCard","truncateRichText","html","length","container","fullText","lastSpace","targetLength","walker","charCount","node","textNode","nodeLength","_a","range","fragment","temp","constants_0","formatPatentCard","child_ctx","t1_value","t0_value","t2_value","svg","path","create_if_block_29","create_if_block_28","create_if_block_27","create_if_block_26","create_if_block_25","create_if_block_24","if_block6","create_if_block_23","get_if_ctx","nav","ul","if_block0","span1","section","h3","get_key","set_style","if_block","create_if_block_20","h4","p0","p1","t0","t2","create_if_block_17","create_if_block_15","if_block1","raw_value","create_if_block_18","html_tag","create_if_block_16","create_if_block_13","create_if_block_11","if_block2","create_if_block_10","create_if_block_9","src_url_equal","img","img_src_value","getOptimizedSrc","BANNER_IP","srcset_url_equal","img_srcset_value","generateSrcset","BANNER_SIZES","each_value_5","ensure_array_like","formatIpCitationLine","each_value_4","br","create_if_block_12","each_value_3","each_value_2","create_if_block_7","BANNER_GRANTS","each_value_1","create_if_block_5","each_value","create_if_block_3","BANNER_AWARDS","possessive","title_value","each_value_7","create_if_block_35","create_if_block_34","create_if_block_33","if_block3","create_if_block_32","if_block4","create_if_block_31","if_block5","create_if_block_30","_b","create_if_block_22","_c","create_if_block_21","create_if_block_19","if_block9","create_if_block_14","create_if_block_8","create_if_block_6","create_if_block_4","_d","div5","main","div4","h2","ul0","ul1","article","current","if_block7","name","data","faculty","monthNames","formatActivityDate","date","formatDateRange","start","end","startStr","endStr","truncatedTeaching","truncatedResearch","ipByCategory","groupIpByFormat","intellectualProperty","featuredIp","allocateFeaturedIp","hasIp","hasMoreIp","professionalservices","allServiceActivities","hasEducation","educationCards","activity","grants","isNotBlank","scholarlyCreativeWorks","awards","sortby","_e"],"mappings":"uwBACO,MAAMA,GAAO,UAAa,CAAA,0vCCsE7BC,EAqBKC,EAAAC,EAAAC,CAAA,EApBHC,EASQF,EAAAG,CAAA,kBACRD,EASQF,EAAAI,CAAA,+BAfIC,EAAU,EAAA,CAAA,eAUVA,EAAU,EAAA,CAAA,qFA4BcC,EAAAD,MAAM,MAAK,+KAAzCP,EAAgDC,EAAAQ,EAAAN,CAAA,iBAAlBO,EAAA,GAAAF,KAAAA,EAAAD,MAAM,MAAK,KAAAI,GAAAC,EAAAJ,CAAA,uCAHtCA,EAAAD,MAAM,MAAK,2IADLA,EAAK,EAAA,EAAC,MAAQ,GAAG,uDAA1BP,EAEGC,EAAAY,EAAAV,CAAA,iBADAO,EAAA,GAAAF,KAAAA,EAAAD,MAAM,MAAK,KAAAI,GAAAC,EAAAJ,CAAA,cADLD,EAAK,EAAA,EAAC,MAAQ,wKAMnBO,EAAAP,MAAM,YAAW,SACQQ,EAAAR,MAAM,KAAI,uBARlC,OAAAA,MAAM,KAAIS,8xBANyET,EAAC,EAAA,EAAG,CAAC,OAAOA,KAAO,MAAM,KAAKA,EAAK,EAAA,EAAC,KAAK,EAAA,UAArIP,EAgBIC,EAAAgB,EAAAd,CAAA,EAfFC,EAGKa,EAAAC,CAAA,SACLd,EAUKa,EAAAE,CAAA,qBAFHf,EAAyBe,EAAAC,CAAA,gBACzBhB,EAA8Ce,EAAAE,CAAA,8EAD1CX,EAAA,GAAAI,KAAAA,EAAAP,MAAM,YAAW,KAAAI,GAAAW,EAAAR,CAAA,EACQJ,EAAA,GAAAK,KAAAA,EAAAR,MAAM,KAAI,KAAAI,GAAAY,EAAAR,CAAA,uBAdiDR,EAAC,EAAA,EAAG,CAAC,OAAOA,KAAO,MAAM,KAAKA,EAAK,EAAA,EAAC,KAAK,sRAyBvE,qBAAmB,kRAAnB,qBAAmB,kHAArEA,EAAK,EAAA,EAAC,IAAI,SAAQ,mBAAA,gOAN4DA,EAAM,CAAA,EAAC,OAAS,CAAC,OAAOA,EAAM,CAAA,EAAC,OAAS,CAAC,oCAAA,UAArIP,EAQIC,EAAAgB,EAAAd,CAAA,EAPFC,EAGOa,EAAAC,CAAA,SACPd,EAEKa,EAAAE,CAAA,EADHf,EAAkFe,EAAAN,CAAA,gCAAxEN,EAAK,EAAA,EAAC,IAAI,SAAQ,yDAN4DA,EAAM,CAAA,EAAC,OAAS,CAAC,OAAOA,EAAM,CAAA,EAAC,OAAS,CAAC,4GApDpIA,EAAM,CAAA,EAAC,OAASA,EAAY,CAAA,GAAAiB,GAAAjB,CAAA,MAgCtBA,EAAM,CAAA,CAAA,uBAAX,OAAIkB,GAAA,2BAmBDlB,EAAe,CAAA,GAAAmB,GAAAnB,CAAA,wgBApBkDA,EAAY,CAAA,EAAA,GAAA,uBAAqBA,EAAW,CAAA,CAAA,2EAH9FA,EAAa,CAAA,CAAA,wBACbA,EAAa,CAAA,CAAA,qGA/ByCoB,EAAAC,EAAA,aAAAC,EAAAtB,MAAS,qBAAqB,UAA9GP,EAkEKC,EAAA2B,EAAAzB,CAAA,wBAvCHC,EAsCKwB,EAAAE,CAAA,EAhCH1B,EA+BI0B,EAAAC,CAAA,+FA9DDxB,EAAM,CAAA,EAAC,OAASA,EAAY,CAAA,kEAgCtBA,EAAM,CAAA,CAAA,oBAAX,OAAIkB,GAAA,EAAA,gHAAJ,OAmBGlB,EAAe,CAAA,mGApBkDA,EAAY,CAAA,EAAA,GAAA,4BAAqBA,EAAW,CAAA,CAAA,6BAH9FA,EAAa,CAAA,CAAA,+BACbA,EAAa,CAAA,CAAA,EA/ByCG,EAAA,IAAAmB,KAAAA,EAAAtB,MAAS,yJAxD5E,GAAA,CAAA,OAAAyB,EAAA,CAAA,CAAA,EAAAC,GACA,aAAAC,EAAe,CAAA,EAAAD,GACf,cAAAE,EAAgB,EAAA,EAAAF,GAChB,YAAAG,EAAc,MAAA,EAAAH,GACd,MAAAI,EAAQ,EAAA,EAAAJ,GACR,gBAAAK,EAAkB,EAAA,EAAAL,EAEzBM,EACAC,EACAC,EACAC,EAAgB,GAEX,SAAAC,GAAA,CACF,GAAA,CAAAJ,EAAA,OAGC,MAAAK,EADYL,EAAW,YAAcL,EACV,KAAK,MAAMA,EAAe,CAAC,EAC5DK,EAAW,SAAA,CAAW,KAAA,CAAOK,EAAc,SAAU,SAAA,EAG9C,SAAAC,GAAA,CACF,GAAA,CAAAN,EAAA,OAGC,MAAAK,EADYL,EAAW,YAAcL,EACV,KAAK,MAAMA,EAAe,CAAC,EAC5DK,EAAW,SAAA,CAAW,KAAMK,EAAc,SAAU,SAAA,EAG7C,SAAAE,GAAA,CACF,CAAAP,GAAA,CAAeC,GAAA,CAAeC,QAEnCC,EAAgBH,EAAW,YAAcA,EAAW,WAAA,MAEpDC,EAAW,SAAWD,EAAW,WAAa,EAAAC,CAAA,EAC9CO,EAAA,EAAAN,EAAW,SAAWF,EAAW,YAAeA,EAAW,YAAcA,EAAW,YAAc,EAAAE,CAAA,GAGpGO,GAAA,IAAA,CACO,GAAA,CAAAT,EAAA,OAED,IAAAU,EACJV,EAAW,iBAAiB,SAAA,IAAA,CAC1B,OAAO,aAAaU,CAAS,EAC7BA,EAAY,OAAO,WAAWH,EAAoB,GAAG,IAGnD,mBAAoB,QAClB,IAAA,eAAA,IAAA,CACFA,EAAA,CACC,CAAA,EAAA,QAAQP,CAAU,EAGvBO,EAAA,8CASeN,EAAUU,qDAUVT,EAAUS,qDAadX,EAAUW,2bCxFzB,MAAMC,GAA8D,CAClE,CAAE,WAAY,uBAAwB,MAAO,6BAAA,EAC7C,CAAE,WAAY,YAAa,MAAO,kBAAA,EAClC,CAAE,WAAY,WAAY,MAAO,iBAAA,EACjC,CAAE,WAAY,aAAc,MAAO,mBAAA,CACrC,EAEO,SAASC,GAAaC,EAAsB,CACjD,OAAOA,EAAK,KAAA,EAAO,YAAA,IAAkB,MAAQ,MAAQA,CACvD,CAOO,SAASC,GAA4BC,EAAwC,CAClF,OAAOJ,GACJ,IAAI,CAAC,CAAE,WAAAK,EAAY,MAAAC,MAAa,CAAE,MAAAA,EAAO,QAASF,EAAQ,UAAgBG,EAAM,cAAgBF,CAAU,CAAA,EAAI,EAC9G,OAAOG,GAASA,EAAM,QAAQ,OAAS,CAAC,CAC7C,CAQO,SAASC,GAAqBF,EAAiC,CACpE,MAAMD,EAAQC,EAAM,IAAMN,GAAYM,EAAM,GAAG,EAAI,OACnD,MAAO,CACL,WAAYD,GAASC,EAAM,MAAQ,GAAGD,CAAK,OAAOC,EAAM,KAAK,GAAMD,GAASC,EAAM,OAAS,GAC3F,mBAAoBA,EAAM,UAAY,OACtC,WAAY,CAACA,EAAM,OAAQA,EAAM,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAA,CAExE,CCzCO,SAASG,GAAkBC,EAAiCC,EAAyD,OAC1H,GAAI,CAACD,EACH,MAAO,CAAE,KAAM,GAAI,aAAc,EAAA,EASnC,MAAME,EAFS,IAAI,UAAA,EACA,gBAAgB,sBAAsBF,CAAI,SAAU,WAAW,EAC5D,cAAc,QAAQ,EAEtCG,GAAWD,GAAA,YAAAA,EAAW,cAAe,GAC3C,GAAIC,EAAS,QAAUF,EACrB,MAAO,CAAE,KAAAD,EAAM,aAAc,EAAA,EAI/B,MAAMI,EAAYD,EAAS,YAAY,IAAKF,CAAM,EAC5CI,EAAeD,EAAY,EAAIA,EAAYH,EAGjD,GAAI,CAACC,EAAW,MAAO,CAAE,KAAAF,EAAM,aAAc,EAAA,EAE7C,MAAMM,EAAS,SAAS,iBAAiBJ,EAAW,WAAW,SAAS,EACxE,IAAIK,EAAY,EACZC,EAEJ,KAAQA,EAAOF,EAAO,YAAa,CACjC,MAAMG,EAAWD,EACXE,IAAaC,EAAAF,EAAS,cAAT,YAAAE,EAAsB,SAAU,EAEnD,GAAIJ,EAAYG,GAAcL,EAAc,CAC1C,MAAMO,EAAQ,SAAS,YAAA,EACvBA,EAAM,SAASV,EAAW,CAAC,EAC3BU,EAAM,OAAOH,EAAUJ,EAAeE,CAAS,EAE/C,MAAMM,EAAWD,EAAM,cAAA,EACjBE,EAAO,SAAS,cAAc,KAAK,EACzC,OAAAA,EAAK,YAAYD,CAAQ,EAElB,CAAE,KAAMC,EAAK,UAAY,KAAM,aAAc,EAAA,CACtD,CACAP,GAAaG,CACf,CAEA,MAAO,CAAE,KAAAV,EAAM,aAAc,EAAA,CAC/B,qRCyd6B,MAAAe,EAAAC,GAAiBC,EAAI,EAAA,CAAA,mJA9EzB,MAAAF,EAAAjB,GAAoBmB,EAAK,EAAA,CAAA,sDAvEpCA,EAAO,EAAA,EAAC,YAAY,MAAM,GAAG,EAAE,IAAG,GAAM,wGAhM7BC,EAAAzE,MAAS,WAAU,oBADqC,IACzD,qBADyD,IACzD,2FAFH0E,EAAA1E,MAAS,MAAK,SACVA,EAAQ,EAAA,EAAC,YAAU,GAAKkE,EAAAlE,MAAS,QAAT,MAAAkE,EAAgB,SAAS,qNAFxDzE,EAKIC,EAAAgB,EAAAd,CAAA,8GAwBE8E,GAAA1E,EAAO,EAAA,EAAC,eAAe,UAAY,IAAE,OACtC2E,GAAA3E,EAAO,EAAA,EAAC,eAAe,MAAQ,IAAE,u+EAlBtCP,EAoBIC,EAAAgB,EAAAd,CAAA,EAnBFC,EAaMa,EAAAkE,CAAA,EALJ/E,EAIC+E,EAAAC,CAAA,EACGhF,EAKNa,EAAAJ,CAAA,sEAkBIL,EAAAD,MAAQ,YAAW,gtDADRoB,EAAAd,EAAA,OAAAN,MAAQ,WAAW,4DAbpCP,EAgBIC,EAAAgB,EAAAd,CAAA,EAfFC,EAYMa,EAAAkE,CAAA,EAJJ/E,EAGC+E,EAAAC,CAAA,EACGhF,EAENa,EAAAJ,CAAA,wDAkBIL,EAAAD,MAAQ,MAAK,mgCADQoB,EAAAd,EAAA,OAAA,UAAAN,MAAQ,KAAK,EAAA,4DAbxCP,EAgBIC,EAAAgB,EAAAd,CAAA,EAfFC,EAYMa,EAAAkE,CAAA,EAJJ/E,EAGC+E,EAAAC,CAAA,EACGhF,EAENa,EAAAJ,CAAA,wDAsBIL,EAAAD,MAAQ,QAAO,8wDALXoB,EAAAd,EAAA,OAAAN,EAAO,EAAA,EAAC,QAAQ,WAAW,SAAS,GAC1CA,EAAO,EAAA,EAAC,QAAQ,WAAW,UAAU,EACjCA,EAAO,EAAA,EAAC,QACH,KAAAA,MAAQ,OAAO,EAAA,qFAhB5BP,EAoBIC,EAAAgB,EAAAd,CAAA,EAnBFC,EAWMa,EAAAkE,CAAA,EAJJ/E,EAGC+E,EAAAC,CAAA,EACGhF,EAONa,EAAAJ,CAAA,wDAqBoCL,EAAAD,MAAQ,KAAI,8wDAJxCoB,EAAAd,EAAA,OAAAN,EAAO,EAAA,EAAC,KAAK,WAAW,SAAS,GACvCA,EAAO,EAAA,EAAC,KAAK,WAAW,UAAU,EAC9BA,EAAO,EAAA,EAAC,KACH,KAAAA,MAAQ,IAAI,EAAA,+EAhBzBP,EAmBIC,EAAAgB,EAAAd,CAAA,EAlBFC,EAWMa,EAAAkE,CAAA,EAJJ/E,EAGC+E,EAAAC,CAAA,EACGhF,EAMNa,EAAAJ,CAAA,4EAYE,SAAAN,MAAQ,SACL,YAAAA,MAAQ,aACX,SAAAA,MAAQ,SACV,OAAAA,MAAQ,kPAUbkE,EAAAlE,EAAO,EAAA,EAAC,UAAR,YAAAkE,EAAiB,MAAGY,GAAA9E,CAAA,IASpBA,EAAK,CAAA,GAAA+E,GAAA/E,CAAA,IASLA,EAAM,EAAA,EAAC,OAAS,GAACgF,GAAAhF,CAAA,IASjBA,EAAsB,EAAA,EAAC,OAAS,GAACiF,GAAAjF,CAAA,IASjCA,EAAM,CAAA,EAAC,OAAS,GAACkF,GAAAlF,CAAA,IASjBA,EAAM,CAAA,EAAC,OAAS,GAACmF,GAAAnF,CAAA,EASjBoF,EAAApF,MAAQ,aAAWqF,GAAAC,GAAAtF,CAAA,CAAA,+cAxD5BP,EA4FKC,EAAA6F,EAAA3F,CAAA,EA3FHC,EA0FI0F,EAAAC,CAAA,oKAzFGtB,EAAAlE,EAAO,EAAA,EAAC,UAAR,MAAAkE,EAAiB,KAAGuB,EAAA,EAAAzF,EAAAG,CAAA,EASpBH,EAAK,CAAA,yDASLA,EAAM,EAAA,EAAC,OAAS,yDAShBA,EAAsB,EAAA,EAAC,OAAS,yDAShCA,EAAM,CAAA,EAAC,OAAS,yDAShBA,EAAM,CAAA,EAAC,OAAS,yDAShBA,MAAQ,aAAWoF,EAAA,EAAAE,GAAAtF,CAAA,EAAAG,CAAA,4IAjDe,iBAAe,mHAAf,iBAAe,0CAFhCiB,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,SAAA,yFAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,wFAQc,uBAAqB,mHAArB,uBAAqB,0CAFjBc,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,iCAAA,oEAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,wFAQc,QAAM,mHAAN,QAAM,0CAFFc,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,oEAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,wFAQc,yBAAuB,mHAAvB,yBAAuB,0CAFnBc,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,8BAAA,oEAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,wFAQc,QAAM,mHAAN,QAAM,0CAFFc,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,oEAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,wFAQc,SAAO,mHAAP,SAAO,0CAFHc,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,mBAAA,oEAFnCP,EAMIC,EAAAgB,EAAAd,CAAA,EALFC,EAIAa,EAAAJ,CAAA,28BAQiBN,EAAO,EAAA,EAAC,QAAO,IAAGA,EAAU,EAAA,CAAA,mIAF/CP,EA8BIC,EAAAgB,EAAAd,CAAA,EA7BFC,EA4BAa,EAAAJ,CAAA,EAvBGT,EAsBMS,EAAAoF,CAAA,iFAuBe1F,EAAO,EAAA,EAAC,QAAQ,IAAG,sjBALjCA,EAAO,EAAA,EAAC,QAAQ,WAAaA,EAAO,EAAA,EAAC,QAAQ,QAAQ,UAHzEP,EASSC,EAAAiG,EAAA/F,CAAA,EAJPC,EAEI8F,EAAAC,CAAA,SACJ/F,EAAyD8F,EAAAhG,CAAA,2FAkBhDK,EAAc,CAAA,CAAA,EAAsB,MAAA6F,EAAA7F,GAAAA,MAAM,mBAA/C,OAAIkB,GAAA,EAAA,gnBAL4D4E,EAAAnG,EAAA,6BAAA,KAAK,IACrEK,EAAc,CAAA,EAAC,OACf,CAAA,CAAA,EACgC8F,EAAAnG,EAAA,8BAAA,KAAK,IAAIK,EAAc,CAAA,EAAC,OAAQ,CAAC,CAAA,4KAZvEP,EAgCSC,EAAAiG,EAAA/F,CAAA,EA3BPC,EAA4D8F,EAAAC,CAAA,SAC5D/F,EAyBK8F,EAAAhG,CAAA,wEAjBIK,EAAc,CAAA,CAAA,+CAL6C8F,EAAAnG,EAAA,6BAAA,KAAK,IACrEK,EAAc,CAAA,EAAC,OACf,CAAA,CAAA,UACgC8F,EAAAnG,EAAA,8BAAA,KAAK,IAAIK,EAAc,CAAA,EAAC,OAAQ,CAAC,CAAA,4EAaxDC,EAAAD,MAAK,mBAAkB,uJADCP,EAEvBC,EAAAmB,EAAAjB,CAAA,iBADDO,EAAA,CAAA,EAAA,GAAAF,KAAAA,EAAAD,MAAK,mBAAkB,KAAAI,GAAAC,EAAAJ,CAAA,6CAL3BD,EAAK,EAAA,EAAA,WAGkB2E,EAAA3E,MAAK,WAAU,WAKFQ,EAAAR,MAAK,WAAU,OAJ/C+F,EAAA/F,MAAK,oBAAkBgG,GAAAhG,CAAA,mwBARhCP,EAaKC,EAAA2B,EAAAzB,CAAA,EAZHC,EAIIwB,EAAA4E,CAAA,gBACJpG,EAKKwB,EAAAE,CAAA,EAJH1B,EAA2C0B,EAAA2E,CAAA,sCAK7CrG,EAA0DwB,EAAA8E,CAAA,2CARvDnG,EAAK,EAAA,EAAA,KAAAI,GAAAgG,EAAA1B,CAAA,EAGkBvE,EAAA,CAAA,EAAA,GAAAwE,KAAAA,EAAA3E,MAAK,WAAU,KAAAI,GAAAiG,EAAA1B,CAAA,EAClC3E,MAAK,6EAI2BG,EAAA,CAAA,EAAA,GAAAK,KAAAA,EAAAR,MAAK,WAAU,KAAAI,GAAAY,EAAAR,CAAA,oDAQvDR,EAAO,EAAA,EAAC,QAAQ,UAAQsG,GAAAtG,CAAA,IAiBxBA,EAAO,EAAA,EAAC,QAAQ,UAAQuG,GAAAvG,CAAA,8OAlB/BP,EAmCKC,EAAAC,EAAAC,CAAA,+CAlCEI,EAAO,EAAA,EAAC,QAAQ,UAAQyF,EAAA,EAAAzF,EAAAG,CAAA,EAiBxBH,EAAO,EAAA,EAAC,QAAQ,UAAQwG,EAAA,EAAAxG,EAAAG,CAAA,wFAXhBsG,EAAAzG,KAAkB,KAAI,KACxB+F,EAAA/F,KAAkB,cAAY0G,GAAA1G,CAAA,ueANvCP,EAcKC,EAAA2B,EAAAzB,CAAA,EAXHC,EAAgDwB,EAAAuE,CAAA,SAChD/F,EASKwB,EAAAE,CAAA,yCARIpB,EAAA,CAAA,EAAA,GAAAsG,KAAAA,EAAAzG,KAAkB,KAAI,KAAA2G,EAAA,EAAAF,CAAA,EACxBzG,KAAkB,+IAIe,WAAS,yFAAT,WAAS,6BAF3BoB,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,yFADjCP,EAIAC,EAAAY,EAAAV,CAAA,iFAWK6G,EAAAzG,KAAkB,KAAI,KACxB+F,EAAA/F,KAAkB,cAAY4G,GAAA5G,CAAA,seANvCP,EAcKC,EAAA2B,EAAAzB,CAAA,EAXHC,EAAgDwB,EAAAuE,CAAA,SAChD/F,EASKwB,EAAAE,CAAA,yCARIpB,EAAA,CAAA,EAAA,GAAAsG,KAAAA,EAAAzG,KAAkB,KAAI,KAAA2G,EAAA,EAAAF,CAAA,EACxBzG,KAAkB,+IAID,WAAS,yFAAT,WAAS,6BAFXoB,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,yEADjCP,EAIAC,EAAAY,EAAAV,CAAA,kGAgBD6F,EAAAzF,EAAU,CAAA,EAAC,WAAW,OAAS,GAAC6G,GAAA7G,CAAA,EAQhCwG,EAAAxG,EAAU,CAAA,EAAC,QAAQ,OAAS,GAAC8G,GAAA9G,CAAA,EAa7B+G,EAAA/G,EAAU,CAAA,EAAC,WAAW,OAAS,GAACgH,GAAAhH,CAAA,IAQhCA,EAAS,CAAA,GAAAiH,GAAAjH,CAAA,ysBASPkH,GAAAC,EAAA,IAAAC,EAAAC,GAAgBC,EAAS,CAAA,GAAAlG,EAAA+F,EAAA,MAAAC,CAAA,EACtBG,GAAAJ,EAAAK,EAAAC,GAAeH,EAAS,CAAA,GAAAlG,EAAA+F,EAAA,SAAAK,CAAA,cACzBE,EAAY,0OAhDzBjI,EAqDSC,EAAAiG,EAAA/F,CAAA,EAjDPC,EAuCK8F,EAAApE,CAAA,EAtCH1B,EAEI0B,EAAAqE,CAAA,iGAqCN/F,EAQK8F,EAAAtE,CAAA,EAPHxB,EAMCwB,EAAA8F,CAAA,UA3CInH,EAAU,CAAA,EAAC,WAAW,OAAS,yDAQ/BA,EAAU,CAAA,EAAC,QAAQ,OAAS,yDAa5BA,EAAU,CAAA,EAAC,WAAW,OAAS,yDAQ/BA,EAAS,CAAA,wJA1BH2H,EAAAC,EAAA5H,KAAW,UAAU,uBAA1B,OAAIkB,GAAA,6VAFRzB,EAA2CC,EAAAuG,EAAArG,CAAA,WAC3CH,EAIIC,EAAA8F,EAAA5F,CAAA,sEAHK+H,EAAAC,EAAA5H,KAAW,UAAU,oBAA1B,OAAIkB,GAAA,EAAA,mHAAJ,mEACWuF,EAAAoB,GAAqB7H,EAAI,EAAA,CAAA,EAAA,qIAApCP,EAA0CC,EAAAgB,EAAAd,CAAA,mBAA/BO,EAAA,CAAA,EAAA,GAAAsG,KAAAA,EAAAoB,GAAqB7H,EAAI,EAAA,CAAA,EAAA,KAAA2G,EAAA,EAAAF,CAAA,uDAO/BqB,EAAAF,EAAA5H,KAAW,OAAO,uBAAvB,OAAIkB,GAAA,6VAFRzB,EAAwCC,EAAAuG,EAAArG,CAAA,WACxCH,EASIC,EAAA8F,EAAA5F,CAAA,sEARKkI,EAAAF,EAAA5H,KAAW,OAAO,oBAAvB,OAAIkB,GAAA,EAAA,mHAAJ,mEAI4BjB,EAAAD,MAAK,SAAQ,uLADKP,EAAMC,EAAAqI,EAAAnI,CAAA,EAAAH,EAE/CC,EAAAQ,EAAAN,CAAA,iBADuBO,EAAA,CAAA,EAAA,GAAAF,KAAAA,EAAAD,MAAK,SAAQ,KAAAI,GAAAC,EAAAJ,CAAA,gDADhCwG,EAAAzG,MAAK,aAAY,OAAM+F,EAAA/F,MAAK,UAAQgI,GAAAhI,CAAA,+KAD7CP,EAIIC,EAAAgB,EAAAd,CAAA,gDAHKO,EAAA,CAAA,EAAA,GAAAsG,KAAAA,EAAAzG,MAAK,aAAY,KAAA2G,EAAA,EAAAF,CAAA,EAAMzG,MAAK,iIAUhCiI,EAAAL,EAAA5H,KAAW,UAAU,uBAA1B,OAAIkB,GAAA,4VAFRzB,EAA2CC,EAAAuG,EAAArG,CAAA,WAC3CH,EAIIC,EAAA8F,EAAA5F,CAAA,sEAHKqI,EAAAL,EAAA5H,KAAW,UAAU,oBAA1B,OAAIkB,GAAA,EAAA,mHAAJ,mEACWuF,EAAAoB,GAAqB7H,EAAI,EAAA,CAAA,EAAA,qIAApCP,EAA0CC,EAAAgB,EAAAd,CAAA,mBAA/BO,EAAA,CAAA,EAAA,GAAAsG,KAAAA,EAAAoB,GAAqB7H,EAAI,EAAA,CAAA,EAAA,KAAA2G,EAAA,EAAAF,CAAA,iEAO1B,gCAA8B,gEAA9B,gCAA8B,6BAD1BrF,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,iCAAA,6BADjCP,EAGAC,EAAAY,EAAAV,CAAA,0FAwBOsI,EAAAN,EAAA5H,EAAM,EAAA,EAAC,MAAM,EAAG,CAAC,CAAA,uBAAtB,OAAIkB,GAAA,2BAIHlB,EAAM,EAAA,EAAC,OAAS,GAACmI,GAAAnI,CAAA,ouBAQfkH,GAAAC,EAAA,IAAAC,EAAAC,GAAgBe,EAAa,CAAA,GAAAhH,EAAA+F,EAAA,MAAAC,CAAA,EAC1BG,GAAAJ,EAAAK,EAAAC,GAAeW,EAAa,CAAA,GAAAhH,EAAA+F,EAAA,SAAAK,CAAA,cAC7BE,EAAY,sLAvBzBjI,EA4BSC,EAAAiG,EAAA/F,CAAA,EAxBPC,EAcK8F,EAAApE,CAAA,EAbH1B,EAEI0B,EAAAqE,CAAA,SACJ/F,EAII0B,EAAAiE,CAAA,gFAON3F,EAQK8F,EAAAtE,CAAA,EAPHxB,EAMCwB,EAAA8F,CAAA,wBAjBQe,EAAAN,EAAA5H,EAAM,EAAA,EAAC,MAAM,EAAG,CAAC,CAAA,oBAAtB,OAAIkB,GAAA,EAAA,mHAAJ,OAIClB,EAAM,EAAA,EAAC,OAAS,0HAHNyG,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAO,aAAW,qIAA7BzE,EAAkCC,EAAAgB,EAAAd,CAAA,yBAAvBO,EAAA,CAAA,EAAA,MAAAsG,KAAAA,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAO,aAAW,KAAAyC,EAAA,EAAAF,CAAA,iEAK5B,iBAAe,gEAAf,iBAAe,6BADCrF,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,6BAAlCP,EAEAC,EAAAY,EAAAV,CAAA,kGAwBOyI,EAAAT,EAAA5H,EAAsB,EAAA,EAAC,MAAM,EAAG,CAAC,CAAA,uBAAtC,OAAIkB,GAAA,2BAIHlB,EAAsB,EAAA,EAAC,OAAS,GAACsI,GAAAtI,CAAA,stBAb1CP,EAoBSC,EAAAiG,EAAA/F,CAAA,EAhBPC,EAeK8F,EAAAhG,CAAA,EAdHE,EAEIF,EAAAiG,CAAA,SACJ/F,EAIIF,EAAA6F,CAAA,+FAHK6C,EAAAT,EAAA5H,EAAsB,EAAA,EAAC,MAAM,EAAG,CAAC,CAAA,oBAAtC,OAAIkB,GAAA,EAAA,mHAAJ,OAIClB,EAAsB,EAAA,EAAC,OAAS,0HAHtByG,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAM,aAAW,qIAA5BzE,EAAiCC,EAAAgB,EAAAd,CAAA,yBAAtBO,EAAA,CAAA,EAAA,MAAAsG,KAAAA,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAM,aAAW,KAAAyC,EAAA,EAAAF,CAAA,iEAMhB,mCAAiC,gEAAjC,mCAAiC,6BAD7BrF,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,8BAAA,6BADjCP,EAGAC,EAAAY,EAAAV,CAAA,0FAeO2I,EAAAX,EAAA5H,EAAM,CAAA,EAAC,MAAM,EAAG,CAAC,CAAA,uBAAtB,OAAIkB,GAAA,2BAIHlB,EAAM,CAAA,EAAC,OAAS,GAACwI,GAAAxI,CAAA,ouBAQfkH,GAAAC,EAAA,IAAAC,EAAAC,GAAgBoB,EAAa,CAAA,GAAArH,EAAA+F,EAAA,MAAAC,CAAA,EAC1BG,GAAAJ,EAAAK,EAAAC,GAAegB,EAAa,CAAA,GAAArH,EAAA+F,EAAA,SAAAK,CAAA,cAC7BE,EAAY,4MAvBzBjI,EA4BSC,EAAAiG,EAAA/F,CAAA,EAxBPC,EAcK8F,EAAApE,CAAA,EAbH1B,EAEI0B,EAAAqE,CAAA,SACJ/F,EAII0B,EAAAiE,CAAA,gFAON3F,EAQK8F,EAAAtE,CAAA,EAPHxB,EAMCwB,EAAA8F,CAAA,uBAjBQoB,EAAAX,EAAA5H,EAAM,CAAA,EAAC,MAAM,EAAG,CAAC,CAAA,oBAAtB,OAAIkB,GAAA,EAAA,mHAAJ,OAIClB,EAAM,CAAA,EAAC,OAAS,0HAHNyG,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAO,aAAW,qIAA7BzE,EAAkCC,EAAAgB,EAAAd,CAAA,yBAAvBO,EAAA,CAAA,EAAA,KAAAsG,KAAAA,IAAAvC,EAAAlE,QAAA,YAAAkE,EAAO,aAAW,KAAAyC,EAAA,EAAAF,CAAA,iEAK5B,iBAAe,gEAAf,iBAAe,6BADCrF,EAAAd,EAAA,OAAA,YAAAN,MAAQ,QAAO,kBAAA,6BAAlCP,EAEAC,EAAAY,EAAAV,CAAA,4KA8BY,mkBAdlBH,EAkBSC,EAAAiG,EAAA/F,CAAA,EAbPC,EAMI8F,EAAAC,CAAA,6QAiCC8C,GAAW1I,EAAO,EAAA,EAAC,QAAQ,EAAA,kIAAE;AAAA;AAAA,qBAGhC,qBAE6C,iBAAe,mXAL5B;AAAA;AAAA,qBAGhC,qEAE6C,iBAAe,uDArBrDkH,GAAAC,EAAA,IAAAC,EAAAC,GAAgBoB,EAAa,CAAA,GAAArH,EAAA+F,EAAA,MAAAC,CAAA,EAC1BG,GAAAJ,EAAAK,EAAAC,GAAegB,EAAa,CAAA,GAAArH,EAAA+F,EAAA,SAAAK,CAAA,cAC7BE,EAAY,+LAmBJtG,EAAAd,EAAA,OAAA,UAAAN,MAAQ,KAAK,yLA3BlCP,EA6BSC,EAAAiG,EAAA/F,CAAA,EAzBPC,EAQK8F,EAAApE,CAAA,EAPH1B,EAMC0B,EAAA4F,CAAA,SAEHtH,EAeK8F,EAAAtE,CAAA,EAdHxB,EAMIwB,EAAAuE,CAAA,SACJ/F,EAIGwB,EAAAR,CAAA,uBAEHhB,EAA+DwB,EAAAf,CAAA,oFAxgB3CqE,EAAA3E,MAAQ,SAAQ,gEAXV,SAAA,MAAA2I,EAAA,2BAAA3I,MAAQ,8CAenB,IAAA4I,GAAAhB,EAAA5H,MAAQ,SAAS,wBAAtB,OAAIkB,GAAA,sBAYD,IAAAuE,GAAAzF,MAAQ,gBAAc6I,GAAA7I,CAAA,EAuBtBwG,GAAAxG,MAAQ,aAAW8I,GAAA9I,CAAA,EAmBnB+G,GAAA/G,MAAQ,OAAK+I,GAAA/I,CAAA,EAmBbgJ,GAAAhJ,MAAQ,SAAOiJ,GAAAjJ,CAAA,EAuBfkJ,GAAAlJ,MAAQ,MAAImJ,GAAAnJ,CAAA,EA6BpBoJ,IAAApJ,EAAO,EAAA,EAAC,UAAYA,MAAQ,eAAYqJ,GAAArJ,CAAA,EAY5CoF,KAAAlB,GAAAlE,MAAQ,UAAR,YAAAkE,GAAiB,aAAYoF,GAAAtJ,EAAO,EAAA,EAAC,UAAR,YAAAsJ,GAAiB,WAAYtJ,EAAM,EAAA,EAAC,OAAS,GAAKA,EAAsB,EAAA,EAAC,OAAS,GAAKA,KAAO,OAAS,GAAKA,EAAM,CAAA,EAAC,OAAS,GAAKA,EAAK,CAAA,GAAIA,MAAQ,cAAWuJ,GAAAvJ,CAAA,OAsG5LwJ,GAAAxJ,EAAO,EAAA,EAAC,UAAR,YAAAwJ,GAAiB,MAAGC,GAAAzJ,CAAA,IAYpBA,EAAY,CAAA,GAAA0J,GAAA1J,CAAA,EAmCZ2J,GAAA3J,EAAO,EAAA,EAAC,UAAYA,EAAO,EAAA,EAAC,QAAQ,UAAYA,EAAO,EAAA,EAAC,QAAQ,WAAQ4J,GAAA5J,CAAA,IAsCxEA,EAAK,CAAA,GAAA6J,GAAA7J,CAAA,IAwDLA,EAAM,EAAA,EAAC,OAAS,GAAC8J,GAAA9J,CAAA,IA+BjBA,EAAsB,EAAA,EAAC,OAAS,GAAC+J,GAAA/J,CAAA,IAuBjCA,EAAM,CAAA,EAAC,OAAS,GAACiB,GAAAjB,CAAA,IAgCjBA,EAAM,CAAA,EAAC,OAAS,GAACS,GAAAT,CAAA,KAsBhBA,EAAM,EAAA,EAAC,QAAM,CAAKA,MAAuB,QAAM,CAAKA,EAAM,CAAA,EAAC,QAAM,CAAKA,EAAM,CAAA,EAAC,QAAM,CAAKA,EAAK,CAAA,GAAA,GAAKgK,GAAAhK,MAAQ,UAAR,MAAAgK,GAAiB,MAAG,CAAKhK,EAAY,CAAA,GAAAmB,GAAAnB,CAAA,ipEApf/IP,EAqPKC,EAAAuK,EAAArK,CAAA,sBAnPHC,EAkPMoK,EAAAC,CAAA,EAjPJrK,EAiJSqK,EAAAvE,CAAA,EAhJP9F,EA+IK8F,EAAAwE,CAAA,EA5IHtK,EAiIKsK,EAAAvJ,CAAA,EAhIHf,EAAuCe,EAAAwJ,CAAA,gBACvCvK,EA8HKe,EAAAD,CAAA,EA7HHd,EAWKc,EAAAY,CAAA,EAVH1B,EASI0B,EAAA8I,CAAA,+DAENxK,EAgHKc,EAAAU,CAAA,EA/GHxB,EA8GIwB,EAAAiJ,CAAA,6KAkHlB7K,EA6RSC,EAAA6K,EAAA3K,CAAA,8OAvhByB,CAAA4K,IAAArK,EAAA,CAAA,EAAA,OAAAwI,KAAAA,EAAA,2BAAA3I,MAAQ,yCAenB4I,GAAAhB,EAAA5H,MAAQ,SAAS,qBAAtB,OAAIkB,GAAA,EAAA,wHAAJ,OAYGlB,MAAQ,gBAAcyF,GAAA,EAAAzF,EAAAG,CAAA,EAuBtBH,MAAQ,aAAWwG,GAAA,EAAAxG,EAAAG,CAAA,EAmBnBH,MAAQ,OAAK+G,GAAA,EAAA/G,EAAAG,CAAA,EAmBbH,MAAQ,SAAOgJ,GAAA,EAAAhJ,EAAAG,CAAA,EAuBfH,MAAQ,MAAIkJ,GAAA,EAAAlJ,EAAAG,CAAA,GA6BpBH,EAAO,EAAA,EAAC,UAAYA,MAAQ,eAAYoJ,GAAA,EAAApJ,EAAAG,CAAA,GAY5C+D,GAAAlE,MAAQ,UAAR,MAAAkE,GAAiB,WAAYoF,GAAAtJ,EAAO,EAAA,EAAC,UAAR,MAAAsJ,GAAiB,UAAYtJ,EAAM,EAAA,EAAC,OAAS,GAAKA,EAAsB,EAAA,EAAC,OAAS,GAAKA,KAAO,OAAS,GAAKA,EAAM,CAAA,EAAC,OAAS,GAAKA,EAAK,CAAA,GAAIA,MAAQ,uEAsGjLwJ,GAAAxJ,EAAO,EAAA,EAAC,UAAR,MAAAwJ,GAAiB,KAAGiB,GAAA,EAAAzK,EAAAG,CAAA,EAYpBH,EAAY,CAAA,yDAmCZA,EAAO,EAAA,EAAC,UAAYA,EAAO,EAAA,EAAC,QAAQ,UAAYA,EAAO,EAAA,EAAC,QAAQ,WAAQ2J,GAAA,EAAA3J,EAAAG,CAAA,EAsCxEH,EAAK,CAAA,0DAwDLA,EAAM,EAAA,EAAC,OAAS,0DA+BhBA,EAAsB,EAAA,EAAC,OAAS,0DAuBhCA,EAAM,CAAA,EAAC,OAAS,0DAgChBA,EAAM,CAAA,EAAC,OAAS,yGAsBfA,EAAM,EAAA,EAAC,QAAM,CAAKA,MAAuB,QAAM,CAAKA,EAAM,CAAA,EAAC,QAAM,CAAKA,EAAM,CAAA,EAAC,QAAM,CAAKA,EAAK,CAAA,GAAA,GAAKgK,GAAAhK,MAAQ,UAAR,MAAAgK,GAAiB,MAAG,CAAKhK,EAAY,CAAA,kXA5nBvIsH,GAAY,wDACZc,GACJ,sEACIK,GACJ,sEACIf,GAAe,0CA6GZgB,GAAWgC,EAAA,CACX,OAAAA,EAAK,SAAS,GAAG,EAAA,GAAOA,CAAI,OAASA,CAAI,0EAvHvC,CAAA,KAAAC,CAAA,EAAAjJ,QAEH,QAAAkJ,CAAA,EAAYD,EAwEdE,EAAA,CACJ,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAGIC,EAAsBC,GAKrBA,GAAA,MAAAA,EAAM,KACJA,EAAK,MACL,GAAAF,EAAWE,EAAK,MAAQ,CAAC,CAAA,IAAKA,EAAK,IAAI,GACvC,GAAAA,EAAK,IAAI,GAHQ,GAMpBC,EAAA,CACJC,EACAC,KAAA,CAEM,MAAAC,GAAWL,EAAmBG,CAAK,EACnCG,GAASN,EAAmBI,EAAG,SAEjCC,IAAYC,GAAA,GAAkBD,EAAQ,MAAMC,EAAM,GAClDD,IAAA,CAAaD,MAAeC,EAAQ,aACjCA,IAAYC,QAajBC,EAAA,CAAsB,KAAM,GAAI,aAAc,EAAA,EAE9CC,EAAA,CAAsB,KAAM,GAAI,aAAc,EAAA,EAElD,OAAA7I,GAAA,IAAA,UACED,EAAA,EAAA6I,GAAoBnH,EAAA0G,EAAQ,UAAR,MAAA1G,EAAiB,SACjCZ,GAAiBsH,EAAQ,QAAQ,SAAU,GAAG,EAC5C,CAAA,KAAM,GAAI,aAAc,EAAA,CAAA,EAC9BpI,EAAA,EAAA8I,GAAoBhC,GAAAsB,EAAQ,UAAR,MAAAtB,GAAiB,SACjChG,GAAiBsH,EAAQ,QAAQ,SAAU,GAAG,EAC5C,CAAA,KAAM,GAAI,aAAc,EAAA,CAAA,kFA3FhCpI,EAAA,GAAG+I,EAAeC,GAAgBC,CAAoB,CAAA,wBACtDjJ,EAAA,EAAGkJ,EAAaC,GAAmBJ,EAAc,CAAC,CAAA,uBAClD/I,EAAA,EAAGoJ,EAAQH,EAAqB,OAAS,CAAA,uBACzCjJ,EAAA,EAAGqJ,EACDJ,EAAqB,OACrBC,EAAW,WAAW,OACpBA,EAAW,QAAQ,OACnBA,EAAW,WAAW,MAAA,uBAiB1BlJ,EAAA,GAAGsJ,EAAuBC,EAAqB,MAAM,EAAG,CAAC,CAAA,uBACzDvJ,EAAA,EAAGT,EAAkBgK,EAAqB,OAAS,CAAA,mBAMnDvJ,EAAA,EAAGwJ,EAAeC,EAAe,OAAS,CAAA,uBAwC1CzJ,EAAA,EAAGf,EAASqK,EAAqB,IAAKI,IAAA,CACpC,MAAOA,EAAS,MAAQ,GACxB,KAAMlB,EAAgBkB,EAAS,YAAaA,EAAS,aAAa,EAClE,YAAaA,EAAS,KAAO,QAxG/B1J,EAAA,GAAG2J,IACDjI,GAAA0G,EAAQ,aAAR,YAAA1G,GAAoB,OACjBgI,IACCA,GAAA,YAAAA,EAAU,cAAe,iBACzBE,GAAWF,EAAS,WAAW,KAAA,EAAA,EAErC1J,EAAA,GAAG6J,IACD/C,GAAAsB,EAAQ,aAAR,YAAAtB,GAAoB,OACjB4C,GAAA,CAEG,2BACA,iBACA,gBACA,gBACA,iBACA,WACA,EAAA,UAASA,GAAA,YAAAA,EAAU,aAAc,EAAE,GACrCE,GAAWF,GAAA,YAAAA,EAAU,WAAW,KAAA,EAAA,EAEtC1J,EAAA,EAAG8J,IACD9C,GAAAoB,EAAQ,aAAR,YAAApB,GAAoB,OACjB0C,IACCA,GAAA,YAAAA,EAAU,cAAe,cACzBE,GAAWF,EAAS,WAAW,KAAA,EAAA,EAErC1J,EAAA,GAAGiJ,IACDzB,EAAAY,EAAQ,aAAR,YAAAZ,EAAoB,OACjBkC,IACCA,GAAA,YAAAA,EAAU,cAAe,0BAAA,CAAA,CAAA,EAY/B1J,EAAA,GAAGuJ,EAAuBQ,KACxBC,GAAA5B,EAAQ,aAAR,YAAA4B,GAAoB,OACjBN,GACCA,IAAa,MAAA,CAEX,sBACA,uBACA,eAAA,EACA,SAASA,EAAS,UAAU,GAC9BE,GAAWF,EAAS,WAAW,QAEnC,WACA,EAAA,CAAA,EAIF1J,EAAA,EAAGyJ,EAAiBlJ,GAClB6H,EAAQ,WAAA,CAAA,CAAA,EACR,QAASxH,GACTA,EAAM,QAAQ,IAAKD,KAAA,CAAa,MAAOC,EAAM,MAAO,MAAAD,IAAA,CAAA,CAAA"}