{"version":3,"file":"filingcabinet.js","sources":["../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-facet.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-daterangefilter.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-filter.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-collection-searchbar.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-preview.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-collection-searchresults.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-preview-grid.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/components/document-collection.vue","../node_modules/.pnpm/@okfde+filingcabinet@https+++codeload.github.com+okfde+django-filingcabinet+tar.gz+53fe999d9c_73w6oxstnby4y2hd3xilmqfefq/node_modules/@okfde/filingcabinet/frontend/javascript/filingcabinet.js"],"sourcesContent":["<template>\n  <div class=\"document-facet bg-secondary py-2 px-3\">\n    <h5>\n      {{ label }}\n      <button\n        v-if=\"value\"\n        class=\"btn btn-sm btn-link text-white\"\n        @click=\"$emit('select', '')\">\n        <span class=\"visually-hidden\">{{ i18n.clear }}</span>\n        <i class=\"fa fa-close\" />\n      </button>\n    </h5>\n    <ul class=\"document-facet-list\">\n      <li v-for=\"facet in facetList\" :key=\"facet.value\">\n        <a\n          v-if=\"!facet.selected\"\n          href=\"#\"\n          @click.prevent=\"selectFacetValue(facet.value)\">\n          {{ facet.label }} ({{ facet.count }} {{ i18n.pages }})\n        </a>\n        <span v-else>\n          {{ facet.label }} ({{ facet.count }} {{ i18n.pages }})\n        </span>\n      </li>\n    </ul>\n  </div>\n</template>\n\n<script>\nconst DEFAULT_LANG = 'en'\n\nconst equal = (a, b) => {\n  // Really simple edge-case ignoring equality\n  if (typeof a === 'object') {\n    for (const k of Object.keys(a)) {\n      if (a[k] !== b[k]) {\n        return false\n      }\n    }\n    return true\n  }\n  return a === b\n}\n\nexport default {\n  name: 'DocumentFacet',\n  props: {\n    filter: {\n      type: Object,\n      required: true\n    },\n    values: {\n      type: Array,\n      default: () => []\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    value: {\n      default: ''\n    }\n  },\n  emits: ['select'],\n  computed: {\n    i18n() {\n      return this.$root.config.i18n\n    },\n    lang() {\n      return document.documentElement.lang\n    },\n    label() {\n      return this.filter.label[this.lang] || this.filter.label[DEFAULT_LANG]\n    },\n    filterChoiceLabelMap() {\n      const labelMap = new Map()\n      if (this.filter.choices) {\n        this.filter.choices.forEach((choice) => {\n          labelMap.set(\n            choice.value,\n            (choice.label && choice.label[this.lang]) || choice.value\n          )\n        })\n      }\n      return labelMap\n    },\n    facetList() {\n      return this.values.map(([facetValue, facetCount]) => {\n        return {\n          selected: this.checkSelected(facetValue),\n          value: facetValue,\n          count: facetCount,\n          label: this.getFacetLabel(facetValue)\n        }\n      })\n    }\n  },\n  methods: {\n    checkSelected(facetValue) {\n      const val = this.getFacetValue(facetValue)\n      return equal(val, this.value)\n    },\n    getFacetLabel(value) {\n      if (this.filter.choices) {\n        return this.filterChoiceLabelMap.get(value) || value\n      }\n      if (this.filter.facet_config?.type === 'date_histogram') {\n        const date = new Date(value)\n        return date.getFullYear()\n      }\n      return value\n    },\n    getFacetValue(value) {\n      if (this.filter.facet_config?.type === 'date_histogram') {\n        const date = new Date(value)\n        const before = `${date.getFullYear()}-12-31`\n        return {\n          [`${this.filter.key}_after`]: date.toISOString().split('T')[0],\n          [`${this.filter.key}_before`]: before\n        }\n      } else {\n        return value\n      }\n    },\n    selectFacetValue(value) {\n      this.$emit('select', this.getFacetValue(value))\n    }\n  }\n}\n</script>\n\n<style scoped>\n.document-facet-list {\n  max-height: 8rem;\n  overflow-y: scroll;\n  list-style-type: none;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.document-facet-list li a {\n  color: inherit;\n  text-decoration: underline;\n}\n</style>\n","<template>\n  <div class=\"input-group\">\n    <input\n      :value=\"min\"\n      type=\"date\"\n      class=\"form-control\"\n      @input=\"updateMin($event.target.value)\"\n      @change=\"updateMin($event.target.value)\"\n      @keyup.enter=\"submit\" />\n    <span class=\"input-group-text\">-</span>\n    <input\n      :value=\"max\"\n      type=\"date\"\n      class=\"form-control\"\n      @input=\"updateMax($event.target.value)\"\n      @change=\"updateMax($event.target.value)\"\n      @keyup.enter=\"submit\" />\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'DocumentDateRangeFilter',\n  props: {\n    filter: {\n      type: Object,\n      required: true\n    },\n    value: {\n      type: Object,\n      required: true\n    }\n  },\n  emits: ['input', 'submit'],\n  data() {\n    return {\n      currentMin: this.value[`${this.filter.key}_after`],\n      currentMax: this.value[`${this.filter.key}_before`]\n    }\n  },\n  computed: {\n    min() {\n      return this.value[`${this.filter.key}_after`]\n    },\n    max() {\n      return this.value[`${this.filter.key}_before`]\n    }\n  },\n  methods: {\n    submit() {\n      this.$emit('submit')\n    },\n    updateMin(min) {\n      this.currentMin = min\n      this.updateValue()\n    },\n    updateMax(max) {\n      this.currentMax = max\n      this.updateValue()\n    },\n    updateValue() {\n      this.$emit('input', {\n        [`${this.filter.key}_after`]: this.currentMin,\n        [`${this.filter.key}_before`]: this.currentMax\n      })\n    }\n  }\n}\n</script>\n","<template>\n  <div class=\"mb-3 row\">\n    <label :for=\"filter.id\" class=\"col-sm-3 col-md-2 col-form-label\">\n      {{ label }}\n    </label>\n    <template v-if=\"filter.type == 'number'\">\n      <div class=\"col-sm-3\">\n        <input\n          :id=\"filter.id\"\n          :value=\"value\"\n          type=\"number\"\n          class=\"form-control\"\n          inputmode=\"numeric\"\n          :min=\"filter.min\"\n          :max=\"filter.max\"\n          @keyup.enter=\"submit\"\n          @input=\"updateFilter($event.target.value)\" />\n      </div>\n    </template>\n    <template v-if=\"filter.type == 'choice'\">\n      <div class=\"col-sm-9 col-md-10\">\n        <select\n          :id=\"filter.id\"\n          :value=\"value\"\n          class=\"form-control\"\n          @keyup.enter=\"submit\"\n          @input=\"updateFilter($event.target.value)\">\n          <option value=\"\">---</option>\n          <option\n            v-for=\"opt in filter.choices\"\n            :key=\"opt.value\"\n            :value=\"opt.value\">\n            {{ opt.label ? opt.label[lang] : opt.value }}\n          </option>\n        </select>\n      </div>\n    </template>\n    <template v-if=\"filter.type == 'daterange'\">\n      <div class=\"col-sm-9 col-md-10\">\n        <DocumentDateRangeFilter\n          :value=\"value || {}\"\n          :filter=\"filter\"\n          @submit=\"submit\"\n          @input=\"updateFilter\" />\n      </div>\n    </template>\n  </div>\n</template>\n\n<script>\nimport DocumentDateRangeFilter from './document-daterangefilter.vue'\n\nconst DEFAULT_LANG = 'en'\n\nexport default {\n  name: 'DocumentFilter',\n  components: {\n    DocumentDateRangeFilter\n  },\n  props: {\n    filter: {\n      type: Object,\n      required: true\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    value: {\n      default: ''\n    }\n  },\n  emits: ['input', 'submit'],\n  computed: {\n    lang() {\n      return document.documentElement.lang\n    },\n    label() {\n      return this.filter.label[this.lang] || this.filter.label[DEFAULT_LANG]\n    }\n  },\n  methods: {\n    submit() {\n      this.$emit('submit')\n    },\n    updateFilter(value) {\n      this.$emit('input', { key: this.filter.key, value })\n    }\n  }\n}\n</script>\n","<template>\n  <div class=\"row py-1 bg-dark text-white document-searchbar\">\n    <div class=\"col-12\">\n      <div v-if=\"hasFilters\" class=\"row\">\n        <div class=\"col\">\n          <div class=\"mb-3 row\">\n            <label\n              for=\"document-collection-search\"\n              class=\"col-sm-3 col-md-2 col-form-label\">\n              {{ i18n.searchTerm }}\n            </label>\n            <div class=\"col-sm-9 col-md-10\">\n              <input\n                id=\"document-collection-search\"\n                v-model=\"search\"\n                type=\"search\"\n                class=\"search-input form-control\"\n                @keydown.enter=\"runSearch\" />\n            </div>\n          </div>\n          <DocumentFilter\n            v-for=\"filter in filters\"\n            :key=\"filter.id\"\n            :filter=\"filter\"\n            :value=\"filterValues.get(filter.key) || ''\"\n            @input=\"updateFilter\"\n            @submit=\"runSearch\" />\n        </div>\n      </div>\n      <div class=\"row mb-2\">\n        <div class=\"col me-auto\">\n          <div\n            v-if=\"searching\"\n            class=\"spinner-border spinner-border-sm\"\n            role=\"status\" />\n          <small v-if=\"searching\">{{ i18n.searching }}</small>\n          <small v-if=\"searcher && searcher.done\">\n            <template v-if=\"searcher.term\">\n              <template v-if=\"pageCount == 1\">\n                {{ pageCount }} {{ i18n.page }}\n              </template>\n              <template v-else>\n                {{ pageCount }} {{ i18n.pages }} {{ i18n.found }}\n              </template>\n              –\n              <template v-if=\"resultCount == 1\">\n                {{ resultCount }} {{ i18n.document }}\n              </template>\n              <template v-else>\n                {{ resultCount }} {{ i18n.documents }}\n              </template>\n              {{ i18n.areShown }}\n            </template>\n            <template v-else>\n              <template v-if=\"pageCount == 1\">\n                {{ pageCount }} {{ i18n.document }}\n              </template>\n              <template v-else> {{ pageCount }} {{ i18n.documents }} </template>\n              {{ i18n.found }}\n            </template>\n            <a\n              v-if=\"showSearchFeed\"\n              :href=\"rssUrl\"\n              class=\"text-white ms-2\"\n              target=\"_blank\">\n              <i class=\"fa fa-rss\" aria-hidden=\"true\" />\n            </a>\n            <template v-if=\"directory\">\n              <br />{{ i18n.searchingInDirectory }} {{ directory.name }}\n            </template>\n          </small>\n        </div>\n        <div v-if=\"searcher\" class=\"col-auto ms-auto me-2\">\n          <button class=\"btn btn-dark\" @click=\"clear\">\n            {{ i18n.clearSearch }}\n          </button>\n        </div>\n        <div class=\"col-auto ms-auto\">\n          <div v-if=\"!hasFilters\" class=\"input-group input-group-sm\">\n            <input\n              v-model=\"search\"\n              type=\"search\"\n              class=\"search-input form-control form-control-sm\"\n              @keydown.enter=\"runSearch\" />\n            <button class=\"btn btn-outline-light\" @click=\"runSearch\">\n              {{ i18n.search }}\n            </button>\n          </div>\n          <button v-else class=\"btn btn-outline-light\" @click=\"runSearch\">\n            {{ i18n.search }}\n          </button>\n        </div>\n      </div>\n      <div v-if=\"hasFacets\" class=\"row d-flex mb-2\">\n        <div v-for=\"facet in facetList\" :key=\"facet.key\" class=\"col-4\">\n          <DocumentFacet\n            :values=\"facet.values\"\n            :filter=\"facet.filter\"\n            :value=\"facet.value\"\n            @select=\"setFilter(facet.filter.key, $event)\" />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport DocumentFacet from './document-facet.vue'\nimport DocumentFilter from './document-filter.vue'\n\nexport default {\n  name: 'DocumentCollectionSearchbar',\n  components: {\n    DocumentFilter,\n    DocumentFacet\n  },\n  props: {\n    searcher: {\n      type: Object,\n      default: null\n    },\n    directory: {\n      type: Object,\n      default: null\n    },\n    showSearchFeed: {\n      type: Boolean,\n      default: false\n    },\n    filters: {\n      type: Array,\n      default: () => []\n    }\n  },\n  emits: ['search', 'clearsearch'],\n  data() {\n    return {\n      search: this.searcher?.term || '',\n      filterValues: this.searcher?.filters || new Map()\n    }\n  },\n  computed: {\n    i18n() {\n      return this.$root.config.i18n\n    },\n    searching() {\n      return this.searcher && !this.searcher.done\n    },\n    hasFilters() {\n      return !!this.filters && this.filters.length > 0\n    },\n    hasFacets() {\n      return !!(\n        this.searcher &&\n        this.searcher.response &&\n        this.searcher.response.facets\n      )\n    },\n    facetList() {\n      const facets = []\n      for (const field in this.searcher.response.facets.fields) {\n        const facetValues = this.searcher.response.facets.fields[field]\n        if (facetValues.length === 0) {\n          continue\n        }\n        const filter = this.filters.filter((f) => f.key === field)[0]\n        if (filter === undefined) {\n          continue\n        }\n        facets.push({\n          key: filter.key,\n          filter,\n          values: facetValues,\n          value: this.filterValues.get(filter.key) || ''\n        })\n      }\n      return facets\n    },\n    pageCount() {\n      if (this.searcher !== null) {\n        return this.searcher.response.meta.total_count\n      }\n      return 0\n    },\n    pageCountFormatted() {\n      return new Intl.NumberFormat(document.documentElement.lang, {\n        style: 'decimal'\n      }).format(this.pageCount)\n    },\n    resultCount() {\n      if (this.searcher !== null) {\n        return this.searcher.docCount\n      }\n      return 0\n    },\n    rssUrl() {\n      if (this.searcher) {\n        return this.searcher.url + '&format=rss'\n      }\n      return ''\n    }\n  },\n  methods: {\n    clear() {\n      this.search = ''\n      this.$emit('clearsearch')\n    },\n    runSearch() {\n      this.$emit('search', {\n        term: this.search,\n        filters: this.filterValues\n      })\n    },\n    setFilter(key, event) {\n      this.updateFilter({ key, value: event })\n      this.runSearch()\n    },\n    updateFilter({ key, value }) {\n      this.filerValues = new Map(this.filterValues.set(key, value))\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\"></style>\n","<template>\n  <div>\n    <a\n      :href=\"documentUrl\"\n      class=\"preview-doc\"\n      target=\"_blank\"\n      @click=\"navigate\">\n      <img\n        v-if=\"imageUrl\"\n        v-show=\"imageLoaded\"\n        ref=\"image\"\n        :src=\"imageUrl\"\n        alt=\"\"\n        class=\"img-fluid page-image\"\n        @load=\"onImageLoad\" />\n      <div v-if=\"!imageLoaded\" class=\"spinner-grow\" role=\"status\">\n        <span class=\"visually-hidden\">Loading...</span>\n      </div>\n      <p class=\"text-truncate\" :title=\"document.title\">\n        <template v-if=\"highlight\"> {{ i18n.page }} {{ page }} </template>\n        <template v-else>\n          {{ document.title }}\n        </template>\n      </p>\n    </a>\n    <div v-if=\"highlight\" class=\"query-highlight mb-5\">\n      <!-- eslint-disable-next-line vue/no-v-html -->\n      <span v-html=\"highlight\" />\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'DocumentPreview',\n  props: {\n    document: {\n      type: Object,\n      required: true\n    },\n    page: {\n      type: Number,\n      default: 1\n    },\n    highlight: {\n      type: String,\n      default: null\n    },\n    image: {\n      type: String,\n      default: null\n    }\n  },\n  emits: ['navigate'],\n  data() {\n    return {\n      imageLoaded: false\n    }\n  },\n  computed: {\n    i18n() {\n      return this.$root.config.i18n\n    },\n    imageUrl() {\n      return decodeURI(this.image || this.document.cover_image).replace(\n        /\\{size\\}/,\n        'small'\n      )\n    },\n    documentUrl() {\n      let url = this.document.site_url\n      if (this.page) {\n        url += `?page=${this.page}`\n      }\n      return url\n    }\n  },\n  beforeUnmount() {\n    if (this.document.cover_image && !this.imageLoaded) {\n      // Cancel image download on destroy\n      this.$refs.image.setAttribute('src', '')\n    }\n  },\n  methods: {\n    onImageLoad() {\n      this.imageLoaded = true\n    },\n    navigate(e) {\n      e.preventDefault()\n      this.$emit('navigate', {\n        document: this.document,\n        page: this.page\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-doc {\n  display: block;\n  text-align: center;\n}\n.preview-doc:hover {\n  text-decoration: none;\n}\n.preview-doc .page-image {\n  border: 1px solid #aaa;\n  margin: 0 auto;\n}\n.preview-doc p,\n.preview-doc p:hover {\n  text-align: center;\n  color: #fff;\n  text-decoration: none;\n}\n\n.query-highlight {\n  background-color: #fff;\n  padding: 5px;\n  font-size: 0.7rem;\n}\n</style>\n\n<style lang=\"scss\">\n/* Do not scope as it's v-html-injected */\n.query-highlight {\n  em {\n    background-color: yellow;\n    color: #333;\n  }\n}\n</style>\n","<template>\n  <div class=\"document-preview-grid\">\n    <div class=\"row bg-secondary pt-3\">\n      <div class=\"col-12\">\n        <h4 class=\"text-white\">\n          {{ document.title }}\n          <small v-if=\"documentPublicationDate\" class=\"badge text-bg-dark\">\n            {{ documentPublicationDate }}\n          </small>\n        </h4>\n      </div>\n    </div>\n    <div class=\"row bg-secondary\">\n      <div v-for=\"page in pages\" :key=\"page.number\" class=\"col-sm-4 col-md-3\">\n        <DocumentPreview\n          :document=\"document\"\n          :page=\"page.number\"\n          :highlight=\"page.query_highlight\"\n          :image=\"page.image\"\n          @navigate=\"navigate\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport 'intersection-observer'\n\nimport DocumentPreview from './document-preview.vue'\n\nexport default {\n  name: 'DocumentCollectionSearchresult',\n  components: {\n    DocumentPreview\n  },\n  props: {\n    document: {\n      type: Object,\n      required: true\n    },\n    pages: {\n      type: Array,\n      required: true\n    }\n  },\n  emits: ['navigate'],\n  computed: {\n    i18n() {\n      return this.config.i18n\n    },\n    dtf() {\n      return new Intl.DateTimeFormat(document.documentElement.lang, {\n        year: 'numeric',\n        month: 'numeric',\n        day: 'numeric'\n      })\n    },\n    documentPublicationDate() {\n      if (!this.document.published_at) {\n        return null\n      }\n      return this.dtf.format(new Date(this.document.published_at))\n    }\n  },\n  methods: {\n    navigate(docAndPage) {\n      this.$emit('navigate', docAndPage)\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\"></style>\n","<template>\n  <div ref=\"documentGrid\" class=\"document-preview-grid bg-secondary container\">\n    <RecycleScroller\n      v-slot=\"{ item }\"\n      class=\"scroller\"\n      :page-mode=\"true\"\n      :items=\"documentRows\"\n      :item-size=\"itemSize\"\n      key-field=\"rowId\"\n      :emit-update=\"true\"\n      @update=\"showRow\">\n      <div v-if=\"item.loaded\" class=\"row pt-3\">\n        <div\n          v-for=\"document in item.documents\"\n          :key=\"document.id\"\n          class=\"col-md-4 col-lg-3\">\n          <DocumentPreview :document=\"document\" @navigate=\"navigate\" />\n        </div>\n      </div>\n    </RecycleScroller>\n  </div>\n</template>\n\n<script>\nimport 'intersection-observer'\n\nimport { RecycleScroller } from 'vue-virtual-scroller'\nimport DocumentPreview from './document-preview.vue'\n\nconst BS_LG = 992\nconst BS_MD = 768\nconst DEFAULT_ASPECT_RATIO = Math.sqrt(2)\nconst TITLE_HEIGHT = 24 + 15 * 2 // + 2 * padding\n\nexport default {\n  name: 'DocumentPreviewGrid',\n  components: {\n    DocumentPreview,\n    RecycleScroller\n  },\n  props: {\n    documents: {\n      type: Array,\n      required: true\n    }\n  },\n  emits: ['loadmore', 'navigate'],\n  data() {\n    return {\n      width: null\n    }\n  },\n  computed: {\n    i18n() {\n      return this.$root.config.i18n\n    },\n    itemSize() {\n      if (this.width === null) {\n        return 282\n      }\n      return 180 * DEFAULT_ASPECT_RATIO + TITLE_HEIGHT\n    },\n    documentRows() {\n      const rows = []\n      if (this.documents.length === 0) {\n        return rows\n      }\n      for (let i = 0; i < this.documents.length; i += this.colCount) {\n        const rowDocs = this.documents.slice(i, i + this.colCount)\n        rows.push({\n          rowId: `${this.documents[0].id}_${i}`,\n          loaded: rowDocs.every((d) => d !== null),\n          documents: rowDocs\n        })\n      }\n      return rows\n    },\n    colCount() {\n      return document.body.clientWidth >= BS_LG\n        ? 4\n        : document.body.clientWidth >= BS_MD\n        ? 3\n        : 1\n    }\n  },\n  mounted() {\n    this.width = this.$refs.documentGrid.getBoundingClientRect().width\n  },\n  methods: {\n    navigate(docAndPage) {\n      this.$emit('navigate', docAndPage)\n    },\n    showRow(startIndex, endIndex) {\n      const currentDocs = this.documents.slice(\n        startIndex * this.colCount,\n        endIndex * this.colCount + this.colCount\n      )\n      if (currentDocs.some((d) => d === null)) {\n        const firstNull = currentDocs\n          .map((d, i) => [d, i])\n          .filter((d) => d[0] === null)[0][1]\n        this.$emit('loadmore', startIndex * this.colCount + firstNull)\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n@import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';\n</style>\n","<template>\n  <div>\n    <div ref=\"toolbar\" class=\"collection-toolbar\">\n      <div class=\"row py-2 bg-dark\">\n        <div class=\"col-4 col-md-3 d-flex gap-2\" role=\"group\">\n          <template v-if=\"document\">\n            <button\n              type=\"button\"\n              class=\"btn btn-sm btn-secondary\"\n              @click=\"clearDocument\"\n            >\n              {{ i18n.backToCollection }}\n            </button>\n          </template>\n\n          <template v-else>\n            <button\n              v-if=\"currentDirectory\"\n              type=\"button\"\n              class=\"btn btn-sm btn-secondary\"\n              :title=\"i18n.upOneDir\"\n              data-bs-toggle=\"tooltip\"\n              @click=\"selectDirectory(parentDirectory)\"\n            >\n              <i class=\"fa fa-toggle-up\" />\n              <span class=\"visually-hidden\">{{ i18n.upOneDir }}</span>\n            </button>\n\n            <a\n              v-if=\"zipDownload\"\n              :href=\"zipDownload\"\n              class=\"btn btn-sm btn-secondary\"\n              :title=\"i18n.downloadZIP\"\n              data-bs-toggle=\"tooltip\"\n            >\n              <i class=\"fa fa-download\" />\n              <span class=\"visually-hidden\">{{ i18n.downloadZIP }}</span>\n            </a>\n\n            <CopyButton\n              v-if=\"config.deepUrls\"\n              :title=\"i18n.copyCollectionLink\"\n              :copy-text=\"queryUrl.toString()\"\n            >\n              <i class=\"fa fa-link\" />\n              <span class=\"visually-hidden\">{{ i18n.copyCollectionLink }}</span>\n            </CopyButton>\n          </template>\n        </div>\n\n        <div class=\"col-auto order-md-3 ms-auto\">\n          <span class=\"text-white d-inline-block text-truncate\">\n            <template v-if=\"document\">\n              {{ collection.title }}\n            </template>\n            <template v-else>\n              {{ documentCount }} {{ i18n.documents }}\n            </template>\n          </span>\n        </div>\n        <div class=\"col-10 col-md order-md-2 text-center\">\n          <h4 class=\"text-white text-truncate mb-0\">\n            <template v-if=\"document\">\n              {{ document.title }}\n            </template>\n            <template v-else>\n              {{ collection.title }}\n            </template>\n          </h4>\n        </div>\n\n        <div\n          v-if=\"!document && allowToggleSearch\"\n          class=\"col-auto order-md-4 ms-auto\"\n        >\n          <button\n            v-if=\"!showSearch\"\n            type=\"button\"\n            class=\"ms-2 btn btn-sm btn-secondary\"\n            @click=\"enableSearch\"\n          >\n            <i class=\"fa fa-search\" />\n            <span class=\"visually-hidden\">{{ i18n.search }}</span>\n          </button>\n          <button\n            v-else\n            type=\"button\"\n            class=\"ms-2 btn btn-sm btn-secondary\"\n            @click=\"clearSearch\"\n          >\n            <i class=\"fa fa-close\" />\n            <span class=\"visually-hidden\">{{ i18n.clear }}</span>\n          </button>\n        </div>\n      </div>\n      <DocumentCollectionSearchbar\n        v-if=\"showSearch && !document\"\n        :searcher=\"searcher\"\n        :directory=\"currentDirectory\"\n        :show-search-feed=\"showSearchFeed\"\n        :filters=\"settings.filters\"\n        @clearsearch=\"clearSearch\"\n        @search=\"search\"\n      />\n    </div>\n    <div v-if=\"document\" class=\"collection-document\">\n      <div class=\"row\">\n        <div class=\"col-12 px-0\">\n          <DocumentViewer\n            :document-url=\"document.resource_uri\"\n            :document-preview=\"document\"\n            :page=\"documentPage\"\n            :config=\"config\"\n            :defaults=\"docDefaults\"\n          />\n        </div>\n      </div>\n    </div>\n    <div v-if=\"!document && searcher\">\n      <template v-if=\"searcher.term\">\n        <DocumentCollectionSearchResults\n          v-for=\"result in searcher.results\"\n          :key=\"result.document.id\"\n          :document=\"result.document\"\n          :pages=\"result.pages\"\n          @navigate=\"navigate\"\n        />\n      </template>\n      <template v-else>\n        <div class=\"row bg-secondary\">\n          <div class=\"col px-0\">\n            <DocumentPreviewGrid\n              :documents=\"searcher.documents\"\n              @navigate=\"navigate\"\n            />\n          </div>\n        </div>\n      </template>\n      <div v-if=\"searcher.done && searcher.response.meta.next\">\n        <div class=\"row bg-secondary justify-content-center\">\n          <div class=\"col-auto px-0 pb-5\">\n            <button\n              class=\"btn btn-secondary my-3\"\n              @click=\"loadMoreSearchResults\"\n            >\n              {{ i18n.loadMore }}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div v-show=\"!document && !searcher\" class=\"document-collection\">\n      <div class=\"row text-bg-secondary\">\n        <div class=\"col px-0\">\n          <nav\n            class=\"px-3 my-2 text-white d-flex gap-2\"\n            v-if=\"currentDirectory\"\n          >\n            <ol class=\"breadcrumb\">\n              <li class=\"breadcrumb-item\">\n                <a\n                  href=\"#!\"\n                  @click.prevent=\"selectDirectory()\"\n                  :title=\"i18n.toRoot\"\n                  data-bs-toggle=\"tooltip\"\n                >\n                  <i class=\"fa fa-folder\" />\n                  <span class=\"visually-hidden\">{{ i18n.toRoot }}</span>\n                </a>\n              </li>\n              <li\n                v-for=\"(directory, i) in directoryStack\"\n                :key=\"directory.id\"\n                class=\"breadcrumb-item\"\n                :class=\"{ active: i === directoryStack.length - 1 }\"\n              >\n                <a href=\"#!\" @click.prevent=\"selectDirectory(directory)\">\n                  {{ directory.name }}\n                </a>\n              </li>\n            </ol>\n          </nav>\n\n          <div\n            class=\"d-flex px-3 dir-description\"\n            v-if=\"currentDirectory?.description\"\n          >\n            <i class=\"fa fa-info-circle mt-1 me-2\"></i>\n            <div v-html=\"currentDirectory.description\" />\n          </div>\n\n          <div class=\"list-group list-group-flush\">\n            <button\n              v-for=\"directory in directories\"\n              :key=\"directory.id\"\n              type=\"button\"\n              class=\"list-group-item list-group-item-action list-group-item-secondary\"\n              @click=\"selectDirectory(directory)\"\n            >\n              {{ directory.name }}\n            </button>\n          </div>\n          <DocumentPreviewGrid\n            :documents=\"documents\"\n            @navigate=\"navigate\"\n            @loadmore=\"loadMoreDocuments\"\n          />\n          <div\n            v-if=\"shouldPaginate && canPaginate\"\n            class=\"col-auto px-0 pb-5 text-center\"\n          >\n            <button\n              class=\"btn btn-secondary my-3\"\n              @click.prevent=\"() => loadMoreDocuments()\"\n            >\n              {{ i18n.loadMore }}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { Tooltip } from 'bootstrap'\nimport { nextTick } from 'vue'\n\nimport DocumentCollectionSearchbar from './document-collection-searchbar.vue'\nimport DocumentCollectionSearchResults from './document-collection-searchresults.vue'\nimport DocumentPreviewGrid from './document-preview-grid.vue'\nimport DocumentViewer from './document-viewer.vue'\n\nimport { getData } from '../lib/utils.js'\nimport CopyButton from './copy-button.vue'\n\nconst DOCUMENTS_API_LIMIT = 50\nconst MAX_SCROLL_DOCS = DOCUMENTS_API_LIMIT * 100\n\nfunction getIDFromURL(s) {\n  const parts = s.split('/')\n  return parseInt(parts[parts.length - 2], 10)\n}\n\nexport default {\n  name: 'DocumentCollection',\n  components: {\n    DocumentPreviewGrid,\n    DocumentViewer,\n    DocumentCollectionSearchbar,\n    DocumentCollectionSearchResults,\n    CopyButton\n  },\n  props: {\n    documentCollection: {\n      type: Object,\n      default: () => ({\n        documents: [],\n        directories: []\n      })\n    },\n    config: {\n      type: Object,\n      default: () => ({})\n    }\n  },\n  data() {\n    const documents = []\n    const directories = []\n    let collection = {\n      documents,\n      directories\n    }\n    let directoryStack = []\n    let currentDirectory = null\n    const document = null\n    if (this.documentCollection) {\n      collection = this.documentCollection\n      directoryStack = collection.directory_stack\n      currentDirectory = collection.current_directory\n      if (currentDirectory) directoryStack.push(currentDirectory)\n    }\n\n    const shouldPaginate = collection.document_directory_count > MAX_SCROLL_DOCS\n    const settings = collection.settings || {}\n    const preferences = settings.preferences || {}\n    return {\n      document,\n      collection,\n      settings,\n      showSearch: preferences.showSearch ?? false,\n      allowToggleSearch: preferences.allowToggleSearch ?? true,\n      showSearchFeed: preferences.showSearchFeed ?? false,\n      searcher: null,\n      documentPage: 1,\n      currentDirectory,\n      directoryStack,\n      shouldPaginate,\n      documents: this.makeDocuments(collection, shouldPaginate),\n      directories: collection.directories,\n      documentOffsets: this.makeOffsets(collection, shouldPaginate),\n      lastOffset: 0,\n      documentsUri: collection.documents_uri || null\n    }\n  },\n  computed: {\n    i18n() {\n      return this.config.i18n\n    },\n    collectionIndex() {\n      const documents = this.documents\n      const collectionIndex = {}\n      documents.forEach((d, i) => {\n        if (d !== null) {\n          collectionIndex[d.id] = i\n        }\n      })\n      return collectionIndex\n    },\n    docDefaults() {\n      return {\n        maxHeight: '90vh'\n      }\n    },\n    collectionAuth() {\n      if (!this.collection.listed && this.collection.uid) {\n        return ['uid', this.collection.uid]\n      }\n      return undefined\n    },\n    canPaginate() {\n      return (\n        this.collection.document_directory_count >\n        this.lastOffset + DOCUMENTS_API_LIMIT\n      )\n    },\n    documentCount() {\n      return new Intl.NumberFormat(document.documentElement.lang, {\n        style: 'decimal'\n      }).format(this.collection.document_count)\n    },\n    zipDownload() {\n      if (this.collection?.zip_download_url) {\n        if (this.currentDirectory) {\n          return `${this.collection.zip_download_url}?directory=${this.currentDirectory.id}`\n        }\n\n        return this.collection.zip_download_url\n      }\n\n      return false\n    },\n    parentDirectory() {\n      return this.directoryStack[this.directoryStack.length - 2]\n    },\n    queryParams() {\n      const params = new URLSearchParams()\n\n      if (this.currentDirectory)\n        params.append('directory', this.currentDirectory.id)\n\n      if (this.document) params.append('document', this.document.id)\n\n      return params\n    },\n    queryUrl() {\n      const url = new URL(window.location.href)\n      url.search = this.queryParams\n      return url\n    }\n  },\n  created() {\n    const queryParams = new URLSearchParams(window.location.search)\n\n    if (queryParams.has('document')) {\n      this.document = this.collection.documents.find(\n        (d) => d.id === parseInt(queryParams.get('document'), 10)\n      )\n\n      if (!this.document) {\n        getData(\n          `${this.config.urls.documentApiUrl}${queryParams.get('document')}/`\n        ).then((doc) => {\n          this.document = doc\n        })\n      }\n    }\n\n    if (!this.documentCollection.id && this.documentCollection.resource_uri) {\n      this.getCollectionData()\n    }\n  },\n  mounted() {\n    if (\n      this.documents.length >= 0 &&\n      this.documents[0] === null &&\n      this.documentsUri\n    ) {\n      this.loadMoreDocuments(0)\n    }\n\n    this.updateTooltips()\n  },\n  methods: {\n    getCollectionData() {\n      const url = new URL(\n        this.documentCollection.resource_uri,\n        window.location.origin\n      )\n      const params = new URLSearchParams(url.search)\n\n      if (this.collectionAuth) params.append(...this.collectionAuth)\n\n      this.documents = []\n      this.directories = []\n      params.append(\n        'directory',\n        this.currentDirectory ? this.currentDirectory.id : ''\n      )\n      url.search = params\n\n      return getData(url).then((docCollection) => {\n        this.collection = docCollection\n        this.documentsUri = docCollection.documents_uri\n        this.documentOffsets = this.makeOffsets(docCollection)\n        this.documents = this.makeDocuments(docCollection)\n        this.directories = docCollection.directories\n        this.directoryStack = this.collection.directory_stack\n        if (this.currentDirectory)\n          this.directoryStack.push(this.currentDirectory)\n        if (!this.settings) {\n          this.settings = docCollection.settings\n        }\n      })\n    },\n    makeOffsets(collection) {\n      const offsetSteps = collection.documents.length / DOCUMENTS_API_LIMIT\n      const documentOffsets = new Set()\n      for (let i = 0; i < offsetSteps; i += 1) {\n        documentOffsets.add(i)\n      }\n      return documentOffsets\n    },\n    makeDocuments(collection, shouldPaginate = false) {\n      if (this.shouldPaginate || shouldPaginate) {\n        return collection.documents\n      }\n      const colDocs = collection.documents || []\n      return [\n        ...colDocs,\n        ...new Array(collection.document_directory_count - colDocs.length).fill(\n          null\n        )\n      ]\n    },\n    loadMoreDocuments(offset) {\n      if (offset === undefined) {\n        offset = this.lastOffset + DOCUMENTS_API_LIMIT\n      }\n      offset = offset - (offset % DOCUMENTS_API_LIMIT)\n      if (this.shouldPaginate) {\n        if (offset === this.lastOffset) {\n          return\n        }\n        this.documents = []\n        this.lastOffset = offset\n        nextTick(() => this.goTop())\n        return this.getDocuments(offset)\n      }\n      const offsetStep = offset / DOCUMENTS_API_LIMIT\n      if (!this.documentOffsets.has(offsetStep)) {\n        this.documentOffsets.add(offsetStep)\n        this.getDocuments(offset)\n      }\n    },\n    getDocuments(offset) {\n      if (this.abortController) {\n        this.documentOffsets.delete(this.lastOffset)\n        this.abortController.abort()\n      }\n      this.abortController = new AbortController()\n      this.lastOffset = offset\n      const url = new URL(this.documentsUri, window.location.origin)\n      const params = new URLSearchParams(url.search)\n\n      if (this.collectionAuth) params.append(...this.collectionAuth)\n\n      params.append(\n        'directory',\n        this.currentDirectory ? this.currentDirectory.id : '-'\n      )\n      params.append('offset', offset)\n      params.append('limit', DOCUMENTS_API_LIMIT)\n      url.search = params\n\n      this.documentOffset = offset + DOCUMENTS_API_LIMIT\n      getData(url, {}, this.abortController.signal).then((result) => {\n        if (!result) {\n          return\n        }\n        this.abortController = null\n        if (this.shouldPaginate) {\n          this.documents = result.objects\n        } else {\n          this.documents = [\n            ...this.documents.slice(0, offset),\n            ...result.objects,\n            ...this.documents.slice(offset + result.objects.length)\n          ]\n        }\n      })\n    },\n    navigate({ document, page }) {\n      this.document = document\n      this.documentPage = page || 1\n      nextTick(() => this.goTop())\n    },\n    clearDocument() {\n      this.document = null\n      nextTick(() => this.goTop())\n    },\n    goTop() {\n      window.scrollTo(0, this.$refs.toolbar.offsetTop)\n    },\n    enableSearch() {\n      this.showSearch = true\n      this.document = null\n    },\n    clearSearch() {\n      this.searcher = null\n      if (this.allowToggleSearch) {\n        this.showSearch = false\n      }\n    },\n    search({ term, filters }) {\n      this.document = null\n      console.log('searching for term', term, 'with filters', filters)\n      let hasSearch = false\n      if (term) {\n        hasSearch = true\n      }\n      for (const value of filters.values()) {\n        if (value) {\n          hasSearch = true\n        }\n      }\n      if (!hasSearch) {\n        this.searcher = null\n        return\n      }\n      this.searcher = {\n        term,\n        filters,\n        url: this.getSearchUrl({ term, filters }),\n        done: false,\n        results: [],\n        documents: []\n      }\n      getData(this.searcher.url).then((response) =>\n        this.documentsReceived(response)\n      )\n    },\n    getSearchUrl({ term, filters }) {\n      const baseUrl = this.collection.pages_uri\n      const url = new URL(baseUrl, window.location.origin)\n      const params = new URLSearchParams(url.search)\n\n      if (term) {\n        params.append('q', term)\n      } else {\n        params.append('number', '1')\n      }\n      if (this.currentDirectory) {\n        params.append('directory', this.currentDirectory.id)\n      }\n      for (const [key, value] of filters.entries()) {\n        if (value) {\n          if (typeof value === 'object') {\n            for (const urlKey in value) {\n              if (value[urlKey]) {\n                params.append(urlKey, value[urlKey])\n              }\n            }\n          } else {\n            params.append(key, value)\n          }\n        }\n      }\n\n      url.search = params\n      return url.toString()\n    },\n    documentsReceived(response) {\n      this.searcher.response = response\n      const missingDocs = []\n      response.objects.forEach((p) => {\n        const docId = getIDFromURL(p.document)\n        const document = this.collection.documents[this.collectionIndex[docId]]\n        if (document === undefined) {\n          missingDocs.push(docId)\n        }\n      })\n      if (missingDocs.length > 0) {\n        const url = new URL(\n          this.collection.documents_uri,\n          window.location.origin\n        )\n        const params = new URLSearchParams(url.search)\n        params.append('ids', missingDocs.join(','))\n        url.search = params\n\n        getData(url).then((docsResponse) => {\n          this.setSearchResults(response.objects, docsResponse.objects)\n        })\n      } else {\n        this.setSearchResults(response.objects, [])\n      }\n    },\n    setSearchResults(results, resultDocuments) {\n      const docsWithPages = []\n      const docs = {}\n      let docCount = 0\n      const docIndex = {}\n      const searcherDocs = []\n      resultDocuments.forEach((d, i) => (docIndex[d.id] = i))\n      results.forEach((p) => {\n        const docId = getIDFromURL(p.document)\n        const docResult = {\n          image: p.image.replace(/\\{size\\}/, 'small'),\n          number: p.number,\n          query_highlight: p.query_highlight\n        }\n        if (docs[p.document] === undefined) {\n          let document = this.collection.documents[this.collectionIndex[docId]]\n          if (document === undefined) {\n            document = resultDocuments[docIndex[docId]]\n            if (document === undefined) {\n              // Ignore documents that are not or no longer in the collection\n              // but somewhow still in the search index\n              return\n            }\n          }\n          searcherDocs.push(document)\n          docs[p.document] = docCount\n          docCount += 1\n          docsWithPages.push({\n            document,\n            pages: [docResult]\n          })\n        } else {\n          docsWithPages[docs[p.document]].pages.push(docResult)\n        }\n      })\n      this.searcher.documents = searcherDocs\n      this.searcher.results = docsWithPages\n      this.searcher.docCount = docCount\n      this.searcher.done = true\n    },\n    loadMoreSearchResults() {\n      this.searcher.done = false\n      getData(this.searcher.response.meta.next).then((response) =>\n        this.documentsReceived(response)\n      )\n    },\n    selectDirectory(directory) {\n      this.currentDirectory = directory\n      this.getCollectionData()\n    },\n    updateHistoryState() {\n      if (this.config.deepUrls) {\n        window.history.replaceState(\n          {},\n          '',\n          this.queryParams.size == 0\n            ? window.location.pathname\n            : `?${this.queryParams}`\n        )\n      }\n    },\n    updateTooltips() {\n      this.$el\n        .querySelectorAll(\"[data-bs-toggle='tooltip']\")\n        .forEach((el) => Tooltip.getOrCreateInstance(el))\n    }\n  },\n  watch: {\n    currentDirectory() {\n      this.updateHistoryState()\n      this.updateTooltips()\n    },\n    document() {\n      this.updateHistoryState()\n    }\n  },\n  provide() {\n    return { config: this.config, i18n: this.config.i18n }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'bootstrap/scss/functions';\n@import 'bootstrap/scss/mixins';\n@import 'bootstrap/scss/variables';\n\n.dir-description :deep(a) {\n  --#{$prefix}link-color-rgb: var(--#{$prefix}light-rgb);\n  --#{$prefix}link-hover-color-rgb: var(--#{$prefix}light-rgb);\n  text-decoration: underline;\n}\n</style>\n","import { createApp } from 'vue'\n\nimport DocumentCollection from './components/document-collection.vue'\nimport DocumentViewer from './components/document-viewer.vue'\n\nfunction createDocumentViewer(selector, props) {\n  createApp(DocumentViewer, {\n    preview: true,\n    ...props\n  }).mount(selector)\n}\n\nfunction createDocumentCollectionViewer(selector, props) {\n  createApp(DocumentCollection, props).mount(selector)\n}\n\nArray.from(document.querySelectorAll('[data-fcdocument]')).forEach((el) => {\n  createDocumentViewer(el, {\n    documentUrl: el.dataset.fcdocumenturl,\n    documentPreview: JSON.parse(el.dataset.fcdocument),\n    page: parseInt(el.dataset.fcpage, 10),\n    config: JSON.parse(el.dataset.fcconfig),\n    defaults: JSON.parse(el.dataset.fcdefaults)\n  })\n})\n\nArray.from(document.querySelectorAll('[data-fcdocumentcollection]')).forEach(\n  (el) => {\n    createDocumentCollectionViewer(el, {\n      documentCollection: JSON.parse(el.dataset.fcdocumentcollection),\n      config: JSON.parse(el.dataset.fcconfig)\n    })\n  }\n)\n\nconst exp = {\n  createDocumentViewer,\n  createDocumentCollectionViewer\n}\n\nexport default exp\n"],"names":["DEFAULT_LANG","equal","a","b","k","_sfc_main","labelMap","choice","facetValue","facetCount","val","value","date","before","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createElementVNode","_createTextVNode","_toDisplayString","$options","$props","_ctx","_Fragment","_renderList","facet","_withModifiers","$event","_hoisted_4","min","max","args","_cache","DocumentDateRangeFilter","_hoisted_5","opt","_hoisted_7","_hoisted_8","_createVNode","_component_DocumentDateRangeFilter","DocumentFilter","DocumentFacet","facets","field","facetValues","filter","f","key","event","_hoisted_9","_hoisted_15","_hoisted_6","$data","_createBlock","_component_DocumentFilter","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_hoisted_16","_hoisted_17","_component_DocumentFacet","url","e","DocumentPreview","docAndPage","page","_component_DocumentPreview","BS_LG","BS_MD","DEFAULT_ASPECT_RATIO","TITLE_HEIGHT","RecycleScroller","rows","i","rowDocs","d","startIndex","endIndex","currentDocs","firstNull","_component_RecycleScroller","_withCtx","item","document","DOCUMENTS_API_LIMIT","MAX_SCROLL_DOCS","getIDFromURL","s","parts","DocumentPreviewGrid","DocumentViewer","DocumentCollectionSearchbar","DocumentCollectionSearchResults","CopyButton","collection","directoryStack","currentDirectory","shouldPaginate","settings","preferences","documents","collectionIndex","params","queryParams","getData","doc","docCollection","offsetSteps","documentOffsets","colDocs","offset","nextTick","offsetStep","result","term","filters","hasSearch","response","baseUrl","urlKey","missingDocs","p","docId","docsResponse","results","resultDocuments","docsWithPages","docs","docCount","docIndex","searcherDocs","docResult","directory","el","Tooltip","_hoisted_18","_hoisted_21","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_29","_hoisted_30","_hoisted_32","_hoisted_36","_component_CopyButton","_hoisted_13","_component_DocumentCollectionSearchbar","_component_DocumentViewer","_hoisted_19","_component_DocumentCollectionSearchResults","_hoisted_20","_component_DocumentPreviewGrid","_hoisted_22","_withDirectives","_hoisted_28","_hoisted_33","_hoisted_34","_hoisted_37","_hoisted_38","_vShow","createDocumentViewer","selector","props","createApp","createDocumentCollectionViewer","DocumentCollection"],"mappings":"6UA6BA,MAAMA,EAAe,KAEfC,EAAQ,CAACC,EAAGC,IAAM,CAEtB,GAAI,OAAOD,GAAM,SAAU,CACzB,UAAWE,KAAK,OAAO,KAAKF,CAAC,EAC3B,GAAIA,EAAEE,CAAC,IAAMD,EAAEC,CAAC,EACd,MAAO,GAGX,MAAO,EACT,CACA,OAAOF,IAAMC,CACf,EAEKE,EAAU,CACb,KAAM,gBACN,MAAO,CACL,OAAQ,CACN,KAAM,OACN,SAAU,IAEZ,OAAQ,CACN,KAAM,MACN,QAAS,IAAM,CAAA,GAGjB,MAAO,CACL,QAAS,EACX,GAEF,MAAO,CAAC,QAAQ,EAChB,SAAU,CACR,MAAO,CACL,OAAO,KAAK,MAAM,OAAO,IAC3B,EACA,MAAO,CACL,OAAO,SAAS,gBAAgB,IAClC,EACA,OAAQ,CACN,OAAO,KAAK,OAAO,MAAM,KAAK,IAAI,GAAK,KAAK,OAAO,MAAML,CAAY,CACvE,EACA,sBAAuB,CACrB,MAAMM,EAAW,IAAI,IACrB,OAAI,KAAK,OAAO,SACd,KAAK,OAAO,QAAQ,QAASC,GAAW,CACtCD,EAAS,IACPC,EAAO,MACNA,EAAO,OAASA,EAAO,MAAM,KAAK,IAAI,GAAMA,EAAO,KACtD,CACF,CAAC,EAEID,CACT,EACA,WAAY,CACV,OAAO,KAAK,OAAO,IAAI,CAAC,CAACE,EAAYC,CAAU,KACtC,CACL,SAAU,KAAK,cAAcD,CAAU,EACvC,MAAOA,EACP,MAAOC,EACP,MAAO,KAAK,cAAcD,CAAU,CACtC,EACD,CACH,GAEF,QAAS,CACP,cAAcA,EAAY,CACxB,MAAME,EAAM,KAAK,cAAcF,CAAU,EACzC,OAAOP,EAAMS,EAAK,KAAK,KAAK,CAC9B,EACA,cAAcC,EAAO,CACnB,OAAI,KAAK,OAAO,QACP,KAAK,qBAAqB,IAAIA,CAAK,GAAKA,EAE7C,KAAK,OAAO,cAAc,OAAS,iBACxB,IAAI,KAAKA,CAAK,EACf,YAAW,EAElBA,CACT,EACA,cAAcA,EAAO,CACnB,GAAI,KAAK,OAAO,cAAc,OAAS,iBAAkB,CACvD,MAAMC,EAAO,IAAI,KAAKD,CAAK,EACrBE,EAAS,GAAGD,EAAK,YAAW,CAAE,SACpC,MAAO,CACL,CAAC,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAGA,EAAK,YAAW,EAAG,MAAM,GAAG,EAAE,CAAC,EAC7D,CAAC,GAAG,KAAK,OAAO,GAAG,SAAS,EAAGC,CACjC,CACF,KACE,QAAOF,CAEX,EACA,iBAAiBA,EAAO,CACtB,KAAK,MAAM,SAAU,KAAK,cAAcA,CAAK,CAAC,CAChD,CACF,CACF,EA5HOG,EAAA,CAAA,MAAM,uCAAuC,EAOtCC,EAAA,CAAA,MAAM,iBAAiB,EAI7BC,EAAA,CAAA,MAAM,qBAAqB,kDAXjC,OAAAC,EAAA,EAAAC,EAwBM,MAxBNJ,EAwBM,CAvBJK,EASK,KAAA,KAAA,CARAC,EAAAC,EAAAC,EAAA,KAAK,EAAG,IACX,CAAA,EACQC,EAAA,WADRL,EAMS,SAAA,OAJP,MAAM,iCACL,uBAAOM,EAAA,MAAK,SAAA,EAAA,KACbL,EAAqD,OAArDJ,EAAqDM,EAApBC,EAAA,KAAK,KAAK,EAAA,CAAA,cAC3CH,EAAyB,IAAA,CAAtB,MAAM,eAAa,KAAA,EAAA,iBAG1BA,EAYK,KAZLH,EAYK,QAXHE,EAUKO,EAAA,KAAAC,EAVeJ,EAAA,UAATK,QAAXT,EAUK,KAAA,CAV2B,IAAKS,EAAM,QAEhCA,EAAM,UAKfV,EAAA,EAAAC,EAEO,WADFS,EAAM,KAAK,EAAG,KAAEN,EAAGM,EAAM,KAAK,EAAG,IAACN,EAAGC,OAAK,KAAK,EAAG,KACvD,CAAA,QARAJ,EAKI,IAAA,OAHF,KAAK,IACJ,QAAKU,EAAAC,GAAUP,EAAA,iBAAiBK,EAAM,KAAK,EAAA,CAAA,SAAA,CAAA,CACzC,EAAAN,EAAAM,EAAM,KAAK,EAAG,OAAKA,EAAM,KAAK,EAAG,IAACN,EAAGC,EAAA,KAAK,KAAK,EAAG,KACvD,EAAAQ,CAAA,6ECEHzB,EAAU,CACb,KAAM,0BACN,MAAO,CACL,OAAQ,CACN,KAAM,OACN,SAAU,IAEZ,MAAO,CACL,KAAM,OACN,SAAU,EACZ,GAEF,MAAO,CAAC,QAAS,QAAQ,EACzB,MAAO,CACL,MAAO,CACL,WAAY,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,QAAQ,EACjD,WAAY,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,SAAS,CACpD,CACF,EACA,SAAU,CACR,KAAM,CACJ,OAAO,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,QAAQ,CAC9C,EACA,KAAM,CACJ,OAAO,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,SAAS,CAC/C,GAEF,QAAS,CACP,QAAS,CACP,KAAK,MAAM,QAAQ,CACrB,EACA,UAAU0B,EAAK,CACb,KAAK,WAAaA,EAClB,KAAK,YAAW,CAClB,EACA,UAAUC,EAAK,CACb,KAAK,WAAaA,EAClB,KAAK,YAAW,CAClB,EACA,aAAc,CACZ,KAAK,MAAM,QAAS,CAClB,CAAC,GAAG,KAAK,OAAO,GAAG,QAAQ,EAAG,KAAK,WACnC,CAAC,GAAG,KAAK,OAAO,GAAG,SAAS,EAAG,KAAK,WACrC,CACH,CACF,CACF,EAlEOlB,EAAA,CAAA,MAAM,aAAa,qDAAxB,OAAAG,EAAA,EAAAC,EAgBM,MAhBNJ,EAgBM,CAfJK,EAM0B,QAAA,CALvB,MAAOG,EAAA,IACR,KAAK,OACL,MAAM,eACL,uBAAOA,EAAA,UAAUO,EAAO,OAAO,KAAK,GACpC,wBAAQP,EAAA,UAAUO,EAAO,OAAO,KAAK,GACrC,8BAAaP,EAAA,QAAAA,EAAA,OAAA,GAAAW,CAAA,EAAM,CAAA,OAAA,CAAA,gBACtBC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAf,EAAuC,OAAA,CAAjC,MAAM,kBAAkB,EAAC,IAAC,EAAA,GAChCA,EAM0B,QAAA,CALvB,MAAOG,EAAA,IACR,KAAK,OACL,MAAM,eACL,uBAAOA,EAAA,UAAUO,EAAO,OAAO,KAAK,GACpC,wBAAQP,EAAA,UAAUO,EAAO,OAAO,KAAK,GACrC,8BAAaP,EAAA,QAAAA,EAAA,OAAA,GAAAW,CAAA,EAAM,CAAA,OAAA,CAAA,gDCoCpBjC,GAAe,KAEhBK,GAAU,CACb,KAAM,iBACN,WAAY,CACV,wBAAA8B,IAEF,MAAO,CACL,OAAQ,CACN,KAAM,OACN,SAAU,IAGZ,MAAO,CACL,QAAS,EACX,GAEF,MAAO,CAAC,QAAS,QAAQ,EACzB,SAAU,CACR,MAAO,CACL,OAAO,SAAS,gBAAgB,IAClC,EACA,OAAQ,CACN,OAAO,KAAK,OAAO,MAAM,KAAK,IAAI,GAAK,KAAK,OAAO,MAAMnC,EAAY,CACvE,GAEF,QAAS,CACP,QAAS,CACP,KAAK,MAAM,QAAQ,CACrB,EACA,aAAaW,EAAO,CAClB,KAAK,MAAM,QAAS,CAAE,IAAK,KAAK,OAAO,IAAK,MAAAA,EAAO,CACrD,CACF,CACF,EArFOG,GAAA,CAAA,MAAM,UAAU,uBAKZ,MAAM,oDAcN,MAAM,+DAkBN,MAAM,oFArCf,OAAAG,EAAA,EAAAC,EA6CM,MA7CNJ,GA6CM,CA5CJK,EAEQ,QAAA,CAFA,IAAKI,EAAA,OAAO,GAAI,MAAM,sCACzBD,EAAA,KAAK,EAAA,EAAAP,EAAA,EAEMQ,EAAA,OAAO,MAAI,UACzBN,IAAAC,EAWM,MAXNF,GAWM,CAVJG,EAS+C,QAAA,CAR5C,GAAII,EAAA,OAAO,GACX,MAAOA,EAAA,MACR,KAAK,SACL,MAAM,eACN,UAAU,UACT,IAAKA,EAAA,OAAO,IACZ,IAAKA,EAAA,OAAO,IACZ,8BAAaD,EAAA,QAAAA,EAAA,OAAA,GAAAW,CAAA,EAAM,CAAA,OAAA,CAAA,GACnB,uBAAOX,EAAA,aAAaO,EAAO,OAAO,KAAK,4BAG9BN,EAAA,OAAO,MAAI,UACzBN,IAAAC,EAeM,MAfNkB,GAeM,CAdJjB,EAaS,SAAA,CAZN,GAAII,EAAA,OAAO,GACX,MAAOA,EAAA,MACR,MAAM,eACL,8BAAaD,EAAA,QAAAA,EAAA,OAAA,GAAAW,CAAA,EAAM,CAAA,OAAA,CAAA,GACnB,uBAAOX,EAAA,aAAaO,EAAO,OAAO,KAAK,KACxCK,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAf,EAA6B,SAAA,CAArB,MAAM,EAAE,EAAC,MAAG,EAAA,IACpBF,EAAA,EAAA,EAAAC,EAKSO,EAAA,KAAAC,EAJOH,EAAA,OAAO,QAAdc,QADTnB,EAKS,SAAA,CAHN,IAAKmB,EAAI,MACT,MAAOA,EAAI,SACTA,EAAI,MAAQA,EAAI,MAAMf,EAAA,IAAI,EAAIe,EAAI,KAAK,EAAA,EAAAC,EAAA,8BAKlCf,EAAA,OAAO,MAAI,aACzBN,IAAAC,EAMM,MANNqB,GAMM,CALJC,EAI0BC,EAAA,CAHvB,MAAOlB,EAAA,OAAK,CAAA,EACZ,OAAQA,EAAA,OACR,SAAQD,EAAA,OACR,QAAOA,EAAA,2GCmEbjB,GAAU,CACb,KAAM,8BACN,WAAY,CACV,eAAAqC,GACA,cAAAC,GAEF,MAAO,CACL,SAAU,CACR,KAAM,OACN,QAAS,MAEX,UAAW,CACT,KAAM,OACN,QAAS,MAEX,eAAgB,CACd,KAAM,QACN,QAAS,IAEX,QAAS,CACP,KAAM,MACN,QAAS,IAAM,CAAA,CACjB,GAEF,MAAO,CAAC,SAAU,aAAa,EAC/B,MAAO,CACL,MAAO,CACL,OAAQ,KAAK,UAAU,MAAQ,GAC/B,aAAc,KAAK,UAAU,SAAW,IAAI,GAC9C,CACF,EACA,SAAU,CACR,MAAO,CACL,OAAO,KAAK,MAAM,OAAO,IAC3B,EACA,WAAY,CACV,OAAO,KAAK,UAAY,CAAC,KAAK,SAAS,IACzC,EACA,YAAa,CACX,MAAO,CAAC,CAAC,KAAK,SAAW,KAAK,QAAQ,OAAS,CACjD,EACA,WAAY,CACV,MAAO,CAAC,EACN,KAAK,UACL,KAAK,SAAS,UACd,KAAK,SAAS,SAAS,OAE3B,EACA,WAAY,CACV,MAAMC,EAAS,CAAA,EACf,UAAWC,KAAS,KAAK,SAAS,SAAS,OAAO,OAAQ,CACxD,MAAMC,EAAc,KAAK,SAAS,SAAS,OAAO,OAAOD,CAAK,EAC9D,GAAIC,EAAY,SAAW,EACzB,SAEF,MAAMC,EAAS,KAAK,QAAQ,OAAQC,GAAMA,EAAE,MAAQH,CAAK,EAAE,CAAC,EACxDE,IAAW,QAGfH,EAAO,KAAK,CACV,IAAKG,EAAO,IACZ,OAAAA,EACA,OAAQD,EACR,MAAO,KAAK,aAAa,IAAIC,EAAO,GAAG,GAAK,GAC7C,CACH,CACA,OAAOH,CACT,EACA,WAAY,CACV,OAAI,KAAK,WAAa,KACb,KAAK,SAAS,SAAS,KAAK,YAE9B,CACT,EACA,oBAAqB,CACnB,OAAO,IAAI,KAAK,aAAa,SAAS,gBAAgB,KAAM,CAC1D,MAAO,UACR,EAAE,OAAO,KAAK,SAAS,CAC1B,EACA,aAAc,CACZ,OAAI,KAAK,WAAa,KACb,KAAK,SAAS,SAEhB,CACT,EACA,QAAS,CACP,OAAI,KAAK,SACA,KAAK,SAAS,IAAM,cAEtB,EACT,GAEF,QAAS,CACP,OAAQ,CACN,KAAK,OAAS,GACd,KAAK,MAAM,aAAa,CAC1B,EACA,WAAY,CACV,KAAK,MAAM,SAAU,CACnB,KAAM,KAAK,OACX,QAAS,KAAK,aACf,CACH,EACA,UAAUK,EAAKC,EAAO,CACpB,KAAK,aAAa,CAAE,IAAAD,EAAK,MAAOC,EAAO,EACvC,KAAK,UAAS,CAChB,EACA,aAAa,CAAE,IAAAD,EAAK,MAAAtC,GAAS,CAC3B,KAAK,YAAc,IAAI,IAAI,KAAK,aAAa,IAAIsC,EAAKtC,CAAK,CAAC,CAC9D,CACF,CACF,EA5NOG,GAAA,CAAA,MAAM,gDAAgD,EACpDC,GAAA,CAAA,MAAM,QAAQ,YACM,MAAM,OACtBe,GAAA,CAAA,MAAM,KAAK,EACTM,GAAA,CAAA,MAAM,UAAU,MAEjB,IAAI,6BACJ,MAAM,oCAGHE,GAAA,CAAA,MAAM,oBAAoB,EAkBhCC,GAAA,CAAA,MAAM,UAAU,EACdY,GAAA,CAAA,MAAM,aAAa,YAGpB,MAAM,mCACN,KAAK,sDAsCY,MAAM,yBAKtBC,GAAA,CAAA,MAAM,kBAAkB,YACH,MAAM,wCAeZ,MAAM,6FA5FhC,OAAAnC,EAAA,EAAAC,EAsGM,MAtGNJ,GAsGM,CArGJK,EAoGM,MApGNJ,GAoGM,CAnGOO,EAAA,YAAXL,IAAAC,EAyBM,MAzBNF,GAyBM,CAxBJG,EAuBM,MAvBNW,GAuBM,CAtBJX,EAcM,MAdNiB,GAcM,CAbJjB,EAIQ,QAJRkC,GAIQhC,EADHC,EAAA,KAAK,UAAU,EAAA,CAAA,EAEpBH,EAOM,MAPNmB,GAOM,GANJnB,EAK+B,QAAA,CAJ7B,GAAG,kEACMmC,EAAA,OAAMzB,GACf,KAAK,SACL,MAAM,4BACL,gCAAeP,EAAA,WAAAA,EAAA,UAAA,GAAAW,CAAA,EAAS,CAAA,OAAA,CAAA,kBAHhBqB,EAAA,MAAM,eAMrBpC,EAMwBO,EAAA,KAAAC,EALLH,EAAA,QAAVwB,QADTQ,EAMwBC,EAAA,CAJrB,IAAKT,EAAO,GACZ,OAAQA,EACR,MAAOO,EAAA,aAAa,IAAIP,EAAO,GAAG,GAAA,GAClC,QAAOzB,EAAA,aACP,SAAQA,EAAA,iFAGfH,EA+DM,MA/DNoB,GA+DM,CA9DJpB,EAyCM,MAzCNgC,GAyCM,CAvCI7B,EAAA,WADRL,IAAAC,EAGkB,MAHlBuC,EAGkB,YACLnC,EAAA,eAAbJ,EAAoD,QAAAwC,GAAArC,EAAzBC,EAAA,KAAK,SAAS,EAAA,CAAA,YAC5BC,EAAA,UAAYA,EAAA,SAAS,UAAlCL,EAkCQ,QAAAyC,GAAA,CAjCUpC,EAAA,SAAS,UAAzBL,EAeWO,EAAA,CAAA,IAAA,CAAA,EAAA,CAdOH,EAAA,WAAS,OAAzBJ,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAC,EAAA,SAAS,EAAG,IAACD,EAAGC,EAAA,KAAK,IAAI,EAAA,CAAA,aAE9BJ,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,KADNH,EAAA,SAAS,EAAG,IAACD,EAAGC,EAAA,KAAK,KAAK,EAAG,IAACD,EAAGC,EAAA,KAAK,KAAK,EAAA,CAAA,sBACrC,MAEX,EAAA,GAAgBA,EAAA,aAAW,OAA3BJ,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAC,EAAA,WAAW,EAAG,IAACD,EAAGC,EAAA,KAAK,QAAQ,EAAA,CAAA,aAEpCJ,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAC,EAAA,WAAW,EAAG,IAACD,EAAGC,EAAA,KAAK,SAAS,EAAA,CAAA,UAC1B,IACXD,EAAGC,EAAA,KAAK,QAAQ,EAAA,CAAA,aAElBJ,EAMWO,EAAA,CAAA,IAAA,CAAA,EAAA,CALOH,EAAA,WAAS,OAAzBJ,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAC,EAAA,SAAS,EAAG,IAACD,EAAGC,EAAA,KAAK,QAAQ,EAAA,CAAA,aAElCJ,EAAkEO,EAAA,CAAA,IAAA,CAAA,EAAA,CAA7CL,EAAAC,EAAAC,EAAA,SAAS,EAAG,IAACD,EAAGC,EAAA,KAAK,SAAS,EAAA,CAAA,UAAe,IAClED,EAAGC,EAAA,KAAK,KAAK,EAAA,CAAA,QAGPC,EAAA,oBADRL,EAMI,IAAA,OAJD,KAAMI,EAAA,OACP,MAAM,kBACN,OAAO,2BACPH,EAA0C,IAAA,CAAvC,MAAM,YAAY,cAAY,oCAEnBI,EAAA,eAAhBL,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,aADTN,EAAM,KAAA,KAAA,KAAA,EAAA,GAAGC,EAAAC,EAAAC,EAAA,KAAK,oBAAoB,EAAG,IAACD,EAAGE,EAAA,UAAU,IAAI,EAAA,CAAA,+BAIlDA,EAAA,UAAXN,IAAAC,EAIM,MAJN0C,GAIM,CAHJzC,EAES,SAAA,CAFD,MAAM,eAAgB,4BAAOG,EAAA,OAAAA,EAAA,MAAA,GAAAW,CAAA,EAChC,EAAAZ,EAAAC,EAAA,KAAK,WAAW,EAAA,CAAA,cAGvBH,EAcM,MAdNiC,GAcM,CAbQ9B,EAAA,gBAUZJ,EAES,SAAA,OAFM,MAAM,wBAAyB,4BAAOI,EAAA,WAAAA,EAAA,UAAA,GAAAW,CAAA,EAChD,EAAAZ,EAAAC,EAAA,KAAK,MAAM,EAAA,CAAA,IAXhBL,IAAAC,EASM,MATN2C,GASM,GARJ1C,EAI+B,QAAA,sCAHpBmC,EAAA,OAAMzB,GACf,KAAK,SACL,MAAM,4CACL,gCAAeP,EAAA,WAAAA,EAAA,UAAA,GAAAW,CAAA,EAAS,CAAA,OAAA,CAAA,kBAHhBqB,EAAA,MAAM,IAIjBnC,EAES,SAAA,CAFD,MAAM,wBAAyB,4BAAOG,EAAA,WAAAA,EAAA,UAAA,GAAAW,CAAA,EACzC,EAAAZ,EAAAC,EAAA,KAAK,MAAM,EAAA,CAAA,SAQXA,EAAA,WAAXL,IAAAC,EAQM,MARN4C,GAQM,QAPJ5C,EAMMO,EAAA,KAAAC,EANeJ,EAAA,UAATK,QAAZT,EAMM,MAAA,CAN2B,IAAKS,EAAM,IAAK,MAAM,UACrDa,EAIkDuB,EAAA,CAH/C,OAAQpC,EAAM,OACd,OAAQA,EAAM,OACd,MAAOA,EAAM,MACb,SAAME,GAAEP,YAAUK,EAAM,OAAO,IAAKE,CAAM,2GClElDxB,GAAU,CACb,KAAM,kBACN,MAAO,CACL,SAAU,CACR,KAAM,OACN,SAAU,IAEZ,KAAM,CACJ,KAAM,OACN,QAAS,GAEX,UAAW,CACT,KAAM,OACN,QAAS,MAEX,MAAO,CACL,KAAM,OACN,QAAS,IACX,GAEF,MAAO,CAAC,UAAU,EAClB,MAAO,CACL,MAAO,CACL,YAAa,EACf,CACF,EACA,SAAU,CACR,MAAO,CACL,OAAO,KAAK,MAAM,OAAO,IAC3B,EACA,UAAW,CACT,OAAO,UAAU,KAAK,OAAS,KAAK,SAAS,WAAW,EAAE,QACxD,WACA,OACF,CACF,EACA,aAAc,CACZ,IAAI2D,EAAM,KAAK,SAAS,SACxB,OAAI,KAAK,OACPA,GAAO,SAAS,KAAK,IAAI,IAEpBA,CACT,GAEF,eAAgB,CACV,KAAK,SAAS,aAAe,CAAC,KAAK,aAErC,KAAK,MAAM,MAAM,aAAa,MAAO,EAAE,CAE3C,EACA,QAAS,CACP,aAAc,CACZ,KAAK,YAAc,EACrB,EACA,SAASC,EAAG,CACVA,EAAE,eAAc,EAChB,KAAK,MAAM,WAAY,CACrB,SAAU,KAAK,SACf,KAAM,KAAK,KACZ,CACH,CACF,CACF,mCAhF+B,MAAM,eAAe,KAAK,iCAU/B,MAAM,6EAxB9B/C,EA4BM,MAAA,KAAA,CA3BJC,EAsBI,IAAA,CArBD,KAAMG,EAAA,YACP,MAAM,cACN,OAAO,SACN,4BAAOA,EAAA,UAAAA,EAAA,SAAA,GAAAW,CAAA,KAEAX,EAAA,gBADRJ,EAOwB,MAAA,OAJtB,IAAI,QACH,IAAKI,EAAA,SACN,IAAI,GACJ,MAAM,uBACL,2BAAMA,EAAA,aAAAA,EAAA,YAAA,GAAAW,CAAA,qBALCqB,EAAA,WAAW,aAMTA,EAAA,sBAAZrC,IAAAC,EAEM,MAFNF,GAEM,CAAA,GAAAkB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CADJf,EAA+C,OAAA,CAAzC,MAAM,iBAAiB,EAAC,aAAU,EAAA,OAE1CA,EAKI,IAAA,CALD,MAAM,gBAAiB,MAAOI,EAAA,SAAS,QACxBA,EAAA,eAAhBL,EAAkEO,EAAA,CAAA,IAAA,CAAA,EAAA,CAAnCL,EAAAC,EAAAC,EAAA,KAAK,IAAI,EAAG,MAAIC,EAAA,IAAI,EAAA,CAAA,aACnDL,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAE,EAAA,SAAS,KAAK,EAAA,CAAA,sBAIZA,EAAA,WAAXN,IAAAC,EAGM,MAHNkB,GAGM,CADJjB,EAA2B,OAAA,CAArB,UAAQI,EAAA,WAAS,KAAA,EAAA8B,EAAA,8ECGxBhD,GAAU,CACb,KAAM,iCACN,WAAY,CACV,gBAAA6D,GAEF,MAAO,CACL,SAAU,CACR,KAAM,OACN,SAAU,IAEZ,MAAO,CACL,KAAM,MACN,SAAU,EACZ,GAEF,MAAO,CAAC,UAAU,EAClB,SAAU,CACR,MAAO,CACL,OAAO,KAAK,OAAO,IACrB,EACA,KAAM,CACJ,OAAO,IAAI,KAAK,eAAe,SAAS,gBAAgB,KAAM,CAC5D,KAAM,UACN,MAAO,UACP,IAAK,UACN,CACH,EACA,yBAA0B,CACxB,OAAK,KAAK,SAAS,aAGZ,KAAK,IAAI,OAAO,IAAI,KAAK,KAAK,SAAS,YAAY,CAAC,EAFlD,IAGX,GAEF,QAAS,CACP,SAASC,EAAY,CACnB,KAAK,MAAM,WAAYA,CAAU,CACnC,CACF,CACF,EApEOrD,GAAA,CAAA,MAAM,uBAAuB,EAC3BC,GAAA,CAAA,MAAM,uBAAuB,EAC3BC,GAAA,CAAA,MAAM,QAAQ,EACbc,GAAA,CAAA,MAAM,YAAY,YAEkB,MAAM,sBAM7CuB,GAAA,CAAA,MAAM,kBAAkB,wDAX/B,OAAApC,EAAA,EAAAC,EAqBM,MArBNJ,GAqBM,CApBJK,EASM,MATNJ,GASM,CARJI,EAOM,MAPNH,GAOM,CANJG,EAKK,KALLW,GAKK,KAJAP,EAAA,SAAS,KAAK,EAAG,IACpB,CAAA,EAAaD,EAAA,6BAAbJ,EAEQ,QAFRkB,GAEQf,EADHC,EAAA,uBAAuB,EAAA,CAAA,kBAKlCH,EASM,MATNkC,GASM,QARJnC,EAOMO,EAAA,KAAAC,EAPcH,EAAA,MAAR6C,QAAZlD,EAOM,MAAA,CAPsB,IAAKkD,EAAK,OAAQ,MAAM,sBAClD5B,EAKyB6B,EAAA,CAJtB,SAAU9C,EAAA,SACV,KAAM6C,EAAK,OACX,UAAWA,EAAK,gBAChB,MAAOA,EAAK,MACZ,WAAU9C,EAAA,oHCUfgD,GAAQ,IACRC,GAAQ,IACRC,GAAuB,KAAK,KAAK,CAAC,EAClCC,GAAe,GAEhBpE,GAAU,CACb,KAAM,sBACN,WAAY,CACV,gBAAA6D,EACA,gBAAAQ,GAEF,MAAO,CACL,UAAW,CACT,KAAM,MACN,SAAU,EACZ,GAEF,MAAO,CAAC,WAAY,UAAU,EAC9B,MAAO,CACL,MAAO,CACL,MAAO,IACT,CACF,EACA,SAAU,CACR,MAAO,CACL,OAAO,KAAK,MAAM,OAAO,IAC3B,EACA,UAAW,CACT,OAAI,KAAK,QAAU,KACV,IAEF,IAAMF,GAAuBC,EACtC,EACA,cAAe,CACb,MAAME,EAAO,CAAA,EACb,GAAI,KAAK,UAAU,SAAW,EAC5B,OAAOA,EAET,QAASC,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,GAAK,KAAK,SAAU,CAC7D,MAAMC,EAAU,KAAK,UAAU,MAAMD,EAAGA,EAAI,KAAK,QAAQ,EACzDD,EAAK,KAAK,CACR,MAAO,GAAG,KAAK,UAAU,CAAC,EAAE,EAAE,IAAIC,CAAC,GACnC,OAAQC,EAAQ,MAAOC,GAAMA,IAAM,IAAI,EACvC,UAAWD,EACZ,CACH,CACA,OAAOF,CACT,EACA,UAAW,CACT,OAAO,SAAS,KAAK,aAAeL,GAChC,EACA,SAAS,KAAK,aAAeC,GAC7B,EACA,CACN,GAEF,SAAU,CACR,KAAK,MAAQ,KAAK,MAAM,aAAa,sBAAqB,EAAG,KAC/D,EACA,QAAS,CACP,SAASJ,EAAY,CACnB,KAAK,MAAM,WAAYA,CAAU,CACnC,EACA,QAAQY,EAAYC,EAAU,CAC5B,MAAMC,EAAc,KAAK,UAAU,MACjCF,EAAa,KAAK,SAClBC,EAAW,KAAK,SAAW,KAAK,QAClC,EACA,GAAIC,EAAY,KAAMH,GAAMA,IAAM,IAAI,EAAG,CACvC,MAAMI,EAAYD,EACf,IAAI,CAACH,EAAGF,IAAM,CAACE,EAAGF,CAAC,CAAC,EACpB,OAAQE,GAAMA,EAAE,CAAC,IAAM,IAAI,EAAE,CAAC,EAAE,CAAC,EACpC,KAAK,MAAM,WAAYC,EAAa,KAAK,SAAWG,CAAS,CAC/D,CACF,CACF,CACF,MAxGO,IAAI,eAAe,MAAM,0DAUF,MAAM,yFAVlC,OAAAjE,EAAA,EAAAC,EAmBM,MAnBNJ,GAmBM,CAlBJ0B,EAiBkB2C,EAAA,CAfhB,MAAM,WACL,YAAW,GACX,MAAO7D,EAAA,aACP,YAAWA,EAAA,SACZ,YAAU,QACT,cAAa,GACb,SAAQA,EAAA,UACT,QAAA8D,EAAA,CAOM,CAfI,KAAAC,KAAI,CAQHA,EAAK,QAAhBpE,IAAAC,EAOM,MAPNH,GAOM,EANJE,EAAA,EAAA,EAAAC,EAKMO,EAAA,KAAAC,EAJe2D,EAAK,UAAjBC,QADTpE,EAKM,MAAA,CAHH,IAAKoE,EAAS,GACf,MAAM,sBACN9C,EAA6D6B,EAAA,CAA3C,SAAUiB,EAAW,WAAUhE,EAAA,kJC4NrDiE,EAAsB,GACtBC,GAAkBD,EAAsB,IAE9C,SAASE,EAAaC,EAAG,CACvB,MAAMC,EAAQD,EAAE,MAAM,GAAG,EACzB,OAAO,SAASC,EAAMA,EAAM,OAAS,CAAC,EAAG,EAAE,CAC7C,CAEA,MAAKtF,GAAU,CACb,KAAM,qBACN,WAAY,CACV,oBAAAuF,GACA,eAAAC,EACA,4BAAAC,GACA,gCAAAC,GACA,WAAAC,GAEF,MAAO,CACL,mBAAoB,CAClB,KAAM,OACN,QAAS,KAAO,CACd,UAAW,CAAA,EACX,YAAa,CAAA,KAGjB,OAAQ,CACN,KAAM,OACN,QAAS,KAAO,CAAA,EAClB,GAEF,MAAO,CAGL,IAAIC,EAAa,CACf,UAHgB,CAAA,EAIhB,YAHkB,CAAA,CAIpB,EACIC,EAAiB,CAAA,EACjBC,EAAmB,KACvB,MAAMb,EAAW,KACb,KAAK,qBACPW,EAAa,KAAK,mBAClBC,EAAiBD,EAAW,gBAC5BE,EAAmBF,EAAW,kBAC1BE,GAAkBD,EAAe,KAAKC,CAAgB,GAG5D,MAAMC,EAAiBH,EAAW,yBAA2BT,GACvDa,EAAWJ,EAAW,UAAY,CAAA,EAClCK,EAAcD,EAAS,aAAe,CAAA,EAC5C,MAAO,CACL,SAAAf,EACA,WAAAW,EACA,SAAAI,EACA,WAAYC,EAAY,YAAc,GACtC,kBAAmBA,EAAY,mBAAqB,GACpD,eAAgBA,EAAY,gBAAkB,GAC9C,SAAU,KACV,aAAc,EACd,iBAAAH,EACA,eAAAD,EACA,eAAAE,EACA,UAAW,KAAK,cAAcH,EAAYG,CAAc,EACxD,YAAaH,EAAW,YACxB,gBAAiB,KAAK,YAAYA,EAAYG,CAAc,EAC5D,WAAY,EACZ,aAAcH,EAAW,eAAiB,IAC5C,CACF,EACA,SAAU,CACR,MAAO,CACL,OAAO,KAAK,OAAO,IACrB,EACA,iBAAkB,CAChB,MAAMM,EAAY,KAAK,UACjBC,EAAkB,CAAA,EACxB,OAAAD,EAAU,QAAQ,CAACzB,EAAGF,IAAM,CACtBE,IAAM,OACR0B,EAAgB1B,EAAE,EAAE,EAAIF,EAE5B,CAAC,EACM4B,CACT,EACA,aAAc,CACZ,MAAO,CACL,UAAW,MACb,CACF,EACA,gBAAiB,CACf,GAAI,CAAC,KAAK,WAAW,QAAU,KAAK,WAAW,IAC7C,MAAO,CAAC,MAAO,KAAK,WAAW,GAAG,CAGtC,EACA,aAAc,CACZ,OACE,KAAK,WAAW,yBAChB,KAAK,WAAajB,CAEtB,EACA,eAAgB,CACd,OAAO,IAAI,KAAK,aAAa,SAAS,gBAAgB,KAAM,CAC1D,MAAO,SACT,CAAC,EAAE,OAAO,KAAK,WAAW,cAAc,CAC1C,EACA,aAAc,CACZ,OAAI,KAAK,YAAY,iBACf,KAAK,iBACA,GAAG,KAAK,WAAW,gBAAgB,cAAc,KAAK,iBAAiB,EAAE,GAG3E,KAAK,WAAW,iBAGlB,EACT,EACA,iBAAkB,CAChB,OAAO,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,CAC3D,EACA,aAAc,CACZ,MAAMkB,EAAS,IAAI,gBAEnB,OAAI,KAAK,kBACPA,EAAO,OAAO,YAAa,KAAK,iBAAiB,EAAE,EAEjD,KAAK,UAAUA,EAAO,OAAO,WAAY,KAAK,SAAS,EAAE,EAEtDA,CACT,EACA,UAAW,CACT,MAAMzC,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EACxC,OAAAA,EAAI,OAAS,KAAK,YACXA,CACT,GAEF,SAAU,CACR,MAAM0C,EAAc,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAE1DA,EAAY,IAAI,UAAU,IAC5B,KAAK,SAAW,KAAK,WAAW,UAAU,KACvC5B,GAAMA,EAAE,KAAO,SAAS4B,EAAY,IAAI,UAAU,EAAG,EAAE,CAC1D,EAEK,KAAK,UACRC,EACE,GAAG,KAAK,OAAO,KAAK,cAAc,GAAGD,EAAY,IAAI,UAAU,CAAC,GAClE,EAAE,KAAME,GAAQ,CACd,KAAK,SAAWA,CAClB,CAAC,GAID,CAAC,KAAK,mBAAmB,IAAM,KAAK,mBAAmB,cACzD,KAAK,kBAAiB,CAE1B,EACA,SAAU,CAEN,KAAK,UAAU,QAAU,GACzB,KAAK,UAAU,CAAC,IAAM,MACtB,KAAK,cAEL,KAAK,kBAAkB,CAAC,EAG1B,KAAK,eAAc,CACrB,EACA,QAAS,CACP,mBAAoB,CAClB,MAAM5C,EAAM,IAAI,IACd,KAAK,mBAAmB,aACxB,OAAO,SAAS,MAClB,EACMyC,EAAS,IAAI,gBAAgBzC,EAAI,MAAM,EAE7C,OAAI,KAAK,gBAAgByC,EAAO,OAAO,GAAG,KAAK,cAAc,EAE7D,KAAK,UAAY,CAAA,EACjB,KAAK,YAAc,CAAA,EACnBA,EAAO,OACL,YACA,KAAK,iBAAmB,KAAK,iBAAiB,GAAK,EACrD,EACAzC,EAAI,OAASyC,EAENE,EAAQ3C,CAAG,EAAE,KAAM6C,GAAkB,CAC1C,KAAK,WAAaA,EAClB,KAAK,aAAeA,EAAc,cAClC,KAAK,gBAAkB,KAAK,YAAYA,CAAa,EACrD,KAAK,UAAY,KAAK,cAAcA,CAAa,EACjD,KAAK,YAAcA,EAAc,YACjC,KAAK,eAAiB,KAAK,WAAW,gBAClC,KAAK,kBACP,KAAK,eAAe,KAAK,KAAK,gBAAgB,EAC3C,KAAK,WACR,KAAK,SAAWA,EAAc,SAElC,CAAC,CACH,EACA,YAAYZ,EAAY,CACtB,MAAMa,EAAcb,EAAW,UAAU,OAASV,EAC5CwB,EAAkB,IAAI,IAC5B,QAASnC,EAAI,EAAGA,EAAIkC,EAAalC,GAAK,EACpCmC,EAAgB,IAAInC,CAAC,EAEvB,OAAOmC,CACT,EACA,cAAcd,EAAYG,EAAiB,GAAO,CAChD,GAAI,KAAK,gBAAkBA,EACzB,OAAOH,EAAW,UAEpB,MAAMe,EAAUf,EAAW,WAAa,CAAA,EACxC,MAAO,CACL,GAAGe,EACH,GAAG,IAAI,MAAMf,EAAW,yBAA2Be,EAAQ,MAAM,EAAE,KACjE,IACF,CACF,CACF,EACA,kBAAkBC,EAAQ,CAKxB,GAJIA,IAAW,SACbA,EAAS,KAAK,WAAa1B,GAE7B0B,EAASA,EAAUA,EAAS1B,EACxB,KAAK,eACP,OAAI0B,IAAW,KAAK,WAClB,QAEF,KAAK,UAAY,CAAA,EACjB,KAAK,WAAaA,EAClBC,EAAS,IAAM,KAAK,MAAK,CAAE,EACpB,KAAK,aAAaD,CAAM,GAEjC,MAAME,EAAaF,EAAS1B,EACvB,KAAK,gBAAgB,IAAI4B,CAAU,IACtC,KAAK,gBAAgB,IAAIA,CAAU,EACnC,KAAK,aAAaF,CAAM,EAE5B,EACA,aAAaA,EAAQ,CACf,KAAK,kBACP,KAAK,gBAAgB,OAAO,KAAK,UAAU,EAC3C,KAAK,gBAAgB,MAAK,GAE5B,KAAK,gBAAkB,IAAI,gBAC3B,KAAK,WAAaA,EAClB,MAAMjD,EAAM,IAAI,IAAI,KAAK,aAAc,OAAO,SAAS,MAAM,EACvDyC,EAAS,IAAI,gBAAgBzC,EAAI,MAAM,EAEzC,KAAK,gBAAgByC,EAAO,OAAO,GAAG,KAAK,cAAc,EAE7DA,EAAO,OACL,YACA,KAAK,iBAAmB,KAAK,iBAAiB,GAAK,GACrD,EACAA,EAAO,OAAO,SAAUQ,CAAM,EAC9BR,EAAO,OAAO,QAASlB,CAAmB,EAC1CvB,EAAI,OAASyC,EAEb,KAAK,eAAiBQ,EAAS1B,EAC/BoB,EAAQ3C,EAAK,CAAA,EAAI,KAAK,gBAAgB,MAAM,EAAE,KAAMoD,GAAW,CACxDA,IAGL,KAAK,gBAAkB,KACnB,KAAK,eACP,KAAK,UAAYA,EAAO,QAExB,KAAK,UAAY,CACf,GAAG,KAAK,UAAU,MAAM,EAAGH,CAAM,EACjC,GAAGG,EAAO,QACV,GAAG,KAAK,UAAU,MAAMH,EAASG,EAAO,QAAQ,MAAM,CACxD,EAEJ,CAAC,CACH,EACA,SAAS,CAAE,SAAA9B,EAAU,KAAAlB,GAAQ,CAC3B,KAAK,SAAWkB,EAChB,KAAK,aAAelB,GAAQ,EAC5B8C,EAAS,IAAM,KAAK,MAAK,CAAE,CAC7B,EACA,eAAgB,CACd,KAAK,SAAW,KAChBA,EAAS,IAAM,KAAK,MAAK,CAAE,CAC7B,EACA,OAAQ,CACN,OAAO,SAAS,EAAG,KAAK,MAAM,QAAQ,SAAS,CACjD,EACA,cAAe,CACb,KAAK,WAAa,GAClB,KAAK,SAAW,IAClB,EACA,aAAc,CACZ,KAAK,SAAW,KACZ,KAAK,oBACP,KAAK,WAAa,GAEtB,EACA,OAAO,CAAE,KAAAG,EAAM,QAAAC,GAAW,CACxB,KAAK,SAAW,KAChB,QAAQ,IAAI,qBAAsBD,EAAM,eAAgBC,CAAO,EAC/D,IAAIC,EAAY,GACZF,IACFE,EAAY,IAEd,UAAW5G,KAAS2G,EAAQ,SACtB3G,IACF4G,EAAY,IAGhB,GAAI,CAACA,EAAW,CACd,KAAK,SAAW,KAChB,MACF,CACA,KAAK,SAAW,CACd,KAAAF,EACA,QAAAC,EACA,IAAK,KAAK,aAAa,CAAE,KAAAD,EAAM,QAAAC,CAAM,CAAG,EACxC,KAAM,GACN,QAAS,CAAA,EACT,UAAW,CAAA,CACb,EACAX,EAAQ,KAAK,SAAS,GAAG,EAAE,KAAMa,GAC/B,KAAK,kBAAkBA,CAAQ,CACjC,CACF,EACA,aAAa,CAAE,KAAAH,EAAM,QAAAC,GAAW,CAC9B,MAAMG,EAAU,KAAK,WAAW,UAC1BzD,EAAM,IAAI,IAAIyD,EAAS,OAAO,SAAS,MAAM,EAC7ChB,EAAS,IAAI,gBAAgBzC,EAAI,MAAM,EAEzCqD,EACFZ,EAAO,OAAO,IAAKY,CAAI,EAEvBZ,EAAO,OAAO,SAAU,GAAG,EAEzB,KAAK,kBACPA,EAAO,OAAO,YAAa,KAAK,iBAAiB,EAAE,EAErD,SAAW,CAACxD,EAAKtC,CAAK,IAAK2G,EAAQ,QAAO,EACxC,GAAI3G,EACF,GAAI,OAAOA,GAAU,SACnB,UAAW+G,KAAU/G,EACfA,EAAM+G,CAAM,GACdjB,EAAO,OAAOiB,EAAQ/G,EAAM+G,CAAM,CAAC,OAIvCjB,EAAO,OAAOxD,EAAKtC,CAAK,EAK9B,OAAAqD,EAAI,OAASyC,EACNzC,EAAI,SAAQ,CACrB,EACA,kBAAkBwD,EAAU,CAC1B,KAAK,SAAS,SAAWA,EACzB,MAAMG,EAAc,CAAA,EAQpB,GAPAH,EAAS,QAAQ,QAASI,GAAM,CAC9B,MAAMC,EAAQpC,EAAamC,EAAE,QAAQ,EACpB,KAAK,WAAW,UAAU,KAAK,gBAAgBC,CAAK,CAAC,IACrD,QACfF,EAAY,KAAKE,CAAK,CAE1B,CAAC,EACGF,EAAY,OAAS,EAAG,CAC1B,MAAM3D,EAAM,IAAI,IACd,KAAK,WAAW,cAChB,OAAO,SAAS,MAClB,EACMyC,EAAS,IAAI,gBAAgBzC,EAAI,MAAM,EAC7CyC,EAAO,OAAO,MAAOkB,EAAY,KAAK,GAAG,CAAC,EAC1C3D,EAAI,OAASyC,EAEbE,EAAQ3C,CAAG,EAAE,KAAM8D,GAAiB,CAClC,KAAK,iBAAiBN,EAAS,QAASM,EAAa,OAAO,CAC9D,CAAC,CACH,MACE,KAAK,iBAAiBN,EAAS,QAAS,CAAA,CAAE,CAE9C,EACA,iBAAiBO,EAASC,EAAiB,CACzC,MAAMC,EAAgB,CAAA,EAChBC,EAAO,CAAA,EACb,IAAIC,EAAW,EACf,MAAMC,EAAW,CAAA,EACXC,EAAe,CAAA,EACrBL,EAAgB,QAAQ,CAAC,EAAGpD,IAAOwD,EAAS,EAAE,EAAE,EAAIxD,CAAE,EACtDmD,EAAQ,QAASH,GAAM,CACrB,MAAMC,EAAQpC,EAAamC,EAAE,QAAQ,EAC/BU,EAAY,CAChB,MAAOV,EAAE,MAAM,QAAQ,WAAY,OAAO,EAC1C,OAAQA,EAAE,OACV,gBAAiBA,EAAE,eACrB,EACA,GAAIM,EAAKN,EAAE,QAAQ,IAAM,OAAW,CAClC,IAAItC,EAAW,KAAK,WAAW,UAAU,KAAK,gBAAgBuC,CAAK,CAAC,EACpE,GAAIvC,IAAa,SACfA,EAAW0C,EAAgBI,EAASP,CAAK,CAAC,EACtCvC,IAAa,QAGf,OAGJ+C,EAAa,KAAK/C,CAAQ,EAC1B4C,EAAKN,EAAE,QAAQ,EAAIO,EACnBA,GAAY,EACZF,EAAc,KAAK,CACjB,SAAA3C,EACA,MAAO,CAACgD,CAAS,EAClB,CACH,MACEL,EAAcC,EAAKN,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAKU,CAAS,CAExD,CAAC,EACD,KAAK,SAAS,UAAYD,EAC1B,KAAK,SAAS,QAAUJ,EACxB,KAAK,SAAS,SAAWE,EACzB,KAAK,SAAS,KAAO,EACvB,EACA,uBAAwB,CACtB,KAAK,SAAS,KAAO,GACrBxB,EAAQ,KAAK,SAAS,SAAS,KAAK,IAAI,EAAE,KAAMa,GAC9C,KAAK,kBAAkBA,CAAQ,CACjC,CACF,EACA,gBAAgBe,EAAW,CACzB,KAAK,iBAAmBA,EACxB,KAAK,kBAAiB,CACxB,EACA,oBAAqB,CACf,KAAK,OAAO,UACd,OAAO,QAAQ,aACb,CAAA,EACA,GACA,KAAK,YAAY,MAAQ,EACrB,OAAO,SAAS,SAChB,IAAI,KAAK,WAAW,EAC1B,CAEJ,EACA,gBAAiB,CACf,KAAK,IACF,iBAAiB,4BAA4B,EAC7C,QAASC,GAAOC,EAAQ,oBAAoBD,CAAE,CAAC,CACpD,GAEF,MAAO,CACL,kBAAmB,CACjB,KAAK,mBAAkB,EACvB,KAAK,eAAc,CACrB,EACA,UAAW,CACT,KAAK,mBAAkB,CACzB,GAEF,SAAU,CACR,MAAO,CAAE,OAAQ,KAAK,OAAQ,KAAM,KAAK,OAAO,IAAG,CACrD,CACF,MAvrBS,IAAI,UAAU,MAAM,sBAClBzH,GAAA,CAAA,MAAM,kBAAkB,MACtB,MAAM,8BAA8B,KAAK,sBAqBlCqB,GAAA,CAAA,MAAM,iBAAiB,sBAWvBE,GAAA,CAAA,MAAM,iBAAiB,EASvBC,GAAA,CAAA,MAAM,iBAAiB,EAK9BY,GAAA,CAAA,MAAM,6BAA6B,EAChCM,GAAA,CAAA,MAAM,yCAAyC,EASlDC,GAAA,CAAA,MAAM,sCAAsC,EAC3CC,GAAA,CAAA,MAAM,+BAA+B,YAYzC,MAAM,+BASEC,GAAA,CAAA,MAAM,iBAAiB,EASvBR,GAAA,CAAA,MAAM,iBAAiB,YAchB,MAAM,uBACpBU,GAAA,CAAA,MAAM,KAAK,EACT4E,GAAA,CAAA,MAAM,aAAa,uBAsBnB,MAAM,oBACJC,GAAA,CAAA,MAAM,UAAU,aASlBC,GAAA,CAAA,MAAM,yCAAyC,EAC7CC,GAAA,CAAA,MAAM,oBAAoB,EAWAC,GAAA,CAAA,MAAM,qBAAqB,EACzDC,GAAA,CAAA,MAAM,uBAAuB,EAC3BC,GAAA,CAAA,MAAM,UAAU,YAEjB,MAAM,qCAGFC,GAAA,CAAA,MAAM,YAAY,EAChBC,GAAA,CAAA,MAAM,iBAAiB,eAQjBC,GAAA,CAAA,MAAM,iBAAiB,2BAiBnC,MAAM,gDAOHC,GAAA,CAAA,MAAM,6BAA6B,2BAkBtC,MAAM,yNAhNhBlI,EA4NM,MAAA,KAAA,CA3NJC,EAsGM,MAtGNL,GAsGM,CArGJK,EA2FM,MA3FNJ,GA2FM,CA1FJI,EA4CM,MA5CNH,GA4CM,CA3CYsC,EAAA,cACdpC,EAMS,SAAA,OALP,KAAK,SACL,MAAM,2BACL,4BAAOI,EAAA,eAAAA,EAAA,cAAA,GAAAW,CAAA,EAEL,EAAAZ,EAAAC,EAAA,KAAK,gBAAgB,EAAA,CAAA,QAI5BJ,EAgCWO,EAAA,CAAA,IAAA,CAAA,EAAA,CA9BD6B,EAAA,sBADRpC,EAUS,SAAA,OARP,KAAK,SACL,MAAM,2BACL,MAAOI,EAAA,KAAK,SACb,iBAAe,UACd,QAAKY,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAL,GAAEP,EAAA,gBAAgBA,EAAA,eAAe,iBAEvCH,EAA6B,IAAA,CAA1B,MAAM,iBAAiB,EAAA,KAAA,EAAA,GAC1BA,EAAwD,OAAxDiB,GAAwDf,EAAvBC,EAAA,KAAK,QAAQ,EAAA,CAAA,mBAIxCA,EAAA,iBADRJ,EASI,IAAA,OAPD,KAAMI,EAAA,YACP,MAAM,2BACL,MAAOA,EAAA,KAAK,YACb,iBAAe,wBAEfH,EAA4B,IAAA,CAAzB,MAAM,gBAAgB,EAAA,KAAA,EAAA,GACzBA,EAA2D,OAA3DmB,GAA2DjB,EAA1BC,EAAA,KAAK,WAAW,EAAA,CAAA,mBAI3CC,EAAA,OAAO,cADfgC,EAOa8F,EAAA,OALV,MAAO/H,EAAA,KAAK,mBACZ,YAAWA,EAAA,SAAS,SAAQ,cAE7B,IAAwB,aAAxBH,EAAwB,IAAA,CAArB,MAAM,YAAY,EAAA,KAAA,EAAA,GACrBA,EAAkE,OAAlEoB,GAAkElB,EAAjCC,EAAA,KAAK,kBAAkB,EAAA,CAAA,oDAK9DH,EASM,MATNgC,GASM,CARJhC,EAOO,OAPPsC,GAOO,CANWH,EAAA,cAAhBpC,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAiC,EAAA,WAAW,KAAK,EAAA,CAAA,aAErBpC,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAC,EAAA,aAAa,EAAG,IAACD,EAAGC,EAAA,KAAK,SAAS,EAAA,CAAA,YAI3CH,EASM,MATNuC,GASM,CARJvC,EAOK,KAPLwC,GAOK,CANaL,EAAA,cAAhBpC,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAiC,EAAA,SAAS,KAAK,EAAA,CAAA,aAEnBpC,EAEWO,EAAA,CAAA,IAAA,CAAA,EAAA,CADNL,EAAAC,EAAAiC,EAAA,WAAW,KAAK,EAAA,CAAA,YAMhB,CAAAA,EAAA,UAAYA,EAAA,mBADrBrC,IAAAC,EAsBM,MAtBNoI,GAsBM,CAjBKhG,EAAA,gBAQTpC,EAQS,SAAA,OANP,KAAK,SACL,MAAM,gCACL,4BAAOI,EAAA,aAAAA,EAAA,YAAA,GAAAW,CAAA,mBAERd,EAAyB,IAAA,CAAtB,MAAM,aAAa,EAAA,KAAA,EAAA,GACtBA,EAAqD,OAArDiC,GAAqD/B,EAApBC,EAAA,KAAK,KAAK,EAAA,CAAA,UAhB7CJ,EAQS,SAAA,OANP,KAAK,SACL,MAAM,gCACL,4BAAOI,EAAA,cAAAA,EAAA,aAAA,GAAAW,CAAA,mBAERd,EAA0B,IAAA,CAAvB,MAAM,cAAc,EAAA,KAAA,EAAA,GACvBA,EAAsD,OAAtDyC,GAAsDvC,EAArBC,EAAA,KAAK,MAAM,EAAA,CAAA,mBAc1CgC,EAAA,aAAeA,EAAA,cADvBC,EAQEgG,EAAA,OANC,SAAUjG,EAAA,SACV,UAAWA,EAAA,iBACX,mBAAkBA,EAAA,eAClB,QAASA,EAAA,SAAS,QAClB,cAAahC,EAAA,YACb,SAAQA,EAAA,iHAGFgC,EAAA,UAAXrC,IAAAC,EAYM,MAZN2C,GAYM,CAXJ1C,EAUM,MAVN2C,GAUM,CATJ3C,EAQM,MARNuH,GAQM,CAPJlG,EAMEgH,EAAA,CALC,eAAclG,EAAA,SAAS,aACvB,mBAAkBA,EAAA,SAClB,KAAMA,EAAA,aACN,OAAQ/B,EAAA,OACR,SAAUD,EAAA,oGAKP,CAAAgC,EAAA,UAAYA,EAAA,cAAxBpC,EAgCM,MAAAuI,GAAA,CA/BYnG,EAAA,SAAS,MACvBrC,EAAA,EAAA,EAAAC,EAMEO,EAAA,CAAA,IAAA,CAAA,EAAAC,EALiB4B,EAAA,SAAS,QAAnB8D,QADT7D,EAMEmG,EAAA,CAJC,IAAKtC,EAAO,SAAS,GACrB,SAAUA,EAAO,SACjB,MAAOA,EAAO,MACd,WAAU9F,EAAA,6DAIbL,IAAAC,EAOM,MAPNyI,GAOM,CANJxI,EAKM,MALNwH,GAKM,CAJJnG,EAGEoH,EAAA,CAFC,UAAWtG,EAAA,SAAS,UACpB,WAAUhC,EAAA,kDAKRgC,EAAA,SAAS,MAAQA,EAAA,SAAS,SAAS,KAAK,UAAnDpC,EAWM,MAAA2I,GAAA,CAVJ1I,EASM,MATNyH,GASM,CARJzH,EAOM,MAPN0H,GAOM,CANJ1H,EAKS,SAAA,CAJP,MAAM,yBACL,4BAAOG,EAAA,uBAAAA,EAAA,sBAAA,GAAAW,CAAA,EAEL,EAAAZ,EAAAC,EAAA,KAAK,QAAQ,EAAA,CAAA,8BAM1BwI,EAAA3I,EAqEM,MArEN2H,GAqEM,CApEJ3H,EAmEM,MAnEN4H,GAmEM,CAlEJ5H,EAiEM,MAjEN6H,GAiEM,CA9DI1F,EAAA,kBAFRrC,IAAAC,EA2BM,MA3BN6I,GA2BM,CAvBJ5I,EAsBK,KAtBL8H,GAsBK,CArBH9H,EAUK,KAVL+H,GAUK,CATH/H,EAQI,IAAA,CAPF,KAAK,KACJ,yBAAeG,EAAA,gBAAe,EAAA,CAAA,SAAA,CAAA,GAC9B,MAAOA,EAAA,KAAK,OACb,iBAAe,0BAEfH,EAA0B,IAAA,CAAvB,MAAM,cAAc,EAAA,KAAA,EAAA,GACvBA,EAAsD,OAAtDgI,GAAsD9H,EAArBC,EAAA,KAAK,MAAM,EAAA,CAAA,YAGhDL,EAAA,EAAA,EAAAC,EASKO,EAAA,KAAAC,EARsB4B,EAAA,eAAc,CAA/BiF,EAAW3D,SADrB1D,EASK,KAAA,CAPF,IAAKqH,EAAU,GAChB,SAAM,kBAAiB,CAAA,OACL3D,IAAMtB,EAAA,eAAe,OAAM,EAAA,CAAA,IAE7CnC,EAEI,IAAA,CAFD,KAAK,KAAM,QAAKS,EAAAC,IAAUP,EAAA,gBAAgBiH,CAAS,EAAA,CAAA,SAAA,CAAA,CACjD,EAAAlH,EAAAkH,EAAU,IAAI,EAAA,EAAAyB,EAAA,4BAQjB1G,EAAA,kBAAkB,aAF1BrC,IAAAC,EAMM,MANN+I,GAMM,eAFJ9I,EAA2C,IAAA,CAAxC,MAAM,6BAA6B,EAAA,KAAA,EAAA,GACtCA,EAA6C,MAAA,CAAxC,UAAQmC,EAAA,iBAAiB,oCAGhCnC,EAUM,MAVNiI,GAUM,QATJlI,EAQSO,EAAA,KAAAC,EAPa4B,EAAA,YAAbiF,QADTrH,EAQS,SAAA,CANN,IAAKqH,EAAU,GAChB,KAAK,SACL,MAAM,mEACL,QAAK1G,GAAEP,EAAA,gBAAgBiH,CAAS,CAE9B,EAAAlH,EAAAkH,EAAU,IAAI,EAAA,EAAA2B,EAAA,YAGrB1H,EAIEoH,EAAA,CAHC,UAAWtG,EAAA,UACX,WAAUhC,EAAA,SACV,WAAUA,EAAA,mEAGLgC,EAAA,gBAAkBhC,EAAA,aAD1BL,IAAAC,EAUM,MAVNiJ,GAUM,CANJhJ,EAKS,SAAA,CAJP,MAAM,yBACL,0BAAqBG,EAAA,oBAAiB,CAAA,SAAA,CAAA,EAEpC,EAAAD,EAAAC,EAAA,KAAK,QAAQ,EAAA,CAAA,yBAhEZ,CAAA8I,EAAA,CAAA9G,EAAA,WAAaA,EAAA,QAAQ,qEClJvC,SAAS+G,GAAqBC,EAAUC,EAAO,CAC7CC,EAAU3E,EAAgB,CACxB,QAAS,GACT,GAAG0E,CACP,CAAG,EAAE,MAAMD,CAAQ,CACnB,CAEA,SAASG,GAA+BH,EAAUC,EAAO,CACvDC,EAAUE,GAAoBH,CAAK,EAAE,MAAMD,CAAQ,CACrD,CAEA,MAAM,KAAK,SAAS,iBAAiB,mBAAmB,CAAC,EAAE,QAAS9B,GAAO,CACzE6B,GAAqB7B,EAAI,CACvB,YAAaA,EAAG,QAAQ,cACxB,gBAAiB,KAAK,MAAMA,EAAG,QAAQ,UAAU,EACjD,KAAM,SAASA,EAAG,QAAQ,OAAQ,EAAE,EACpC,OAAQ,KAAK,MAAMA,EAAG,QAAQ,QAAQ,EACtC,SAAU,KAAK,MAAMA,EAAG,QAAQ,UAAU,CAC9C,CAAG,CACH,CAAC,EAED,MAAM,KAAK,SAAS,iBAAiB,6BAA6B,CAAC,EAAE,QAClEA,GAAO,CACNiC,GAA+BjC,EAAI,CACjC,mBAAoB,KAAK,MAAMA,EAAG,QAAQ,oBAAoB,EAC9D,OAAQ,KAAK,MAAMA,EAAG,QAAQ,QAAQ,CAC5C,CAAK,CACH,CACF","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}