Ë
    q^ëi¾,  ã                   óä   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ dZd„ Zd„ ZdZ G d„ de«      Z G d„ de«      Z y)é    N)Úapps)Úsettings)ÚHttpResponseÚHttpResponseRedirectÚJsonResponse)ÚContextÚEngine)Útranslate_url©Ú
get_format)Úurl_has_allowed_host_and_scheme)Úcheck_for_languageÚget_language)ÚDjangoTranslation)ÚViewÚlanguagec           
      óV  — | j                   j                  d| j                  j                  d«      «      }|s| j                  d«      rst	        || j                  «       h| j                  «       ¬«      sH| j                  j                  d«      }t	        || j                  «       h| j                  «       ¬«      sd}|rt        |«      nt        d¬«      }| j                  dk(  rÅ| j                   j                  t        «      }|r¤t        |«      r™|rt        ||«      }||k7  rt        |«      }|j                  t        j                   |t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  ¬	«       |S )
aÂ  
    Redirect to a given URL while setting the chosen language in the session
    (if enabled) and in a cookie. The URL and the language code need to be
    specified in the request parameters.

    Since this view changes how the user will see the rest of the site, it must
    only be accessed as a POST request. If called as a GET request, it will
    redirect to the page in the request (the 'next' parameter) without changing
    any state.
    Únextz	text/html)ÚurlÚallowed_hostsÚrequire_httpsÚHTTP_REFERERú/éÌ   )ÚstatusÚPOST)Úmax_ageÚpathÚdomainÚsecureÚhttponlyÚsamesite)r   ÚgetÚGETÚacceptsr   Úget_hostÚ	is_secureÚMETAr   r   ÚmethodÚLANGUAGE_QUERY_PARAMETERr   r
   Ú
set_cookier   ÚLANGUAGE_COOKIE_NAMEÚLANGUAGE_COOKIE_AGEÚLANGUAGE_COOKIE_PATHÚLANGUAGE_COOKIE_DOMAINÚLANGUAGE_COOKIE_SECUREÚLANGUAGE_COOKIE_HTTPONLYÚLANGUAGE_COOKIE_SAMESITE)ÚrequestÚnext_urlÚresponseÚ	lang_codeÚ
next_transs        úB/var/www/eb/venv/lib/python3.12/site-packages/django/views/i18n.pyÚset_languager9      s\  € ð �|‰|×Ñ ¨¯©¯©¸Ó(?Ó@€Há�G—O‘O KÔ0Ü-ØØ×'Ñ'Ó)Ð*Ø×'Ñ'Ó)õð
 —<‘<×#Ñ# NÓ3ˆÜ.ØØ"×+Ñ+Ó-Ð.Ø!×+Ñ+Ó-õ
ð
 ˆHÙ19Ô# HÔ-¼|ÐSVÔ?W€HØ‡~�~˜ÒØ—L‘L×$Ñ$Ô%=Ó>ˆ	ÙÔ+¨IÔ6ÙÜ*¨8°YÓ?�
Ø Ò)Ü3°JÓ?�HØ×ÑÜ×-Ñ-ØÜ ×4Ñ4Ü×2Ñ2Ü×6Ñ6Ü×6Ñ6Ü!×:Ñ:Ü!×:Ñ:ð  ô 	ð €Oó    c                  óD   — d} | D �ci c]  }|t        |«      “Œ c}S c c}w )z5Return all formats strings required for i18n to work.)ÚDATE_FORMATÚDATETIME_FORMATÚTIME_FORMATÚYEAR_MONTH_FORMATÚMONTH_DAY_FORMATÚSHORT_DATE_FORMATÚSHORT_DATETIME_FORMATÚFIRST_DAY_OF_WEEKÚDECIMAL_SEPARATORÚTHOUSAND_SEPARATORÚNUMBER_GROUPINGÚDATE_INPUT_FORMATSÚTIME_INPUT_FORMATSÚDATETIME_INPUT_FORMATSr   )ÚFORMAT_SETTINGSÚattrs     r8   Úget_formatsrL   B   s)   € ð€Oð  0?Ö? tˆD”*˜TÓ"Ñ"Ò?Ð?ùÒ?s   ‡aâ
  
