ó
    Ú°›j¬˜  ã            
       ó¬  • S r SSKrSSKrSSKrSSKJr  SSKJr   SSKJ	r	  S r\" 5       r\(       a  SOS	r\R                  " \5      r0 S
SSS/SS4_SS_SS_SS_SS_SSS0 S4_SS_SSSS\4_SSSS\4_SS_SS _S!S!S"S\R$                  4_S#S#S$S\R$                  4_S%S%S&S\R$                  4_S'S'S(S\R$                  4_S)S)S*S\R$                  4_S+S,_0 S-S-S.S\R$                  4_S/S0_S1S1S2S3\4_S4S5_S6S7_S8S9_S:S:S;\S4_S<S=_S>S>S?S\4_S@SA_SBSC_SDSDSES\R$                  4_SFSG_SHSI_SJSK_SLSM_SNSNSOS\R$                  4_ESPSQSRS\R$                  4SSST.ErSUSVSS\R$                  4SWSS\R$                  4SXSS\R$                  4SYSZ/S[S\R$                  4S\S]/S^SS4S_S`S\R$                  4Sa.rSbScSdSS\R*                  4Se.rSf rSg r " Sh Si5      r " Sj Sk5      r " Sl Sm5      r " Sn So5      r " Sp Sq5      r " Sr Ss\5      r " St Su\5      r " Sv Sw\5      r  " Sx Sy\5      r! " Sz S{\5      r" " S| S}\5      r# " S~ S\5      r$g! \
 a    Sr	 GN0f = f)€zPThis module contains the interface for controlling how configuration
