{"version":3,"file":"discourse-adplugin.js","names":["define","_exports","_component","_computed","_service","_ajax","_ajaxError","_decorators","_slotPosition","Object","defineProperty","value","default","AdComponent","dt7948","g","this","prototype","service","router","i","session","or","currentCategoryId","currentCategorySlug","alias","topicTagsDisableAds","isRestrictedCategory","_impressionId","_clickTracked","_handleAdClick","trackClick","topicListTag","type","tag","n","isPersonalMessage","topicType","showToGroups","currentUser","show_to_groups","showOnCurrentPage","categoryId","siteSettings","no_ads_for_categories","split","includes","toString","no_ads_for_tags","no_ads_for_personal_messages","no_ads_for_restricted_categories","isNthPost","get","isNthTopicListItem","didInsertElement","super","arguments","startVisibilityTracking","startClickTracking","ad_plugin_enable_tracking","element","addEventListener","trackImpression","payload","buildImpressionPayload","response","ajax","data","JSON","stringify","contentType","id","e","throwAjaxError","url","navigator","sendBeacon","site","isTesting","formData","FormData","append","csrfToken","catch","console","error","window","_observer","IntersectionObserver","entries","isIntersecting","disconnect","observe","willDestroyElement","removeEventListener","_helper","_object","_utils","_adComponent","_adbutlerAd","_amazonProductLinks","_carbonadsAd","_googleAdsense","_googleDfpAd","_houseAd","_component2","_templateFactory","slotContenders","AD_COMPONENTS","adConfig","create","settingPrefix","enabledSetting","nthPost","desktop","mobile","displayCounts","houseAds","allAds","placement","indexNumber","postNumber","types","placeUnderscored","replace","settings","adsForSlot","adAvailable","keys","creatives","length","isBlank","notPlacingBetweenTopics","canBePlacedInBetweenTopics","parseInt","after_nth_topic","after_nth_post","push","forEach","adNetwork","config","name","settingNames","enabledNetworkSettingName","_isNetworkAvailable","currentPostNumber","positionToPlace","_shouldPlaceAdInSlot","mobileView","undefined","AdSlot","c","availableAdTypes","adComponentNames","houseAdsSkipped","house_ads_frequency","networkNames","filter","x","adComponents","map","setComponentTemplate","createTemplateFactory","block","moduleName","scope","array","isStrictMode","tagName","_runloop","_rsvp","_environment","_loadScript","_loaded","_promise","_c","AdbutlerAd","divs","publisherId","init","dimensions","configKey","className","dimClassName","set","zoneId","divId","adbutler_publisher_id","_triggerAds","adserverHostname","adbutler_adserver_hostname","resolve","scriptTag","then","loadAdbutler","abkw","AdButler","ads","handler","opt","register","place","pop","keywords","domain","click","bind","scheduleOnce","showAdbutlerAds","show_adbutler_ads","showAd","showAfterPost","adbutler_nth_post","ad_plugin_impression","ad_type","ad_types","adbutler","ad_plugin_house_ad_id","_template","_discourseI18n","AmazonProductLinks","and","amazon_topic_list_top_src_code","amazon_topic_list_top_ad_width_code","amazon_topic_list_top_ad_height_code","amazon_mobile_topic_list_top_src_code","amazon_mobile_topic_list_top_ad_width_code","amazon_mobile_topic_list_top_ad_height_code","amazon_topic_above_post_stream_src_code","amazon_topic_above_post_stream_ad_width_code","amazon_topic_above_post_stream_ad_height_code","amazon_mobile_topic_above_post_stream_src_code","amazon_mobile_topic_above_post_stream_ad_width_code","amazon_mobile_topic_above_post_stream_ad_height_code","amazon_topic_above_suggested_src_code","amazon_topic_above_suggested_ad_width_code","amazon_topic_above_suggested_ad_height_code","amazon_mobile_topic_above_suggested_src_code","amazon_mobile_topic_above_suggested_ad_width_code","amazon_mobile_topic_above_suggested_ad_height_code","amazon_post_bottom_src_code","amazon_post_bottom_ad_width_code","amazon_post_bottom_ad_height_code","amazon_mobile_post_bottom_src_code","amazon_mobile_post_bottom_ad_width_code","amazon_mobile_post_bottom_ad_height_code","adWrapperStyle","w","h","htmlSafe","adWrapperStyleMobile","adTitleStyleMobile","userInput","userInputMobile","showAmazonAds","show_amazon_ads","amazon_nth_post_code","amazon","i18n","classNames","CarbonadsAd","serve_id","carbonads_serve_id","carbonads_placement","serveId","showCarbonAds","show_carbon_ads","carbon","renderCounts","DESKTOP_SETTINGS","code","sizes","MOBILE_SETTINGS","GoogleAdsense","loadedGoogletag","publisher_id","ad_width","ad_height","adRequested","size","startsWith","substring","trim","isNaN","parseAdWidth","parseAdHeight","adsense_publisher_code","adsenseSrc","document","location","protocol","loadAdsense","isDestroyed","isDestroying","adsbygoogle","ex","isResponsive","adWidth","isFluid","classForSlot","autoAdFormat","adInsStyle","showAdsenseAds","show_adsense_ads","adsense_nth_post_code","adsense","classNameBindings","nextSlotNum","splitHeightInt","valueParse","final","keyParse","word","key","targeting_keys","targeting_values","defineSlot","isMobile","width","height","categoryTarget","dfp_publisher_id","ad","dfp_publisher_id_mobile","googletag","key_array","value_array","adSlot","setTargeting","custom_targeting","addService","pubads","GoogleDfpAd","lastAdRefresh","sizeObj","getWidthAndHeight","globalId","mobileId","slotNum","adUnitClass","showDfpAds","show_dfp_ads","dfp_nth_post_code","shouldRefreshAd","Date","updated","slot","categorySlug","cmd","refresh","on","_initGoogleDFP","dfpSrc","log","enableSingleRequest","disableInitialLoad","setForceSafeFrame","enableServices","loadGoogle","display","dfp","willRender","cleanup","destroySlots","adIndex","topic_list_top","topic_above_post_stream","topic_above_suggested","post_bottom","topic_list_between","HouseAd","adHtml","currentAd","event","link","target","closest","href","colspanAttribute","showAfterTopicListItem","chooseAdHtml","filteredAds","adsNamesForSlot","adName","category_ids","html","refreshAd","house","adNames","Math","floor","random","attributeBindings","_adSlot","_templateOnly","PostBottomAd","DiscourseAdplugin","shouldRender","args","context","index","every","currentIndexPosition","_pluginApi","_site","_postBottomAd","initialize","container","withPluginApi","api","renderAfterWrapperOutlet","customizePost","messageBus","lookup","channel","subscribe","houseAdsSettings","currentProp"],"sources":["discourse/plugins/discourse-adplugin/discourse/components/ad-component.js","discourse/plugins/discourse-adplugin/discourse/components/ad-slot.js","discourse/plugins/discourse-adplugin/discourse/components/adbutler-ad.js","discourse/plugins/discourse-adplugin/discourse/components/amazon-product-links.js","discourse/plugins/discourse-adplugin/discourse/components/carbonads-ad.js","discourse/plugins/discourse-adplugin/discourse/components/google-adsense.js","discourse/plugins/discourse-adplugin/discourse/components/google-dfp-ad.js","discourse/plugins/discourse-adplugin/discourse/components/house-ad.js","discourse/plugins/discourse-adplugin/discourse/components/post-bottom-ad.js","discourse/plugins/discourse-adplugin/discourse/connectors/after-topic-list-item/discourse-adplugin.js","discourse/plugins/discourse-adplugin/discourse/connectors/discovery-list-container-top/discourse-adplugin.js","discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-post-stream/discourse-adplugin.js","discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-suggested/discourse-adplugin.js","discourse/plugins/discourse-adplugin/discourse/helpers/slot-position.js","discourse/plugins/discourse-adplugin/discourse/initializers/initialize-ad-plugin.js"],"sourcesContent":["define(\"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/service\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/decorators\", \"discourse/plugins/discourse-adplugin/discourse/helpers/slot-position\"], function (_exports, _component, _computed, _service, _ajax, _ajaxError, _decorators, _slotPosition) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n\n  class AdComponent extends _component.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"session\", [_service.service]);\n    }\n    #session = (dt7948.i(this, \"session\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentCategoryId\", [(0, _computed.or)(\"router.currentRoute.attributes.category.id\", \"router.currentRoute.parent.attributes.category_id\")]);\n    }\n    #currentCategoryId = (dt7948.i(this, \"currentCategoryId\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"currentCategorySlug\", [(0, _computed.or)(\"router.currentRoute.attributes.category.slug\", \"router.currentRoute.parent.attributes.category.slug\")]);\n    }\n    #currentCategorySlug = (dt7948.i(this, \"currentCategorySlug\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"topicTagsDisableAds\", [(0, _computed.alias)(\"router.currentRoute.parent.attributes.tags_disable_ads\")]);\n    }\n    #topicTagsDisableAds = (dt7948.i(this, \"topicTagsDisableAds\"), void 0); // Server needs to compute this in case hidden tags are being used.\n    static {\n      dt7948.g(this.prototype, \"isRestrictedCategory\", [(0, _computed.or)(\"router.currentRoute.attributes.category.read_restricted\", \"router.currentRoute.parent.attributes.category.read_restricted\")]);\n    }\n    #isRestrictedCategory = (dt7948.i(this, \"isRestrictedCategory\"), void 0);\n    _impressionId = null;\n    _clickTracked = false;\n    _handleAdClick = () => {\n      this.trackClick();\n    };\n    topicListTag(type, tag) {\n      if (type === \"tag\" && tag) {\n        return tag;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"topicListTag\", [(0, _decorators.default)(\"router.currentRoute.attributes.__type\", \"router.currentRoute.attributes.id\")]);\n    }\n    isPersonalMessage(topicType) {\n      return topicType === \"private_message\";\n    }\n    static {\n      dt7948.n(this.prototype, \"isPersonalMessage\", [(0, _decorators.default)(\"router.currentRoute.parent.attributes.archetype\")]);\n    }\n    showToGroups() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_to_groups;\n    }\n    static {\n      dt7948.n(this.prototype, \"showToGroups\", [_decorators.default]);\n    }\n    showOnCurrentPage(categoryId, topicTagsDisableAds, topicListTag, isPersonalMessage, isRestrictedCategory) {\n      return !topicTagsDisableAds && (!categoryId || !this.siteSettings.no_ads_for_categories || !this.siteSettings.no_ads_for_categories.split(\"|\").includes(categoryId.toString())) && (!topicListTag || !this.siteSettings.no_ads_for_tags || !this.siteSettings.no_ads_for_tags.split(\"|\").includes(topicListTag)) && (!isPersonalMessage || !this.siteSettings.no_ads_for_personal_messages) && (!isRestrictedCategory || !this.siteSettings.no_ads_for_restricted_categories);\n    }\n    static {\n      dt7948.n(this.prototype, \"showOnCurrentPage\", [(0, _decorators.default)(\"currentCategoryId\", \"topicTagsDisableAds\", \"topicListTag\", \"isPersonalMessage\", \"isRestrictedCategory\")]);\n    }\n    isNthPost(n) {\n      return (0, _slotPosition.isNthPost)(n, this.get(\"postNumber\"));\n    }\n    isNthTopicListItem(n) {\n      return (0, _slotPosition.isNthTopicListItem)(n, this.get(\"indexNumber\"));\n    }\n    didInsertElement() {\n      super.didInsertElement?.(...arguments);\n      if (!this.get(\"showAd\")) {\n        return;\n      }\n      this.startVisibilityTracking();\n      this.startClickTracking();\n    }\n    startClickTracking() {\n      if (!this.siteSettings.ad_plugin_enable_tracking) {\n        return;\n      }\n      this.element.addEventListener(\"click\", this._handleAdClick);\n    }\n    async trackImpression() {\n      const payload = this.buildImpressionPayload?.();\n      if (!payload) {\n        return;\n      }\n      try {\n        const response = await (0, _ajax.ajax)(\"/ad_plugin/ad_impressions\", {\n          type: \"POST\",\n          data: JSON.stringify(payload),\n          contentType: \"application/json; charset=utf-8\"\n        });\n        this._impressionId = response.id;\n      } catch (e) {\n        (0, _ajaxError.throwAjaxError)(e);\n      }\n    }\n    trackClick() {\n      if (!this._impressionId || this._clickTracked) {\n        return;\n      }\n      this._clickTracked = true;\n      const url = `/ad_plugin/ad_impressions/${this._impressionId}`;\n      if (navigator.sendBeacon && !this.site?.isTesting) {\n        const formData = new FormData();\n        formData.append(\"authenticity_token\", this.session.csrfToken);\n        navigator.sendBeacon(url, formData);\n      } else {\n        (0, _ajax.ajax)(url, {\n          type: \"PATCH\",\n          contentType: \"application/json; charset=utf-8\"\n        }).catch(e => {\n          // eslint-disable-next-line no-console\n          console.error(\"Failed to track ad click:\", e);\n        });\n      }\n    }\n    startVisibilityTracking() {\n      if (!this.siteSettings.ad_plugin_enable_tracking) {\n        return;\n      }\n      if (\"IntersectionObserver\" in window) {\n        this._observer = new IntersectionObserver(entries => {\n          if (entries[0].isIntersecting) {\n            this.trackImpression();\n            this._observer.disconnect();\n          }\n        });\n        this._observer.observe(this.element);\n      } else {\n        this.trackImpression();\n      }\n    }\n    willDestroyElement() {\n      super.willDestroyElement?.(...arguments);\n      if (this._observer) {\n        this._observer.disconnect();\n      }\n      if (this.element) {\n        this.element.removeEventListener(\"click\", this._handleAdClick);\n      }\n    }\n  }\n  _exports.default = AdComponent;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", [\"exports\", \"@ember/helper\", \"@ember/object\", \"@ember/service\", \"@ember/utils\", \"@ember-decorators/component\", \"discourse/lib/decorators\", \"discourse/plugins/discourse-adplugin/discourse/helpers/slot-position\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"discourse/plugins/discourse-adplugin/discourse/components/adbutler-ad\", \"discourse/plugins/discourse-adplugin/discourse/components/amazon-product-links\", \"discourse/plugins/discourse-adplugin/discourse/components/carbonads-ad\", \"discourse/plugins/discourse-adplugin/discourse/components/google-adsense\", \"discourse/plugins/discourse-adplugin/discourse/components/google-dfp-ad\", \"discourse/plugins/discourse-adplugin/discourse/components/house-ad\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _helper, _object, _service, _utils, _component, _decorators, _slotPosition, _adComponent, _adbutlerAd, _amazonProductLinks, _carbonadsAd, _googleAdsense, _googleDfpAd, _houseAd, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  _exports.slotContenders = slotContenders;\n  const AD_COMPONENTS = {\n    \"house-ad\": _houseAd.default,\n    \"google-adsense\": _googleAdsense.default,\n    \"google-dfp-ad\": _googleDfpAd.default,\n    \"amazon-product-links\": _amazonProductLinks.default,\n    \"carbonads-ad\": _carbonadsAd.default,\n    \"adbutler-ad\": _adbutlerAd.default\n  };\n  const adConfig = _object.default.create({\n    \"google-adsense\": {\n      settingPrefix: \"adsense\",\n      enabledSetting: \"adsense_publisher_code\",\n      nthPost: \"adsense_nth_post_code\"\n    },\n    \"google-dfp-ad\": {\n      settingPrefix: \"dfp\",\n      enabledSetting: \"dfp_publisher_id\",\n      nthPost: \"dfp_nth_post_code\"\n    },\n    \"amazon-product-links\": {\n      settingPrefix: \"amazon\",\n      enabledSetting: false,\n      nthPost: \"amazon_nth_post_code\",\n      desktop: {\n        \"topic-list-top\": \"amazon_topic_list_top_src_code\",\n        \"post-bottom\": \"amazon_post_bottom_src_code\",\n        \"topic-above-post-stream\": \"amazon_topic_above_post_stream_src_code\",\n        \"topic-above-suggested\": \"amazon_topic_above_suggested_src_code\"\n      },\n      mobile: {\n        \"topic-list-top\": \"amazon_mobile_topic_list_top_src_code\",\n        \"post-bottom\": \"amazon_mobile_post_bottom_src_code\",\n        \"topic-above-post-stream\": \"amazon_mobile_topic_above_post_stream_src_code\",\n        \"topic-above-suggested\": \"amazon_mobile_topic_above_suggested_src_code\"\n      }\n    },\n    \"carbonads-ad\": {\n      settingPrefix: \"carbonads\",\n      enabledSetting: \"carbonads_serve_id\",\n      desktop: {\n        \"topic-list-top\": \"carbonads_topic_list_top_enabled\",\n        \"post-bottom\": false,\n        \"topic-above-post-stream\": \"carbonads_above_post_stream_enabled\",\n        \"topic-above-suggested\": false\n      }\n    },\n    \"adbutler-ad\": {\n      settingPrefix: \"adbutler\",\n      enabledSetting: \"adbutler_publisher_id\",\n      desktop: {\n        \"topic-list-top\": \"adbutler_topic_list_top_zone_id\",\n        \"post-bottom\": \"adbutler_post_bottom_zone_id\",\n        \"topic-above-post-stream\": \"adbutler_topic_above_post_stream_zone_id\",\n        \"topic-above-suggested\": \"adbutler_topic_above_suggested_zone_id\"\n      },\n      mobile: {\n        \"topic-list-top\": \"adbutler_mobile_topic_list_top_zone_id\",\n        \"post-bottom\": \"adbutler_mobile_post_bottom_zone_id\",\n        \"topic-above-post-stream\": \"adbutler_mobile_topic_above_post_stream_zone_id\",\n        \"topic-above-suggested\": \"adbutler_mobile_topic_above_suggested_zone_id\"\n      }\n    }\n  });\n  const displayCounts = {\n    houseAds: 0,\n    allAds: 0\n  };\n  function _isNetworkAvailable(siteSettings, enabledNetworkSettingName) {\n    // False means there's no setting to enable or disable this ad network.\n    // Assume it's always enabled.\n    if (enabledNetworkSettingName === false) {\n      return true;\n    } else {\n      return enabledNetworkSettingName && !(0, _utils.isBlank)(siteSettings[enabledNetworkSettingName]);\n    }\n  }\n  function _shouldPlaceAdInSlot(siteSettings, currentPostNumber, positionToPlace) {\n    return !currentPostNumber || !positionToPlace || (0, _slotPosition.isNthPost)(parseInt(siteSettings[positionToPlace], 10), currentPostNumber);\n  }\n  function slotContenders(site, siteSettings, placement, indexNumber, postNumber) {\n    let types = [];\n    const houseAds = site.get(\"house_creatives\"),\n      placeUnderscored = placement.replace(/-/g, \"_\");\n    if (houseAds && houseAds.settings) {\n      const adsForSlot = houseAds.settings[placeUnderscored];\n      const adAvailable = Object.keys(houseAds.creatives).length > 0 && !(0, _utils.isBlank)(adsForSlot);\n      // postNumber and indexNumber are both null for topic-list-top, topic-above-post-stream,\n      // and topic-above-suggested placements. Assume we want to place an ad outside the topic list.\n      const notPlacingBetweenTopics = !postNumber && !indexNumber;\n      const canBePlacedInBetweenTopics = placeUnderscored === \"topic_list_between\" && (0, _slotPosition.isNthTopicListItem)(parseInt(houseAds.settings.after_nth_topic, 10), indexNumber);\n      if (adAvailable && (notPlacingBetweenTopics || canBePlacedInBetweenTopics || (0, _slotPosition.isNthPost)(parseInt(houseAds.settings.after_nth_post, 10), postNumber))) {\n        types.push(\"house-ad\");\n      }\n    }\n    Object.keys(adConfig).forEach(adNetwork => {\n      const config = adConfig[adNetwork];\n      let settingNames = null,\n        name;\n      if (_isNetworkAvailable(siteSettings, config.enabledSetting) && _shouldPlaceAdInSlot(siteSettings, postNumber, config.nthPost)) {\n        if (site.mobileView) {\n          settingNames = config.mobile || config.desktop;\n        } else {\n          settingNames = config.desktop;\n        }\n        if (settingNames) {\n          name = settingNames[placement];\n        }\n        if (name === undefined) {\n          // follows naming convention: prefix_(mobile_)_{placement}_code\n          name = `${config.settingPrefix}_${site.mobileView ? \"mobile_\" : \"\"}${placeUnderscored}_code`;\n        }\n        if (name !== false && siteSettings[name] !== false && !(0, _utils.isBlank)(siteSettings[name])) {\n          types.push(adNetwork);\n        }\n      }\n    });\n    return types;\n  }\n  const AdSlot = dt7948.c(class AdSlot extends _adComponent.default {\n    static {\n      dt7948.g(this.prototype, \"router\", [_service.service]);\n    }\n    #router = (dt7948.i(this, \"router\"), void 0);\n    /**\n    * For a given ad placement and optionally a post number if in between posts,\n    * list all ad network names that are configured to show there.\n    */\n    availableAdTypes(placement, postNumber, indexNumber) {\n      return slotContenders(this.site, this.siteSettings, placement, indexNumber, postNumber);\n    }\n    /**\n    * Returns a list of the names of ad components that should be rendered\n    * in the given ad placement. It handles alternating between house ads\n    * and other ad networks.\n    *\n    * Depends on `router.currentRoute` so that we refresh ads when navigating around.\n    */\n    static {\n      dt7948.n(this.prototype, \"availableAdTypes\", [(0, _decorators.default)(\"placement\", \"postNumber\", \"indexNumber\")]);\n    }\n    adComponentNames(placement, availableAdTypes) {\n      if (!availableAdTypes.includes(\"house-ad\") || availableAdTypes.length === 1) {\n        // Current behaviour is to allow multiple ads from different networks\n        // to show in the same place. We could change this to choose one somehow.\n        return availableAdTypes;\n      }\n      const houseAds = this.site.get(\"house_creatives\");\n      let houseAdsSkipped = false;\n      if (houseAds.settings.house_ads_frequency === 100) {\n        // house always wins\n        return [\"house-ad\"];\n      } else if (houseAds.settings.house_ads_frequency > 0) {\n        // show house ads the given percent of the time\n        if (displayCounts.allAds === 0 || 100 * displayCounts.houseAds / displayCounts.allAds < houseAds.settings.house_ads_frequency) {\n          displayCounts.houseAds += 1;\n          displayCounts.allAds += 1;\n          return [\"house-ad\"];\n        } else {\n          houseAdsSkipped = true;\n        }\n      }\n      const networkNames = availableAdTypes.filter(x => x !== \"house-ad\");\n      if (houseAdsSkipped) {\n        displayCounts.allAds += networkNames.length;\n      }\n      return networkNames;\n    }\n    static {\n      dt7948.n(this.prototype, \"adComponentNames\", [(0, _decorators.default)(\"placement\", \"availableAdTypes\", \"router.currentRoute\")]);\n    }\n    get adComponents() {\n      return this.adComponentNames.map(name => AD_COMPONENTS[name]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#each this.adComponents as |Ad|}}\n            {{! Trick to force full destroy/re-render of component when route changes }}\n            {{#each (array this.router.currentRoute)}}\n              <Ad\n                @placement={{this.placement}}\n                @category={{this.category}}\n                @postNumber={{this.postNumber}}\n                @indexNumber={{this.indexNumber}}\n                @tagName={{this.childTagName}}\n              />\n            {{/each}}\n          {{/each}}\n        \n      */\n      {\n        \"id\": \"7CGLQdk4\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[42,[28,[31,1],[[28,[31,1],[[30,0,[\\\"adComponents\\\"]]],null]],null],null,[[[42,[28,[31,1],[[28,[31,1],[[28,[32,0],[[30,0,[\\\"router\\\",\\\"currentRoute\\\"]]],null]],null]],null],null,[[[1,\\\"        \\\"],[8,[30,1],null,[[\\\"@placement\\\",\\\"@category\\\",\\\"@postNumber\\\",\\\"@indexNumber\\\",\\\"@tagName\\\"],[[30,0,[\\\"placement\\\"]],[30,0,[\\\"category\\\"]],[30,0,[\\\"postNumber\\\"]],[30,0,[\\\"indexNumber\\\"]],[30,0,[\\\"childTagName\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[1]],null],[1,\\\"  \\\"]],[\\\"Ad\\\"],[\\\"each\\\",\\\"-track-array\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/ad-slot.js\",\n        \"scope\": () => [_helper.array],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.tagName)(\"\")]);\n  var _default = _exports.default = AdSlot;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/adbutler-ad\", [\"exports\", \"@ember/runloop\", \"rsvp\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/load-script\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _runloop, _rsvp, _decorators, _environment, _loadScript, _adComponent, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  let _loaded = false,\n    _promise = null,\n    _c = 0;\n  function loadAdbutler(adserverHostname) {\n    if (_loaded) {\n      return _rsvp.default.resolve();\n    }\n    if (_promise) {\n      return _promise;\n    }\n    _promise = (0, _loadScript.default)(\"https://\" + adserverHostname + \"/app.js\", {\n      scriptTag: true\n    }).then(function () {\n      _loaded = true;\n    });\n    return _promise;\n  }\n  class AdbutlerAd extends _adComponent.default {\n    divs = null;\n    publisherId = null;\n    init() {\n      let dimensions = [728, 90];\n      let configKey = \"adbutler_\";\n      let className = \"adbutler-\";\n      let dimClassName = \"adbutler-ad\";\n      this.set(\"divs\", []);\n      if (this.site.mobileView) {\n        dimensions = [320, 50];\n        configKey += \"mobile_\";\n        className += \"mobile-\";\n        dimClassName = \"adbutler-mobile-ad\";\n      }\n      configKey += this.get(\"placement\").replace(/-/g, \"_\") + \"_zone_id\";\n      this.set(\"configKey\", configKey);\n      className += this.get(\"placement\");\n      this.set(\"className\", className + \" \" + dimClassName);\n      let zoneId = this.siteSettings[configKey];\n      this.set(\"zoneId\", zoneId);\n      let divId = \"placement-\" + zoneId + \"-\" + _c;\n      this.set(\"divId\", divId);\n      let publisherId = this.siteSettings.adbutler_publisher_id;\n      this.set(\"publisherId\", publisherId);\n      _c++;\n      this.divs.push({\n        divId,\n        publisherId,\n        zoneId,\n        dimensions\n      });\n      super.init();\n    }\n    _triggerAds() {\n      if ((0, _environment.isTesting)()) {\n        return; // Don't load external JS during tests\n      }\n      const adserverHostname = this.siteSettings.adbutler_adserver_hostname;\n      loadAdbutler(adserverHostname).then(function () {\n        if (this.divs.length > 0) {\n          let abkw = window.abkw || \"\";\n          window.AdButler.ads.push({\n            handler: function (opt) {\n              window.AdButler.register(opt.place.publisherId, opt.place.zoneId, opt.place.dimensions, opt.place.divId, opt);\n            },\n            opt: {\n              place: this.divs.pop(),\n              keywords: abkw,\n              domain: adserverHostname,\n              click: \"CLICK_MACRO_PLACEHOLDER\"\n            }\n          });\n        }\n      }.bind(this));\n    }\n    didInsertElement() {\n      super.didInsertElement();\n      (0, _runloop.scheduleOnce)(\"afterRender\", this, this._triggerAds);\n    }\n    showAdbutlerAds() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_adbutler_ads;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAdbutlerAds\", [_decorators.default]);\n    }\n    showAd(publisherId, showAdbutlerAds, showToGroups, showAfterPost, showOnCurrentPage) {\n      return publisherId && showAdbutlerAds && showToGroups && showAfterPost && showOnCurrentPage;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAd\", [(0, _decorators.default)(\"publisherId\", \"showAdbutlerAds\", \"showToGroups\", \"showAfterPost\", \"showOnCurrentPage\")]);\n    }\n    showAfterPost(postNumber) {\n      if (!postNumber) {\n        return true;\n      }\n      return this.isNthPost(parseInt(this.siteSettings.adbutler_nth_post, 10));\n    }\n    static {\n      dt7948.n(this.prototype, \"showAfterPost\", [(0, _decorators.default)(\"postNumber\")]);\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.adbutler,\n          ad_plugin_house_ad_id: null,\n          placement: this.placement\n        }\n      };\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            <div id={{this.divId}} class={{this.className}}></div>\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"mOAuVtyZ\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[1,\\\"      \\\"],[10,0],[15,1,[30,0,[\\\"divId\\\"]]],[15,0,[30,0,[\\\"className\\\"]]],[12],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/adbutler-ad.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = AdbutlerAd;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/amazon-product-links\", [\"exports\", \"@ember/object/computed\", \"@ember/template\", \"@ember-decorators/component\", \"discourse/lib/decorators\", \"discourse-i18n\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _computed, _template, _component, _decorators, _discourseI18n, _adComponent, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const AmazonProductLinks = dt7948.c(class AmazonProductLinks extends _adComponent.default {\n    static {\n      dt7948.g(this.prototype, \"showAd\", [(0, _computed.and)(\"showAmazonAds\", \"showToGroups\", \"showAfterPost\", \"showOnCurrentPage\")]);\n    }\n    #showAd = (dt7948.i(this, \"showAd\"), void 0);\n    init() {\n      const data = {\n        \"topic-list-top\": {},\n        \"topic-above-post-stream\": {},\n        \"topic-above-suggested\": {},\n        \"post-bottom\": {}\n      };\n      const mobileView = this.site.get(\"mobileView\");\n      const placement = this.get(\"placement\");\n      if (!mobileView && this.siteSettings.amazon_topic_list_top_src_code) {\n        data[\"topic-list-top\"][\"user_input\"] = this.siteSettings.amazon_topic_list_top_src_code;\n        data[\"topic-list-top\"][\"amazon_width\"] = parseInt(this.siteSettings.amazon_topic_list_top_ad_width_code, 10);\n        data[\"topic-list-top\"][\"amazon_height\"] = parseInt(this.siteSettings.amazon_topic_list_top_ad_height_code, 10);\n      }\n      if (mobileView && this.siteSettings.amazon_mobile_topic_list_top_src_code) {\n        data[\"topic-list-top\"][\"user_input_mobile\"] = this.siteSettings.amazon_mobile_topic_list_top_src_code;\n        data[\"topic-list-top\"][\"mobile_amazon_width\"] = parseInt(this.siteSettings.amazon_mobile_topic_list_top_ad_width_code, 10);\n        data[\"topic-list-top\"][\"mobile_amazon_height\"] = parseInt(this.siteSettings.amazon_mobile_topic_list_top_ad_height_code, 10);\n      }\n      if (!mobileView && this.siteSettings.amazon_topic_above_post_stream_src_code) {\n        data[\"topic-above-post-stream\"][\"user_input\"] = this.siteSettings.amazon_topic_above_post_stream_src_code;\n        data[\"topic-above-post-stream\"][\"amazon_width\"] = parseInt(this.siteSettings.amazon_topic_above_post_stream_ad_width_code, 10);\n        data[\"topic-above-post-stream\"][\"amazon_height\"] = parseInt(this.siteSettings.amazon_topic_above_post_stream_ad_height_code, 10);\n      }\n      if (mobileView && this.siteSettings.amazon_mobile_topic_above_post_stream_src_code) {\n        data[\"topic-above-post-stream\"][\"user_input_mobile\"] = this.siteSettings.amazon_mobile_topic_above_post_stream_src_code;\n        data[\"topic-above-post-stream\"][\"mobile_amazon_width\"] = parseInt(this.siteSettings.amazon_mobile_topic_above_post_stream_ad_width_code, 10);\n        data[\"topic-above-post-stream\"][\"mobile_amazon_height\"] = parseInt(this.siteSettings.amazon_mobile_topic_above_post_stream_ad_height_code, 10);\n      }\n      if (!mobileView && this.siteSettings.amazon_topic_above_suggested_src_code) {\n        data[\"topic-above-suggested\"][\"user_input\"] = this.siteSettings.amazon_topic_above_suggested_src_code;\n        data[\"topic-above-suggested\"][\"amazon_width\"] = parseInt(this.siteSettings.amazon_topic_above_suggested_ad_width_code, 10);\n        data[\"topic-above-suggested\"][\"amazon_height\"] = parseInt(this.siteSettings.amazon_topic_above_suggested_ad_height_code, 10);\n      }\n      if (mobileView && this.siteSettings.amazon_mobile_topic_above_suggested_src_code) {\n        data[\"topic-above-suggested\"][\"user_input_mobile\"] = this.siteSettings.amazon_mobile_topic_above_suggested_src_code;\n        data[\"topic-above-suggested\"][\"mobile_amazon_width\"] = parseInt(this.siteSettings.amazon_mobile_topic_above_suggested_ad_width_code, 10);\n        data[\"topic-above-suggested\"][\"mobile_amazon_height\"] = parseInt(this.siteSettings.amazon_mobile_topic_above_suggested_ad_height_code, 10);\n      }\n      if (!mobileView && this.siteSettings.amazon_post_bottom_src_code) {\n        data[\"post-bottom\"][\"user_input\"] = this.siteSettings.amazon_post_bottom_src_code;\n        data[\"post-bottom\"][\"amazon_width\"] = parseInt(this.siteSettings.amazon_post_bottom_ad_width_code, 10);\n        data[\"post-bottom\"][\"amazon_height\"] = parseInt(this.siteSettings.amazon_post_bottom_ad_height_code, 10);\n      }\n      if (mobileView && this.siteSettings.amazon_mobile_post_bottom_src_code) {\n        data[\"post-bottom\"][\"user_input_mobile\"] = this.siteSettings.amazon_mobile_post_bottom_src_code;\n        data[\"post-bottom\"][\"mobile_amazon_width\"] = parseInt(this.siteSettings.amazon_mobile_post_bottom_ad_width_code, 10);\n        data[\"post-bottom\"][\"mobile_amazon_height\"] = parseInt(this.siteSettings.amazon_mobile_post_bottom_ad_height_code, 10);\n      }\n      this.set(\"user_input\", data[placement][\"user_input\"]);\n      this.set(\"amazon_width\", data[placement][\"amazon_width\"]);\n      this.set(\"amazon_height\", data[placement][\"amazon_height\"]);\n      this.set(\"user_input_mobile\", data[placement][\"user_input_mobile\"]);\n      this.set(\"mobile_amazon_height\", data[placement][\"mobile_amazon_height\"]);\n      this.set(\"mobile_amazon_width\", data[placement][\"mobile_amazon_width\"]);\n      super.init();\n    }\n    adWrapperStyle(w, h) {\n      return (0, _template.htmlSafe)(`width: ${w}px; height: ${h}px;`);\n    }\n    static {\n      dt7948.n(this.prototype, \"adWrapperStyle\", [(0, _decorators.default)(\"amazon_width\", \"amazon_height\")]);\n    }\n    adWrapperStyleMobile(w, h) {\n      return (0, _template.htmlSafe)(`width: ${w}px; height: ${h}px;`);\n    }\n    static {\n      dt7948.n(this.prototype, \"adWrapperStyleMobile\", [(0, _decorators.default)(\"mobile_amazon_width\", \"mobile_amazon_height\")]);\n    }\n    adTitleStyleMobile(w) {\n      return (0, _template.htmlSafe)(`width: ${w}px;`);\n    }\n    static {\n      dt7948.n(this.prototype, \"adTitleStyleMobile\", [(0, _decorators.default)(\"mobile_amazon_width\")]);\n    }\n    userInput(userInput) {\n      return (0, _template.htmlSafe)(`${userInput}`);\n    }\n    static {\n      dt7948.n(this.prototype, \"userInput\", [(0, _decorators.default)(\"user_input\")]);\n    }\n    userInputMobile(userInput) {\n      return (0, _template.htmlSafe)(`${userInput}`);\n    }\n    static {\n      dt7948.n(this.prototype, \"userInputMobile\", [(0, _decorators.default)(\"user_input_mobile\")]);\n    }\n    showAmazonAds() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_amazon_ads;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAmazonAds\", [_decorators.default]);\n    }\n    showAfterPost(postNumber) {\n      if (!postNumber) {\n        return true;\n      }\n      return this.isNthPost(parseInt(this.siteSettings.amazon_nth_post_code, 10));\n    }\n    static {\n      dt7948.n(this.prototype, \"showAfterPost\", [(0, _decorators.default)(\"postNumber\")]);\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.amazon,\n          ad_plugin_house_ad_id: null,\n          placement: this.placement\n        }\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            {{#if this.site.mobileView}}\n              <div\n                class=\"amazon-product-links-label\"\n                style={{this.adTitleStyleMobile}}\n              ><h2>{{i18n \"adplugin.advertisement_label\"}}</h2></div>\n              <iframe\n                style={{this.adWrapperStyleMobile}}\n                marginwidth=\"0\"\n                marginheight=\"0\"\n                scrolling=\"no\"\n                frameborder=\"0\"\n                src={{this.userInputMobile}}\n                title={{i18n \"adplugin.advertisement_label\"}}\n              >\n              </iframe>\n            {{else}}\n              <div class=\"amazon-product-links-label\"><h2>{{i18n\n                    \"adplugin.advertisement_label\"\n                  }}</h2></div>\n              <div class=\"container\" align=\"center\">\n                <iframe\n                  style={{this.adWrapperStyle}}\n                  marginwidth=\"0\"\n                  marginheight=\"0\"\n                  scrolling=\"no\"\n                  frameborder=\"0\"\n                  src={{this.userInput}}\n                  title={{i18n \"adplugin.advertisement_label\"}}\n                >\n                </iframe>\n              </div>\n            {{/if}}\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"hJZhOwwx\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"amazon-product-links-label\\\"],[15,5,[30,0,[\\\"adTitleStyleMobile\\\"]]],[12],[10,\\\"h2\\\"],[12],[1,[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[13],[13],[1,\\\"\\\\n        \\\"],[10,\\\"iframe\\\"],[15,5,[30,0,[\\\"adWrapperStyleMobile\\\"]]],[14,\\\"marginwidth\\\",\\\"0\\\"],[14,\\\"marginheight\\\",\\\"0\\\"],[14,\\\"scrolling\\\",\\\"no\\\"],[14,\\\"frameborder\\\",\\\"0\\\"],[15,\\\"src\\\",[30,0,[\\\"userInputMobile\\\"]]],[15,\\\"title\\\",[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[12],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"amazon-product-links-label\\\"],[12],[10,\\\"h2\\\"],[12],[1,[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[13],[13],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"container\\\"],[14,\\\"align\\\",\\\"center\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"iframe\\\"],[15,5,[30,0,[\\\"adWrapperStyle\\\"]]],[14,\\\"marginwidth\\\",\\\"0\\\"],[14,\\\"marginheight\\\",\\\"0\\\"],[14,\\\"scrolling\\\",\\\"no\\\"],[14,\\\"frameborder\\\",\\\"0\\\"],[15,\\\"src\\\",[30,0,[\\\"userInput\\\"]]],[15,\\\"title\\\",[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[12],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/amazon-product-links.js\",\n        \"scope\": () => [_discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.classNames)(\"amazon-product-links\")]);\n  var _default = _exports.default = AmazonProductLinks;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/carbonads-ad\", [\"exports\", \"@ember/template\", \"discourse/lib/decorators\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _template, _decorators, _adComponent, _component, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  class CarbonadsAd extends _adComponent.default {\n    serve_id = null;\n    placement = null;\n    init() {\n      this.set(\"serve_id\", this.siteSettings.carbonads_serve_id);\n      this.set(\"placement\", this.siteSettings.carbonads_placement);\n      super.init();\n    }\n    url(serveId, placement) {\n      return (0, _template.htmlSafe)(`//cdn.carbonads.com/carbon.js?serve=${serveId}&placement=${placement}`);\n    }\n    static {\n      dt7948.n(this.prototype, \"url\", [(0, _decorators.default)(\"serve_id\", \"placement\")]);\n    }\n    showCarbonAds() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_carbon_ads;\n    }\n    static {\n      dt7948.n(this.prototype, \"showCarbonAds\", [_decorators.default]);\n    }\n    showAd(placement, serveId, showCarbonAds, showToGroups, showOnCurrentPage) {\n      return placement && serveId && showCarbonAds && showToGroups && showOnCurrentPage;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAd\", [(0, _decorators.default)(\"placement\", \"serve_id\", \"showCarbonAds\", \"showToGroups\", \"showOnCurrentPage\")]);\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.carbon,\n          ad_plugin_house_ad_id: null,\n          placement: this.placement\n        }\n      };\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            {{! template-lint-disable no-forbidden-elements }}\n            <script src={{this.url}} id=\"_carbonads_js\" async type=\"text/javascript\">\n            </script>\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"BEeBjvK3\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[1,\\\"      \\\"],[10,\\\"script\\\"],[15,\\\"src\\\",[30,0,[\\\"url\\\"]]],[14,1,\\\"_carbonads_js\\\"],[14,\\\"async\\\",\\\"\\\"],[14,4,\\\"text/javascript\\\"],[12],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/carbonads-ad.js\",\n        \"isStrictMode\": true\n      }), this);\n    }\n  }\n  _exports.default = CarbonadsAd;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/google-adsense\", [\"exports\", \"@ember/runloop\", \"@ember/template\", \"@ember-decorators/component\", \"rsvp\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/load-script\", \"discourse-i18n\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _runloop, _template, _component, _rsvp, _decorators, _environment, _loadScript, _discourseI18n, _adComponent, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  let _loaded = false,\n    _promise = null,\n    renderCounts = {};\n  function parseAdWidth(value) {\n    if (value === \"responsive\") {\n      return \"auto\";\n    }\n    if (value.startsWith(\"fluid\")) {\n      return \"fluid\";\n    }\n    const w = parseInt(value.substring(0, 3).trim(), 10);\n    if (isNaN(w)) {\n      return \"auto\";\n    } else {\n      return `${w}px`;\n    }\n  }\n  function parseAdHeight(value) {\n    if (value === \"responsive\") {\n      return \"auto\";\n    }\n    if (value.startsWith(\"fluid\")) {\n      return \"fluid\";\n    }\n    const h = parseInt(value.substring(4, 7).trim(), 10);\n    if (isNaN(h)) {\n      return \"auto\";\n    } else {\n      return `${h}px`;\n    }\n  }\n  function loadAdsense() {\n    if (_loaded) {\n      return _rsvp.default.resolve();\n    }\n    if (_promise) {\n      return _promise;\n    }\n    const adsenseSrc = (\"https:\" === document.location.protocol ? \"https:\" : \"http:\") + \"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\";\n    _promise = (0, _loadScript.default)(adsenseSrc, {\n      scriptTag: true\n    }).then(function () {\n      _loaded = true;\n    });\n    return _promise;\n  }\n  const DESKTOP_SETTINGS = {\n    \"topic-list-top\": {\n      code: \"adsense_topic_list_top_code\",\n      sizes: \"adsense_topic_list_top_ad_sizes\"\n    },\n    \"topic-above-post-stream\": {\n      code: \"adsense_topic_above_post_stream_code\",\n      sizes: \"adsense_topic_above_post_stream_ad_sizes\"\n    },\n    \"topic-above-suggested\": {\n      code: \"adsense_topic_above_suggested_code\",\n      sizes: \"adsense_topic_above_suggested_ad_sizes\"\n    },\n    \"post-bottom\": {\n      code: \"adsense_post_bottom_code\",\n      sizes: \"adsense_post_bottom_ad_sizes\"\n    }\n  };\n  const MOBILE_SETTINGS = {\n    \"topic-list-top\": {\n      code: \"adsense_mobile_topic_list_top_code\",\n      sizes: \"adsense_mobile_topic_list_top_ad_size\"\n    },\n    \"topic-above-post-stream\": {\n      code: \"adsense_mobile_topic_above_post_stream_code\",\n      sizes: \"adsense_mobile_topic_above_post_stream_ad_size\"\n    },\n    \"topic-above-suggested\": {\n      code: \"adsense_mobile_topic_above_suggested_code\",\n      sizes: \"adsense_mobile_topic_above_suggested_ad_size\"\n    },\n    \"post-bottom\": {\n      code: \"adsense_mobile_post_bottom_code\",\n      sizes: \"adsense_mobile_post_bottom_ad_size\"\n    }\n  };\n  const GoogleAdsense = dt7948.c(class GoogleAdsense extends _adComponent.default {\n    loadedGoogletag = false;\n    publisher_id = null;\n    ad_width = null;\n    ad_height = null;\n    adRequested = false;\n    init() {\n      let config, size;\n      const placement = this.get(\"placement\");\n      if (this.site.mobileView) {\n        config = MOBILE_SETTINGS[placement];\n      } else {\n        config = DESKTOP_SETTINGS[placement];\n      }\n      if (!renderCounts[placement]) {\n        renderCounts[placement] = 0;\n      }\n      const sizes = (this.siteSettings[config.sizes] || \"\").split(\"|\");\n      if (sizes.length === 1) {\n        size = sizes[0];\n      } else {\n        size = sizes[renderCounts[placement] % sizes.length];\n        renderCounts[placement] += 1;\n      }\n      this.set(\"ad_width\", parseAdWidth(size));\n      this.set(\"ad_height\", parseAdHeight(size));\n      this.set(\"ad_code\", this.siteSettings[config.code]);\n      this.set(\"publisher_id\", this.siteSettings.adsense_publisher_code);\n      super.init();\n    }\n    async _triggerAds() {\n      if ((0, _environment.isTesting)()) {\n        return; // Don't load external JS during tests\n      }\n      this.set(\"adRequested\", true);\n      await loadAdsense();\n      if (this.isDestroyed || this.isDestroying) {\n        // Component removed from DOM before script loaded\n        return;\n      }\n      try {\n        const adsbygoogle = window.adsbygoogle ||= [];\n        adsbygoogle.push({}); // ask AdSense to fill one ad unit\n      } catch (ex) {\n        // eslint-disable-next-line no-console\n        console.error(\"Adsense error:\", ex);\n      }\n    }\n    didInsertElement() {\n      super.didInsertElement();\n      if (!this.get(\"showAd\")) {\n        return;\n      }\n      (0, _runloop.scheduleOnce)(\"afterRender\", this, this._triggerAds);\n    }\n    isResponsive(adWidth) {\n      return [\"auto\", \"fluid\"].includes(adWidth);\n    }\n    static {\n      dt7948.n(this.prototype, \"isResponsive\", [(0, _decorators.default)(\"ad_width\")]);\n    }\n    isFluid(adWidth) {\n      return adWidth === \"fluid\";\n    }\n    static {\n      dt7948.n(this.prototype, \"isFluid\", [(0, _decorators.default)(\"ad_width\")]);\n    }\n    classForSlot(placement, showAd) {\n      return showAd ? (0, _template.htmlSafe)(`adsense-${placement}`) : \"\";\n    }\n    static {\n      dt7948.n(this.prototype, \"classForSlot\", [(0, _decorators.default)(\"placement\", \"showAd\")]);\n    }\n    autoAdFormat(isResponsive, isFluid) {\n      return isResponsive ? (0, _template.htmlSafe)(isFluid ? \"fluid\" : \"auto\") : false;\n    }\n    static {\n      dt7948.n(this.prototype, \"autoAdFormat\", [(0, _decorators.default)(\"isResponsive\", \"isFluid\")]);\n    }\n    adWrapperStyle(w, h, isResponsive) {\n      return (0, _template.htmlSafe)(isResponsive ? \"\" : `width: ${w}; height: ${h};`);\n    }\n    static {\n      dt7948.n(this.prototype, \"adWrapperStyle\", [(0, _decorators.default)(\"ad_width\", \"ad_height\", \"isResponsive\")]);\n    }\n    adInsStyle(adWrapperStyle, isResponsive) {\n      return (0, _template.htmlSafe)(`display: ${isResponsive ? \"block\" : \"inline-block\"}; ${adWrapperStyle}`);\n    }\n    static {\n      dt7948.n(this.prototype, \"adInsStyle\", [(0, _decorators.default)(\"adWrapperStyle\", \"isResponsive\")]);\n    }\n    showAdsenseAds() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_adsense_ads;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAdsenseAds\", [_decorators.default]);\n    }\n    showAd(publisherId, showAdsenseAds, showToGroups, showAfterPost, showOnCurrentPage) {\n      return publisherId && showAdsenseAds && showToGroups && showAfterPost && showOnCurrentPage;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAd\", [(0, _decorators.default)(\"publisher_id\", \"showAdsenseAds\", \"showToGroups\", \"showAfterPost\", \"showOnCurrentPage\")]);\n    }\n    showAfterPost(postNumber) {\n      if (!postNumber) {\n        return true;\n      }\n      return this.isNthPost(parseInt(this.siteSettings.adsense_nth_post_code, 10));\n    }\n    static {\n      dt7948.n(this.prototype, \"showAfterPost\", [(0, _decorators.default)(\"postNumber\")]);\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.adsense,\n          ad_plugin_house_ad_id: null,\n          placement: this.placement\n        }\n      };\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            <div class=\"google-adsense-label\"><h2>{{i18n\n                  \"adplugin.advertisement_label\"\n                }}</h2></div>\n            <div\n              class=\"google-adsense-content\"\n              id={{if this.isResponsive \"google-adsense__responsive\"}}\n              style={{this.adWrapperStyle}}\n            >\n              <ins\n                class=\"adsbygoogle\"\n                style={{this.adInsStyle}}\n                data-ad-client=\"ca-pub-{{this.publisher_id}}\"\n                data-ad-slot={{this.ad_code}}\n                data-ad-format={{this.autoAdFormat}}\n              >\n              </ins>\n            </div>\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"RUvaUKuv\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"google-adsense-label\\\"],[12],[10,\\\"h2\\\"],[12],[1,[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[13],[13],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"google-adsense-content\\\"],[15,1,[52,[30,0,[\\\"isResponsive\\\"]],\\\"google-adsense__responsive\\\"]],[15,5,[30,0,[\\\"adWrapperStyle\\\"]]],[12],[1,\\\"\\\\n        \\\"],[10,\\\"ins\\\"],[14,0,\\\"adsbygoogle\\\"],[15,5,[30,0,[\\\"adInsStyle\\\"]]],[15,\\\"data-ad-client\\\",[29,[\\\"ca-pub-\\\",[30,0,[\\\"publisher_id\\\"]]]]],[15,\\\"data-ad-slot\\\",[30,0,[\\\"ad_code\\\"]]],[15,\\\"data-ad-format\\\",[30,0,[\\\"autoAdFormat\\\"]]],[12],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/google-adsense.js\",\n        \"scope\": () => [_discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.classNameBindings)(\":google-adsense\", \"classForSlot\", \"isResponsive:adsense-responsive\")]);\n  var _default = _exports.default = GoogleAdsense;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/google-dfp-ad\", [\"exports\", \"@ember/object/computed\", \"@ember/template\", \"@ember-decorators/component\", \"@ember-decorators/object\", \"rsvp\", \"discourse/lib/decorators\", \"discourse/lib/environment\", \"discourse/lib/load-script\", \"discourse-i18n\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _computed, _template, _component, _object, _rsvp, _decorators, _environment, _loadScript, _discourseI18n, _adComponent, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  let _loaded = false,\n    _promise = null,\n    ads = {},\n    nextSlotNum = 1,\n    renderCounts = {};\n  function getNextSlotNum() {\n    return nextSlotNum++;\n  }\n  function splitWidthInt(value) {\n    let str = value.substring(0, 3);\n    return str.trim();\n  }\n  function splitHeightInt(value) {\n    let str = value.substring(4, 7);\n    return str.trim();\n  }\n  // This creates an array for the values of the custom targeting key\n  function valueParse(value) {\n    let final = value.replace(/ /g, \"\");\n    final = final.replace(/['\"]+/g, \"\");\n    final = final.split(\",\");\n    return final;\n  }\n  // This creates an array for the key of the custom targeting key\n  function keyParse(word) {\n    let key = word;\n    key = key.replace(/['\"]+/g, \"\");\n    key = key.split(\"\\n\");\n    return key;\n  }\n  // This should call adslot.setTargeting(key for that location, value for that location)\n  function custom_targeting(key_array, value_array, adSlot) {\n    for (let i = 0; i < key_array.length; i++) {\n      if (key_array[i]) {\n        adSlot.setTargeting(key_array[i], valueParse(value_array[i]));\n      }\n    }\n  }\n  const DESKTOP_SETTINGS = {\n    \"topic-list-top\": {\n      code: \"dfp_topic_list_top_code\",\n      sizes: \"dfp_topic_list_top_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_list_top_key_code\",\n      targeting_values: \"dfp_target_topic_list_top_value_code\"\n    },\n    \"topic-above-post-stream\": {\n      code: \"dfp_topic_above_post_stream_code\",\n      sizes: \"dfp_topic_above_post_stream_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_above_post_stream_key_code\",\n      targeting_values: \"dfp_target_topic_above_post_stream_value_code\"\n    },\n    \"topic-above-suggested\": {\n      code: \"dfp_topic_above_suggested_code\",\n      sizes: \"dfp_topic_above_suggested_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_above_suggested_key_code\",\n      targeting_values: \"dfp_target_topic_above_suggested_value_code\"\n    },\n    \"post-bottom\": {\n      code: \"dfp_post_bottom_code\",\n      sizes: \"dfp_post_bottom_ad_sizes\",\n      targeting_keys: \"dfp_target_post_bottom_key_code\",\n      targeting_values: \"dfp_target_post_bottom_value_code\"\n    }\n  };\n  const MOBILE_SETTINGS = {\n    \"topic-list-top\": {\n      code: \"dfp_mobile_topic_list_top_code\",\n      sizes: \"dfp_mobile_topic_list_top_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_list_top_key_code\",\n      targeting_values: \"dfp_target_topic_list_top_value_code\"\n    },\n    \"topic-above-post-stream\": {\n      code: \"dfp_mobile_topic_above_post_stream_code\",\n      sizes: \"dfp_mobile_topic_above_post_stream_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_above_post_stream_key_code\",\n      targeting_values: \"dfp_target_topic_above_post_stream_value_code\"\n    },\n    \"topic-above-suggested\": {\n      code: \"dfp_mobile_topic_above_suggested_code\",\n      sizes: \"dfp_mobile_topic_above_suggested_ad_sizes\",\n      targeting_keys: \"dfp_target_topic_above_suggested_key_code\",\n      targeting_values: \"dfp_target_topic_above_suggested_value_code\"\n    },\n    \"post-bottom\": {\n      code: \"dfp_mobile_post_bottom_code\",\n      sizes: \"dfp_mobile_post_bottom_ad_sizes\",\n      targeting_keys: \"dfp_target_post_bottom_key_code\",\n      targeting_values: \"dfp_target_post_bottom_value_code\"\n    }\n  };\n  function getWidthAndHeight(placement, settings, isMobile) {\n    let config, size;\n    if (isMobile) {\n      config = MOBILE_SETTINGS[placement];\n    } else {\n      config = DESKTOP_SETTINGS[placement];\n    }\n    if (!renderCounts[placement]) {\n      renderCounts[placement] = 0;\n    }\n    const sizes = (settings[config.sizes] || \"\").split(\"|\");\n    if (sizes.length === 1) {\n      size = sizes[0];\n    } else {\n      size = sizes[renderCounts[placement] % sizes.length];\n      renderCounts[placement] += 1;\n    }\n    if (size === \"fluid\") {\n      return {\n        width: \"fluid\",\n        height: \"fluid\"\n      };\n    }\n    const sizeObj = {\n      width: parseInt(splitWidthInt(size), 10),\n      height: parseInt(splitHeightInt(size), 10)\n    };\n    if (!isNaN(sizeObj.width) && !isNaN(sizeObj.height)) {\n      return sizeObj;\n    }\n  }\n  function defineSlot(divId, placement, settings, isMobile, width, height, categoryTarget) {\n    if (!settings.dfp_publisher_id) {\n      return;\n    }\n    if (ads[divId]) {\n      return ads[divId];\n    }\n    let ad, config, publisherId;\n    if (isMobile) {\n      publisherId = settings.dfp_publisher_id_mobile || settings.dfp_publisher_id;\n      config = MOBILE_SETTINGS[placement];\n    } else {\n      publisherId = settings.dfp_publisher_id;\n      config = DESKTOP_SETTINGS[placement];\n    }\n    ad = window.googletag.defineSlot(\"/\" + publisherId + \"/\" + settings[config.code], [width, height], divId);\n    custom_targeting(keyParse(settings[config.targeting_keys]), keyParse(settings[config.targeting_values]), ad);\n    if (categoryTarget) {\n      ad.setTargeting(\"discourse-category\", categoryTarget);\n    }\n    ad.addService(window.googletag.pubads());\n    ads[divId] = {\n      ad,\n      width,\n      height\n    };\n    return ads[divId];\n  }\n  function destroySlot(divId) {\n    if (ads[divId] && window.googletag) {\n      window.googletag.destroySlots([ads[divId].ad]);\n      delete ads[divId];\n    }\n  }\n  function loadGoogle() {\n    /**\n    * Refer to this article for help:\n    * https://support.google.com/admanager/answer/4578089?hl=en\n    */\n    if (_loaded) {\n      return _rsvp.default.resolve();\n    }\n    if (_promise) {\n      return _promise;\n    }\n    // The boilerplate code\n    let dfpSrc = (\"https:\" === document.location.protocol ? \"https:\" : \"http:\") + \"//securepubads.g.doubleclick.net/tag/js/gpt.js\";\n    _promise = (0, _loadScript.default)(dfpSrc, {\n      scriptTag: true\n    }).then(function () {\n      _loaded = true;\n      if (window.googletag === undefined) {\n        // eslint-disable-next-line no-console\n        console.log(\"googletag is undefined!\");\n      }\n      window.googletag.cmd.push(function () {\n        // Infinite scroll requires SRA:\n        window.googletag.pubads().enableSingleRequest();\n        // we always use refresh() to fetch the ads:\n        window.googletag.pubads().disableInitialLoad();\n        // Improve CSP compatibility (https://developers.google.com/publisher-tag/guides/content-security-policy)\n        window.googletag.pubads().setForceSafeFrame(true);\n        window.googletag.enableServices();\n      });\n    });\n    window.googletag = window.googletag || {\n      cmd: []\n    };\n    return _promise;\n  }\n  const GoogleDfpAd = dt7948.c(class GoogleDfpAd extends _adComponent.default {\n    loadedGoogletag = false;\n    lastAdRefresh = null;\n    static {\n      dt7948.g(this.prototype, \"width\", [(0, _computed.alias)(\"size.width\")]);\n    }\n    #width = (dt7948.i(this, \"width\"), void 0);\n    static {\n      dt7948.g(this.prototype, \"height\", [(0, _computed.alias)(\"size.height\")]);\n    }\n    #height = (dt7948.i(this, \"height\"), void 0);\n    size() {\n      return getWidthAndHeight(this.get(\"placement\"), this.siteSettings, this.site.mobileView);\n    }\n    static {\n      dt7948.n(this.prototype, \"size\", [_decorators.default]);\n    }\n    publisherId(globalId, mobileId, isMobile) {\n      if (isMobile) {\n        return mobileId || globalId;\n      } else {\n        return globalId;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"publisherId\", [(0, _decorators.default)(\"siteSettings.dfp_publisher_id\", \"siteSettings.dfp_publisher_id_mobile\", \"site.mobileView\")]);\n    }\n    divId(placement, postNumber) {\n      let slotNum = getNextSlotNum();\n      if (postNumber) {\n        return `div-gpt-ad-${slotNum}-${placement}-${postNumber}`;\n      } else {\n        return `div-gpt-ad-${slotNum}-${placement}`;\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"divId\", [(0, _decorators.default)(\"placement\", \"postNumber\")]);\n    }\n    adUnitClass(placement, showAd) {\n      return showAd ? `dfp-ad-${placement}` : \"\";\n    }\n    static {\n      dt7948.n(this.prototype, \"adUnitClass\", [(0, _decorators.default)(\"placement\", \"showAd\")]);\n    }\n    adWrapperStyle(w, h) {\n      if (w !== \"fluid\") {\n        return (0, _template.htmlSafe)(`width: ${w}px; height: ${h}px;`);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"adWrapperStyle\", [(0, _decorators.default)(\"width\", \"height\")]);\n    }\n    adTitleStyleMobile(w) {\n      if (w !== \"fluid\") {\n        return (0, _template.htmlSafe)(`width: ${w}px;`);\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"adTitleStyleMobile\", [(0, _decorators.default)(\"width\")]);\n    }\n    showAd(publisherId, showDfpAds, showToGroups, showAfterPost, showOnCurrentPage, size) {\n      return publisherId && showDfpAds && showToGroups && showAfterPost && showOnCurrentPage && size;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAd\", [(0, _decorators.default)(\"publisherId\", \"showDfpAds\", \"showToGroups\", \"showAfterPost\", \"showOnCurrentPage\", \"size\")]);\n    }\n    showDfpAds() {\n      if (!this.currentUser) {\n        return true;\n      }\n      return this.currentUser.show_dfp_ads;\n    }\n    static {\n      dt7948.n(this.prototype, \"showDfpAds\", [_decorators.default]);\n    }\n    showAfterPost(postNumber) {\n      if (!postNumber) {\n        return true;\n      }\n      return this.isNthPost(parseInt(this.siteSettings.dfp_nth_post_code, 10));\n    }\n    // 3 second delay between calls to refresh ads in a component.\n    // Ember often calls updated() more than once, and *sometimes*\n    // updated() is called after _initGoogleDFP().\n    static {\n      dt7948.n(this.prototype, \"showAfterPost\", [(0, _decorators.default)(\"postNumber\")]);\n    }\n    shouldRefreshAd() {\n      const lastAdRefresh = this.get(\"lastAdRefresh\");\n      if (!lastAdRefresh) {\n        return true;\n      }\n      return new Date() - lastAdRefresh > 3000;\n    }\n    updated() {\n      if (!this.shouldRefreshAd()) {\n        return;\n      }\n      let slot = ads[this.get(\"divId\")];\n      if (!(slot && slot.ad)) {\n        return;\n      }\n      let ad = slot.ad,\n        categorySlug = this.get(\"currentCategorySlug\");\n      if (this.get(\"loadedGoogletag\")) {\n        this.set(\"lastAdRefresh\", new Date());\n        window.googletag.cmd.push(() => {\n          ad.setTargeting(\"discourse-category\", categorySlug || \"0\");\n          window.googletag.pubads().refresh([ad]);\n        });\n      }\n    }\n    static {\n      dt7948.n(this.prototype, \"updated\", [(0, _object.on)(\"didUpdate\")]);\n    }\n    _initGoogleDFP() {\n      if ((0, _environment.isTesting)()) {\n        return; // Don't load external JS during tests\n      }\n      if (!this.get(\"showAd\")) {\n        return;\n      }\n      loadGoogle().then(() => {\n        this.set(\"loadedGoogletag\", true);\n        this.set(\"lastAdRefresh\", new Date());\n        window.googletag.cmd.push(() => {\n          let slot = defineSlot(this.get(\"divId\"), this.get(\"placement\"), this.siteSettings, this.site.mobileView, this.get(\"width\"), this.get(\"height\"), this.get(\"currentCategorySlug\") || \"0\");\n          if (slot && slot.ad) {\n            // Display has to be called before refresh\n            // and after the slot div is in the page.\n            window.googletag.display(this.get(\"divId\"));\n            window.googletag.pubads().refresh([slot.ad]);\n          }\n        });\n      });\n    }\n    static {\n      dt7948.n(this.prototype, \"_initGoogleDFP\", [(0, _object.on)(\"didInsertElement\")]);\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.dfp,\n          ad_plugin_house_ad_id: null,\n          placement: this.placement\n        }\n      };\n    }\n    willRender() {\n      super.willRender(...arguments);\n      if (!this.get(\"showAd\")) {\n        return;\n      }\n    }\n    cleanup() {\n      destroySlot(this.get(\"divId\"));\n    }\n    static {\n      dt7948.n(this.prototype, \"cleanup\", [(0, _object.on)(\"willDestroyElement\")]);\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            {{#if this.site.mobileView}}\n              <div class=\"google-dfp-ad-label\" style={{this.adTitleStyleMobile}}><h2\n                >{{i18n \"adplugin.advertisement_label\"}}</h2></div>\n              <div\n                id={{this.divId}}\n                style={{this.adWrapperStyle}}\n                class=\"dfp-ad-unit\"\n                align=\"center\"\n              ></div>\n            {{else}}\n              <div class=\"google-dfp-ad-label\"><h2>{{i18n\n                    \"adplugin.advertisement_label\"\n                  }}</h2></div>\n              <div\n                id={{this.divId}}\n                style={{this.adWrapperStyle}}\n                class=\"dfp-ad-unit\"\n                align=\"center\"\n              ></div>\n            {{/if}}\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"GkcuW3Vu\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[41,[30,0,[\\\"site\\\",\\\"mobileView\\\"]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"google-dfp-ad-label\\\"],[15,5,[30,0,[\\\"adTitleStyleMobile\\\"]]],[12],[10,\\\"h2\\\"],[12],[1,[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[13],[13],[1,\\\"\\\\n        \\\"],[10,0],[15,1,[30,0,[\\\"divId\\\"]]],[15,5,[30,0,[\\\"adWrapperStyle\\\"]]],[14,0,\\\"dfp-ad-unit\\\"],[14,\\\"align\\\",\\\"center\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"google-dfp-ad-label\\\"],[12],[10,\\\"h2\\\"],[12],[1,[28,[32,0],[\\\"adplugin.advertisement_label\\\"],null]],[13],[13],[1,\\\"\\\\n        \\\"],[10,0],[15,1,[30,0,[\\\"divId\\\"]]],[15,5,[30,0,[\\\"adWrapperStyle\\\"]]],[14,0,\\\"dfp-ad-unit\\\"],[14,\\\"align\\\",\\\"center\\\"],[12],[13],[1,\\\"\\\\n\\\"]],[]]]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/google-dfp-ad.js\",\n        \"scope\": () => [_discourseI18n.i18n],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.classNames)(\"google-dfp-ad\"), (0, _component.classNameBindings)(\"adUnitClass\")]);\n  var _default = _exports.default = GoogleDfpAd;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/house-ad\", [\"exports\", \"@ember/template\", \"@ember/utils\", \"@ember-decorators/component\", \"discourse/lib/decorators\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-component\", \"@ember/component\", \"@ember/template-factory\"], function (_exports, _template, _utils, _component, _decorators, _adComponent, _component2, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const adIndex = {\n    topic_list_top: null,\n    topic_above_post_stream: null,\n    topic_above_suggested: null,\n    post_bottom: null,\n    topic_list_between: null\n  };\n  const HouseAd = dt7948.c(class HouseAd extends _adComponent.default {\n    adHtml = \"\";\n    currentAd = null;\n    _handleAdClick = event => {\n      // For house ads, only track clicks on <a> tags\n      const link = event.target.closest(\"a\");\n      if (link && link.href) {\n        this.trackClick();\n      }\n    };\n    colspanAttribute() {\n      return this.tagName === \"td\" ? \"5\" : null;\n    }\n    static {\n      dt7948.n(this.prototype, \"colspanAttribute\", [_decorators.default]);\n    }\n    adUnitClass(placement, showAd) {\n      return showAd ? `house-${placement}` : \"\";\n    }\n    static {\n      dt7948.n(this.prototype, \"adUnitClass\", [(0, _decorators.default)(\"placement\", \"showAd\")]);\n    }\n    showAd(showToGroups, showAfterPost, showAfterTopicListItem, showOnCurrentPage) {\n      return showToGroups && (showAfterPost || showAfterTopicListItem) && showOnCurrentPage;\n    }\n    static {\n      dt7948.n(this.prototype, \"showAd\", [(0, _decorators.default)(\"showToGroups\", \"showAfterPost\", \"showAfterTopicListItem\", \"showOnCurrentPage\")]);\n    }\n    showAfterPost(postNumber, placement) {\n      if (!postNumber && placement !== \"topic-list-between\") {\n        return true;\n      }\n      return this.isNthPost(parseInt(this.site.get(\"house_creatives.settings.after_nth_post\"), 10));\n    }\n    static {\n      dt7948.n(this.prototype, \"showAfterPost\", [(0, _decorators.default)(\"postNumber\", \"placement\")]);\n    }\n    showAfterTopicListItem(placement) {\n      if (placement !== \"topic-list-between\") {\n        return true;\n      }\n      return this.isNthTopicListItem(parseInt(this.site.get(\"house_creatives.settings.after_nth_topic\"), 10));\n    }\n    static {\n      dt7948.n(this.prototype, \"showAfterTopicListItem\", [(0, _decorators.default)(\"placement\")]);\n    }\n    chooseAdHtml() {\n      const houseAds = this.site.get(\"house_creatives\"),\n        placement = this.get(\"placement\").replace(/-/g, \"_\"),\n        adNames = this.adsNamesForSlot(placement);\n      // filter out ads that should not be shown on the current page\n      const filteredAds = adNames.filter(adName => {\n        const ad = houseAds.creatives[adName];\n        return ad && (!ad.category_ids?.length || ad.category_ids.includes(this.currentCategoryId));\n      });\n      if (filteredAds.length > 0) {\n        if (!adIndex[placement]) {\n          adIndex[placement] = 0;\n        }\n        let ad = houseAds.creatives[filteredAds[adIndex[placement]]] || \"\";\n        adIndex[placement] = (adIndex[placement] + 1) % filteredAds.length;\n        this.currentAd = ad || null;\n        return ad.html;\n      }\n      this.currentAd = null;\n    }\n    adsNamesForSlot(placement) {\n      const houseAds = this.site.get(\"house_creatives\");\n      if (!houseAds || !houseAds.settings) {\n        return [];\n      }\n      const adsForSlot = houseAds.settings[placement];\n      if (Object.keys(houseAds.creatives).length > 0 && !(0, _utils.isBlank)(adsForSlot)) {\n        return adsForSlot.split(\"|\");\n      } else {\n        return [];\n      }\n    }\n    refreshAd() {\n      this.set(\"adHtml\", this.chooseAdHtml());\n    }\n    buildImpressionPayload() {\n      return {\n        ad_plugin_impression: {\n          ad_type: this.site.ad_types.house,\n          ad_plugin_house_ad_id: this.currentAd?.id,\n          placement: this.placement\n        }\n      };\n    }\n    didInsertElement() {\n      super.didInsertElement(...arguments);\n      if (!this.get(\"showAd\")) {\n        return;\n      }\n      if (adIndex.topic_list_top === null) {\n        // start at a random spot in the ad inventory\n        const houseAds = this.site.get(\"house_creatives\");\n        Object.keys(adIndex).forEach(placement => {\n          const adNames = this.adsNamesForSlot(placement);\n          if (adNames.length === 0) {\n            return;\n          }\n          // filter out ads that should not be shown on the current page\n          const filteredAds = adNames.filter(adName => {\n            const ad = houseAds.creatives[adName];\n            return ad && (!ad.category_ids?.length || ad.category_ids.includes(this.currentCategoryId));\n          });\n          adIndex[placement] = Math.floor(Math.random() * filteredAds.length);\n        });\n      }\n      this.refreshAd();\n    }\n    static {\n      (0, _component2.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          {{#if this.showAd}}\n            {{htmlSafe this.adHtml}}\n          {{/if}}\n        \n      */\n      {\n        \"id\": \"Fj519OFB\",\n        \"block\": \"[[[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAd\\\"]],[[[1,\\\"      \\\"],[1,[28,[32,0],[[30,0,[\\\"adHtml\\\"]]],null]],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"  \\\"]],[],[\\\"if\\\"]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/house-ad.js\",\n        \"scope\": () => [_template.htmlSafe],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component.attributeBindings)(\"colspanAttribute:colspan\"), (0, _component.classNameBindings)(\"adUnitClass\"), (0, _component.classNames)(\"house-creative\")]);\n  var _default = _exports.default = HouseAd;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/components/post-bottom-ad\", [\"exports\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _adSlot, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const PostBottomAd = (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n  /*\n    \n    <AdSlot\n      @placement=\"post-bottom\"\n      @category={{@model.topic.category.slug}}\n      @postNumber={{@model.post_number}}\n    />\n  \n  */\n  {\n    \"id\": \"7D4sQEmB\",\n    \"block\": \"[[[1,\\\"\\\\n  \\\"],[8,[32,0],null,[[\\\"@placement\\\",\\\"@category\\\",\\\"@postNumber\\\"],[\\\"post-bottom\\\",[30,1,[\\\"topic\\\",\\\"category\\\",\\\"slug\\\"]],[30,1,[\\\"post_number\\\"]]]],null],[1,\\\"\\\\n\\\"]],[\\\"@model\\\"],[]]\",\n    \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/components/post-bottom-ad.js\",\n    \"scope\": () => [_adSlot.default],\n    \"isStrictMode\": true\n  }), (0, _templateOnly.default)(undefined, \"post-bottom-ad:PostBottomAd\"));\n  var _default = _exports.default = PostBottomAd;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/connectors/after-topic-list-item/discourse-adplugin\", [\"exports\", \"@ember/component\", \"@ember-decorators/component\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", \"@ember/template-factory\"], function (_exports, _component, _component2, _adSlot, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const DiscourseAdplugin = dt7948.c(class DiscourseAdplugin extends _component.default {\n    static shouldRender(args, context) {\n      return args.index && (0, _adSlot.slotContenders)(context.site, context.siteSettings, \"topic-list-between\", args.index).length > 0;\n    }\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          <AdSlot\n            @placement=\"topic-list-between\"\n            @category={{this.category.slug}}\n            @indexNumber={{this.index}}\n            @childTagName=\"td\"\n          />\n        \n      */\n      {\n        \"id\": \"v5DUAMex\",\n        \"block\": \"[[[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@placement\\\",\\\"@category\\\",\\\"@indexNumber\\\",\\\"@childTagName\\\"],[\\\"topic-list-between\\\",[30,0,[\\\"category\\\",\\\"slug\\\"]],[30,0,[\\\"index\\\"]],\\\"td\\\"]],null],[1,\\\"\\\\n  \\\"]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/connectors/after-topic-list-item/discourse-adplugin.js\",\n        \"scope\": () => [_adSlot.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.classNames)(\"after-topic-list-item-outlet\", \"discourse-adplugin\"), (0, _component2.tagName)(\"tr\")]);\n  var _default = _exports.default = DiscourseAdplugin;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/connectors/discovery-list-container-top/discourse-adplugin\", [\"exports\", \"@ember/component\", \"@ember-decorators/component\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", \"@ember/template-factory\"], function (_exports, _component, _component2, _adSlot, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const DiscourseAdplugin = dt7948.c(class DiscourseAdplugin extends _component.default {\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          <AdSlot @placement=\"topic-list-top\" @category={{this.category.slug}} />\n        \n      */\n      {\n        \"id\": \"Fb/pRg7O\",\n        \"block\": \"[[[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@placement\\\",\\\"@category\\\"],[\\\"topic-list-top\\\",[30,0,[\\\"category\\\",\\\"slug\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/connectors/discovery-list-container-top/discourse-adplugin.js\",\n        \"scope\": () => [_adSlot.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.classNames)(\"discovery-list-container-top-outlet\", \"discourse-adplugin\"), (0, _component2.tagName)(\"span\")]);\n  var _default = _exports.default = DiscourseAdplugin;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-post-stream/discourse-adplugin\", [\"exports\", \"@ember/component\", \"@ember-decorators/component\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", \"@ember/template-factory\"], function (_exports, _component, _component2, _adSlot, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const DiscourseAdplugin = dt7948.c(class DiscourseAdplugin extends _component.default {\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          <AdSlot\n            @placement=\"topic-above-post-stream\"\n            @category={{this.model.category.slug}}\n          />\n        \n      */\n      {\n        \"id\": \"D17vroPU\",\n        \"block\": \"[[[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@placement\\\",\\\"@category\\\"],[\\\"topic-above-post-stream\\\",[30,0,[\\\"model\\\",\\\"category\\\",\\\"slug\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-post-stream/discourse-adplugin.js\",\n        \"scope\": () => [_adSlot.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.classNames)(\"topic-above-post-stream-outlet\", \"discourse-adplugin\"), (0, _component2.tagName)(\"div\")]);\n  var _default = _exports.default = DiscourseAdplugin;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-suggested/discourse-adplugin\", [\"exports\", \"@ember/component\", \"@ember-decorators/component\", \"discourse/plugins/discourse-adplugin/discourse/components/ad-slot\", \"@ember/template-factory\"], function (_exports, _component, _component2, _adSlot, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  /* eslint-disable ember/no-classic-components */\n  const DiscourseAdplugin = dt7948.c(class DiscourseAdplugin extends _component.default {\n    static {\n      (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n      /*\n        \n          <AdSlot\n            @placement=\"topic-above-suggested\"\n            @category={{this.model.category.slug}}\n          />\n        \n      */\n      {\n        \"id\": \"RLWCnPIh\",\n        \"block\": \"[[[1,\\\"\\\\n    \\\"],[8,[32,0],null,[[\\\"@placement\\\",\\\"@category\\\"],[\\\"topic-above-suggested\\\",[30,0,[\\\"model\\\",\\\"category\\\",\\\"slug\\\"]]]],null],[1,\\\"\\\\n  \\\"]],[],[]]\",\n        \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/connectors/topic-above-suggested/discourse-adplugin.js\",\n        \"scope\": () => [_adSlot.default],\n        \"isStrictMode\": true\n      }), this);\n    }\n  }, [(0, _component2.classNames)(\"topic-above-suggested-outlet\", \"discourse-adplugin\"), (0, _component2.tagName)(\"div\")]);\n  var _default = _exports.default = DiscourseAdplugin;\n});","define(\"discourse/plugins/discourse-adplugin/discourse/helpers/slot-position\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.isNthPost = isNthPost;\n  _exports.isNthTopicListItem = isNthTopicListItem;\n  function isNthPost(every, currentPostNumber) {\n    if (every && every > 0) {\n      return currentPostNumber % every === 0;\n    } else {\n      return false;\n    }\n  }\n  function isNthTopicListItem(every, currentIndexPosition) {\n    if (every && every > 0 && currentIndexPosition > 0) {\n      return (currentIndexPosition + 1) % every === 0;\n    } else {\n      return false;\n    }\n  }\n});","define(\"discourse/plugins/discourse-adplugin/discourse/initializers/initialize-ad-plugin\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/models/site\", \"discourse/plugins/discourse-adplugin/discourse/components/post-bottom-ad\", \"@ember/component\", \"@ember/template-factory\", \"@ember/component/template-only\"], function (_exports, _pluginApi, _site, _postBottomAd, _component, _templateFactory, _templateOnly) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _exports.default = {\n    name: \"initialize-ad-plugin\",\n    initialize(container) {\n      (0, _pluginApi.withPluginApi)(api => {\n        customizePost(api);\n      });\n      const messageBus = container.lookup(\"service:message-bus\");\n      const currentUser = container.lookup(\"service:current-user\");\n      const channel = currentUser ? \"/site/house-creatives/logged-in\" : \"/site/house-creatives/anonymous\";\n      messageBus.subscribe(channel, function (houseAdsSettings) {\n        _site.default.currentProp(\"house_creatives\", houseAdsSettings);\n      });\n    }\n  };\n  function customizePost(api) {\n    api.renderAfterWrapperOutlet(\"post-article\", (0, _component.setComponentTemplate)((0, _templateFactory.createTemplateFactory)(\n    /*\n      \n          <div class=\"ad-connector\">\n            <PostBottomAd @model={{@post}} />\n          </div>\n        \n    */\n    {\n      \"id\": \"MM+6CUuS\",\n      \"block\": \"[[[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"ad-connector\\\"],[12],[1,\\\"\\\\n        \\\"],[8,[32,0],null,[[\\\"@model\\\"],[[30,1]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n    \\\"]],[\\\"@post\\\"],[]]\",\n      \"moduleName\": \"/var/www/discourse/frontend/discourse/discourse/plugins/discourse-adplugin/discourse/initializers/initialize-ad-plugin.js\",\n      \"scope\": () => [_postBottomAd.default],\n      \"isStrictMode\": true\n    }), (0, _templateOnly.default)(undefined, undefined)));\n  }\n});"],"mappings":"AAAAA,OAAA,6SAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA;AAEAC,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AAGA,MAAAC,UAAAX,EAAAU,eAEAE,OAAAC,EAAAC,KAAAC,UAAA,UAAAb,EAAAc,SACA,CACAC,QAAAL,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,WAAAb,EAAAc,SACA,CACAG,QAAAP,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,wBAAAd,EAAAmB,IAAA,mGACA,CACAC,QAAAT,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,0BAAAd,EAAAmB,IAAA,uGACA,CACAE,QAAAV,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,0BAAAd,EAAAsB,OAAA,2DACA,CACAC,QAAAZ,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,2BAAAd,EAAAmB,IAAA,6HACA,CACAK,QAAAb,OAAAM,EAAAJ,KAAA;AACAY,cAAA;AACAC,eAAA;AACAC,eAAA,KACAd,KAAAe;AAEA,YAAAC,CAAAC,EAAAC,GACA,WAAAD,GAAAC,EACA,OAAAA,CAEA,QAEApB,OAAAqB,EAAAnB,KAAAC,UAAA,mBAAAV,EAAAK,SAAA,8EACA,CACA,iBAAAwB,CAAAC,GACA,0BAAAA,CACA,QAEAvB,OAAAqB,EAAAnB,KAAAC,UAAA,wBAAAV,EAAAK,SAAA,oDACA,CACA,YAAA0B,GACA,OAAAtB,KAAAuB,aAGAvB,KAAAuB,YAAAC,cACA,QAEA1B,OAAAqB,EAAAnB,KAAAC,UAAA,gBAAAV,EAAAK,SACA,CACA,iBAAA6B,CAAAC,EAAAhB,EAAAM,EAAAI,EAAAT,GACA,QAAAD,GAAAgB,GAAA1B,KAAA2B,aAAAC,uBAAA5B,KAAA2B,aAAAC,sBAAAC,MAAA,KAAAC,SAAAJ,EAAAK,aAAAf,GAAAhB,KAAA2B,aAAAK,iBAAAhC,KAAA2B,aAAAK,gBAAAH,MAAA,KAAAC,SAAAd,IAAAI,GAAApB,KAAA2B,aAAAM,8BAAAtB,GAAAX,KAAA2B,aAAAO,iCACA,QAEApC,OAAAqB,EAAAnB,KAAAC,UAAA,wBAAAV,EAAAK,SAAA,sGACA,CACA,SAAAuC,CAAAhB,GACA,SAAA3B,EAAA2C,WAAAhB,EAAAnB,KAAAoC,IAAA,cACA,CACA,kBAAAC,CAAAlB,GACA,SAAA3B,EAAA6C,oBAAAlB,EAAAnB,KAAAoC,IAAA,eACA,CACA,gBAAAE,GACAC,MAAAD,sBAAAE,WACAxC,KAAAoC,IAAA,YAGApC,KAAAyC,0BACAzC,KAAA0C,qBACA,CACA,kBAAAA,GACA1C,KAAA2B,aAAAgB,2BAGA3C,KAAA4C,QAAAC,iBAAA,QAAA7C,KAAAc,eACA,CACA,qBAAAgC,GACA,MAAAC,EAAA/C,KAAAgD;AACA,GAAAD,EAGA,IACA,MAAAE,QAAA,EAAA5D,EAAA6D,MAAA,6BACAjC,KAAA,OACAkC,KAAAC,KAAAC,UAAAN,GACAO,YAAA;AAEAtD,KAAAY,cAAAqC,EAAAM,EACA,OAAAC,IACA,EAAAlE,EAAAmE,gBAAAD,EACA,CACA,CACA,UAAAzC,GACA,IAAAf,KAAAY,eAAAZ,KAAAa,cACA;AAEAb,KAAAa,eAAA;AACA,MAAA6C,EAAA,6BAAA1D,KAAAY;AACA,GAAA+C,UAAAC,aAAA5D,KAAA6D,MAAAC,UAAA,CACA,MAAAC,EAAA,IAAAC;AACAD,EAAAE,OAAA,qBAAAjE,KAAAK,QAAA6D,WACAP,UAAAC,WAAAF,EAAAK,EACA,MACA,EAAA1E,EAAA6D,MAAAQ,EAAA,CACAzC,KAAA,QACAqC,YAAA,oCACAa,MAAAX,IAEAY,QAAAC,MAAA,4BAAAb,IAGA,CACA,uBAAAf,GACAzC,KAAA2B,aAAAgB,4BAGA,yBAAA2B,QACAtE,KAAAuE,UAAA,IAAAC,qBAAAC,IACAA,EAAA,GAAAC,iBACA1E,KAAA8C,kBACA9C,KAAAuE,UAAAI,gBAGA3E,KAAAuE,UAAAK,QAAA5E,KAAA4C,UAEA5C,KAAA8C,kBAEA,CACA,kBAAA+B,GACAtC,MAAAsC,wBAAArC,WACAxC,KAAAuE,WACAvE,KAAAuE,UAAAI,aAEA3E,KAAA4C,SACA5C,KAAA4C,QAAAkC,oBAAA,QAAA9E,KAAAc,eAEA,EAEA7B,EAAAW,QAAAC,C,GCtJAb,OAAA,20BAAAC,EAAA8F,EAAAC,EAAA5F,EAAA6F,EAAA/F,EAAAK,EAAAC,EAAA0F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA,EACAX,EAAA0G;AACA,MAAAC,EAAA,CACA,WAAAJ,EAAA5F,QACA,iBAAA0F,EAAA1F,QACA,gBAAA2F,EAAA3F,QACA,uBAAAwF,EAAAxF,QACA,eAAAyF,EAAAzF,QACA,cAAAuF,EAAAvF,SAEAiG,EAAAb,EAAApF,QAAAkG,OAAA,CACA,kBACAC,cAAA,UACAC,eAAA,yBACAC,QAAA,yBAEA,iBACAF,cAAA,MACAC,eAAA,mBACAC,QAAA,qBAEA,wBACAF,cAAA,SACAC,gBAAA,EACAC,QAAA,uBACAC,QAAA,CACA,kDACA,4CACA,oEACA,iEAEAC,OAAA,CACA,yDACA,mDACA,2EACA,yEAGA,gBACAJ,cAAA,YACAC,eAAA,qBACAE,QAAA,CACA,oDACA,iBACA,gEACA,6BAGA,eACAH,cAAA,WACAC,eAAA,wBACAE,QAAA,CACA,mDACA,6CACA,qEACA,kEAEAC,OAAA,CACA,0DACA,oDACA,4EACA,4EAIAC,EAAA,CACAC,SAAA,EACAC,OAAA;AAcA,SAAAX,EAAA9B,EAAAlC,EAAA4E,EAAAC,EAAAC,GACA,IAAAC,EAAA;AACA,MAAAL,EAAAxC,EAAAzB,IAAA,mBACAuE,EAAAJ,EAAAK,QAAA;AACA,GAAAP,KAAAQ,SAAA,CACA,MAAAC,EAAAT,EAAAQ,SAAAF,GACAI,EAAAtH,OAAAuH,KAAAX,EAAAY,WAAAC,OAAA,OAAAjC,EAAAkC,SAAAL,GAGAM,GAAAX,IAAAD,EACAa,EAAA,uBAAAV,IAAA,EAAAnH,EAAA6C,oBAAAiF,SAAAjB,EAAAQ,SAAAU,gBAAA,IAAAf;AACAO,IAAAK,GAAAC,IAAA,EAAA7H,EAAA2C,WAAAmF,SAAAjB,EAAAQ,SAAAW,eAAA,IAAAf,KACAC,EAAAe,KAAA,WAEA,CAuBA,OAtBAhI,OAAAuH,KAAAnB,GAAA6B,QAAAC,IACA,MAAAC,EAAA/B,EAAA8B;AACA,IACAE,EADAC,EAAA,MA7BA,SAAAnG,EAAAoG,GAGA,WAAAA,GAGAA,KAAA,EAAA9C,EAAAkC,SAAAxF,EAAAoG,GAEA,EAuBAC,CAAArG,EAAAiG,EAAA5B,iBAtBA,SAAArE,EAAAsG,EAAAC,GACA,OAAAD,IAAAC,IAAA,EAAA1I,EAAA2C,WAAAmF,SAAA3F,EAAAuG,GAAA,IAAAD,EACA,CAoBAE,CAAAxG,EAAA8E,EAAAmB,EAAA3B,WAEA6B,EADAjE,EAAAuE,YACAR,EAAAzB,QAEAyB,EAAA1B,QAEA4B,IACAD,EAAAC,EAAAvB,SAEA8B,IAAAR,IAEAA,EAAA,GAAAD,EAAA7B,iBAAAlC,EAAAuE,WAAA,eAAAzB,WAEA,IAAAkB,IAAA,IAAAlG,EAAAkG,KAAA,EAAA5C,EAAAkC,SAAAxF,EAAAkG,KACAnB,EAAAe,KAAAE,MAIAjB,CACA,CACA,MAAA4B,EAAAxI,OAAAyI,EAAA,cAAArD,EAAAtF,eAEAE,OAAAC,EAAAC,KAAAC,UAAA,UAAAb,EAAAc,SACA,CACAC,QAAAL,OAAAM,EAAAJ,KAAA;AAKA,gBAAAwI,CAAAjC,EAAAE,EAAAD,GACA,OAAAb,EAAA3F,KAAA6D,KAAA7D,KAAA2B,aAAA4E,EAAAC,EAAAC,EACA,QASA3G,OAAAqB,EAAAnB,KAAAC,UAAA,uBAAAV,EAAAK,SAAA,yCACA,CACA,gBAAA6I,CAAAlC,EAAAiC,GACA,IAAAA,EAAA1G,SAAA,iBAAA0G,EAAAtB,OAGA,OAAAsB;AAEA,MAAAnC,EAAArG,KAAA6D,KAAAzB,IAAA;AACA,IAAAsG,GAAA;AACA,SAAArC,EAAAQ,SAAA8B,oBAEA;AACA,GAAAtC,EAAAQ,SAAA8B,oBAAA,GAEA,OAAAvC,EAAAE,QAAA,IAAAF,EAAAC,SAAAD,EAAAE,OAAAD,EAAAQ,SAAA8B,oBAGA,OAFAvC,EAAAC,UAAA,EACAD,EAAAE,QAAA,EACA;AAEAoC,GAAA,CAEA,CACA,MAAAE,EAAAJ,EAAAK,OAAAC,GAAA,aAAAA;AAIA,OAHAJ,IACAtC,EAAAE,QAAAsC,EAAA1B,QAEA0B,CACA,QAEA9I,OAAAqB,EAAAnB,KAAAC,UAAA,uBAAAV,EAAAK,SAAA,uDACA,CACA,gBAAAmJ,GACA,OAAA/I,KAAAyI,iBAAAO,IAAAnB,GAAAjC,EAAAiC,GACA,SAEA,EAAApC,EAAAwD,uBAAA,EAAAvD,EAAAwD,uBAiBA,CACA3F,GAAA,WACA4F,MAAA,geACAC,WAAA,6GACAC,MAAA,KAAAtE,EAAAuE,OACAC,cAAA,IACAvJ,KACA,GACA,IAAAd,EAAAsK,SAAA;AACAvK,EAAAW,QAAA0I,C,GChNAtJ,OAAA,8TAAAC,EAAAwK,EAAAC,EAAAnK,EAAAoK,EAAAC,EAAA1E,EAAAhG,EAAAwG,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,IAAAiK,GAAA,EACAC,EAAA,KACAC,EAAA;AAeA,MAAAC,UAAA9E,EAAAtF,QACAqK,KAAA;AACAC,YAAA;AACA,IAAAC,GACA,IAAAC,EAAA,SACAC,EAAA,YACAC,EAAA,YACAC,EAAA;AACAvK,KAAAwK,IAAA,WACAxK,KAAA6D,KAAAuE,aACAgC,EAAA,SACAC,GAAA,UACAC,GAAA,UACAC,EAAA,sBAEAF,GAAArK,KAAAoC,IAAA,aAAAwE,QAAA,qBACA5G,KAAAwK,IAAA,YAAAH,GACAC,GAAAtK,KAAAoC,IAAA,aACApC,KAAAwK,IAAA,YAAAF,EAAA,IAAAC;AACA,IAAAE,EAAAzK,KAAA2B,aAAA0I;AACArK,KAAAwK,IAAA,SAAAC;AACA,IAAAC,EAAA,aAAAD,EAAA,IAAAV;AACA/J,KAAAwK,IAAA,QAAAE;AACA,IAAAR,EAAAlK,KAAA2B,aAAAgJ;AACA3K,KAAAwK,IAAA,cAAAN,GACAH,IACA/J,KAAAiK,KAAAxC,KAAA,CACAiD,QACAR,cACAO,SACAL,eAEA7H,MAAA4H,MACA,CACA,WAAAS,GACA,MAAAjB,EAAA7F,aACA;AAEA,MAAA+G,EAAA7K,KAAA2B,aAAAmJ,4BApDA,SAAAD,GACA,OAAAhB,EACAH,EAAA9J,QAAAmL,UAEAjB,IAGAA,GAAA,EAAAF,EAAAhK,SAAA,WAAAiL,EAAA,WACAG,WAAA,IACAC,KAAA,WACApB,GAAA,CACA,GACAC,EACA,EAwCAoB,CAAAL,GAAAI,KAAA,WACA,GAAAjL,KAAAiK,KAAA/C,OAAA,GACA,IAAAiE,EAAA7G,OAAA6G,MAAA;AACA7G,OAAA8G,SAAAC,IAAA5D,KAAA,CACA6D,QAAA,SAAAC,GACAjH,OAAA8G,SAAAI,SAAAD,EAAAE,MAAAvB,YAAAqB,EAAAE,MAAAhB,OAAAc,EAAAE,MAAArB,WAAAmB,EAAAE,MAAAf,MAAAa,EACA,EACAA,IAAA,CACAE,MAAAzL,KAAAiK,KAAAyB,MACAC,SAAAR,EACAS,OAAAf,EACAgB,MAAA,4BAGA,CACA,EAAAC,KAAA9L,MACA,CACA,gBAAAsC,GACAC,MAAAD,oBACA,EAAAmH,EAAAsC,cAAA,cAAA/L,UAAA4K,YACA,CACA,eAAAoB,GACA,OAAAhM,KAAAuB,aAGAvB,KAAAuB,YAAA0K,iBACA,QAEAnM,OAAAqB,EAAAnB,KAAAC,UAAA,mBAAAV,EAAAK,SACA,CACA,MAAAsM,CAAAhC,EAAA8B,EAAA1K,EAAA6K,EAAA1K,GACA,OAAAyI,GAAA8B,GAAA1K,GAAA6K,GAAA1K,CACA,QAEA3B,OAAAqB,EAAAnB,KAAAC,UAAA,aAAAV,EAAAK,SAAA,qFACA,CACA,aAAAuM,CAAA1F,GACA,OAAAA,GAGAzG,KAAAmC,UAAAmF,SAAAtH,KAAA2B,aAAAyK,kBAAA,IACA,QAEAtM,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SAAA,eACA,CACA,sBAAAoD,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAAC,SACAC,sBAAA,KACAlG,UAAAvG,KAAAuG,WAGA,SAEA,EAAArH,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAQA,CACA3F,GAAA,WACA4F,MAAA,kKACAC,WAAA,iHACAG,cAAA,IACAvJ,KACA,EAEAf,EAAAW,QAAAoK,C,GCtIAhL,OAAA,iVAAAC,EAAAE,EAAAuN,EAAAxN,EAAAK,EAAAoN,EAAAzH,EAAAO,EAAAC,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,MAAAgN,EAAA9M,OAAAyI,EAAA,cAAArD,EAAAtF,eAEAE,OAAAC,EAAAC,KAAAC,UAAA,aAAAd,EAAA0N,KAAA,qEACA,CACAX,QAAApM,OAAAM,EAAAJ,KAAA;AACA,IAAAmK,GACA,MAAAhH,EAAA,CACA,oBACA,6BACA,2BACA,kBAEAiF,EAAApI,KAAA6D,KAAAzB,IAAA,cACAmE,EAAAvG,KAAAoC,IAAA;CACAgG,GAAApI,KAAA2B,aAAAmL,iCACA3J,EAAA,6BAAAnD,KAAA2B,aAAAmL,+BACA3J,EAAA,+BAAAmE,SAAAtH,KAAA2B,aAAAoL,oCAAA,IACA5J,EAAA,gCAAAmE,SAAAtH,KAAA2B,aAAAqL,qCAAA,KAEA5E,GAAApI,KAAA2B,aAAAsL,wCACA9J,EAAA,oCAAAnD,KAAA2B,aAAAsL,sCACA9J,EAAA,sCAAAmE,SAAAtH,KAAA2B,aAAAuL,2CAAA,IACA/J,EAAA,uCAAAmE,SAAAtH,KAAA2B,aAAAwL,4CAAA,MAEA/E,GAAApI,KAAA2B,aAAAyL,0CACAjK,EAAA,sCAAAnD,KAAA2B,aAAAyL,wCACAjK,EAAA,wCAAAmE,SAAAtH,KAAA2B,aAAA0L,6CAAA,IACAlK,EAAA,yCAAAmE,SAAAtH,KAAA2B,aAAA2L,8CAAA,KAEAlF,GAAApI,KAAA2B,aAAA4L,iDACApK,EAAA,6CAAAnD,KAAA2B,aAAA4L,+CACApK,EAAA,+CAAAmE,SAAAtH,KAAA2B,aAAA6L,oDAAA,IACArK,EAAA,gDAAAmE,SAAAtH,KAAA2B,aAAA8L,qDAAA,MAEArF,GAAApI,KAAA2B,aAAA+L,wCACAvK,EAAA,oCAAAnD,KAAA2B,aAAA+L,sCACAvK,EAAA,sCAAAmE,SAAAtH,KAAA2B,aAAAgM,2CAAA,IACAxK,EAAA,uCAAAmE,SAAAtH,KAAA2B,aAAAiM,4CAAA,KAEAxF,GAAApI,KAAA2B,aAAAkM,+CACA1K,EAAA,2CAAAnD,KAAA2B,aAAAkM,6CACA1K,EAAA,6CAAAmE,SAAAtH,KAAA2B,aAAAmM,kDAAA,IACA3K,EAAA,8CAAAmE,SAAAtH,KAAA2B,aAAAoM,mDAAA,MAEA3F,GAAApI,KAAA2B,aAAAqM,8BACA7K,EAAA,0BAAAnD,KAAA2B,aAAAqM,4BACA7K,EAAA,4BAAAmE,SAAAtH,KAAA2B,aAAAsM,iCAAA,IACA9K,EAAA,6BAAAmE,SAAAtH,KAAA2B,aAAAuM,kCAAA,KAEA9F,GAAApI,KAAA2B,aAAAwM,qCACAhL,EAAA,iCAAAnD,KAAA2B,aAAAwM,mCACAhL,EAAA,mCAAAmE,SAAAtH,KAAA2B,aAAAyM,wCAAA,IACAjL,EAAA,oCAAAmE,SAAAtH,KAAA2B,aAAA0M,yCAAA,KAEArO,KAAAwK,IAAA,aAAArH,EAAAoD,GAAA,YACAvG,KAAAwK,IAAA,eAAArH,EAAAoD,GAAA,cACAvG,KAAAwK,IAAA,gBAAArH,EAAAoD,GAAA,eACAvG,KAAAwK,IAAA,oBAAArH,EAAAoD,GAAA,mBACAvG,KAAAwK,IAAA,uBAAArH,EAAAoD,GAAA,sBACAvG,KAAAwK,IAAA,sBAAArH,EAAAoD,GAAA,qBACAhE,MAAA4H,MACA,CACA,cAAAmE,CAAAC,EAAAC,GACA,SAAA9B,EAAA+B,UAAA,UAAAF,gBAAAC,OACA,QAEA1O,OAAAqB,EAAAnB,KAAAC,UAAA,qBAAAV,EAAAK,SAAA,iCACA,CACA,oBAAA8O,CAAAH,EAAAC,GACA,SAAA9B,EAAA+B,UAAA,UAAAF,gBAAAC,OACA,QAEA1O,OAAAqB,EAAAnB,KAAAC,UAAA,2BAAAV,EAAAK,SAAA,+CACA,CACA,kBAAA+O,CAAAJ,GACA,SAAA7B,EAAA+B,UAAA,UAAAF,OACA,QAEAzO,OAAAqB,EAAAnB,KAAAC,UAAA,yBAAAV,EAAAK,SAAA,wBACA,CACA,SAAAgP,IACA,SAAAlC,EAAA+B,UAAA,GAAAG,IACA,QAEA9O,OAAAqB,EAAAnB,KAAAC,UAAA,gBAAAV,EAAAK,SAAA,eACA,CACA,eAAAiP,CAAAD,GACA,SAAAlC,EAAA+B,UAAA,GAAAG,IACA,QAEA9O,OAAAqB,EAAAnB,KAAAC,UAAA,sBAAAV,EAAAK,SAAA,sBACA,CACA,aAAAkP,GACA,OAAA9O,KAAAuB,aAGAvB,KAAAuB,YAAAwN,eACA,QAEAjP,OAAAqB,EAAAnB,KAAAC,UAAA,iBAAAV,EAAAK,SACA,CACA,aAAAuM,CAAA1F,GACA,OAAAA,GAGAzG,KAAAmC,UAAAmF,SAAAtH,KAAA2B,aAAAqN,qBAAA,IACA,QAEAlP,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SAAA,eACA,CACA,sBAAAoD,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAA0C,OACAxC,sBAAA,KACAlG,UAAAvG,KAAAuG,WAGA,SAEA,EAAAd,EAAAwD,uBAAA,EAAAvD,EAAAwD,uBAuCA,CACA3F,GAAA,WACA4F,MAAA,ymCACAC,WAAA,0HACAC,MAAA,KAAAsD,EAAAuC,MACA3F,cAAA,IACAvJ,KACA,GACA,IAAAd,EAAAiQ,YAAA;AACAlQ,EAAAW,QAAAgN,C,GC/KA5N,OAAA,iQAAAC,EAAAyN,EAAAnN,EAAA2F,EAAAhG,EAAAwG,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,MAAAwP,UAAAlK,EAAAtF,QACAyP,SAAA;AACA9I,UAAA;AACA,IAAA4D,GACAnK,KAAAwK,IAAA,WAAAxK,KAAA2B,aAAA2N,oBACAtP,KAAAwK,IAAA,YAAAxK,KAAA2B,aAAA4N,qBACAhN,MAAA4H,MACA,CACA,GAAAzG,CAAA8L,EAAAjJ,GACA,SAAAmG,EAAA+B,UAAA,uCAAAe,eAAAjJ,IACA,QAEAzG,OAAAqB,EAAAnB,KAAAC,UAAA,UAAAV,EAAAK,SAAA,yBACA,CACA,aAAA6P,GACA,OAAAzP,KAAAuB,aAGAvB,KAAAuB,YAAAmO,eACA,QAEA5P,OAAAqB,EAAAnB,KAAAC,UAAA,iBAAAV,EAAAK,SACA,CACA,MAAAsM,CAAA3F,EAAAiJ,EAAAC,EAAAnO,EAAAG,GACA,OAAA8E,GAAAiJ,GAAAC,GAAAnO,GAAAG,CACA,QAEA3B,OAAAqB,EAAAnB,KAAAC,UAAA,aAAAV,EAAAK,SAAA,4EACA,CACA,sBAAAoD,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAAoD,OACAlD,sBAAA,KACAlG,UAAAvG,KAAAuG,WAGA,SAEA,EAAArH,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAUA,CACA3F,GAAA,WACA4F,MAAA,+NACAC,WAAA,kHACAG,cAAA,IACAvJ,KACA,EAEAf,EAAAW,QAAAwP,C,GChEApQ,OAAA,kYAAAC,EAAAwK,EAAAiD,EAAAxN,EAAAwK,EAAAnK,EAAAoK,EAAAC,EAAA+C,EAAAzH,EAAAO,EAAAC,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,IAAAiK,GAAA,EACAC,EAAA,KACA8F,EAAA;AA4CA,MAAAC,EAAA,CACA,kBACAC,KAAA,8BACAC,MAAA,mCAEA,2BACAD,KAAA,uCACAC,MAAA,4CAEA,yBACAD,KAAA,qCACAC,MAAA,0CAEA,eACAD,KAAA,2BACAC,MAAA,iCAGAC,EAAA,CACA,kBACAF,KAAA,qCACAC,MAAA,yCAEA,2BACAD,KAAA,8CACAC,MAAA,kDAEA,yBACAD,KAAA,4CACAC,MAAA,gDAEA,eACAD,KAAA,kCACAC,MAAA,uCAGAE,EAAAnQ,OAAAyI,EAAA,cAAArD,EAAAtF,QACAsQ,iBAAA;AACAC,aAAA;AACAC,SAAA;AACAC,UAAA;AACAC,aAAA;AACA,IAAAnG,GACA,IAAAvC,EAAA2I;AACA,MAAAhK,EAAAvG,KAAAoC,IAAA;AAEAwF,EADA5H,KAAA6D,KAAAuE,WACA4H,EAAAzJ,GAEAsJ,EAAAtJ,GAEAqJ,EAAArJ,KACAqJ,EAAArJ,GAAA;AAEA,MAAAwJ,GAAA/P,KAAA2B,aAAAiG,EAAAmI,QAAA,IAAAlO,MAAA;AACA,IAAAkO,EAAA7I,OACAqJ,EAAAR,EAAA,IAEAQ,EAAAR,EAAAH,EAAArJ,GAAAwJ,EAAA7I,QACA0I,EAAArJ,IAAA,GAEAvG,KAAAwK,IAAA,WAvGA,SAAA7K,GACA,kBAAAA,EACA;AAEA,GAAAA,EAAA6Q,WAAA,SACA;AAEA,MAAAjC,EAAAjH,SAAA3H,EAAA8Q,UAAA,KAAAC,OAAA;AACA,OAAAC,MAAApC,GACA,OAEA,GAAAA,KAEA,CA0FAqC,CAAAL,IACAvQ,KAAAwK,IAAA,YA1FA,SAAA7K,GACA,kBAAAA,EACA;AAEA,GAAAA,EAAA6Q,WAAA,SACA;AAEA,MAAAhC,EAAAlH,SAAA3H,EAAA8Q,UAAA,KAAAC,OAAA;AACA,OAAAC,MAAAnC,GACA,OAEA,GAAAA,KAEA,CA6EAqC,CAAAN,IACAvQ,KAAAwK,IAAA,UAAAxK,KAAA2B,aAAAiG,EAAAkI,OACA9P,KAAAwK,IAAA,eAAAxK,KAAA2B,aAAAmP,wBACAvO,MAAA4H,MACA,CACA,iBAAAS,GACA,OAAAjB,EAAA7F,eAGA9D,KAAAwK,IAAA,wBArFA,WACA,GAAAX,EACA,OAAAH,EAAA9J,QAAAmL;AAEA,GAAAjB,EACA,OAAAA;AAEA,MAAAiH,GAAA,WAAAC,SAAAC,SAAAC,SAAA;AAMA,OALApH,GAAA,EAAAF,EAAAhK,SAAAmR,EAAA,CACA/F,WAAA,IACAC,KAAA,WACApB,GAAA,CACA,GACAC,CACA,CAwEAqH,IACAnR,KAAAoR,cAAApR,KAAAqR,cAIA,KACA/M,OAAAgN,cAAA,IACA7J,KAAA,GACA,OAAA8J,GAEAnN,QAAAC,MAAA,iBAAAkN,EACA,CACA,CACA,gBAAAjP,GACAC,MAAAD,mBACAtC,KAAAoC,IAAA,YAGA,EAAAqH,EAAAsC,cAAA,cAAA/L,UAAA4K,YACA,CACA,YAAA4G,CAAAC,GACA,uBAAA3P,SAAA2P,EACA,QAEA3R,OAAAqB,EAAAnB,KAAAC,UAAA,mBAAAV,EAAAK,SAAA,aACA,CACA,OAAA8R,CAAAD,GACA,gBAAAA,CACA,QAEA3R,OAAAqB,EAAAnB,KAAAC,UAAA,cAAAV,EAAAK,SAAA,aACA,CACA,YAAA+R,CAAApL,EAAA2F,GACA,OAAAA,GAAA,EAAAQ,EAAA+B,UAAA,WAAAlI,KAAA,EACA,QAEAzG,OAAAqB,EAAAnB,KAAAC,UAAA,mBAAAV,EAAAK,SAAA,uBACA,CACA,YAAAgS,CAAAJ,EAAAE,GACA,QAAAF,IAAA,EAAA9E,EAAA+B,UAAAiD,EAAA,eACA,QAEA5R,OAAAqB,EAAAnB,KAAAC,UAAA,mBAAAV,EAAAK,SAAA,2BACA,CACA,cAAA0O,CAAAC,EAAAC,EAAAgD,GACA,SAAA9E,EAAA+B,UAAA+C,EAAA,aAAAjD,cAAAC,KACA,QAEA1O,OAAAqB,EAAAnB,KAAAC,UAAA,qBAAAV,EAAAK,SAAA,wCACA,CACA,UAAAiS,CAAAvD,EAAAkD,GACA,SAAA9E,EAAA+B,UAAA,YAAA+C,EAAA,2BAAAlD,IACA,QAEAxO,OAAAqB,EAAAnB,KAAAC,UAAA,iBAAAV,EAAAK,SAAA,kCACA,CACA,cAAAkS,GACA,OAAA9R,KAAAuB,aAGAvB,KAAAuB,YAAAwQ,gBACA,QAEAjS,OAAAqB,EAAAnB,KAAAC,UAAA,kBAAAV,EAAAK,SACA,CACA,MAAAsM,CAAAhC,EAAA4H,EAAAxQ,EAAA6K,EAAA1K,GACA,OAAAyI,GAAA4H,GAAAxQ,GAAA6K,GAAA1K,CACA,QAEA3B,OAAAqB,EAAAnB,KAAAC,UAAA,aAAAV,EAAAK,SAAA,qFACA,CACA,aAAAuM,CAAA1F,GACA,OAAAA,GAGAzG,KAAAmC,UAAAmF,SAAAtH,KAAA2B,aAAAqQ,sBAAA,IACA,QAEAlS,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SAAA,eACA,CACA,sBAAAoD,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAA0F,QACAxF,sBAAA,KACAlG,UAAAvG,KAAAuG,WAGA,SAEA,EAAAd,EAAAwD,uBAAA,EAAAvD,EAAAwD,uBAwBA,CACA3F,GAAA,WACA4F,MAAA,woBACAC,WAAA,oHACAC,MAAA,KAAAsD,EAAAuC,MACA3F,cAAA,IACAvJ,KACA,GACA,IAAAd,EAAAgT,mBAAA;AACAjT,EAAAW,QAAAqQ,C,GCvPAjR,OAAA,oaAAAC,EAAAE,EAAAuN,EAAAxN,EAAA8F,EAAA0E,EAAAnK,EAAAoK,EAAAC,EAAA+C,EAAAzH,EAAAO,EAAAC,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,IAAAiK,GAAA,EACAC,EAAA,KACAuB,EAAA,GACA8G,EAAA,EACAvC,EAAA;AAQA,SAAAwC,EAAAzS,GAEA,OADAA,EAAA8Q,UAAA,KACAC,MACA,CAEA,SAAA2B,EAAA1S,GACA,IAAA2S,EAAA3S,EAAAiH,QAAA;AAGA,OAFA0L,IAAA1L,QAAA,aACA0L,IAAAzQ,MAAA,KACAyQ,CACA,CAEA,SAAAC,EAAAC,GACA,IAAAC,EAAAD;AAGA,OAFAC,IAAA7L,QAAA,aACA6L,IAAA5Q,MAAA,MACA4Q,CACA,CASA,MAAA5C,EAAA,CACA,kBACAC,KAAA,0BACAC,MAAA,8BACA2C,eAAA,qCACAC,iBAAA,wCAEA,2BACA7C,KAAA,mCACAC,MAAA,uCACA2C,eAAA,8CACAC,iBAAA,iDAEA,yBACA7C,KAAA,iCACAC,MAAA,qCACA2C,eAAA,4CACAC,iBAAA,+CAEA,eACA7C,KAAA,uBACAC,MAAA,2BACA2C,eAAA,kCACAC,iBAAA,sCAGA3C,EAAA,CACA,kBACAF,KAAA,iCACAC,MAAA,qCACA2C,eAAA,qCACAC,iBAAA,wCAEA,2BACA7C,KAAA,0CACAC,MAAA,8CACA2C,eAAA,8CACAC,iBAAA,iDAEA,yBACA7C,KAAA,wCACAC,MAAA,4CACA2C,eAAA,4CACAC,iBAAA,+CAEA,eACA7C,KAAA,8BACAC,MAAA,kCACA2C,eAAA,kCACAC,iBAAA;AAkCA,SAAAC,EAAAlI,EAAAnE,EAAAM,EAAAgM,EAAAC,EAAAC,EAAAC,GACA,IAAAnM,EAAAoM,iBACA;AAEA,GAAA5H,EAAAX,GACA,OAAAW,EAAAX;AAEA,IAAAwI,EAAAtL,EAAAsC;AAmBA,OAlBA2I,GACA3I,EAAArD,EAAAsM,yBAAAtM,EAAAoM,iBACArL,EAAAoI,EAAAzJ,KAEA2D,EAAArD,EAAAoM,iBACArL,EAAAiI,EAAAtJ,IAEA2M,EAAA5O,OAAA8O,UAAAR,WAAA,IAAA1I,EAAA,IAAArD,EAAAe,EAAAkI,MAAA,CAAAgD,EAAAC,GAAArI,GAzGA,SAAA2I,EAAAC,EAAAC,GACA,QAAAnT,EAAA,EAAAA,EAAAiT,EAAAnM,OAAA9G,IACAiT,EAAAjT,IACAmT,EAAAC,aAAAH,EAAAjT,GAAAiS,EAAAiB,EAAAlT,IAGA,CAoGAqT,CAAAlB,EAAA1L,EAAAe,EAAA8K,iBAAAH,EAAA1L,EAAAe,EAAA+K,mBAAAO,GACAF,GACAE,EAAAM,aAAA,qBAAAR,GAEAE,EAAAQ,WAAApP,OAAA8O,UAAAO,UACAtI,EAAAX,GAAA,CACAwI,KACAJ,QACAC,UAEA1H,EAAAX,EACA,CA2CA,MAAAkJ,EAAA9T,OAAAyI,EAAA,cAAArD,EAAAtF,QACAsQ,iBAAA;AACA2D,cAAA;OAEA/T,OAAAC,EAAAC,KAAAC,UAAA,YAAAd,EAAAsB,OAAA,eACA,CACAqS,QAAAhT,OAAAM,EAAAJ,KAAA;OAEAF,OAAAC,EAAAC,KAAAC,UAAA,aAAAd,EAAAsB,OAAA,gBACA,CACAsS,QAAAjT,OAAAM,EAAAJ,KAAA;AACA,IAAAuQ,GACA,OAjHA,SAAAhK,EAAAM,EAAAgM,GACA,IAAAjL,EAAA2I;AAEA3I,EADAiL,EACA7C,EAAAzJ,GAEAsJ,EAAAtJ,GAEAqJ,EAAArJ,KACAqJ,EAAArJ,GAAA;AAEA,MAAAwJ,GAAAlJ,EAAAe,EAAAmI,QAAA,IAAAlO,MAAA;AAOA,GANA,IAAAkO,EAAA7I,OACAqJ,EAAAR,EAAA,IAEAQ,EAAAR,EAAAH,EAAArJ,GAAAwJ,EAAA7I,QACA0I,EAAArJ,IAAA,GAEA,UAAAgK,EACA,OACAuC,MAAA,QACAC,OAAA;AAGA,MAAAe,EAAA,CACAhB,MAAAxL,UA1GA3H,EA0GA4Q,EAzGA5Q,EAAA8Q,UAAA,KACAC,QAwGA,IACAqC,OAAAzL,SAAA8K,EAAA7B,GAAA;AA3GA,IAAA5Q;AA6GA,OAAAgR,MAAAmD,EAAAhB,QAAAnC,MAAAmD,EAAAf,aAAA,EACAe,CAEA,CAmFAC,CAAA/T,KAAAoC,IAAA,aAAApC,KAAA2B,aAAA3B,KAAA6D,KAAAuE,WACA,QAEAtI,OAAAqB,EAAAnB,KAAAC,UAAA,QAAAV,EAAAK,SACA,CACA,WAAAsK,CAAA8J,EAAAC,EAAApB,GACA,OAAAA,GACAoB,GAEAD,CAEA,QAEAlU,OAAAqB,EAAAnB,KAAAC,UAAA,kBAAAV,EAAAK,SAAA,2FACA,CACA,KAAA8K,CAAAnE,EAAAE,GACA,IAAAyN,EArNA/B;AAsNA,OAAA1L,EACA,cAAAyN,KAAA3N,KAAAE,IAEA,cAAAyN,KAAA3N,GAEA,QAEAzG,OAAAqB,EAAAnB,KAAAC,UAAA,YAAAV,EAAAK,SAAA,2BACA,CACA,WAAAuU,CAAA5N,EAAA2F,GACA,OAAAA,EAAA,UAAA3F,IAAA,EACA,QAEAzG,OAAAqB,EAAAnB,KAAAC,UAAA,kBAAAV,EAAAK,SAAA,uBACA,CACA,cAAA0O,CAAAC,EAAAC,GACA,aAAAD,EACA,SAAA7B,EAAA+B,UAAA,UAAAF,gBAAAC,OAEA,QAEA1O,OAAAqB,EAAAnB,KAAAC,UAAA,qBAAAV,EAAAK,SAAA,mBACA,CACA,kBAAA+O,CAAAJ,GACA,aAAAA,EACA,SAAA7B,EAAA+B,UAAA,UAAAF,OAEA,QAEAzO,OAAAqB,EAAAnB,KAAAC,UAAA,yBAAAV,EAAAK,SAAA,UACA,CACA,MAAAsM,CAAAhC,EAAAkK,EAAA9S,EAAA6K,EAAA1K,EAAA8O,GACA,OAAArG,GAAAkK,GAAA9S,GAAA6K,GAAA1K,GAAA8O,CACA,QAEAzQ,OAAAqB,EAAAnB,KAAAC,UAAA,aAAAV,EAAAK,SAAA,uFACA,CACA,UAAAwU,GACA,OAAApU,KAAAuB,aAGAvB,KAAAuB,YAAA8S,YACA,QAEAvU,OAAAqB,EAAAnB,KAAAC,UAAA,cAAAV,EAAAK,SACA,CACA,aAAAuM,CAAA1F,GACA,OAAAA,GAGAzG,KAAAmC,UAAAmF,SAAAtH,KAAA2B,aAAA2S,kBAAA,IACA,QAKAxU,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SAAA,eACA,CACA,eAAA2U,GACA,MAAAV,EAAA7T,KAAAoC,IAAA;AACA,OAAAyR,GAGA,IAAAW,KAAAX,EAAA,GACA,CACA,OAAAY,GACA,IAAAzU,KAAAuU,kBACA;AAEA,IAAAG,EAAArJ,EAAArL,KAAAoC,IAAA;AACA,IAAAsS,MAAAxB,GACA;AAEA,IAAAA,EAAAwB,EAAAxB,GACAyB,EAAA3U,KAAAoC,IAAA;AACApC,KAAAoC,IAAA,qBACApC,KAAAwK,IAAA,oBAAAgK,MACAlQ,OAAA8O,UAAAwB,IAAAnN,KAAA,KACAyL,EAAAM,aAAA,qBAAAmB,GAAA,KACArQ,OAAA8O,UAAAO,SAAAkB,QAAA,CAAA3B,MAGA,QAEApT,OAAAqB,EAAAnB,KAAAC,UAAA,cAAA+E,EAAA8P,IAAA,cACA,CACA,cAAAC,IACA,EAAApL,EAAA7F,cAGA9D,KAAAoC,IAAA,WA3JA,WAKA,GAAAyH,EACA,OAAAH,EAAA9J,QAAAmL;AAEA,GAAAjB,EACA,OAAAA;AAGA,IAAAkL,GAAA,WAAAhE,SAAAC,SAAAC,SAAA;AAsBA,OArBApH,GAAA,EAAAF,EAAAhK,SAAAoV,EAAA,CACAhK,WAAA,IACAC,KAAA,WACApB,GAAA,OACAxB,IAAA/D,OAAA8O,WAEAhP,QAAA6Q,IAAA,2BAEA3Q,OAAA8O,UAAAwB,IAAAnN,KAAA,WAEAnD,OAAA8O,UAAAO,SAAAuB,sBAEA5Q,OAAA8O,UAAAO,SAAAwB,qBAEA7Q,OAAA8O,UAAAO,SAAAyB,mBAAA,GACA9Q,OAAA8O,UAAAiC,gBACA,EACA,GACA/Q,OAAA8O,UAAA9O,OAAA8O,WAAA,CACAwB,IAAA,IAEA9K,CACA,CA2HAwL,GAAArK,KAAA,KACAjL,KAAAwK,IAAA,sBACAxK,KAAAwK,IAAA,oBAAAgK,MACAlQ,OAAA8O,UAAAwB,IAAAnN,KAAA,KACA,IAAAiN,EAAA9B,EAAA5S,KAAAoC,IAAA,SAAApC,KAAAoC,IAAA,aAAApC,KAAA2B,aAAA3B,KAAA6D,KAAAuE,WAAApI,KAAAoC,IAAA,SAAApC,KAAAoC,IAAA,UAAApC,KAAAoC,IAAA;AACAsS,KAAAxB,KAGA5O,OAAA8O,UAAAmC,QAAAvV,KAAAoC,IAAA,UACAkC,OAAA8O,UAAAO,SAAAkB,QAAA,CAAAH,EAAAxB,SAIA,QAEApT,OAAAqB,EAAAnB,KAAAC,UAAA,qBAAA+E,EAAA8P,IAAA,qBACA,CACA,sBAAA9R,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAAiJ,IACA/I,sBAAA,KACAlG,UAAAvG,KAAAuG,WAGA,CACA,UAAAkP,GACAlT,MAAAkT,cAAAjT,WACAxC,KAAAoC,IAAA,SAGA,CACA,OAAAsT,GApMA,IAAAhL;AAAAA,EAqMA1K,KAAAoC,IAAA,SApMAiJ,EAAAX,IAAApG,OAAA8O,YACA9O,OAAA8O,UAAAuC,aAAA,CAAAtK,EAAAX,GAAAwI,YACA7H,EAAAX,GAmMA,QAEA5K,OAAAqB,EAAAnB,KAAAC,UAAA,cAAA+E,EAAA8P,IAAA,uBACA,SAEA,EAAArP,EAAAwD,uBAAA,EAAAvD,EAAAwD,uBA2BA,CACA3F,GAAA,WACA4F,MAAA,2sBACAC,WAAA,mHACAC,MAAA,KAAAsD,EAAAuC,MACA3F,cAAA,IACAvJ,KACA,GACA,IAAAd,EAAAiQ,YAAA,oBAAAjQ,EAAAgT,mBAAA;AACAjT,EAAAW,QAAAgU,C,GC3YA5U,OAAA,0SAAAC,EAAAyN,EAAAzH,EAAA/F,EAAAK,EAAA2F,EAAAO,EAAAC,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,MAAAgW,EAAA,CACAC,eAAA,KACAC,wBAAA,KACAC,sBAAA,KACAC,YAAA,KACAC,mBAAA,MAEAC,EAAApW,OAAAyI,EAAA,cAAArD,EAAAtF,QACAuW,OAAA;AACAC,UAAA;AACAtV,eAAAuV,IAEA,MAAAC,EAAAD,EAAAE,OAAAC,QAAA;AACAF,KAAAG,MACAzW,KAAAe;AAGA,gBAAA2V,GACA,aAAA1W,KAAAwJ,QAAA,QACA,QAEA1J,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SACA,CACA,WAAAuU,CAAA5N,EAAA2F,GACA,OAAAA,EAAA,SAAA3F,IAAA,EACA,QAEAzG,OAAAqB,EAAAnB,KAAAC,UAAA,kBAAAV,EAAAK,SAAA,uBACA,CACA,MAAAsM,CAAA5K,EAAA6K,EAAAwK,EAAAlV,GACA,OAAAH,IAAA6K,GAAAwK,IAAAlV,CACA,QAEA3B,OAAAqB,EAAAnB,KAAAC,UAAA,aAAAV,EAAAK,SAAA,8EACA,CACA,aAAAuM,CAAA1F,EAAAF,GACA,OAAAE,GAAA,uBAAAF,GAGAvG,KAAAmC,UAAAmF,SAAAtH,KAAA6D,KAAAzB,IAAA,+CACA,QAEAtC,OAAAqB,EAAAnB,KAAAC,UAAA,oBAAAV,EAAAK,SAAA,2BACA,CACA,sBAAA+W,CAAApQ,GACA,6BAAAA,GAGAvG,KAAAqC,mBAAAiF,SAAAtH,KAAA6D,KAAAzB,IAAA,gDACA,QAEAtC,OAAAqB,EAAAnB,KAAAC,UAAA,6BAAAV,EAAAK,SAAA,cACA,CACA,YAAAgX,GACA,MAAAvQ,EAAArG,KAAA6D,KAAAzB,IAAA,mBACAmE,EAAAvG,KAAAoC,IAAA,aAAAwE,QAAA,UAGAiQ,EAFA7W,KAAA8W,gBAAAvQ,GAEAsC,OAAAkO,IACA,MAAA7D,EAAA7M,EAAAY,UAAA8P;AACA,OAAA7D,OAAA8D,cAAA9P,QAAAgM,EAAA8D,aAAAlV,SAAA9B,KAAAO;AAEA,GAAAsW,EAAA3P,OAAA,GACA0O,EAAArP,KACAqP,EAAArP,GAAA;AAEA,IAAA2M,EAAA7M,EAAAY,UAAA4P,EAAAjB,EAAArP,MAAA;AAGA,OAFAqP,EAAArP,IAAAqP,EAAArP,GAAA,GAAAsQ,EAAA3P,OACAlH,KAAAoW,UAAAlD,GAAA,KACAA,EAAA+D,IACA,CACAjX,KAAAoW,UAAA,IACA,CACA,eAAAU,CAAAvQ,GACA,MAAAF,EAAArG,KAAA6D,KAAAzB,IAAA;AACA,IAAAiE,MAAAQ,SACA;AAEA,MAAAC,EAAAT,EAAAQ,SAAAN;AACA,OAAA9G,OAAAuH,KAAAX,EAAAY,WAAAC,OAAA,OAAAjC,EAAAkC,SAAAL,GACAA,EAAAjF,MAAA,KAEA,EAEA,CACA,SAAAqV,GACAlX,KAAAwK,IAAA,SAAAxK,KAAA4W,eACA,CACA,sBAAA5T,GACA,OACAqJ,qBAAA,CACAC,QAAAtM,KAAA6D,KAAA0I,SAAA4K,MACA1K,sBAAAzM,KAAAoW,WAAA7S,GACAgD,UAAAvG,KAAAuG,WAGA,CACA,gBAAAjE,GAEA,GADAC,MAAAD,oBAAAE,WACAxC,KAAAoC,IAAA,WAGA,UAAAwT,EAAAC,eAAA,CAEA,MAAAxP,EAAArG,KAAA6D,KAAAzB,IAAA;AACA3C,OAAAuH,KAAA4O,GAAAlO,QAAAnB,IACA,MAAA6Q,EAAApX,KAAA8W,gBAAAvQ;AACA,OAAA6Q,EAAAlQ,OACA;AAGA,MAAA2P,EAAAO,EAAAvO,OAAAkO,IACA,MAAA7D,EAAA7M,EAAAY,UAAA8P;AACA,OAAA7D,OAAA8D,cAAA9P,QAAAgM,EAAA8D,aAAAlV,SAAA9B,KAAAO;AAEAqV,EAAArP,GAAA8Q,KAAAC,MAAAD,KAAAE,SAAAV,EAAA3P,SAEA,CACAlH,KAAAkX,WAjBA,CAkBA,SAEA,EAAAzR,EAAAwD,uBAAA,EAAAvD,EAAAwD,uBAQA,CACA3F,GAAA,WACA4F,MAAA,sIACAC,WAAA,8GACAC,MAAA,KAAAqD,EAAA+B,UACAlF,cAAA,IACAvJ,KACA,GACA,IAAAd,EAAAsY,mBAAA,+BAAAtY,EAAAgT,mBAAA,kBAAAhT,EAAAiQ,YAAA;AACAlQ,EAAAW,QAAAsW,C,GCjJAlX,OAAA,kPAAAC,EAAAwY,EAAAvY,EAAAwG,EAAAgS,GACA;AAEAjY,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACA,MAAA+X,GAAA,EAAAzY,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAUA,CACA3F,GAAA,WACA4F,MAAA,oLACAC,WAAA,oHACAC,MAAA,KAAAoO,EAAA7X,SACA2J,cAAA,KACA,EAAAmO,EAAA9X,cAAAyI,EAAA;AACApJ,EAAAW,QAAA+X,C,GCxBA3Y,OAAA,yQAAAC,EAAAC,EAAAuG,EAAAgS,EAAA/R,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AAEA,MAAAgY,EAAA9X,OAAAyI,EAAA,cAAArJ,EAAAU,QACA,mBAAAiY,CAAAC,EAAAC,GACA,OAAAD,EAAAE,QAAA,EAAAP,EAAA9R,gBAAAoS,EAAAlU,KAAAkU,EAAApW,aAAA,qBAAAmW,EAAAE,OAAA9Q,OAAA,CACA,SAEA,EAAAhI,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAWA,CACA3F,GAAA,WACA4F,MAAA,+LACAC,WAAA,8IACAC,MAAA,KAAAoO,EAAA7X,SACA2J,cAAA,IACAvJ,KACA,GACA,IAAAyF,EAAA0J,YAAA,wDAAA1J,EAAA+D,SAAA;AACAvK,EAAAW,QAAAgY,C,GCjCA5Y,OAAA,gRAAAC,EAAAC,EAAAuG,EAAAgS,EAAA/R,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AAEA,MAAAgY,EAAA9X,OAAAyI,EAAA,cAAArJ,EAAAU,gBAEA,EAAAV,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAMA,CACA3F,GAAA,WACA4F,MAAA,sIACAC,WAAA,qJACAC,MAAA,KAAAoO,EAAA7X,SACA2J,cAAA,IACAvJ,KACA,GACA,IAAAyF,EAAA0J,YAAA,+DAAA1J,EAAA+D,SAAA;AACAvK,EAAAW,QAAAgY,C,GCzBA5Y,OAAA,2QAAAC,EAAAC,EAAAuG,EAAAgS,EAAA/R,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AAEA,MAAAgY,EAAA9X,OAAAyI,EAAA,cAAArJ,EAAAU,gBAEA,EAAAV,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBASA,CACA3F,GAAA,WACA4F,MAAA,uJACAC,WAAA,gJACAC,MAAA,KAAAoO,EAAA7X,SACA2J,cAAA,IACAvJ,KACA,GACA,IAAAyF,EAAA0J,YAAA,0DAAA1J,EAAA+D,SAAA;AACAvK,EAAAW,QAAAgY,C,GC5BA5Y,OAAA,yQAAAC,EAAAC,EAAAuG,EAAAgS,EAAA/R,GACA;AAEAjG,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AAEA,MAAAgY,EAAA9X,OAAAyI,EAAA,cAAArJ,EAAAU,gBAEA,EAAAV,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBASA,CACA3F,GAAA,WACA4F,MAAA,qJACAC,WAAA,8IACAC,MAAA,KAAAoO,EAAA7X,SACA2J,cAAA,IACAvJ,KACA,GACA,IAAAyF,EAAA0J,YAAA,wDAAA1J,EAAA+D,SAAA;AACAvK,EAAAW,QAAAgY,C,GC5BA5Y,OAAA,4FAAAC,GACA;AAEAQ,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAkD,UAEA,SAAA8V,EAAAhQ,GACA,SAAAgQ,KAAA,IACAhQ,EAAAgQ,IAAA,CAIA,EAPAhZ,EAAAoD,mBAQA,SAAA4V,EAAAC,GACA,SAAAD,KAAA,GAAAC,EAAA,KACAA,EAAA,GAAAD,IAAA,CAIA,C,GCrBAjZ,OAAA,oTAAAC,EAAAkZ,EAAAC,EAAAC,EAAAnZ,EAAAwG,EAAAgS,GACA;AAEAjY,OAAAC,eAAAT,EAAA,cACAU,OAAA,IAEAV,EAAAW,aAAA;AACAX,EAAAW,QAAA,CACAiI,KAAA,uBACA,UAAAyQ,CAAAC,IACA,EAAAJ,EAAAK,eAAAC,KAWA,SAAAA,GACAA,EAAAC,yBAAA,kBAAAxZ,EAAA+J,uBAAA,EAAAvD,EAAAwD,uBAQA,CACA3F,GAAA,WACA4F,MAAA,qKACAC,WAAA,4HACAC,MAAA,KAAAgP,EAAAzY,SACA2J,cAAA,KACA,EAAAmO,EAAA9X,cAAAyI,WACA,EA1BAsQ,CAAAF;AAEA,MAAAG,EAAAL,EAAAM,OAAA,uBAEAC,EADAP,EAAAM,OAAA,wBACA;AACAD,EAAAG,UAAAD,EAAA,SAAAE,GACAZ,EAAAxY,QAAAqZ,YAAA,kBAAAD,EACA,EACA,E","ignoreList":[]}