{% autoescape off %}
'use strict';
{
  const globals = this;
  const django = globals.django || (globals.django = {});

  {% if plural %}
  django.pluralidx = function(n) {
    const v = {{ plural }};
    if (typeof v === 'boolean') {
      return v ? 1 : 0;
    } else {
      return v;
    }
  };
  {% else %}
  django.pluralidx = function(count) { return (count == 1) ? 0 : 1; };
  {% endif %}

  /* gettext library */

  django.catalog = django.catalog || {};
  {% if catalog_str %}
  const newcatalog = {{ catalog_str }};
  for (const key in newcatalog) {
    django.catalog[key] = newcatalog[key];
  }
  {% endif %}

  if (!django.jsi18n_initialized) {
    django.gettext = function(msgid) {
      const value = django.catalog[msgid];
      if (typeof value === 'undefined') {
        return msgid;
      } else {
        return (typeof value === 'string') ? value : value[0];
      }
    };

    django.ngettext = function(singular, plural, count) {
      const value = django.catalog[singular];
      if (typeof value === 'undefined') {
        return (count == 1) ? singular : plural;
      } else {
        return value.constructor === Array ? value[django.pluralidx(count)] : value;
      }
    };

    django.gettext_noop = function(msgid) { return msgid; };

    django.pgettext = function(context, msgid) {
      let value = django.gettext(context + '\x04' + msgid);
      if (value.includes('\x04')) {
        value = msgid;
      }
      return value;
    };

    django.npgettext = function(context, singular, plural, count) {
      let value = django.ngettext(context + '\x04' + singular, context + '\x04' + plural, count);
      if (value.includes('\x04')) {
        value = django.ngettext(singular, plural, count);
      }
      return value;
    };

    django.interpolate = function(fmt, obj, named) {
      if (named) {
        return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
      } else {
        return fmt.replace(/%s/g, function(match){return String(obj.shift())});
      }
    };


    /* formatting library */

    django.formats = {{ formats_str }};

    django.get_format = function(format_type) {
      const value = django.formats[format_type];
      if (typeof value === 'undefined') {
        return format_type;
      } else {
        return value;
      }
    };

    /* add to global namespace */
    globals.pluralidx = django.pluralidx;
    globals.gettext = django.gettext;
    globals.ngettext = django.ngettext;
    globals.gettext_noop = django.gettext_noop;
    globals.pgettext = django.pgettext;
    globals.npgettext = django.npgettext;
    globals.interpolate = django.interpolate;
    globals.get_format = django.get_format;

    django.jsi18n_initialized = true;
  }
};
{% endautoescape %}
c                   ó\   — e Zd ZdZdZdZd„ Zd„ Zed„ «       Z	ed„ «       Z
d„ Zd	„ Zd
„ Zd„ Zy)ÚJavaScriptCataloga  
    Return the selected language catalog as a JavaScript library.

    Receive the list of packages to check for translations in the `packages`
    kwarg either from the extra dictionary passed to the path() function or as
    a plus-sign delimited string from the request. Default is 'django.conf'.

    You can override the gettext domain for this view, but usually you don't
    want to do that as JavaScript messages go to the djangojs domain. This
    might be needed if you deliver your JavaScript source from Django templates.
    ÚdjangojsNc                 óF  — t        «       }|j                  d| j                  «      }|j                  dd«      }|r|j                  d«      n| j                  }|r| j                  |«      nd }t        |||¬«      | _         | j                  di |¤Ž}| j                  |«      S )Nr   ÚpackagesÚ ú+)r   Ú