is loaded.
é    N)Úutils)ÚInvalidConfigError)ÚDEFAULT_NEW_RETRIESFc                  óx   • [         R                  R                  S5      n U b  U R                  5       S:H  $ [        $ )NÚAWS_NEW_RETRIES_2026Útrue)ÚosÚenvironÚgetÚlowerr   )Ú_env_new_retriess    ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/configprovider.pyÚ_resolve_new_retriesr   !   s6   € Ü—z‘z—~‘~Ð&<Ó=ÐØÑ#Ø×%Ñ%Ó'¨6Ñ1Ð1ÜÐó    ÚstandardÚlegacyÚprofileÚAWS_DEFAULT_PROFILEÚAWS_PROFILEÚregion)r   ÚAWS_DEFAULT_REGIONNNÚ	data_path)r   ÚAWS_DATA_PATHNNÚconfig_file)NÚAWS_CONFIG_FILEz~/.aws/configNÚ	ca_bundle)r   ÚAWS_CA_BUNDLENNÚapi_versionsÚcredentials_file)NÚAWS_SHARED_CREDENTIALS_FILEz~/.aws/credentialsNÚmetadata_service_timeoutÚAWS_METADATA_SERVICE_TIMEOUTé   Úmetadata_service_num_attemptsÚ!AWS_METADATA_SERVICE_NUM_ATTEMPTSÚec2_metadata_service_endpoint)r&   Ú!AWS_EC2_METADATA_SERVICE_ENDPOINTNNÚ"ec2_metadata_service_endpoint_mode)r(   Ú&AWS_EC2_METADATA_SERVICE_ENDPOINT_MODENNÚec2_metadata_v1_disabledÚAWS_EC2_METADATA_V1_DISABLEDÚimds_use_ipv6ÚAWS_IMDS_USE_IPV6Úuse_dualstack_endpointÚAWS_USE_DUALSTACK_ENDPOINTÚuse_fips_endpointÚAWS_USE_FIPS_ENDPOINTÚignore_configured_endpoint_urlsÚ#AWS_IGNORE_CONFIGURED_ENDPOINT_URLSÚparameter_validation)r4   NTNÚcsm_enabledÚAWS_CSM_ENABLEDÚcsm_host)r7   ÚAWS_CSM_HOSTz	127.0.0.1NÚcsm_portÚAWS_CSM_PORTiy  Úcsm_client_id)r;   ÚAWS_CSM_CLIENT_IDÚ NÚendpoint_discovery_enabled)r>   ÚAWS_ENDPOINT_DISCOVERY_ENABLEDÚautoNÚsts_regional_endpoints)rA   ÚAWS_STS_REGIONAL_ENDPOINTSÚregionalNÚ
retry_modeÚAWS_RETRY_MODEÚdefaults_mode)rF   ÚAWS_DEFAULTS_MODEr   NÚmax_attemptsÚAWS_MAX_ATTEMPTSÚuser_agent_appid)Úsdk_ua_app_idÚAWS_SDK_UA_APP_IDNNÚ"request_min_compression_size_bytes)rM   Ú&AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTESi (  NÚdisable_request_compressionÚAWS_DISABLE_REQUEST_COMPRESSIONÚsigv4a_signing_region_set)rQ   ÚAWS_SIGV4A_SIGNING_REGION_SETNNÚrequest_checksum_calculation)rS   Ú AWS_REQUEST_CHECKSUM_CALCULATIONÚwhen_supportedNÚresponse_checksum_validation)rV   Ú AWS_RESPONSE_CHECKSUM_VALIDATIONrU   NÚaccount_id_endpoint_mode)rX   ÚAWS_ACCOUNT_ID_ENDPOINT_MODEÚ	preferredNÚdisable_host_prefix_injectionÚ!AWS_DISABLE_HOST_PREFIX_INJECTION)Úauth_scheme_preferenceÚAWS_AUTH_SCHEME_PREFERENCENNÚtcp_keepaliveÚBOTOCORE_TCP_KEEPALIVE)Ús3_disable_express_session_authÚ#AWS_S3_DISABLE_EXPRESS_SESSION_AUTHNN)r]   r_   ra   ))Ús3Úaddressing_styleNNN)rc   Úuse_accelerate_endpoint)rc   r.   )rc   Úpayload_signing_enabledÚs3_use_arn_region)rc   Úuse_arn_regionÚAWS_S3_USE_ARN_REGIONÚs3_us_east_1_regional_endpoint)rc   Úus_east_1_regional_endpointÚ"AWS_S3_US_EAST_1_REGIONAL_ENDPOINT)rc   Ú$s3_disable_multiregion_access_pointsÚ(AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS)rd   re   r.   rf   rh   rk   rm   )Úproxy_ca_bundleNNN)Úproxy_client_certNNNÚproxy_use_forwarding_for_https)ro   rp   rq   c                 ó°   • [        U S9n[        U[        5      n[        SU [        U[        5      5      US'   [        SU [        U[
        5      5      US'   U$ )N)Úsessionrc   Úproxies_config)ÚConfigChainFactoryÚ_create_config_chain_mappingÚ!BOTOCORE_DEFAUT_SESSION_VARIABLESÚSectionConfigProviderÚDEFAULT_S3_CONFIG_VARSÚDEFAULT_PROXIES_CONFIG_VARS)rs   Úchain_builderÚconfig_mappings      r   Ú&create_botocore_default_config_mappingr}   *  sl   € Ü&¨wÑ7€MÜ1ØÔ8ó€Nô 1ØØÜ$ ]Ô4JÓKó€N�4Ñô
 (=ØØÜ$ØÔ6ó	
ó(€NÐ#Ñ$ð Ðr   c           	      ó~   • 0 nUR                  5        H&  u  p4U R                  UUS   US   US   US   S9X#'   M(     U$ )Nr#   r   é   é   )Úinstance_nameÚenv_var_namesÚconfig_property_namesÚdefaultÚconversion_func)ÚitemsÚcreate_config_chain)r{   Úconfig_variablesÚmappingÚlogical_nameÚconfigs        r   rv   rv   >  s\   € Ø€GØ 0× 6Ñ 6Ö 8ÑˆØ -× AÑ AØ&Ø  ™)Ø"(¨¡)Ø˜1‘IØ" 1™Ið !Bð !
ˆÓñ !9ð €Nr   c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚDefaultConfigResolveriK  c                 ó:   • US   U l         US   U l        0 U l        g )NÚbaseÚmodes©Ú_base_default_configÚ_modesÚ _resolved_default_configurations)ÚselfÚdefault_config_datas     r   Ú__init__ÚDefaultConfigResolver.__init__L  s#   € Ø$7¸Ñ$?ˆÔ!Ø)¨'Ñ2ˆŒØ02ˆÕ-r   c                 ó  • U R                   R                  5       nU R                  R                  U5      nU HM  nX$   nX4   n[	        UR                  5       5      S   nXg   nUS:X  a  XX-  nOUS:X  a  XX-  nOUS:X  a  UnXRU'   MO     U$ )Nr   ÚmultiplyÚaddÚoverride)r’   Úcopyr“   r   ÚlistÚkeys)	r•   ÚmodeÚdefault_configÚmodificationsÚ
config_varÚdefault_valueÚmodification_dictÚmodificationÚmodification_values	            r   Ú_resolve_default_values_by_modeÚ5DefaultConfigResolver._resolve_default_values_by_modeQ  s¢   € Ø×2Ñ2×7Ñ7Ó9ˆØŸ™Ÿ™¨Ó-ˆã'ˆJØ*Ñ6ˆMØ -Ñ 9ÐÜÐ 1× 6Ñ 6Ó 8Ó9¸!Ñ<ˆLØ!2Ñ!@ÐØ˜zÓ)ØÑ3‘Ø Ó&ØÑ3‘Ø Ó+Ø 2�Ø)6˜:Ó&ñ (ð Ðr   c                 ó`   • SS/nUR                  U R                  R                  5       5        U$ )Nr   r@   )Úextendr“   rŸ   )r•   Údefault_modess     r   Úget_default_modesÚ'DefaultConfigResolver.get_default_modesc  s-   € Ø! 6Ð*ˆØ×Ñ˜TŸ[™[×-Ñ-Ó/Ô0ØÐr   c                 ó|   • XR                   ;  a  U R                  U5      nX R                   U'   U R                   U   $ ©N)r”   r¨   )r•   r    Údefaultss      r   Úget_default_config_valuesÚ/DefaultConfigResolver.get_default_config_valuesh  s=   € Ø×<Ñ<Ó<Ø×;Ñ;¸DÓAˆHØ:B×1Ñ1°$Ñ7Ø×4Ñ4°TÑ:Ð:r   r‘   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r—   r¨   r­   r²   Ú__static_attributes__© r   r   r�   r�   K  s   † ò3ò
ò$õ
;r   r�   c                   óB   • \ rS rSrSrS	S jr     S
S jrS rS rSr	g)ru   io  a  Factory class to create our most common configuration chain case.

This is a convenience class to construct configuration chains that follow
our most common pattern. This is to prevent ordering them incorrectly,
and to make the config chain construction more readable.
Nc                 óB   • Xl         Uc  [        R                  nX l        g)aG  Initialize a ConfigChainFactory.

:type session: :class:`botocore.session.Session`
:param session: This is the session that should be used to look up
    values from the config file.

:type environ: dict
:param environ: A mapping to use for environment variables. If this
    is not provided it will default to use os.environ.
N)Ú_sessionr	   r
   Ú_environ)r•   rs   r
   s      r   r—   ÚConfigChainFactory.__init__w  s   € ð  ŒØ‰?Ü—j‘jˆGØ�r   c                 ó&  • / nUb"  UR                  [        XR                  S95        Ub   UR                  U R	                  U5      5        Ub   UR                  U R                  U5      5        Ub  UR                  [        US95        [        UUS9$ )a²  Build a config chain following the standard botocore pattern.

In botocore most of our config chains follow the the precendence:
session_instance_variables, environment, config_file, default_value.

This is a convenience function for creating a chain that follow
that precendence.

:type instance_name: str
:param instance_name: This indicates what session instance variable
    corresponds to this config value. If it is None it will not be
    added to the chain.

:type env_var_names: str or list of str or None
:param env_var_names: One or more environment variable names to
    search for this value. They are searched in order. If it is None
    it will not be added to the chain.

:type config_property_names: str/tuple or list of str/tuple or None
:param config_property_names: One of more strings or tuples
    representing the name of the key in the config file for this
    config option. They are searched in order. If it is None it will
    not be added to the chain.

:type default: Any
:param default: Any constant value to be returned.

:type conversion_func: None or callable
:param conversion_func: If this value is None then it has no effect on
    the return type. Otherwise, it is treated as a function that will
    conversion_func our provided type.

:rvalue: ConfigChain
:returns: A ConfigChain that resolves in the order env_var_names ->
    config_property_name -> default. Any values that were none are
    omitted form the chain.
)Úinstance_varrs   )Úvalue)Ú	providersr…   )ÚappendÚInstanceVarProviderr¼   r«   Ú_get_env_providersÚ_get_scoped_config_providersÚConstantProviderÚChainProvider)r•   r�   r‚   rƒ   r„   r…   rÂ   s          r   r‡   Ú&ConfigChainFactory.create_config_chain‡  s    € ðZ ˆ	ØÑ$Ø×ÑÜ#Ø!.¿¹ñôð
 Ñ$Ø×Ñ˜T×4Ñ4°]ÓCÔDØ Ñ,Ø×ÑØ×1Ñ1Ð2GÓHôð ÑØ×ÑÔ-°GÑ<Ô=äØØ+ñ
