def __init__(self, account_name=None, account_key=None, sas_token=None, is_emulated=False,<EOL>protocol=DEFAULT_PROTOCOL, endpoint_suffix=SERVICE_HOST_BASE, custom_domain=None, request_session=None,<EOL>connection_string=None, socket_timeout=None, token_credential=None):
service_params = _ServiceParameters.get_service_parameters(<EOL>'<STR_LIT>',<EOL>account_name=account_name,<EOL>account_key=account_key,<EOL>sas_token=sas_token,<EOL>token_credential=token_credential,<EOL>is_emulated=is_emulated,<EOL>protocol=protocol,<EOL>endpoint_suffix=endpoint_suffix,<EOL>custom_domain=custom_domain,<EOL>request_session=request_session,<EOL>connection_string=connection_string,<EOL>socket_timeout=socket_timeout)<EOL>super(BaseBlobService, self).__init__(service_params)<EOL>if self.account_key:<EOL><INDENT>self.authentication = _StorageSharedKeyAuthentication(<EOL>self.account_name,<EOL>self.account_key,<EOL>self.is_emulated<EOL>)<EOL><DEDENT>elif self.sas_token:<EOL><INDENT>self.authentication = _StorageSASAuthentication(self.sas_token)<EOL><DEDENT>elif self.token_credential:<EOL><INDENT>self.authentication = self.token_credential<EOL><DEDENT>else:<EOL><INDENT>self.authentication = _StorageNoAuthentication()<EOL><DEDENT>self.require_encryption = False<EOL>self.key_encryption_key = None<EOL>self.key_resolver_function = None<EOL>self._X_MS_VERSION = X_MS_VERSION<EOL>self._update_user_agent_string(package_version)<EOL>
:param str account_name:
    The storage account name. This is used to authenticate requests 
    signed with an account key and to construct the storage endpoint. It 
    is required unless a connection string is given, or if a custom 
    domain is used with anonymous authentication.
:param str account_key:
    The storage account key. This is used for shared key authentication. 
    If neither account key or sas token is specified, anonymous access 
    will be used.
:param str sas_token:
     A shared access signature token to use to authenticate requests 
     instead of the account key. If account key and sas token are both 
     specified, account key will be used to sign. If neither are 
     specified, anonymous access will be used.
:param bool is_emulated:
    Whether to use the emulator. Defaults to False. If specified, will 
    override all other parameters besides connection string and request 
    session.
:param str protocol:
    The protocol to use for requests. Defaults to https.
:param str endpoint_suffix:
    The host base component of the url, minus the account name. Defaults 
    to Azure (core.windows.net). Override this to use the China cloud 
    (core.chinacloudapi.cn).
:param str custom_domain:
    The custom domain to use. This can be set in the Azure Portal. For 
    example, 'www.mydomain.com'.
:param requests.Session request_session:
    The session object to use for http requests.
:param str connection_string:
    If specified, this will override all other parameters besides 
    request session. See
    http://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
    for the connection string format
:param int socket_timeout:
    If specified, this will override the default socket timeout. The timeout specified is in seconds.
    See DEFAULT_SOCKET_TIMEOUT in _constants.py for the default value.
:param token_credential:
    A token credential used to authenticate HTTPS requests. The token value
    should be updated before its expiration.
:type `~azure.storage.common.TokenCredential`