localedirs© )
r   r#   r   ÚsplitrQ   Ú	get_pathsr   ÚtranslationÚget_context_dataÚrender_to_response)	Úselfr3   ÚargsÚkwargsÚlocaler   rQ   ÚpathsÚcontexts	            r8   r#   zJavaScriptCatalog.getÑ   sŽ   € Ü“ˆØ—‘˜H d§k¡kÓ2ˆð —:‘:˜j¨"Ó-ˆÙ*2�8—>‘> #Ô&¸¿¹ˆÙ,4�—‘˜xÔ(¸$ˆÜ,¨V¸FÈuÔUˆÔØ'�$×'Ñ'Ñ1¨&Ñ1ˆØ×&Ñ& wÓ/Ð/r:   c                 ó°  — t        j                  «       D �ci c]  }|j                  |“Œ }}|D �cg c]  }||v sŒ||   ‘Œ }}t        |«      t        |«      k  r1|D �cg c]	  }||vsŒ|‘Œ }}t	        ddj                  |«      z  «      ‚|D �cg c],  }t        j                  j                  |j                  d«      ‘Œ. c}S c c}w c c}w c c}w c c}w )Nz4Invalid package(s) provided to JavaScriptCatalog: %sú,r^   )r   Úget_app_configsÚnameÚlenÚ
ValueErrorÚjoinÚosr   )r[   rQ   Ú
app_configÚallowable_packagesÚpÚapp_configsÚexcludedÚapps           r8   rW   zJavaScriptCatalog.get_pathsÝ   så   € ä:>×:NÑ:NÓ:Pö
Ø,6ˆJ�O‰O˜ZÑ'ð
Ðð 
ð ,4ö
Ø&'°qÐ<NÒ7NÐ˜qÓ!ð
ˆð 
ô ˆ{Óœc (›mÒ+Ø#+ÖK˜a¨qÐ8JÒ/JšÐKˆHÐKÜØFØ—(‘(˜8Ó$ñ%óð ð
 =HÖH°S”—‘—‘˜SŸX™X xÕ0ÒHÐHùò
ùò
ùò Lùò Is!   —C±	C	»C	Á	CÁ)CÂ1Cc                 ól   — t        j                  d| j                  xs d«      }|rt        |d   «      S y)zx
        Return the number of plurals for this catalog language, or 2 if no
        plural string is available.
        znplurals=\s*(\d+)rR   é   é   )ÚreÚsearchÚ_plural_stringÚint)r[   Úmatchs     r8   Ú_num_pluralszJavaScriptCatalog._num_pluralsí   s4   € ô —	‘	Ð.°×0CÑ0CÒ0IÀrÓJˆÙÜ�u˜Q‘x“=Ð Ør:   c                 óú   — d| j                   j                  v rc| j                   j                  d   j                  d«      D ]8  }|j                  d«      sŒ|j                  dd«      d   j	                  «       c S  y)zŒ
        Return the plural string (including nplurals) for this catalog language,
        or None if no plural string is available.
        rR   ú