ð 	
r   c                 ó�   • / n[        U[        5      (       d  U/nU H%  nUR                  [        X0R                  S95        M'     U$ ©N©ÚnameÚenv)Ú
isinstancerž   rÃ   ÚEnvironmentProviderr½   )r•   r‚   Úenv_var_providersÚenv_var_names       r   rÅ   Ú%ConfigChainFactory._get_env_providersÉ  sH   € ØÐÜ˜-¬×.Ñ.Ø*˜OˆMÛ)ˆLØ×$Ñ$Ü#¨¿=¹=ÑIöñ *ð !Ð r   c                 ó’   • / n[        U[        5      (       d  U/nU H&  nUR                  [        UU R                  S95        M(     U$ )N)Úconfig_var_namers   )rÏ   rž   rÃ   ÚScopedConfigProviderr¼   )r•   rƒ   Úscoped_config_providersÚconfig_property_names       r   rÆ   Ú/ConfigChainFactory._get_scoped_config_providersÓ  sR   € Ø"$ÐÜÐ/´×6Ñ6Ø%:Ð$;Ð!Û$9Ð Ø#×*Ñ*Ü$Ø$8Ø ŸM™Mñöñ %:ð 'Ð&r   )r½   r¼   r°   )NNNNN)
r´   rµ   r¶   r·   Ú__doc__r—   r‡   rÅ   rÆ   r¸   r¹   r   r   ru   ru   o  s.   † ñô ð$ ØØ"ØØô@
òD!õ'r   ru   c                   óL   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rSrg)ÚConfigValueStoreiá  z8The ConfigValueStore object stores configuration values.Nc                 ó|   • 0 U l         0 U l        Ub+  UR                  5        H  u  p#U R                  X#5        M     gg)a  Initialize a ConfigValueStore.

:type mapping: dict
:param mapping: The mapping parameter is a map of string to a subclass
    of BaseProvider. When a config variable is asked for via the
    get_config_variable method, the corresponding provider will be
    invoked to load the value.
N)Ú
_overridesÚ_mappingr†   Úset_config_provider)r•   r‰   rŠ   Úproviders       r   r—   ÚConfigValueStore.__init__ä  s>   € ð ˆŒØˆŒØÑØ*1¯-©-®/Ñ&�Ø×(Ñ(¨Ö@ò +:ð r   c                 óÂ   • [        [        R                  " U R                  U5      5      nU R                  R                  5        H  u  p4UR                  X45        M     U$ r°   )rÜ   r�   Údeepcopyrß   rÞ   r†   Úset_config_variable)r•   ÚmemoÚconfig_storerŠ   Úoverride_values        r   Ú__deepcopy__ÚConfigValueStore.__deepcopy__ó  sL   € Ü'¬¯ª°d·m±mÀTÓ(JÓKˆØ,0¯O©O×,AÑ,AÖ,CÑ(ˆLØ×,Ñ,¨\ÖJñ -Dð Ðr   c                 óÀ   • [        [        R                  " U R                  5      5      nU R                  R	                  5        H  u  p#UR                  X#5        M     U$ r°   )rÜ   r�   rß   rÞ   r†   rå   )r•   rç   rŠ   rè   s       r   Ú__copy__ÚConfigValueStore.__copy__ú  sJ   € Ü'¬¯	ª	°$·-±-Ó(@ÓAˆØ,0¯O©O×,AÑ,AÖ,CÑ(ˆLØ×,Ñ,¨\ÖJñ -Dð Ðr   c                 óœ   • XR                   ;   a  U R                   U   $ XR                  ;  a  gU R                  U   nUR                  5       $ )aÀ  
Retrieve the value associated with the specified logical_name
from the corresponding provider. If no value is found None will
be returned.

:type logical_name: str
:param logical_name: The logical name of the session variable
    you want to retrieve.  This name will be mapped to the
    appropriate environment variable name for this session as
    well as the appropriate config file entry.

:returns: value of variable or None if not defined.
N)rÞ   rß   Úprovide©r•   rŠ   rá   s      r   Úget_config_variableÚ$ConfigValueStore.get_config_variable  sG   € ð Ÿ?™?Ó*Ø—?‘? <Ñ0Ð0ØŸ}™}Ó,ØØ—=‘= Ñ.ˆØ×ÑÓ!Ð!r   c                 ób   • XR                   ;   d  XR                  ;  a  gU R                  U   nU$ )a«  
Retrieve the provider associated with the specified logical_name.
If no provider is found None will be returned.

:type logical_name: str
:param logical_name: The logical name of the session variable
    you want to retrieve.  This name will be mapped to the
    appropriate environment variable name for this session as
    well as the appropriate config file entry.

:returns: configuration provider or None if not defined.
N)rÞ   rß   rð   s      r   Úget_config_providerÚ$ConfigValueStore.get_config_provider  s.   € ð ŸO™OÓ+Ø§=¡=Ó0àØ—=‘= Ñ.ˆØˆr   c                 ó    • X R                   U'   g)a  Set a configuration variable to a specific value.

By using this method, you can override the normal lookup
process used in ``get_config_variable`` by explicitly setting
a value.  Subsequent calls to ``get_config_variable`` will
use the ``value``.  This gives you per-session specific
configuration values.

