{"version":3,"file":"CatalogueMQA.vue.mjs","sources":["../../lib/data-provider-interface/CatalogueMQA.vue"],"sourcesContent":["<template>\n    <div class=\"container mb-3\">\n        <div>\n            <div>\n                <div class=\"debug\">\n                    <strong> API object:</strong> <br><br>\n\n                    <textarea> {{ token }} </textarea>\n                    <hr>\n                    <!-- Disabled for PPE release (no backend on PPE yet)-->\n                    {{ notficationInfo }}\n\n                    <br> --- <br>\n\n                    {{ mailList }}\n\n                    <br>---<br>\n                    <strong>Fequency:</strong> <br>\n                    weekly: {{ weekly }}<br>\n                    monthly: {{ monthly }} <br>\n                    <p></p>\n                    unit: {{ frequencyUnit }} <br>\n                    value: {{ frequencyValue }}\n\n                    <br>---<br>\n                    threshold: {{ threshold }}\n\n                </div>\n                <h1>{{ $t('message.dpi.catalogue.mqa.settings') }}</h1>\n                <p>{{ $t('message.dpi.catalogue.mqa.configurationfor') }}\n                    <strong>{{ catalogId }}</strong>\n                </p>\n              <p>\n                <span v-html=\"$t('message.dpi.catalogue.mqa.ratingchecks')\"></span>\n                    <b><span v-if=\"!active\">{{ $t('message.dpi.catalogue.mqa.deactivated') }}</span>\n                        <span v-if=\"active\">{{ $t('message.dpi.catalogue.mqa.activated') }}</span></b>.\n                </p>\n            </div>\n\n            <button type=\"button\" :class=\"{ 'btn btn-primary mb-5': !active, 'btn btn-secondary': active }\"\n                @click=\"handleActivate()\">\n                {{ activatedString }}\n            </button>\n\n            <button type=\"button\" :class=\"{ 'btn btn-action mb-5': !active, 'btn btn-action': active }\" @click=\"openMqaReport()\">\n                <span class=\"mr-1\"> {{ $t('message.dpi.catalogue.mqa.mqareport') }}</span>\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\"\n                    class=\"bi bi-box-arrow-up-right mb-1\" viewBox=\"0 0 16 16\">\n                    <path fill-rule=\"evenodd\"\n                        d=\"M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5\" />\n                    <path fill-rule=\"evenodd\"\n                        d=\"M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0z\" />\n                </svg>\n            </button>\n\n\n\n        </div>\n\n        <div v-if=\"active\">\n            <div class=\"mqaWrapper\">\n              <h3>{{ $t('message.dpi.catalogue.mqa.notificationthreshold.title') }}</h3>\n              <div v-html=\"$t('message.dpi.catalogue.mqa.notificationthreshold.description')\"></div>\n                <div class=\"w-50 mt-4\">\n                    <div class=\"d-flex justify-content-between\">\n                        <span><b>-1</b></span>\n                        <span><b>-405</b></span>\n                    </div>\n                    <input type=\"range\" v-model=\"threshold\" min=\"1\" max=\"405\" />\n                  <p>{{ $t('message.dpi.catalogue.mqa.notificationthreshold.notify') }} <b>-{{ threshold }}</b> </p>\n                </div>\n            </div>\n\n            <div class=\"mqaWrapper\">\n              <h3>{{ $t('message.dpi.catalogue.mqa.frequencyratingchecks') }}</h3>\n              <span>{{ $t('message.dpi.catalogue.mqa.configurethefrequency.description') }}</span>\n                <div class=\"d-flex mt-3\">\n                    <div class=\"mr-3 my-3\">\n                        <button type=\"button\" class=\"btn btn-simple\" @click=\"setWeekly()\"\n                            :class=\"{ 'activeChoiceButton': weekly }\">{{ $t('message.dpi.catalogue.mqa.configurethefrequency.weekly') }}</button>\n                        <div class=\"weekdays\" :class=\"{ 'blur': !weekly }\">\n                            <span v-for=\"(day, index) in week\" :key=\"index\">\n                                <button :disabled=\"!weekly\" class=\"dayButtons\"\n                                    :class=\"{ 'activeItem': selectedDay === index }\" @click=\"selectDay(index)\">\n                                    {{ day }}\n                                </button>\n                            </span>\n                        </div>\n                    </div>\n                    <div class=\"my-3\">\n                        <button type=\"button\" :class=\"{ 'activeChoiceButton': monthly }\" class=\"btn btn-simple\"\n                            @click=\"setMonthly()\">{{ $t('message.dpi.catalogue.mqa.configuremonthly') }}</button>\n                        <div class=\"d-flex daypicker my-3\" :class=\"{ 'blur': !monthly }\">\n                            <input v-model=\"daysInMonth\" @input=\"selectDay(index)\" :class=\"{ dynamicWidth: inputWidth }\"\n                                :disabled=\"!monthly\">\n                            <div class=\"caretWrap\">\n                                <button @click=\"editDate('up')\" class=\"caretButtons ml-1\"><svg\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n                                        class=\"bi bi-caret-up-fill\" viewBox=\"0 0 16 16\">\n                                        <path\n                                            d=\"m7.247 4.86-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z\" />\n                                    </svg></button>\n                                <button @click=\"editDate()\" class=\"caretButtons mr-1\"><svg\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"currentColor\"\n                                        class=\"bi bi-caret-down-fill\" viewBox=\"0 0 16 16\">\n                                        <path\n                                            d=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n                                    </svg></button>\n                            </div>\n                          <span>{{ $t('message.dpi.catalogue.mqa.configurethedayofmonth') }}</span>\n\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"mqaWrapper\">\n              <h3>{{ $t('message.dpi.catalogue.mqa.recipientsmail') }}</h3>\n              <span>{{ $t('message.dpi.catalogue.mqa.mailaddressesforrecieving') }}</span>\n                <table class=\"mt-4\" ref=\"mailButtonWrap\" v-if=\"mailList.length !== 0\">\n                    <tr>\n                        <th>Mail</th>\n                    </tr>\n                    <tr v-for=\"(item, index) in mailList\" class=\"mailItems\" :key=\"index\">\n                        <td>\n                            <span v-if=\"!editMode\">{{ item }}</span>\n                            <input type=\"text\" v-model=\"mailList[index]\" class=\"mail-input\" v-if=\"editMode\"\n                                @input=\"editErrors[index] = ''\" :class=\"{ 'invalidNewMail': editErrors[index] }\">\n\n                            <div>\n                                <button type=\"button\" class=\"btn btn-simple\"\n                                    @click=\"editMode ? saveMail(index) : editMail(index)\">\n                                    {{ editMode ?  $t('message.dpi.catalogue.mqa.save')  : $t('message.dataupload.menu.edit')  }}\n                                </button>\n                                <button type=\"button\" class=\"btn btn-simple\" @click=\"deleteMail(index)\">{{ $t('message.dataupload.menu.delete') }}</button>\n                            </div>\n                        </td>\n                        <span class=\"errormsg\" v-if=\"editErrors[index]\">{{ editErrors[index] }}</span>\n                    </tr>\n                </table>\n                <div class=\"d-flex mt-3\">\n                    <input type=\"text\" v-model=\"newMail.mail\" @input=\"newMail.isValid = true\"\n                        :class=\"{ 'invalidNewMail': !newMail.isValid }\" :placeholder=\"$t('message.dpi.catalogue.mqa.enteremail')\" class=\"mail\">\n                    <button type=\"button\" class=\"btn btn-simple mx-3\" @click=\"addNewMail()\">{{ $t('message.dpi.catalogue.mqa.addmail') }}</button>\n                </div>\n                <span class=\"errormsg\" v-if=\"!newMail.isValid\">*Invalid email format</span>\n            </div>\n\n            <div class=\"actionWrapper\">\n                <button type=\"button\" class=\"btn btn-primary\" @click=\"postNotificationSettings\">{{ $t('message.dpi.catalogue.mqa.save') }}</button>\n                <button type=\"button\" class=\"btn btn-cancel\" @click=\"back()\">{{ $t('message.dpi.catalogue.mqa.cancel') }}</button>\n            </div>\n        </div>\n    </div>\n\n</template>\n<script setup>\n\nimport { ref } from 'vue';\nimport { useRoute } from 'vue-router'\nimport { getCurrentInstance } from \"vue\";\nimport { useStore } from 'vuex';\nimport { useRouter } from 'vue-router';\nimport { mapActions } from 'vuex'\nimport { computed } from 'vue'\nimport { mapGetters } from 'vuex'\n\nimport axios from 'axios'\n\nconst store = useStore();\nconst router = useRouter();\nconst getUserDrafts = computed(() => store.getters['auth/getUserDrafts'])\nconst getUserData = computed(() => store.getters['auth/getUserData'])\nconst token = computed(() => getUserData.value.rtpToken)\n\n// Update the mapActions usage\nconst authActions = mapActions('auth', {\n    updateUserData: 'updateUserData'\n})\n\n// Destructure the action\nconst { updateUserData } = authActions\n\nconst showSnackbar = (payload) => {\n    store.dispatch('snackbar/showSnackbar', payload);\n};\n\nconst triggerSnackbar = () => {\n    showSnackbar({\n        message: 'Saved Successfully',\n        variant: 'success',\n    });\n};\n\n// Map the showSnackbar action from the snackbar module\n\nconst route = useRoute()\n\nlet monthly = ref(false)\nlet weekly = ref(false)\nlet mailButtonWrap = ref(null)\nlet activatedString = ref('Activate')\nlet inputWidth = ref(false)\nlet active = ref(false)\nlet mailList = ref()\nlet week = ['Mo', 'Tue', 'We', 'Th', 'Fr', 'Sa', 'Su']\nlet daysInMonth = ref(1)\nlet editMode = ref(false);\nlet threshold = ref(1);\nlet frequencyUnit = ref('');\nlet frequencyValue = ref('');\nlet selectedDay = ref(null);\nconst catalogId = route.params.id\nconst app = getCurrentInstance()\nconst notificationBaseUrl = app.appContext.app.config.globalProperties.$env.api.notificationBaseUrl\nconst apiKey = app.appContext.app.config.globalProperties.$env.api.apiKey\n\nconst { appContext } = getCurrentInstance();\nconst $t = appContext.config.globalProperties.$t;\n\n\n\n\nconst openMqaReport = () => {\n    const mqaBaseUrl = 'https://data.europa.eu';\n    const locale = route.query.locale || 'en';\n    const mqaUrl = `${mqaBaseUrl}/mqa/catalogues/${catalogId}?locale=${locale}`;\n    window.open(mqaUrl, '_blank');\n}\n\nconst selectDay = (index) => {\n    if (weekly.value) {\n        selectedDay.value = index;\n        frequencyValue.value = selectedDay.value; // Update frequencyValue when a day is selected\n    }\n};\n\nconst setWeekly = () => {\n    weekly.value = true;\n    monthly.value = false;\n    if (typeof frequencyValue.value === 'number') {\n        selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n    }\n\n    // selectedDay.value = frequencyValue.value;\n};\n\nconst setMonthly = () => {\n    weekly.value = false;\n    monthly.value = true;\n    if (typeof frequencyValue.value === 'number') {\n      daysInMonth.value = frequencyValue.value;\n    }\n    // selectedDay.value = frequencyValue.value; // Set the day of the month based on frequencyValue\n};\n\nconst notficationInfo = ref({})\n\nconst isValidEmail = (email) => {\n    const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n    return regex.test(email);\n};\n\nlet newMail = ref({ mail: '', isValid: true });\nlet editErrors = ref({});\n\n// enabeld for PPE release (dummy data)\n//  mailList.value = [{ 'mail': \"mail@mail2.com\" }, { 'mail': \"mail@mail1.com\" }]\n\nconst fetchNotificationInfo = async () => {\n    const config = {\n        method: 'get',\n        url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n        headers: {\n            Authorization: `Bearer ${token.value}`,\n        },\n    }\n\n    try {\n        const response = await axios.request(config)\n        notficationInfo.value = response.data\n\n        if (notficationInfo.value.activeStatus === true) {\n            active.value = true\n            activatedString.value = $t('message.dpi.catalogue.mqa.deactivate');\n        } if (notficationInfo.value.activeStatus === false) {\n            active.value = false\n            activatedString.value = $t('message.dpi.catalogue.mqa.activate');\n        }\n\n        mailList.value = notficationInfo.value.receiverEmailList\n        frequencyUnit.value = notficationInfo.value.frequency.unit\n        frequencyValue.value = notficationInfo.value.frequency.value\n        threshold.value = notficationInfo.value.threshold\n\n        if (frequencyUnit.value === 'week') {\n            weekly.value = true\n            monthly.value = false\n            selectedDay.value = frequencyValue.value; // Set the selected day based on frequencyValue\n        } else if (frequencyUnit.value === 'month') {\n            weekly.value = false\n            monthly.value = true\n            daysInMonth.value = frequencyValue.value\n        }\n\n        console.log('Response:', response)\n    } catch (error) {\n        console.log('Full error:', error)\n    }\n}\n\nconst postNotificationSettings = async () => {\n\n    if (weekly.value === true) {\n        frequencyUnit.value = \"week\"\n        frequencyValue.value = selectedDay.value\n    } else if (monthly.value === true) {\n        frequencyUnit.value = \"month\"\n        frequencyValue.value = daysInMonth.value\n    }\n\n    const config = {\n        method: 'post',\n        url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n        headers: {\n            Authorization: `Bearer ${token.value}`,\n            'Content-Type': 'application/json',\n        },\n        withCredentials: true,\n        data: JSON.stringify({\n            receiverEmailList: mailList.value,\n            threshold: Number(threshold.value),\n            frequency: {\n                unit: frequencyUnit.value,\n                value: frequencyValue.value\n            },\n            activeStatus: true\n        })\n    }\n\n    try {\n        const response = await axios.request(config)\n        console.log('Settings updated:', response.data)\n        triggerSnackbar();\n        router.push({ name: 'DataProviderInterface-UserCatalogues' });\n        return response.data\n\n    } catch (error) {\n        triggerSnackbar({\n            message: 'Error updating settings.',\n            variant: 'error',\n        });\n\n        console.log('Error updating settings:', error)\n\n        throw error\n    }\n}\n\nfetchNotificationInfo()\n\nconst postDeactive = async () => {\n\n    const config = {\n        method: 'post',\n        url: `${notificationBaseUrl}/catalogue/${catalogId}/setting`,\n        headers: {\n            Authorization: `Bearer ${token.value}`,\n            'Content-Type': 'application/json',\n        },\n        withCredentials: true,\n        data: JSON.stringify({\n            activeStatus: active.value\n        })\n    }\n\n    try {\n        const response = await axios.request(config)\n        console.log('Settings updated:', response.data)\n        triggerSnackbar();\n        if (!active.value) { router.push({ name: 'DataProviderInterface-UserCatalogues' }); }\n        return response.data\n\n\n    } catch (error) {\n        triggerSnackbar({\n            message: 'Error updating settings.',\n            variant: 'error',\n        });\n\n        console.log('Error updating settings:', error)\n\n        throw error\n\n    }\n}\n\nconst editMail = () => {\n    editMode.value = true\n    showSnackbar({\n        message: 'Email added successfully.',\n        variant: 'success',\n    });\n}\n\nconst saveMail = (index) => {\n    const email = mailList.value[index].trim();\n    if (isValidEmail(email)) {\n        editMode.value = false;\n        delete editErrors.value[index];\n    } else {\n        editErrors.value[index] = '*Invalid email format';\n    }\n};\n\nconst deleteMail = (index) => {\n    mailList.value.splice(index, 1);\n}\n\nconst editDate = (count) => {\n    if (count === \"up\" && daysInMonth.value < 28) {\n        if (daysInMonth.value > 8) {\n            inputWidth.value = true\n        }\n        daysInMonth.value++\n    }\n    else if (daysInMonth.value > 1) {\n        if (daysInMonth.value < 11) {\n            inputWidth.value = false\n        }\n        daysInMonth.value--\n    }\n}\n\nconst addNewMail = () => {\n    if (newMail.value.mail.trim() === '') {\n        newMail.value.isValid = false;\n        return;\n    }\n    if (isValidEmail(newMail.value.mail)) {\n        mailList.value.push(newMail.value.mail);\n        newMail.value.mail = ''; // Clear input after successful addition\n        newMail.value.isValid = true;\n    } else {\n        newMail.value.isValid = false;\n    }\n}\nconst handleActivate = () => {\n    if (!active.value) {\n        active.value = true\n        activatedString.value =  $t('message.dpi.catalogue.mqa.deactivate');\n        postDeactive()\n    } else {\n        active.value = false\n        activatedString.value = $t('message.dpi.catalogue.mqa.activate');\n        postDeactive()\n    }\n}\n\nconst back = () => {\n    router.push({ name: 'DataProviderInterface-UserCatalogues' });\n}\n\n</script>\n<style scoped>\n\n.btn-action {\n  border: solid 1px #3f3f3f;\n}\n\n.btn-action:hover {\n  border: solid 1px #3f3f3f;\n  background-color: #3f3f3f;\n  color: #fff;\n}\n\n.debug {\n    position: fixed;\n    right: 20px;\n    top: 20px;\n    border-radius: 20px;\n    width: 400px;\n    z-index: 999999;\n    padding: 20px;\n    background: rgba(255, 255, 255, 0.2);\n    border-radius: 16px;\n    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);\n    backdrop-filter: blur(5px);\n    -webkit-backdrop-filter: blur(5px);\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    display: none;\n}\n\n.btn-simple {\n    border-color: rgb(115, 115, 115);\n}\n\n.btn-cancel {\n    border-color: transparent;\n}\n\n.mail {\n    width: 270px;\n    padding: 5px 5px 5px 10px;\n}\n\n\n.errormsg {\n    color: red;\n    font-size: 10px;\n}\n\n.activeChoiceButton {\n    background-color: var(--primary);\n    color: white;\n    border-color: var(--primary);\n\n    &:active {\n        background-color: #3E6CD5 !important;\n    }\n\n    &:focus {\n        outline: none;\n        background-color: #3E6CD5;\n    }\n\n    &:focus-visible {\n        outline: none;\n        background-color: #3E6CD5;\n    }\n}\n\n\n.invalid {\n    border-bottom: 1px solid red !important;\n}\n\n.blur {\n    opacity: 0.3;\n}\n\n.invalidNewMail {\n\n    border-radius: 2px;\n    border: 2px solid rgba(255, 0, 0, 0.336);\n\n    &:focus {\n        border-radius: 2px;\n        box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n        border: 1px solid rgba(255, 0, 0, 0.336);\n    }\n\n    &:focus-visible {\n        outline: 0;\n        border-radius: 2px;\n        box-shadow: 0 0 0 0.1rem rgba(255, 0, 0, 0.774);\n        border: 1px solid rgba(255, 0, 0, 0.336);\n    }\n}\n\n.editable {\n    transition: all 200ms ease-in-out;\n    padding-left: 0.5rem;\n    border-bottom: 2px solid var(--primary) !important;\n}\n\n.invalid {\n    border-bottom: 1px solid red !important;\n}\n\n.caretButtons {\n    all: unset;\n    cursor: pointer;\n}\n\n.caretWrap {\n    display: contents;\n\n}\n\n.actionWrapper {\n    display: flex;\n    flex-direction: row-reverse;\n    margin-bottom: 100px;\n\n    button {\n        margin-left: 1rem;\n    }\n}\n\ninput[type=\"range\"] {\n    width: 100%;\n}\n\n.mqaWrapper {\n    margin: 3rem 0;\n}\n\ntable {\n    margin-top: 1rem;\n    min-width: 50%;\n}\n\nth {\n    border-bottom: 1px solid lightgray;\n}\n\ntd {\n    display: flex;\n    justify-content: space-between;\n    padding: 15px 0 0 0cap;\n}\n\n.daypicker {\n    padding: 1rem;\n    border: 1px solid lightgray;\n    border-radius: 15px;\n\n    input {\n        width: 25px;\n        border: none;\n        background-color: unset;\n        font-weight: 700;\n    }\n\n}\n\n.dynamicWidth {\n    width: 22px !important;\n}\n\n.activeItem {\n    background-color: var(--primary);\n    color: white;\n}\n\n.weekdays {\n    border: 1px solid lightgray;\n    border-radius: 15px;\n    margin: 1rem 0;\n    overflow: hidden;\n\n    .dayButtons {\n        border: none;\n        display: inline-block;\n        text-align: center;\n        flex-direction: row;\n        min-width: 60px;\n        padding: 1rem;\n        border-right: 1px solid lightgray;\n        cursor: pointer;\n\n        &:focus-visible {\n            outline: unset;\n            background-color: #3E6CD5;\n            color: white;\n        }\n\n        &:hover {\n            background-color: #3E6CD5;\n            color: white;\n        }\n    }\n\n    span:last-child button {\n        border: none;\n    }\n}\n\n.mqaWrapper {\n    padding: 1rem;\n    background-color: #f3f6fc;\n    border-radius: 3px;\n}\n\nbutton {\n    background-color: unset;\n    border: 1px solid var(--primary);\n    color: black;\n\n    &:hover {\n        background-color: #3E6CD5;\n        color: white;\n        border: 1px solid #3E6CD5;\n    }\n}\n\n.btn-primary {\n    background-color: var(--primary);\n    color: white;\n\n}\n\n.btn-secondary {\n    color: #0e47cb;\n}\n\nbutton,\nspan {\n    transition: all 100ms ease-in-out;\n}\n</style>\n"],"names":["store","useStore","router","useRouter","computed","getUserData","token","mapActions","showSnackbar","payload","triggerSnackbar","route","useRoute","monthly","ref","weekly","mailButtonWrap","activatedString","inputWidth","active","mailList","week","daysInMonth","editMode","threshold","frequencyUnit","frequencyValue","selectedDay","catalogId","app","getCurrentInstance","notificationBaseUrl","appContext","$t","openMqaReport","mqaBaseUrl","locale","mqaUrl","selectDay","index","setWeekly","setMonthly","notficationInfo","isValidEmail","email","newMail","editErrors","fetchNotificationInfo","config","response","axios","error","postNotificationSettings","postDeactive","editMail","saveMail","deleteMail","editDate","count","addNewMail","handleActivate","back","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_cache","_toDisplayString","_unref","_createTextVNode","_normalizeClass","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_10","$event","_hoisted_11","_hoisted_12","_hoisted_13","_Fragment","_renderList","day","_hoisted_14","_hoisted_15","_hoisted_17","_hoisted_18","item","_vModelText","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_26","_hoisted_27"],"mappings":";;;;;;;;;;;;;;;AAwKA,UAAMA,IAAQC,GAAQ,GAChBC,IAASC,GAAS;AACF,IAAAC,EAAS,MAAMJ,EAAM,QAAQ,oBAAoB,CAAC;AACxE,UAAMK,IAAcD,EAAS,MAAMJ,EAAM,QAAQ,kBAAkB,CAAC,GAC9DM,IAAQF,EAAS,MAAMC,EAAY,MAAM,QAAQ;AAGnC,IAAAE,GAAW,QAAQ;AAAA,MACnC,gBAAgB;AAAA,IACpB,CAAC;AAKD,UAAMC,IAAe,CAACC,MAAY;AAC9B,MAAAT,EAAM,SAAS,yBAAyBS,CAAO;AAAA,IACnD,GAEMC,IAAkB,MAAM;AAC1B,MAAAF,EAAa;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,MACjB,CAAK;AAAA,IACL,GAIMG,IAAQC,GAAS;AAEvB,QAAIC,IAAUC,EAAI,EAAK,GACnBC,IAASD,EAAI,EAAK,GAClBE,IAAiBF,EAAI,IAAI,GACzBG,IAAkBH,EAAI,UAAU,GAChCI,IAAaJ,EAAI,EAAK,GACtBK,IAASL,EAAI,EAAK,GAClBM,IAAWN,EAAI,GACfO,IAAO,CAAC,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,IAAI,GACjDC,IAAcR,EAAI,CAAC,GACnBS,IAAWT,EAAI,EAAK,GACpBU,IAAYV,EAAI,CAAC,GACjBW,IAAgBX,EAAI,EAAE,GACtBY,IAAiBZ,EAAI,EAAE,GACvBa,IAAcb,EAAI,IAAI;AAC1B,UAAMc,IAAYjB,EAAM,OAAO,IACzBkB,IAAMC,EAAmB,GACzBC,IAAsBF,EAAI,WAAW,IAAI,OAAO,iBAAiB,KAAK,IAAI;AACjE,IAAAA,EAAI,WAAW,IAAI,OAAO,iBAAiB,KAAK,IAAI;AAEnE,UAAM,EAAE,YAAAG,GAAU,IAAKF,KACjBG,IAAKD,GAAW,OAAO,iBAAiB,IAKxCE,KAAgB,MAAM;AACxB,YAAMC,IAAa,0BACbC,IAASzB,EAAM,MAAM,UAAU,MAC/B0B,IAAS,GAAGF,CAAU,mBAAmBP,CAAS,WAAWQ,CAAM;AACzE,aAAO,KAAKC,GAAQ,QAAQ;AAAA,IAChC,GAEMC,IAAY,CAACC,MAAU;AACzB,MAAIxB,EAAO,UACPY,EAAY,QAAQY,GACpBb,EAAe,QAAQC,EAAY;AAAA,IAE3C,GAEMa,KAAY,MAAM;AACpB,MAAAzB,EAAO,QAAQ,IACfF,EAAQ,QAAQ,IACZ,OAAOa,EAAe,SAAU,aAChCC,EAAY,QAAQD,EAAe;AAAA,IAI3C,GAEMe,KAAa,MAAM;AACrB,MAAA1B,EAAO,QAAQ,IACfF,EAAQ,QAAQ,IACZ,OAAOa,EAAe,SAAU,aAClCJ,EAAY,QAAQI,EAAe;AAAA,IAGzC,GAEMgB,IAAkB5B,EAAI,EAAE,GAExB6B,IAAe,CAACC,MACJ,6BACD,KAAKA,CAAK;AAG3B,QAAIC,IAAU/B,EAAI,EAAE,MAAM,IAAI,SAAS,GAAI,CAAE,GACzCgC,IAAahC,EAAI,CAAA,CAAE;AAKvB,UAAMiC,KAAwB,YAAY;AACtC,YAAMC,IAAS;AAAA,QACX,QAAQ;AAAA,QACR,KAAK,GAAGjB,CAAmB,cAAcH,CAAS;AAAA,QAClD,SAAS;AAAA,UACL,eAAe,UAAUtB,EAAM,KAAK;AAAA,QACvC;AAAA,MACL;AAEA,UAAI;AACA,cAAM2C,IAAW,MAAMC,EAAM,QAAQF,CAAM;AAC3C,QAAAN,EAAgB,QAAQO,EAAS,MAE7BP,EAAgB,MAAM,iBAAiB,OACvCvB,EAAO,QAAQ,IACfF,EAAgB,QAAQgB,EAAG,sCAAsC,IAC/DS,EAAgB,MAAM,iBAAiB,OACzCvB,EAAO,QAAQ,IACfF,EAAgB,QAAQgB,EAAG,oCAAoC,IAGnEb,EAAS,QAAQsB,EAAgB,MAAM,mBACvCjB,EAAc,QAAQiB,EAAgB,MAAM,UAAU,MACtDhB,EAAe,QAAQgB,EAAgB,MAAM,UAAU,OACvDlB,EAAU,QAAQkB,EAAgB,MAAM,WAEpCjB,EAAc,UAAU,UACxBV,EAAO,QAAQ,IACfF,EAAQ,QAAQ,IAChBc,EAAY,QAAQD,EAAe,SAC5BD,EAAc,UAAU,YAC/BV,EAAO,QAAQ,IACfF,EAAQ,QAAQ,IAChBS,EAAY,QAAQI,EAAe,QAGvC,QAAQ,IAAI,aAAauB,CAAQ;AAAA,MACpC,SAAQE,GAAO;AACZ,gBAAQ,IAAI,eAAeA,CAAK;AAAA,MACpC;AAAA,IACJ,GAEMC,KAA2B,YAAY;AAEzC,MAAIrC,EAAO,UAAU,MACjBU,EAAc,QAAQ,QACtBC,EAAe,QAAQC,EAAY,SAC5Bd,EAAQ,UAAU,OACzBY,EAAc,QAAQ,SACtBC,EAAe,QAAQJ,EAAY;AAGvC,YAAM0B,IAAS;AAAA,QACX,QAAQ;AAAA,QACR,KAAK,GAAGjB,CAAmB,cAAcH,CAAS;AAAA,QAClD,SAAS;AAAA,UACL,eAAe,UAAUtB,EAAM,KAAK;AAAA,UACpC,gBAAgB;AAAA,QACnB;AAAA,QACD,iBAAiB;AAAA,QACjB,MAAM,KAAK,UAAU;AAAA,UACjB,mBAAmBc,EAAS;AAAA,UAC5B,WAAW,OAAOI,EAAU,KAAK;AAAA,UACjC,WAAW;AAAA,YACP,MAAMC,EAAc;AAAA,YACpB,OAAOC,EAAe;AAAA,UACzB;AAAA,UACD,cAAc;AAAA,QAC1B,CAAS;AAAA,MACL;AAEA,UAAI;AACA,cAAMuB,IAAW,MAAMC,EAAM,QAAQF,CAAM;AAC3C,uBAAQ,IAAI,qBAAqBC,EAAS,IAAI,GAC9CvC,KACAR,EAAO,KAAK,EAAE,MAAM,uCAAwC,CAAA,GACrD+C,EAAS;AAAA,MAEnB,SAAQE,GAAO;AACZ,cAAAzC,EAGC,GAED,QAAQ,IAAI,4BAA4ByC,CAAK,GAEvCA;AAAA,MACV;AAAA,IACJ;AAEA,IAAAJ,GAAsB;AAEtB,UAAMM,IAAe,YAAY;AAE7B,YAAML,IAAS;AAAA,QACX,QAAQ;AAAA,QACR,KAAK,GAAGjB,CAAmB,cAAcH,CAAS;AAAA,QAClD,SAAS;AAAA,UACL,eAAe,UAAUtB,EAAM,KAAK;AAAA,UACpC,gBAAgB;AAAA,QACnB;AAAA,QACD,iBAAiB;AAAA,QACjB,MAAM,KAAK,UAAU;AAAA,UACjB,cAAca,EAAO;AAAA,QACjC,CAAS;AAAA,MACL;AAEA,UAAI;AACA,cAAM8B,IAAW,MAAMC,EAAM,QAAQF,CAAM;AAC3C,uBAAQ,IAAI,qBAAqBC,EAAS,IAAI,GAC9CvC,KACKS,EAAO,SAASjB,EAAO,KAAK,EAAE,MAAM,uCAAwC,CAAA,GAC1E+C,EAAS;AAAA,MAGnB,SAAQE,GAAO;AACZ,cAAAzC,EAGC,GAED,QAAQ,IAAI,4BAA4ByC,CAAK,GAEvCA;AAAA,MAEV;AAAA,IACJ,GAEMG,KAAW,MAAM;AACnB,MAAA/B,EAAS,QAAQ,IACjBf,EAAa;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,MACjB,CAAK;AAAA,IACL,GAEM+C,KAAW,CAAChB,MAAU;AACxB,YAAMK,IAAQxB,EAAS,MAAMmB,CAAK,EAAE,KAAI;AACxC,MAAII,EAAaC,CAAK,KAClBrB,EAAS,QAAQ,IACjB,OAAOuB,EAAW,MAAMP,CAAK,KAE7BO,EAAW,MAAMP,CAAK,IAAI;AAAA,IAElC,GAEMiB,KAAa,CAACjB,MAAU;AAC1B,MAAAnB,EAAS,MAAM,OAAOmB,GAAO,CAAC;AAAA,IAClC,GAEMkB,IAAW,CAACC,MAAU;AACxB,MAAIA,MAAU,QAAQpC,EAAY,QAAQ,MAClCA,EAAY,QAAQ,MACpBJ,EAAW,QAAQ,KAEvBI,EAAY,WAEPA,EAAY,QAAQ,MACrBA,EAAY,QAAQ,OACpBJ,EAAW,QAAQ,KAEvBI,EAAY;AAAA,IAEpB,GAEMqC,KAAa,MAAM;AACrB,UAAId,EAAQ,MAAM,KAAK,KAAI,MAAO,IAAI;AAClC,QAAAA,EAAQ,MAAM,UAAU;AACxB;AAAA,MACJ;AACA,MAAIF,EAAaE,EAAQ,MAAM,IAAI,KAC/BzB,EAAS,MAAM,KAAKyB,EAAQ,MAAM,IAAI,GACtCA,EAAQ,MAAM,OAAO,IACrBA,EAAQ,MAAM,UAAU,MAExBA,EAAQ,MAAM,UAAU;AAAA,IAEhC,GACMe,KAAiB,MAAM;AACzB,MAAKzC,EAAO,SAKRA,EAAO,QAAQ,IACfF,EAAgB,QAAQgB,EAAG,oCAAoC,GAC/DoB,EAAa,MANblC,EAAO,QAAQ,IACfF,EAAgB,QAASgB,EAAG,sCAAsC,GAClEoB,EAAa;AAAA,IAMrB,GAEMQ,KAAO,MAAM;AACf,MAAA3D,EAAO,KAAK,EAAE,MAAM,uCAAwC,CAAA;AAAA,IAChE;sBA3cI4D,EAAA,GAAAC,EAuJM,OAvJNC,IAuJM;AAAA,MAtJFC,EAuDM,OAAA,MAAA;AAAA,QAtDFA,EAkCM,OAAA,MAAA;AAAA,UAjCFA,EAuBM,OAvBNC,IAuBM;AAAA,YAtBFC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAF,EAA6B,gBAArB,gBAAY,EAAA;AAAA;8BAAUA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,8BAAAA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA;YAEtCA,EAAkC,YAAxB,MAAA,MAAIG,EAAA9D,EAAA,KAAK,IAAG,KAAC,CAAA;AAAA;8BACvB2D,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,cAAA,MAEJG,EAAG1B,EAAe,KAAA,IAAG,KAErB,CAAA;AAAA,8BAAAuB,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,gCAAA,SAAK,EAAA;AAAA,8BAAAA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,cAAA,MAEbG,EAAGC,EAAQjD,CAAA,CAAA,IAAG,KAEd,CAAA;AAAA,8BAAA6C,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,gCAAA,OAAG,EAAA;AAAA,8BAAAA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA;YACXE,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAF,EAA0B,gBAAlB,aAAS,EAAA;AAAA;8BAAUA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,YAAAK,EAAA;AAAA,kCACpBD,EAAMtD,CAAA,CAAA,GAAA,CAAA;AAAA,8BAAGkD,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,cAAA;AAAA,iCACfG,EAAGC,EAAOxD,CAAA,CAAA,IAAG,KAAC,CAAA;AAAA,8BAAAoD,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA;8BAC3BA,EAAO,KAAA,MAAA,MAAA,EAAA;AAAA,cAAA;AAAA,8BACDG,EAAGC,EAAa5C,CAAA,CAAA,IAAG,KAAC,CAAA;AAAA,8BAAAwC,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,cAAA;AAAA,+BACvBG,EAAGC,EAAc3C,CAAA,CAAA,IAAG,KAE3B,CAAA;AAAA,8BAAAuC,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,gCAAA,OAAG,EAAA;AAAA,8BAAAA,EAAI,MAAA,MAAA,MAAA,EAAA;AAAA,YAAAK,EAAA;AAAA,qCACGD,EAAS7C,CAAA,CAAA,GAAA,CAAA;AAAA;;UAG3ByC,EAAuD,cAAhDI,EAAEpC,CAAA,EAAA,oCAAA,CAAA,GAAA,CAAA;AAAA;UACTgC,EAEI,KAAA,MAAA;AAAA,YAFEK,EAAAF,EAAAC,EAAApC,CAAA,mDAAmD,KACrD,CAAA;AAAA,YAAAgC,EAAgC,kBAArBI,EAASzC,CAAA,CAAA,GAAA,CAAA;AAAA;;UAE1BqC,EAIM,KAAA,MAAA;AAAA,YAHJA,EAAmE,QAAA;AAAA,cAA7D,WAAQI,EAAEpC,CAAA,EAAA,wCAAA;AAAA;;YACZgC,EACkF,KAAA,MAAA;AAAA,cADlEI,EAAMlD,CAAA,iBAAnB2C,KAAAC,EAA6E,cAArDM,EAAEpC,CAAA,EAAA,uCAAA,CAAA,GAAA,CAAA;AAAA;cACboC,EAAMlD,CAAA,KAAlB2C,KAAAC,EAA0E,cAAnDM,EAAEpC,CAAA,EAAA,qCAAA,CAAA,GAAA,CAAA;;gCAAqD;AAAA,mBACtF,EAAA;AAAA;;;QAGJgC,EAGS,UAAA;AAAA,UAHD,MAAK;AAAA,UAAU,OAAKM,EAAA,EAAA,wBAAA,CAA6BF,EAAMlD,CAAA,GAAA,qBAAuBkD,EAAMlD,CAAA,GAAA;AAAA,UACvF,gCAAOyC,GAAc;AAAA,aACnBS,EAAepD,CAAA,CAAA,GAAA,CAAA;AAAA;QAGtBgD,EASS,UAAA;AAAA,UATD,MAAK;AAAA,UAAU,OAAKM,EAAA,EAAA,uBAAA,CAA4BF,EAAMlD,CAAA,GAAA,kBAAoBkD,EAAMlD,CAAA,GAAA;AAAA,UAAK,gCAAOe,GAAa;AAAA;UAC7G+B,EAA0E,QAA1EO,IAA0EJ,EAAnDC,EAAEpC,CAAA,EAAA,qCAAA,CAAA,GAAA,CAAA;AAAA;4BACzBgC,EAMM,OAAA;AAAA,YAND,OAAM;AAAA,YAA6B,OAAM;AAAA,YAAK,QAAO;AAAA,YAAK,MAAK;AAAA,YAChE,OAAM;AAAA,YAAgC,SAAQ;AAAA;YAC9CA,EAC0N,QAAA;AAAA,cADpN,aAAU;AAAA,cACZ,GAAE;AAAA;;YACNA,EACuH,QAAA;AAAA,cADjH,aAAU;AAAA,cACZ,GAAE;AAAA;;;;;MAQPI,EAAMlD,CAAA,UAAjB4C,EA4FM,OAAAU,IAAA;AAAA,QA3FFR,EAWM,OAXNS,IAWM;AAAA,UAVJT,EAA0E,cAAnEI,EAAEpC,CAAA,EAAA,uDAAA,CAAA,GAAA,CAAA;AAAA;UACTgC,EAAsF,OAAA;AAAA,YAAjF,WAAQI,EAAEpC,CAAA,EAAA,6DAAA;AAAA;;UACbgC,EAOM,OAPNU,IAOM;AAAA,8BANFV,EAGM,OAAA,EAHD,OAAM,oCAAgC;AAAA,cACvCA,EAAsB,QAAA,MAAA;AAAA,gBAAhBA,EAAS,WAAN,IAAE;AAAA;;cACXA,EAAwB,QAAA,MAAA;AAAA,gBAAlBA,EAAW,WAAR,MAAI;AAAA;;;cAEjBA,EAA4D,SAAA;AAAA,cAArD,MAAK;AAAA,mEAAiBzC,EAAS,QAAAoD,IAAApD,IAAAoD;AAAA,cAAE,KAAI;AAAA,cAAI,KAAI;AAAA;kBAAvBP,EAAS7C,CAAA,CAAA;AAAA;;YACxCyC,EAAkG,KAAA,MAAA;AAAA,cAA5FK,EAAAF,EAAAC,EAAApC,CAAA,+DAA+D,KAAC,CAAA;AAAA,cAAAgC,EAAuB,KAAA,MAApB,MAACG,EAAGC,EAAS7C,CAAA,CAAA,GAAA,CAAA;AAAA;;;;QAI5FyC,EAyCM,OAzCNY,IAyCM;AAAA,UAxCJZ,EAAoE,cAA7DI,EAAEpC,CAAA,EAAA,iDAAA,CAAA,GAAA,CAAA;AAAA;UACTgC,EAAoF,gBAA3EI,EAAEpC,CAAA,EAAA,6DAAA,CAAA,GAAA,CAAA;AAAA;UACTgC,EAqCM,OArCNa,IAqCM;AAAA,YApCFb,EAWM,OAXNc,IAWM;AAAA,cAVFd,EACyH,UAAA;AAAA,gBADjH,MAAK;AAAA,gBAAS,OAAKM,EAAA,CAAC,kBAAgB,EAAA,oBACRF,EAAMtD,CAAA,EAAA,CAAA,CAAA;AAAA,gBADI,gCAAOyB,GAAS;AAAA,mBACb6B,EAAEpC,CAAA,EAAA,wDAAA,CAAA,GAAA,CAAA;AAAA;cACnDgC,EAOM,OAAA;AAAA,gBAPD,OAAKM,EAAA,CAAC,YAAU,EAAA,MAAA,CAAoBF,EAAMtD,CAAA,EAAA,CAAA,CAAA;AAAA;iBAC3C+C,EAAA,EAAA,GAAAC,EAKOiB,GALsB,MAAAC,EAAAZ,EAAAhD,CAAA,GAAf,CAAA6D,GAAK3C,YAAnBwB,EAKO,QAAA,EAL6B,KAAKxB,KAAK;AAAA,kBAC1C0B,EAGS,UAAA;AAAA,oBAHA,WAAWI,EAAMtD,CAAA;AAAA,oBAAE,OAAMwD,EAAA,CAAA,cACN,EAAA,YAAAF,EAAA1C,CAAA,MAAgBY,EAAK,CAAA,CAAA;AAAA,oBAAK,SAAK,CAAAqC,MAAEtC,EAAUC,CAAK;AAAA,uBACrE2C,CAAG,GAAA,IAAAC,EAAA;AAAA;;;;YAKtBlB,EAuBM,OAvBNmB,IAuBM;AAAA,cAtBFnB,EACyF,UAAA;AAAA,gBADjF,MAAK;AAAA,gBAAU,OAAKM,EAAA,CAAA,EAAA,oBAA0BF,EAAOxD,CAAA,EAAA,GAAU,gBAAgB,CAAA;AAAA,gBAClF,gCAAO4B,GAAU;AAAA,mBAAO4B,EAAEpC,CAAA,EAAA,4CAAA,CAAA,GAAA,CAAA;AAAA;cAC/BgC,EAmBM,OAAA;AAAA,gBAnBD,OAAKM,EAAA,CAAC,yBAAuB,EAAA,MAAA,CAAoBF,EAAOxD,CAAA,EAAA,CAAA,CAAA;AAAA;kBACzDoD,EACyB,SAAA;AAAA,uEADT3C,EAAW,QAAAsD,IAAAtD,IAAAsD;AAAA,kBAAG,SAAKT,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAS,MAAEtC,EAAUC,EAAK,KAAA;AAAA,kBAAI,yBAAuB8B,EAAUnD,CAAA,EAAA,CAAA;AAAA,kBACpF,WAAWmD,EAAOxD,CAAA;AAAA;sBADPwD,EAAW/C,CAAA,CAAA;AAAA;;gBAE3B2C,EAaM,OAbNoB,IAaM;AAAA,kBAZFpB,EAKmB,UAAA;AAAA,oBALV,gCAAOR,EAAQ,IAAA;AAAA,oBAAQ,OAAM;AAAA;oBAAoBQ,EAKhD,OAAA;AAAA,sBAJF,OAAM;AAAA,sBAA6B,OAAM;AAAA,sBAAK,QAAO;AAAA,sBAAK,MAAK;AAAA,sBAC/D,OAAM;AAAA,sBAAsB,SAAQ;AAAA;sBACpCA,EAC2H,QAAA,EAAvH,GAAE,mHAAkH,CAAA;AAAA;;;kBAEhIA,EAKmB,UAAA;AAAA,oBALV,gCAAOR,EAAQ;AAAA,oBAAI,OAAM;AAAA;oBAAoBQ,EAK5C,OAAA;AAAA,sBAJF,OAAM;AAAA,sBAA6B,OAAM;AAAA,sBAAK,QAAO;AAAA,sBAAK,MAAK;AAAA,sBAC/D,OAAM;AAAA,sBAAwB,SAAQ;AAAA;sBACtCA,EACyH,QAAA,EAArH,GAAE,iHAAgH,CAAA;AAAA;;;;gBAGpIA,EAAyE,gBAAhEI,EAAEpC,CAAA,EAAA,kDAAA,CAAA,GAAA,CAAA;AAAA;;;;;QAMzBgC,EA8BM,OA9BNqB,IA8BM;AAAA,UA7BJrB,EAA6D,cAAtDI,EAAEpC,CAAA,EAAA,0CAAA,CAAA,GAAA,CAAA;AAAA;UACTgC,EAA4E,gBAAnEI,EAAEpC,CAAA,EAAA,qDAAA,CAAA,GAAA,CAAA;AAAA;UACsCoC,EAAAjD,CAAA,EAAS,WAAM,UAA9D2C,EAoBQ,SAAA;AAAA;YApBD,OAAM;AAAA,qBAAW;AAAA,YAAJ,KAAI/C;AAAA;8BACpBiD,EAEK,MAAA,MAAA;AAAA,cADDA,EAAa,YAAT,MAAI;AAAA;;aAEZH,EAAA,EAAA,GAAAC,EAeKiB,GAfuB,MAAAC,EAAAZ,EAAAjD,CAAA,GAAhB,CAAAmE,GAAMhD,YAAlBwB,EAeK,MAAA;AAAA,cAfiC,OAAM;AAAA,cAAa,KAAKxB;AAAA;cAC1D0B,EAYK,MAAA,MAAA;AAAA,gBAXYI,EAAQ9C,CAAA,iBAArBuC,EAAA,GAAAC,EAAwC,cAAdwB,CAAI,GAAA,CAAA;AAAA;gBACwClB,EAAQ9C,CAAA,YAA9EwC,EACqF,SAAA;AAAA;kBAD9E,MAAK;AAAA,kBAAgB,uBAAA,CAAAa,MAAAP,EAAAjD,CAAA,EAASmB,CAAK,IAAAqC;AAAA,kBAAG,OAAML,EAAA,CAAA,cACa,EAAA,gBAAAF,EAAAvB,CAAA,EAAWP,CAAK,EAAA,CAAA,CAAA;AAAA,kBAA3E,SAAK,CAAAqC,MAAEP,EAAUvB,CAAA,EAACP,CAAK,IAAA;AAAA;kBADA,CAAAiD,GAAAnB,EAAAjD,CAAA,EAASmB,CAAK,CAAA;AAAA;;gBAG1C0B,EAMM,OAAA,MAAA;AAAA,kBALFA,EAGS,UAAA;AAAA,oBAHD,MAAK;AAAA,oBAAS,OAAM;AAAA,oBACvB,SAAK,CAAAW,MAAEP,OAAWd,GAAShB,CAAK,IAAIe,GAAc;AAAA,uBAChDe,EAAQ9C,CAAA,IAAI8C,EAAEpC,CAAA,EAAA,gCAAA,IAAsCoC,EAAEpC,CAAA,EAAA,8BAAA,CAAA,GAAA,GAAAwD,EAAA;AAAA;kBAE7DxB,EAA2H,UAAA;AAAA,oBAAnH,MAAK;AAAA,oBAAS,OAAM;AAAA,oBAAkB,SAAK,CAAAW,MAAEpB,GAAWjB,CAAK;AAAA,uBAAM8B,EAAEpC,CAAA,EAAA,gCAAA,CAAA,GAAA,GAAAyD,EAAA;AAAA;;;cAGxDrB,EAAAvB,CAAA,EAAWP,CAAK,KAA7CuB,KAAAC,EAA8E,QAA9E4B,IAAmDvB,EAAAC,EAAAvB,CAAA,EAAWP,CAAK,CAAA,GAAA,CAAA;;;;UAG3E0B,EAIM,OAJN2B,IAIM;AAAA,cAHF3B,EAC2H,SAAA;AAAA,cADpH,MAAK;AAAA,cAAgB,uBAAAE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAS,MAAAP,EAAAxB,CAAA,EAAQ,OAAI+B;AAAA,cAAG,SAAKT,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAS,MAAEP,EAAOxB,CAAA,EAAC,UAAO;AAAA,cAC5D,OAA4B0B,EAAA,CAAA,EAAA,gBAAA,CAAAF,EAAAxB,CAAA,EAAQ,WAA2E,MAAM,CAAA;AAAA,cAArE,aAAawB,EAAEpC,CAAA,EAAA,sCAAA;AAAA;cADxC,CAAAuD,GAAAnB,EAAAxB,CAAA,EAAQ,IAAI;AAAA;;YAExCoB,EAA8H,UAAA;AAAA,cAAtH,MAAK;AAAA,cAAS,OAAM;AAAA,cAAuB,kCAAON,GAAU;AAAA,iBAAOU,EAAEpC,CAAA,EAAA,mCAAA,CAAA,GAAA,CAAA;AAAA;;UAEnDoC,EAAAxB,CAAA,EAAQ,4BAAtCkB,EAA2E,QAA3E8B,IAA+C,uBAAqB;AAAA;;QAGxE5B,EAGM,OAHN6B,IAGM;AAAA,UAFF7B,EAAmI,UAAA;AAAA,YAA3H,MAAK;AAAA,YAAS,OAAM;AAAA,YAAmB,SAAOb;AAAA,eAA6BiB,EAAEpC,CAAA,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA;UACrFgC,EAAkH,UAAA;AAAA,YAA1G,MAAK;AAAA,YAAS,OAAM;AAAA,YAAkB,kCAAOJ,GAAI;AAAA,eAAOQ,EAAEpC,CAAA,EAAA,kCAAA,CAAA,GAAA,CAAA;AAAA;;;;;"}