zPlural-Forms:ú:rp   N)rX   Ú_catalogrV   Ú
startswithÚstrip)r[   Úlines     r8   rt   z JavaScriptCatalog._plural_stringø   ss   € ð �×!Ñ!×*Ñ*Ñ*Ø×(Ñ(×1Ñ1°"Ñ5×;Ñ;¸DÓAò 9�Ø—?‘? ?Õ3ØŸ:™: c¨1Ó-¨aÑ0×6Ñ6Ó8Ò8ð9ð r:   c                 óð   — | j                   }|�b|j                  d«      D �cg c]1  }|j                  «       j                  d«      r|j                  «       ‘Œ3 c}d   j                  dd«      d   }|S c c}w )Nú;zplural=r   ú=rp   )rt   rV   r}   r|   )r[   ÚpluralÚels      r8   Ú
get_pluralzJavaScriptCatalog.get_plural  sz   € Ø×$Ñ$ˆØÐð !Ÿ,™, sÓ+öàØ—8‘8“:×(Ñ(¨Ô3ð —‘•
òð ñ	÷ ‘�s˜A“˜qñ	"ˆFð
 ˆùòs   ¢6A3c                 ó.  — i }i }| j                   }t        «       }	 |j                  j                  «       D ]l  \  }}|dk(  s||v rŒt	        |t
        «      r|||<   n6t	        |t        «      r|\  }}||j                  |i «      |<   nt        |«      ‚|j                  |«       Œn |j                  r|j                  }nnŒ¤| j                  }	|j                  «       D ]1  \  }
}t        |	«      D �cg c]  }|j                  |d«      ‘Œ c}||
<   Œ3 |S c c}w )NrR   )rX   Úsetr{   ÚitemsÚ
isinstanceÚstrÚtupleÚ
setdefaultÚ	TypeErrorÚaddÚ	_fallbackrw   Úranger#   )r[   ÚpdictÚcatalogrX   Ú	seen_keysÚkeyÚvalueÚmsgidÚcntÚnum_pluralsÚkÚvÚis                r8   Úget_catalogzJavaScriptCatalog.get_catalog  s  € ØˆØˆØ×&Ñ&ˆÜ“Eˆ	ØØ)×2Ñ2×8Ñ8Ó:ò 
#‘
��UØ˜"’9  yÑ 0ØÜ˜c¤3Ô'Ø#(�G˜C’LÜ ¤UÔ+Ø!$‘J�E˜3Ø7<�E×$Ñ$ U¨BÓ/°Ò4ä# C›.Ð(Ø—‘˜cÕ"ð
#ð ×$Ò$Ø)×3Ñ3‘àð ð" ×'Ñ'ˆØ—K‘K“Mò 	D‰DˆAˆqÜ05°kÓ0BÖC¨1˜!Ÿ%™%  2�,ÒCˆG�AŠJð	Dàˆùò Ds   Ã/Dc                 óV   — | j                  «       t        «       | j                  «       dœS )N)r‘   Úformatsr‚   )r›   rL   r„   )r[   r]   s     r8   rY   z"JavaScriptCatalog.get_context_data,  s'   € à×'Ñ'Ó)Ü"“}Ø—o‘oÓ'ñ
ð 	
r:   c                 ó(  — d„ }t        «       j                  t        «      }|d   r! |t        j                  |d   dd¬«      «      nd |d<    |t        j                  |d   dd¬«      «      |d<   t        |j                  t        |«      «      d	«      S )
Nc                 ó&   — | j                  dd«      S )Nry   z
  )Úreplace)Úss    r8   Úindentz4JavaScriptCatalog.render_to_response.<locals>.indent4  s   € Ø—9‘9˜T 6Ó*Ð*r:   r‘   Trq   )Ú	sort_keysr¢   Úcatalog_strr�   Úformats_strz text/javascript; charset="utf-8")r	   Úfrom_stringÚjs_catalog_templateÚjsonÚdumpsr   Úrenderr   )r[   r`   Úresponse_kwargsr¢   Útemplates        r8   rZ   z$JavaScriptCatalog.render_to_response3  s˜   € ò	+ô “8×'Ñ'Ô(;Ó<ˆð �yÒ!ñ ”4—:‘:˜g iÑ0¸DÈÔKÔLàð 	�Ññ
 "(Ü�J‰J�w˜yÑ)°TÀ!ÔDó"
ˆ�Ñô Ø�O‰OœG GÓ,Ó-Ð/Qó
ð 	
r:   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rQ   r#   rW   Úpropertyrw   rt   r„   r›   rY   rZ   rU   r:   r8   rN   rN   Á   sZ   „ ñ
ð €FØ€Hò
0òIð  ñó ðð ñ	ó ð	òòò6
ó
r:   rN   c                   ó   — e Zd ZdZd„ Zy)ÚJSONCatalogaÅ  
    Return the selected language catalog as a JSON object.

    Receive the same parameters as JavaScriptCatalog and return a response
    with a JSON object of the following format:

        {
            "catalog": {
                # Translations catalog
            },
            "formats": {
                # Language formats for date, time, etc.
            },
            "plural": '...'  # Expression for plural forms, or null.
        }
    c                 ó   — t        |«      S )N)r   )r[   r`   r«   s      r8   rZ   zJSONCatalog.render_to_responseX  s   € Ü˜GÓ$Ð$r:   N)r­   r®   r¯   r°   rZ   rU   r:   r8   r³   r³   F  s   „ ñó"%r:   r³   )!r¨   rh   rr   Údjango.appsr   Údjango.confr   Údjango.httpr   r   r   Údjango.templater   r	   Údjango.urlsr
   Údjango.utils.formatsr   Údjango.utils.httpr   Údjango.utils.translationr   r   Ú#django.utils.translation.trans_realr   Údjango.views.genericr   r*   r9   rL   r§   rN   r³   rU   r:   r8   ú<module>r¿      sg   ðÛ Û 	Û 	å Ý  ß HÑ Hß +Ý %Ý +Ý =ß EÝ AÝ %à%Ð ò,ò^@ð*gÐ ôTB
˜ô B
ôJ%Ð#õ %r:   