::
    >>> # Assume logical name 'foo' maps to env var 'FOO'
    >>> os.environ['FOO'] = 'myvalue'
    >>> s.get_config_variable('foo')
    'myvalue'
    >>> s.set_config_variable('foo', 'othervalue')
    >>> s.get_config_variable('foo')
    'othervalue'

:type logical_name: str
:param logical_name: The logical name of the session variable
    you want to set.  These are the keys in ``SESSION_VARIABLES``.

:param value: The value to associate with the config variable.
N)rÞ   )r•   rŠ   rÁ   s      r   rå   Ú$ConfigValueStore.set_config_variable+  s   € ð0 ).�‰˜Ò%r   c                 ó<   • U R                   R                  US5        g)z£Remove an override config variable from the session.

:type logical_name: str
:param logical_name: The name of the parameter to clear the override
    value from.
N)rÞ   Úpop)r•   rŠ   s     r   Úclear_config_variableÚ&ConfigValueStore.clear_config_variableE  s   € ð 	�‰×Ñ˜L¨$Õ/r   c                 ó    • X R                   U'   g)aë  Set the provider for a config value.

This provides control over how a particular configuration value is
loaded. This replaces the provider for ``logical_name`` with the new
``provider``.

:type logical_name: str
:param logical_name: The name of the config value to change the config
    provider for.

:type provider: :class:`botocore.configprovider.BaseProvider`
:param provider: The new provider that should be responsible for
    providing a value for the config named ``logical_name``.
N)rß   rð   s      r   rà   Ú$ConfigValueStore.set_config_providerN  s   € ð '/�‰�lÒ#r   )rß   rÞ   r°   )r´   rµ   r¶   r·   rÚ   r—   ré   rì   rñ   rô   rå   rú   rà   r¸   r¹   r   r   rÜ   rÜ   á  s.   † ÙBôAòòò"ò*ò*.ò40õ/r   rÜ   c                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ÚSmartDefaultsConfigStoreFactoryi`  c                 ó*   • Xl         X l        S U l        g r°   ©Ú_default_config_resolverÚ_imds_region_providerÚ_instance_metadata_region)r•   Údefault_config_resolverÚimds_region_providers      r   r—   Ú(SmartDefaultsConfigStoreFactory.__init__a  s   € Ø(?Ô%Ø%9Ô"ð *.ˆÕ&r   c                 óÄ   • US:X  a  U R                  U5      nU R                  R                  U5      nU H(  nXE   n[        U SU 3S 5      nU(       d  M   U" X5        M*     g )Nr@   Ú_set_)Úresolve_auto_moder  r²   Úgetattr)r•   rç   r    Úregion_nameÚdefault_configsr£   Úconfig_valueÚmethods           r   Úmerge_smart_defaultsÚ4SmartDefaultsConfigStoreFactory.merge_smart_defaultsh  sh   € Ø�6‹>Ø×)Ñ)¨+Ó6ˆDà×)Ñ)×CÑCÀDÓIð 	ó *ˆJØ*Ñ6ˆLÜ˜T U¨:¨,Ð#7¸Ó>ˆFßˆvÙ�|Ö2ò	 *r   c                 ó–  • S n[         R                  R                  S5      (       a?  [         R                  R                  S5      n[         R                  R                  SU5      nU(       d?  U R                  (       a  U R                  nO! U R                  R                  5       nX l        U(       a  X:X  a  ggg! [         a     Nf = f)NÚAWS_EXECUTION_ENVr   Ú
AWS_REGIONz	in-regionzcross-regionr   )r	   r
   r   r  r  rï   Ú	Exception)r•   r  Úcurrent_regionÚdefault_regions       r   r
  Ú1SmartDefaultsConfigStoreFactory.resolve_auto_modet  s    € ØˆÜ�:‰:�>‰>Ð-×.Ñ.ÜŸZ™ZŸ^™^Ð,@ÓAˆNÜŸZ™ZŸ^™^¨L¸.ÓIˆNÞØ×-×-Ø!%×!?Ñ!?‘ðØ%)×%?Ñ%?×%GÑ%GÓ%I�NØ5CÔ2ö ØÓ,Ø"à%Øøô !ó Ùðús   Â B; Â;
CÃCc                 ó  • UR                  U5      n[        U5      n[        U[        5      (       a*  [        R
                  " U5      nUR                  U5        UnO[        U[        5      (       a
  [        XE/S9nUR                  X%5        g ©N)rÂ   )	rô   rÇ   rÏ   rÈ   r�   rä   Úset_default_providerÚBaseProviderrà   )r•   rç   ÚvariablerÁ   Úoriginal_providerÚdefault_providerÚchain_provider_copys          r   Ú_update_providerÚ0SmartDefaultsConfigStoreFactory._update_providerŠ  s€   € Ø(×<Ñ<¸XÓFÐÜ+¨EÓ2ÐÜÐ'¬×7Ñ7Ü"&§-¢-Ð0AÓ"BÐØ×4Ñ4Ð5EÔFØ2ÑÜÐ)¬<×8Ñ8Ü,Ø,Ð?ñ Ðð 	×(Ñ(¨ÕDr   c                 ó¦   • [         R                  " UR                  U5      5      nUR                  U[	        U5      5        UR                  X%5        g r°   )r�   rä   rô   r  rÇ   rà   )r•   rç   Úsection_namer  rÁ   Úsection_provider_copys         r   Ú_update_section_providerÚ8SmartDefaultsConfigStoreFactory._update_section_provider—  sL   € ô !%§¢Ø×,Ñ,¨\Ó:ó!
Ðð 	×2Ñ2ØÔ& uÓ-ô	
ð 	×(Ñ(¨ÕMr   c                 ó*   • U R                  USU5        g )NrD   ©r!  ©r•   rç   rÁ   s      r   Ú_set_retryModeÚ.SmartDefaultsConfigStoreFactory._set_retryMode¢  s   € Ø×Ñ˜l¨L¸%Õ@r   c                 ó*   • U R                  USU5        g )NrA   r)  r*  s      r   Ú_set_stsRegionalEndpointsÚ9SmartDefaultsConfigStoreFactory._set_stsRegionalEndpoints¥  s   € Ø×Ñ˜lÐ,DÀeÕLr   c                 ó,   • U R                  USSU5        g )Nrc   rk   )r&  r*  s      r   Ú_set_s3UsEast1RegionalEndpointsÚ?SmartDefaultsConfigStoreFactory._set_s3UsEast1RegionalEndpoints¨  s   € Ø×%Ñ%Ø˜$Ð =¸uõ	
r   c                 ó0   • U R                  USUS-  5        g )NÚconnect_timeoutiè  r)  r*  s      r   Ú_set_connectTimeoutInMillisÚ;SmartDefaultsConfigStoreFactory._set_connectTimeoutInMillis­  s   € Ø×Ñ˜lÐ,=¸uÀt¹|ÕLr   r  N)r´   rµ   r¶   r·   r—   r  r
  r!  r&  r+  r.  r1  r5  r¸   r¹   r   r   rÿ   rÿ   `  s4   † ò.ò
3òò,Eò	NòAòMò
õ
Mr   rÿ   c                   ó   • \ rS rSrSrS rSrg)r  i±  z|Base class for configuration value providers.

A configuration provider has some method of providing a configuration
value.
c                 ó   • [        S5      e)zProvide a config value.rï   )ÚNotImplementedError©r•   s    r   rï   ÚBaseProvider.provide¸  s   € ä! )Ó,Ð,r   r¹   N)r´   rµ   r¶   r·   rÚ   rï   r¸   r¹   r   r   r  r  ±  s   † ñõ-r   r  c                   ó@   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
rg)rÈ   i½  z“This provider wraps one or more other providers.

Each provider in the chain is called, the first one returning a non-None
value is then returned.
Nc                 ó&   • Uc  / nXl         X l        g)a\  Initalize a ChainProvider.

:type providers: list
:param providers: The initial list of providers to check for values
    when invoked.

:type conversion_func: None or callable
:param conversion_func: If this value is None then it has no affect on
    the return type. Otherwise, it is treated as a function that will
    transform provided value.
N)Ú
_providersÚ_conversion_func)r•   rÂ   r…   s      r   r—   ÚChainProvider.__init__Ä  s   € ð ÑØˆIØ#ŒØ /Õr   c                 ól   • [        [        R                  " U R                  U5      U R                  5      $ r°   )rÈ   r�   rä   r>  r?  ©r•   ræ   s     r   ré   ÚChainProvider.__deepcopy__Õ  s)   € ÜÜ�MŠM˜$Ÿ/™/¨4Ó0°$×2GÑ2Gó
ð 	
r   c                 óv   • U R                    H)  nUR                  5       nUc  M  U R                  U5      s  $    g)a
  Provide the value from the first provider to return non-None.

Each provider in the chain has its provide method called. The first
one in the chain to return a non-None value is the returned from the
ChainProvider. When no non-None value is found, None is returned.
N)r>  rï   Ú_convert_type)r•   rá   rÁ   s      r   rï   ÚChainProvider.provideÚ  s<   € ð ŸœˆHØ×$Ñ$Ó&ˆEØÓ Ø×)Ñ)¨%Ó0Ò0ñ (ð r   c                 ó.  • U R                   (       a1  [        U R                   S   [        5      (       a  XR                   S'   OU R                   R                  U5        [	        S U R                    5       5      nUS:”  a  [
        R                  S5        g g )Néÿÿÿÿc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr°   )rÏ   rÇ   )Ú.0rá   s     r   Ú	<genexpr>Ú5ChainProvider.set_default_provider.<locals>.<genexpr>ï  s"   é € ð 
â+�ô �xÔ!1×2Ð2Ú+ùs   ‚r#   zLChainProvider object contains multiple instances of ConstantProvider objects)r>  rÏ   rÇ   rÃ   ÚsumÚloggerÚinfo)r•   r  Únum_of_constantss      r   r  Ú"ChainProvider.set_default_providerç  s�   € Ø�?�?œzØ�O‰O˜BÑÔ!1÷ 
ñ  
ð #3�O‰O˜BÒà�O‰O×"Ñ"Ð#3Ô4äñ 
à ŸOšOó
ó 
Ðð ˜aÓÜ�K‰Kð8õð  r   c                 óB   • U R                   b  U R                  U5      $ U$ r°   )r?  ©r•   rÁ   s     r   rE  ÚChainProvider._convert_typeù  s$   € Ø× Ñ Ñ,Ø×(Ñ(¨Ó/Ð/Øˆr   c           
      ó”   • SR                  SR                  U R                   Vs/ s H  n[        U5      PM     sn5      5      $ s  snf )Nz[{}]z, )ÚformatÚjoinr>  Ústr)r•   Úps     r   Ú__repr__ÚChainProvider.__repr__þ  s4   € Ø�}‰}˜TŸY™Y¸¿ºÓ'Hº°1¬¨A®¹Ñ'HÓIÓJÐJùÒ'Hs   ¥A)r?  r>  )NN)r´   rµ   r¶   r·   rÚ   r—   ré   rï   r  rE  rZ  r¸   r¹   r   r   rÈ   rÈ   ½  s&   † ñô0ò"
ò
òò$õ
Kr   rÈ   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	rÄ   i  z>This class loads config values from the session instance vars.c                 ó   • Xl         X l        g)a  Initialize InstanceVarProvider.

:type instance_var: str
:param instance_var: The instance variable to load from the session.

:type session: :class:`botocore.session.Session`
:param session: The botocore session to get the loaded configuration
    file variables from.
N©Ú_instance_varr¼   )r•   rÀ   rs   s      r   r—   ÚInstanceVarProvider.__init__  s   € ð *ÔØ�r   c                 ól   • [        [        R                  " U R                  U5      U R                  5      $ r°   )rÄ   r�   rä   r_  r¼   rB  s     r   ré   Ú InstanceVarProvider.__deepcopy__  s)   € Ü"Ü�MŠM˜$×,Ñ,¨dÓ3°T·]±]ó
ð 	
r   c                 óp   • U R                   R                  5       nUR                  U R                  5      nU$ )z6Provide a config value from the session instance vars.)r¼   Úinstance_variablesr   r_  )r•   Úinstance_varsrÁ   s      r   rï   ÚInstanceVarProvider.provide  s/   € àŸ™×8Ñ8Ó:ˆØ×!Ñ! $×"4Ñ"4Ó5ˆØˆr   c                 ó<   • SU R                    SU R                   S3$ )Nz!InstanceVarProvider(instance_var=ú
, session=Ú)r^  r:  s    r   rZ  ÚInstanceVarProvider.__repr__  s'   € Ø2°4×3EÑ3EÐ2FÀjÐQU×Q^ÑQ^ÐP_Ð_`ÐaÐar   r^  N©
r´   rµ   r¶   r·   rÚ   r—   ré   rï   rZ  r¸   r¹   r   r   rÄ   rÄ     s   † ÙHò ò
ò
õbr   rÄ   c                   ó,   • \ rS rSrS rS rS rS rSrg)rÖ   i!  c                 ó   • Xl         X l        g)aê  Initialize ScopedConfigProvider.

:type config_var_name: str or tuple
:param config_var_name: The name of the config variable to load from
    the configuration file. If the value is a tuple, it must only
    consist of two items, where the first item represents the section
    and the second item represents the config var name in the section.

:type session: :class:`botocore.session.Session`
:param session: The botocore session to get the loaded configuration
    file variables from.
N©Ú_config_var_namer¼   )r•   rÕ   rs   s      r   r—   ÚScopedConfigProvider.__init__"  s   € ð !0ÔØ�r   c                 ól   • [        [        R                  " U R                  U5      U R                  5      $ r°   )rÖ   r�   rä   ro  r¼   rB  s     r   ré   Ú!ScopedConfigProvider.__deepcopy__2  s)   € Ü#Ü�MŠM˜$×/Ñ/°Ó6¸¿¹ó
ð 	
r   c                 óN  • U R                   R                  5       n[        U R                  [        5      (       aR  UR                  U R                  S   5      n[        U[        5      (       d  gUR                  U R                  S   5      $ UR                  U R                  5      $ )z,Provide a value from a config file property.r   Nr#   )r¼   Úget_scoped_configrÏ   ro  Útupler   Údict)r•   Úscoped_configÚsection_configs      r   rï   ÚScopedConfigProvider.provide7  s…   € àŸ™×7Ñ7Ó9ˆÜ�d×+Ñ+¬U×3Ñ3Ø*×.Ñ.¨t×/DÑ/DÀQÑ/GÓHˆNÜ˜n¬d×3Ñ3ØØ!×%Ñ% d×&;Ñ&;¸AÑ&>Ó?Ð?Ø× Ñ  ×!6Ñ!6Ó7Ð7r   c                 ó<   • SU R                    SU R                   S3$ )Nz%ScopedConfigProvider(config_var_name=rh  ri  rn  r:  s    r   rZ  ÚScopedConfigProvider.__repr__A  s'   € Ø6°t×7LÑ7LÐ6MÈZÐX\×XeÑXeÐWfÐfgÐhÐhr   rn  N)	r´   rµ   r¶   r·   r—   ré   rï   rZ  r¸   r¹   r   r   rÖ   rÖ   !  s   † ò ò 
ò
8õir   rÖ   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	rÐ   iE  z:This class loads config values from environment variables.c                 ó   • Xl         X l        g)zÜInitialize with the keys in the dictionary to check.

:type name: str
:param name: The key with that name will be loaded and returned.

:type env: dict
:param env: Environment variables dictionary to get variables from.
N©Ú_nameÚ_env)r•   rÍ   rÎ   s      r   r—   ÚEnvironmentProvider.__init__H  s   € ð Œ
Ø�	r   c                 ó–   • [        [        R                  " U R                  U5      [        R                  " U R                  U5      5      $ r°   )rÐ   r�   rä   r  r€  rB  s     r   ré   Ú EnvironmentProvider.__deepcopy__T  s2   € Ü"Ü�MŠM˜$Ÿ*™* dÓ+¬T¯]ª]¸4¿9¹9ÀdÓ-Kó
ð 	
r   c                 ój   • U R                   U R                  ;   a  U R                  U R                      $ g)z0Provide a config value from a source dictionary.Nr~  r:  s    r   rï   ÚEnvironmentProvider.provideY  s(   € à�:‰:˜Ÿ™Ó"Ø—9‘9˜TŸZ™ZÑ(Ð(Ør   c                 ó<   • SU R                    SU R                   S3$ )NzEnvironmentProvider(name=z, env=ri  r~  r:  s    r   rZ  ÚEnvironmentProvider.__repr___  s   € Ø*¨4¯:©:¨,°f¸T¿Y¹Y¸KÀqÐIÐIr   )r€  r  Nrk  r¹   r   r   rÐ   rÐ   E  s   † ÙDò
ò
ò
õJr   rÐ   c                   ó:   • \ rS rSrSrS
S jrS rS rS rS r	S	r
g)rx   ic  z¼Provides a dictionary from a section in the scoped config

This is useful for retrieving scoped config variables (i.e. s3) that have
their own set of config variables and resolving logic.
Nc                 óœ   • Xl         X l        [        U R                   U R                  5      U l        X0l        U R                  c  0 U l        g g r°   )Ú_section_namer¼   rÖ   Ú_scoped_config_providerÚ_override_providers)r•   r$  rs   Úoverride_providerss       r   r—   ÚSectionConfigProvider.__init__j  sJ   € Ø)ÔØŒÜ';Ø×Ñ §¡ó(
ˆÔ$ð $6Ô Ø×#Ñ#Ñ+Ø')ˆDÕ$ð ,r   c                 ó¬   • [        [        R                  " U R                  U5      U R                  [        R                  " U R
                  U5      5      $ r°   )rx   r�   rä   rŠ  r¼   rŒ  rB  s     r   ré   Ú"SectionConfigProvider.__deepcopy__t  s>   € Ü$Ü�MŠM˜$×,Ñ,¨dÓ3Ø�M‰MÜ�MŠM˜$×2Ñ2°DÓ9ó
ð 	
r   c                 ó8  • U R                   R                  5       nU(       a7  [        U[        5      (       d"  [        R                  SU R                  U5        g U R                  R                  5        H#  u  p#UR                  5       nUc  M  Uc  0 nXAU'   M%     U$ )NzEThe %s config key is not a dictionary type, ignoring its value of: %s)	r‹  rï   rÏ   rv  rN  ÚdebugrŠ  rŒ  r†   )r•   rx  Úsection_config_varrá   Úprovider_vals        r   rï   ÚSectionConfigProvider.provide{  s•   € Ø×5Ñ5×=Ñ=Ó?ˆÞ¤*¨^¼T×"BÑ"BÜ�L‰Lð,à×"Ñ"Øô	ð Ø,0×,DÑ,D×,JÑ,JÖ,LÑ(ÐØ#×+Ñ+Ó-ˆLØÓ'Ø!Ñ)Ø%'�NØ5AÐ1Ó2ñ -Mð Ðr   c                 óâ   • U R                   R                  U5      n[        U[        5      (       a  UR	                  U5        g [        U[
        5      (       a
  [        X2/S9nX R                   U'   g r  )rŒ  r   rÏ   rÈ   r  r  )r•   Úkeyr  rá   s       r   r  Ú*SectionConfigProvider.set_default_provider�  se   € Ø×+Ñ+×/Ñ/°Ó4ˆÜ�h¤×.Ñ.Ø×)Ñ)Ð*:Ô;ØÜ˜¤,×/Ñ/Ü,Ø#Ð6ñ Ðð )9× Ñ  Ò%r   c                 óV   • SU R                    SU R                   SU R                   S3$ )Nz#SectionConfigProvider(section_name=rh  z, override_providers=ri  )rŠ  r¼   rŒ  r:  s    r   rZ  ÚSectionConfigProvider.__repr__˜  s<   € à1°$×2DÑ2DÐ1Eð FØ—}‘}�oð &"Ø"&×":Ñ":Ð!;¸1ð>ð	
r   )rŒ  r‹  rŠ  r¼   r°   )r´   rµ   r¶   r·   rÚ   r—   ré   rï   r  rZ  r¸   r¹   r   r   rx   rx   c  s    † ñô*ò
òò$	9õ
r   rx   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	rÇ   i   z(This provider provides a constant value.c                 ó   • Xl         g r°   ©Ú_valuerS  s     r   r—   ÚConstantProvider.__init__£  s   € Ø�r   c                 óV   • [        [        R                  " U R                  U5      5      $ r°   )rÇ   r�   rä   rž  rB  s     r   ré   ÚConstantProvider.__deepcopy__¦  s   € Ü¤§¢¨d¯k©k¸4Ó @ÓAÐAr   c                 ó   • U R                   $ )z7Provide the constant value given during initialization.r�  r:  s    r   rï   ÚConstantProvider.provide©  s   € à�{‰{Ðr   c                 ó"   • SU R                    S3$ )NzConstantProvider(value=ri  r�  r:  s    r   rZ  ÚConstantProvider.__repr__­  s   € Ø(¨¯©¨°QÐ7Ð7r   r�  Nrk  r¹   r   r   rÇ   rÇ      s   † Ù2òòBòõ8r   rÇ   c                   ó\   • \ rS rSrSr/ SQr SS jrS rS rS r	S	 r
S
 rS rS rS rSrg)ÚConfiguredEndpointProvideri±  zàLookup an endpoint URL from environment variable or shared config file.

NOTE: This class is considered private and is subject to abrupt breaking
changes or removal without prior announcement. Please do not use it
directly.
)Úenvironment_serviceÚenvironment_globalÚconfig_serviceÚconfig_globalNc                 óš   • Xl         X l        X0l        U R                  U R                  5      U l        Uc  [
        R                  nX@l        g)a<  Initialize a ConfiguredEndpointProviderChain.

:type full_config: dict
:param full_config: This is the dict representing the full
    configuration file.

:type scoped_config: dict
:param scoped_config: This is the dict representing the configuration
    for the current profile for the session.

:type client_name: str
:param client_name: The name used to instantiate a client using
    botocore.session.Session.create_client.

:type environ: dict
:param environ: A mapping to use for environment variables. If this
    is not provided it will default to use os.environ.
N)Ú_full_configÚ_scoped_configÚ_client_nameÚ_get_snake_case_service_idÚ_transformed_service_idr	   r
   r½   )r•   Úfull_configrw  Úclient_namer
   s        r   r—   Ú#ConfiguredEndpointProvider.__init__À  sG   € ð2 (ÔØ+ÔØ'ÔØ'+×'FÑ'FØ×Ñó(
ˆÔ$ð ‰?Ü—j‘jˆGØ�r   c                 ó  • U R                    Hd  n[        R                  SU R                  U5        [	        U SU 35      " 5       nU(       d  MA  [        R                  SU R                  U5        Us  $    [        R                  S5        g)aÃ  Lookup the configured endpoint URL.

The order is:

1. The value provided by a service-specific environment variable.
2. The value provided by the global endpoint environment variable
   (AWS_ENDPOINT_URL).
3. The value provided by a service-specific parameter from a services
   definition section in the shared configuration file.
4. The value provided by the global parameter from a services
   definition section in the shared configuration file.
z#Looking for endpoint for %s via: %sÚ_get_endpoint_url_zFound endpoint for %s via: %s.zNo configured endpoint found.N)Ú_ENDPOINT_URL_LOOKUP_ORDERrN  r’  r¯  r  rO  )r•   ÚlocationÚendpoint_urls      r   rï   Ú"ConfiguredEndpointProvider.provideã  s‚   € ð ×7Ô7ˆHÜ�L‰LØ5Ø×!Ñ!Øôô # 4Ð+=¸h¸ZÐ)HÔIÓKˆLçˆ|Ü—‘Ø4Ø×%Ñ%Øôð
 $Ò#ñ 8ô" 	�‰Ð4Ô5Ør   c                 ó¢   • [         R                  R                  X5      n[         R                  R                  X5      nUR	                  SS5      $ )NÚ-Ú_)r   ÚSERVICE_NAME_ALIASESr   Ú.CLIENT_NAME_TO_HYPHENIZED_SERVICE_ID_OVERRIDESÚreplace)r•   r³  Úhyphenized_service_ids      r   r°  Ú5ConfiguredEndpointProvider._get_snake_case_service_id  sK   € ô ×0Ñ0×4Ñ4°[ÓNˆä×@Ñ@×DÑDØóð 	ð
 %×,Ñ,¨S°#Ó6Ð6r   c                 ó@   • U R                   R                  5       nSU 3$ )NÚAWS_ENDPOINT_URL_)r±  Úupper)r•   Útransformed_service_id_envs     r   Ú_get_service_env_var_nameÚ4ConfiguredEndpointProvider._get_service_env_var_name  s&   € Ø%)×%AÑ%A×%GÑ%GÓ%IÐ"Ø"Ð#=Ð">Ð?Ð?r   c                 óÊ   • SU R                   ;  a  0 $ U R                   S   nU R                  R                  S0 5      R                  U5      nU(       d  SU S3n[        US9eU$ )NÚservicesz?The profile is configured to use the services section but the "z(" services configuration does not exist.)Ú	error_msg)r®  r­  r   r   )r•   r$  Úservices_sectionrË  s       r   Ú_get_services_configÚ/ConfiguredEndpointProvider._get_services_config  s}   € Ø˜T×0Ñ0Ó0ØˆIà×*Ñ*¨:Ñ6ˆØ×,Ñ,×0Ñ0°¸RÓ@×DÑDØó
Ðö  ð$Ø$0 >ð 20ð1ð ô
 %¨yÑ9Ð9àÐr   c                 ó”   • U R                   R                  5       nU R                  5       R                  U0 5      R                  S5      $ ©Nr¹  )r±  r   rÍ  r   )r•   Úsnakecase_service_ids     r   Ú _get_endpoint_url_config_serviceÚ;ConfiguredEndpointProvider._get_endpoint_url_config_service&  s?   € Ø#×;Ñ;×AÑAÓCÐà×%Ñ%Ó'ß‰SÐ% rÓ*ß‰S�Ó ð	
r   c                 ó8   • U R                   R                  S5      $ rÐ  )r®  r   r:  s    r   Ú_get_endpoint_url_config_globalÚ:ConfiguredEndpointProvider._get_endpoint_url_config_global.  s   € Ø×"Ñ"×&Ñ& ~Ó6Ð6r   c                 ób   • [        U R                  5       U R                  S9R                  5       $ rË   )rÐ   rÇ  r½   rï   r:  s    r   Ú%_get_endpoint_url_environment_serviceÚ@ConfiguredEndpointProvider._get_endpoint_url_environment_service1  s(   € Ü"Ø×/Ñ/Ó1°t·}±}ñ
ç
‰'‹)ð	r   c                 óF   • [        SU R                  S9R                  5       $ )NÚAWS_ENDPOINT_URLrÌ   )rÐ   r½   rï   r:  s    r   Ú$_get_endpoint_url_environment_globalÚ?ConfiguredEndpointProvider._get_endpoint_url_environment_global6  s   € Ü"Ø#¨¯©ñ
ç
‰'‹)ð	r   )r¯  r½   r­  r®  r±  r°   )r´   rµ   r¶   r·   rÚ   r·  r—   rï   r°  rÇ  rÍ  rÒ  rÕ  rØ  rÜ  r¸   r¹   r   r   r§  r§  ±  sD   † ñò"Ðð ô! òFòB	7ò@ò ò&
ò7òõ
r   r§  )%rÚ   r�   Úloggingr	   Úbotocorer   Úbotocore.exceptionsr   Úbotocore.customizations.retriesr   ÚImportErrorr   ÚNEW_RETRIES_ENABLEDÚ_DEFAULT_RETRY_MODEÚ	getLoggerr´   rN  ÚintÚensure_booleanrw   ry   Únormalize_booleanrz   r}   rv   r�   ru   rÜ   rÿ   r  rÈ   rÄ   rÖ   rÐ   rx   rÇ   r§  r¹   r   r   Ú<module>ré     s*  ðñó Û Û 	å Ý 2ð õ Dò
ñ +Ó,Ð Þ$7‘j¸XÐ à	×	Ò	˜8Ó	$€ð8f%à�Ð,¨mÐ<¸dÀDÐIðf%ð Ð:ðf%ð Ð;ð	f%ð
 ÐCðf%ð Ð;ðf%ð �^ T¨2¨tÐ4ðf%ð ð ðf%ð$ Ø"Ø&Ø	Øð	!ð%f%ð4 $Ø'Ø+Ø	Øð	&ð5f%ð@ $ð &ðAf%ðL )ð +ðMf%ðX Ø"Ø&ØØ×Ñð	!ðYf%ðd ØØØØ×Ñð	ðef%ðp Ø Ø$ØØ×Ñð	ðqf%ð| ØØØØ×Ñð	ð}f%ðH &Ø)Ø-ØØ×Ñð	(ðIf%ðT ÐFñUf%ð\ ØØØØ×Ñð	ð]f%ðh Ð?ðif%ðj �˜^¨U°CÐ8ðkf%ðl ÐEðmf%ðp !ð #ðqf%ð| ð ð}f%ðH �<Ð!1Ð3FÈÐMðIf%ðJ ÐKðKf%ðP �^Ð%7¸¸sÐCðQf%ðR ÐJðSf%ðT )ð +ðUf%ð` "Ø%Ø)ØØ×Ñð	$ðaf%ðl  ð "ðmf%ðx #ð %ðyf%ðD #ð %ðEf%ðP ð !ðQf%ð\ $Ø'Ø+ØØ×Ñð	&ñ]f%ðhð 	Ø ØØ×Ñð	ð(òAf%Ð !ðV Gà)ØØØ×Ñð	 ð 	)ØØØ×Ñð	ð 	*ØØØ×Ñð	 ð 
Ð6Ð7ØØØ×Ñð	ð -Ø1ð	
ð 	-ØØð$ð 	7Ø2ØØ×Ñð	-ñG)Ð ð\ =Ø@à(ØØØ×Ñð	'ñ	Ð òò(
÷!;ñ !;÷Ho'ñ o'÷d|/ñ |/÷~NMñ NM÷b	-ñ 	-ôBK�Lô BKôJb˜,ô bô>!i˜<ô !iôHJ˜,ô Jô<:
˜Lô :
ôz8�|ô 8ô"H õ Høði ó  ØÓð ús   œI ÉIÉI