
    ~i^                     J    d Z ddlZddlZddlZddlmZ  G d de          ZdS )a  
    cloud_detect20251031

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: common-version
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
    N)Configurationc                      e Zd ZdZ	 i dddddddd	d
dddddddddddddddddddddddddddd d!ddd"d#d$d%	Zi dd&dd'dd(dd)d
d*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6d7d8d9d:d;d<d=d>d?d%	Zd{dAZedB             Zej	        dC             ZedD             Z
e
j	        dE             Z
edF             Zej	        dG             ZedH             Zej	        dI             ZedJ             Zej	        dK             ZedL             Zej	        dM             ZedN             Zej	        dO             ZedP             Zej	        dQ             ZedR             Zej	        dS             ZedT             Zej	        dU             ZedV             Zej	        dW             ZedX             Zej	        dY             ZedZ             Zej	        d[             Zed\             Zej	        d]             Zed^             Zej	        d_             Zed`             Zej	        da             Zedb             Zej	        dc             Zedd             Zej	        de             Zedf             Zej	        dg             Zedh             Zej	        di             Zedj             Zej	        dk             Zedl             Zej	        dm             Zedn             Zej	        do             Zedp             Z e j	        dq             Z edr             Z!e!j	        ds             Z!edt             Z"e"j	        du             Z"dv Z#dw Z$dx Z%dy Z&dz Z'd@S )|UpdateTaskRequestzsNOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    addressstralarm_id_listz	list[int]bind_group_idintdiagnose_config DiagnoseConfigForUpdateTaskInput
dns_configDnsConfigForUpdateTaskInputdns_hijack_config!DnsHijackConfigForUpdateTaskInputdownload_config DownloadConfigForUpdateTaskInputenable_shuffleboolfinish_timehttp_configHttpConfigForUpdateTaskInputidinterval_secondsline_id_listname
node_countpage_configPageConfigForUpdateTaskInputperiod_configPeriodConfigForUpdateTaskInputPingConfigForUpdateTaskInputResultAssertForUpdateTaskInput!SelectionConfigForUpdateTaskInputzlist[TagForUpdateTaskInput]TcpConfigForUpdateTaskInputUdpConfigForUpdateTaskInputUploadConfigForUpdateTaskInput)	ping_configresult_assertselection_configtagstarget_server_typetask_group_id
tcp_config
udp_configupload_configAddressAlarmIdListBindGroupIdDiagnoseConfig	DnsConfigDnsHijackConfigDownloadConfigEnableShuffle
FinishTime
HttpConfigIdIntervalSeconds
LineIdListName	NodeCount
PageConfigPeriodConfig
PingConfigResultAssertSelectionConfigTagsTargetServerTypeTaskGroupId	TcpConfig	UdpConfigUploadConfigNc                 n   |t                      }|| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        || _        ||| _        ||| _        ||| _         ||| _!        ||| _"        ||| _#        ||| _$        |	| _%        |
|
| _&        || _'        || _(        ||| _)        || _*        || _+        ||| _,        ||| _-        ||| _.        ||| _/        ||| _0        ||| _1        ||| _2        ||| _3        ||| _4        ||| _5        |	|| _6        dS dS )z.UpdateTaskRequest - a model defined in SwaggerN)7r   _configuration_address_alarm_id_list_bind_group_id_diagnose_config_dns_config_dns_hijack_config_download_config_enable_shuffle_finish_time_http_config_id_interval_seconds_line_id_list_name_node_count_page_config_period_config_ping_config_result_assert_selection_config_tags_target_server_type_task_group_id_tcp_config_udp_config_upload_configdiscriminatorr   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/   )selfr   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/   rK   s                               /root/.openclaw/workspace/.venvs/ark-sdk/lib/python3.11/site-packages/volcenginesdkclouddetect20251031/models/update_task_request.py__init__zUpdateTaskRequest.__init__]   s;   !*__N,"" $"& $#  !%!
 " "!%
#' ""!$!.D$!.D&#2D !(DO(%6D"&#2D %"0D&"*D 0# ,D	$"*D$!.D"*D$!.D'$4D!DI)&8D#$!.D!(DO!(DO$!.D %$    c                     | j         S )zGets the address of this UpdateTaskRequest.  # noqa: E501


        :return: The address of this UpdateTaskRequest.  # noqa: E501
        :rtype: str
        )rL   rg   s    rh   r   zUpdateTaskRequest.address   s     }rj   c                 N    | j         j        r|t          d          || _        dS )zSets the address of this UpdateTaskRequest.


        :param address: The address of this UpdateTaskRequest.  # noqa: E501
        :type: str
        Nz/Invalid value for `address`, must not be `None`)rK   client_side_validation
ValueErrorrL   )rg   r   s     rh   r   zUpdateTaskRequest.address   s1     5 	P'/NOOOrj   c                     | j         S )zGets the alarm_id_list of this UpdateTaskRequest.  # noqa: E501


        :return: The alarm_id_list of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[int]
        rM   rl   s    rh   r   zUpdateTaskRequest.alarm_id_list        ""rj   c                     || _         dS )zSets the alarm_id_list of this UpdateTaskRequest.


        :param alarm_id_list: The alarm_id_list of this UpdateTaskRequest.  # noqa: E501
        :type: list[int]
        Nrq   )rg   r   s     rh   r   zUpdateTaskRequest.alarm_id_list        ,rj   c                     | j         S )zGets the bind_group_id of this UpdateTaskRequest.  # noqa: E501


        :return: The bind_group_id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        rN   rl   s    rh   r	   zUpdateTaskRequest.bind_group_id   rr   rj   c                     || _         dS )zSets the bind_group_id of this UpdateTaskRequest.


        :param bind_group_id: The bind_group_id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nrv   )rg   r	   s     rh   r	   zUpdateTaskRequest.bind_group_id   rt   rj   c                     | j         S )zGets the diagnose_config of this UpdateTaskRequest.  # noqa: E501


        :return: The diagnose_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DiagnoseConfigForUpdateTaskInput
        rO   rl   s    rh   r   z!UpdateTaskRequest.diagnose_config        $$rj   c                     || _         dS )zSets the diagnose_config of this UpdateTaskRequest.


        :param diagnose_config: The diagnose_config of this UpdateTaskRequest.  # noqa: E501
        :type: DiagnoseConfigForUpdateTaskInput
        Nry   )rg   r   s     rh   r   z!UpdateTaskRequest.diagnose_config        !0rj   c                     | j         S )zGets the dns_config of this UpdateTaskRequest.  # noqa: E501


        :return: The dns_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DnsConfigForUpdateTaskInput
        rP   rl   s    rh   r   zUpdateTaskRequest.dns_config       rj   c                     || _         dS )zSets the dns_config of this UpdateTaskRequest.


        :param dns_config: The dns_config of this UpdateTaskRequest.  # noqa: E501
        :type: DnsConfigForUpdateTaskInput
        Nr~   )rg   r   s     rh   r   zUpdateTaskRequest.dns_config       &rj   c                     | j         S )zGets the dns_hijack_config of this UpdateTaskRequest.  # noqa: E501


        :return: The dns_hijack_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DnsHijackConfigForUpdateTaskInput
        rQ   rl   s    rh   r   z#UpdateTaskRequest.dns_hijack_config  s     &&rj   c                     || _         dS )zSets the dns_hijack_config of this UpdateTaskRequest.


        :param dns_hijack_config: The dns_hijack_config of this UpdateTaskRequest.  # noqa: E501
        :type: DnsHijackConfigForUpdateTaskInput
        Nr   )rg   r   s     rh   r   z#UpdateTaskRequest.dns_hijack_config#  s     #4rj   c                     | j         S )zGets the download_config of this UpdateTaskRequest.  # noqa: E501


        :return: The download_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: DownloadConfigForUpdateTaskInput
        rR   rl   s    rh   r   z!UpdateTaskRequest.download_config.  rz   rj   c                     || _         dS )zSets the download_config of this UpdateTaskRequest.


        :param download_config: The download_config of this UpdateTaskRequest.  # noqa: E501
        :type: DownloadConfigForUpdateTaskInput
        Nr   )rg   r   s     rh   r   z!UpdateTaskRequest.download_config8  r|   rj   c                     | j         S )zGets the enable_shuffle of this UpdateTaskRequest.  # noqa: E501


        :return: The enable_shuffle of this UpdateTaskRequest.  # noqa: E501
        :rtype: bool
        rS   rl   s    rh   r   z UpdateTaskRequest.enable_shuffleC  s     ##rj   c                     || _         dS )zSets the enable_shuffle of this UpdateTaskRequest.


        :param enable_shuffle: The enable_shuffle of this UpdateTaskRequest.  # noqa: E501
        :type: bool
        Nr   )rg   r   s     rh   r   z UpdateTaskRequest.enable_shuffleM  s      .rj   c                     | j         S )zGets the finish_time of this UpdateTaskRequest.  # noqa: E501


        :return: The finish_time of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        )rT   rl   s    rh   r   zUpdateTaskRequest.finish_timeX         rj   c                 N    | j         j        r|t          d          || _        dS )zSets the finish_time of this UpdateTaskRequest.


        :param finish_time: The finish_time of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nz3Invalid value for `finish_time`, must not be `None`)rK   rn   ro   rT   )rg   r   s     rh   r   zUpdateTaskRequest.finish_timeb  s5     5 	T+:MRSSS'rj   c                     | j         S )zGets the http_config of this UpdateTaskRequest.  # noqa: E501


        :return: The http_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: HttpConfigForUpdateTaskInput
        rU   rl   s    rh   r   zUpdateTaskRequest.http_configo  r   rj   c                     || _         dS )zSets the http_config of this UpdateTaskRequest.


        :param http_config: The http_config of this UpdateTaskRequest.  # noqa: E501
        :type: HttpConfigForUpdateTaskInput
        Nr   )rg   r   s     rh   r   zUpdateTaskRequest.http_configy       (rj   c                     | j         S )zGets the id of this UpdateTaskRequest.  # noqa: E501


        :return: The id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        )rV   rl   s    rh   r   zUpdateTaskRequest.id  s     xrj   c                 N    | j         j        r|t          d          || _        dS )zSets the id of this UpdateTaskRequest.


        :param id: The id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nz*Invalid value for `id`, must not be `None`)rK   rn   ro   rV   )rg   r   s     rh   r   zUpdateTaskRequest.id  s1     5 	K"*IJJJrj   c                     | j         S )zGets the interval_seconds of this UpdateTaskRequest.  # noqa: E501


        :return: The interval_seconds of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        )rW   rl   s    rh   r   z"UpdateTaskRequest.interval_seconds       %%rj   c                 N    | j         j        r|t          d          || _        dS )zSets the interval_seconds of this UpdateTaskRequest.


        :param interval_seconds: The interval_seconds of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nz8Invalid value for `interval_seconds`, must not be `None`)rK   rn   ro   rW   )rg   r   s     rh   r   z"UpdateTaskRequest.interval_seconds  s6     5 	Y:J:RWXXX!1rj   c                     | j         S )zGets the line_id_list of this UpdateTaskRequest.  # noqa: E501


        :return: The line_id_list of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[int]
        rX   rl   s    rh   r   zUpdateTaskRequest.line_id_list  s     !!rj   c                     || _         dS )zSets the line_id_list of this UpdateTaskRequest.


        :param line_id_list: The line_id_list of this UpdateTaskRequest.  # noqa: E501
        :type: list[int]
        Nr   )rg   r   s     rh   r   zUpdateTaskRequest.line_id_list  s     *rj   c                     | j         S )zGets the name of this UpdateTaskRequest.  # noqa: E501


        :return: The name of this UpdateTaskRequest.  # noqa: E501
        :rtype: str
        )rY   rl   s    rh   r   zUpdateTaskRequest.name       zrj   c                 N    | j         j        r|t          d          || _        dS )zSets the name of this UpdateTaskRequest.


        :param name: The name of this UpdateTaskRequest.  # noqa: E501
        :type: str
        Nz,Invalid value for `name`, must not be `None`)rK   rn   ro   rY   )rg   r   s     rh   r   zUpdateTaskRequest.name  s1     5 	M$,KLLL


rj   c                     | j         S )zGets the node_count of this UpdateTaskRequest.  # noqa: E501


        :return: The node_count of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        )rZ   rl   s    rh   r   zUpdateTaskRequest.node_count  r   rj   c                 N    | j         j        r|t          d          || _        dS )zSets the node_count of this UpdateTaskRequest.


        :param node_count: The node_count of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nz2Invalid value for `node_count`, must not be `None`)rK   rn   ro   rZ   )rg   r   s     rh   r   zUpdateTaskRequest.node_count  s5     5 	S*:LQRRR%rj   c                     | j         S )zGets the page_config of this UpdateTaskRequest.  # noqa: E501


        :return: The page_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PageConfigForUpdateTaskInput
        r[   rl   s    rh   r   zUpdateTaskRequest.page_config  r   rj   c                     || _         dS )zSets the page_config of this UpdateTaskRequest.


        :param page_config: The page_config of this UpdateTaskRequest.  # noqa: E501
        :type: PageConfigForUpdateTaskInput
        Nr   )rg   r   s     rh   r   zUpdateTaskRequest.page_config  r   rj   c                     | j         S )zGets the period_config of this UpdateTaskRequest.  # noqa: E501


        :return: The period_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PeriodConfigForUpdateTaskInput
        r\   rl   s    rh   r   zUpdateTaskRequest.period_config
  rr   rj   c                     || _         dS )zSets the period_config of this UpdateTaskRequest.


        :param period_config: The period_config of this UpdateTaskRequest.  # noqa: E501
        :type: PeriodConfigForUpdateTaskInput
        Nr   )rg   r   s     rh   r   zUpdateTaskRequest.period_config  rt   rj   c                     | j         S )zGets the ping_config of this UpdateTaskRequest.  # noqa: E501


        :return: The ping_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: PingConfigForUpdateTaskInput
        r]   rl   s    rh   r'   zUpdateTaskRequest.ping_config  r   rj   c                     || _         dS )zSets the ping_config of this UpdateTaskRequest.


        :param ping_config: The ping_config of this UpdateTaskRequest.  # noqa: E501
        :type: PingConfigForUpdateTaskInput
        Nr   )rg   r'   s     rh   r'   zUpdateTaskRequest.ping_config)  r   rj   c                     | j         S )zGets the result_assert of this UpdateTaskRequest.  # noqa: E501


        :return: The result_assert of this UpdateTaskRequest.  # noqa: E501
        :rtype: ResultAssertForUpdateTaskInput
        r^   rl   s    rh   r(   zUpdateTaskRequest.result_assert4  rr   rj   c                     || _         dS )zSets the result_assert of this UpdateTaskRequest.


        :param result_assert: The result_assert of this UpdateTaskRequest.  # noqa: E501
        :type: ResultAssertForUpdateTaskInput
        Nr   )rg   r(   s     rh   r(   zUpdateTaskRequest.result_assert>  rt   rj   c                     | j         S )zGets the selection_config of this UpdateTaskRequest.  # noqa: E501


        :return: The selection_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: SelectionConfigForUpdateTaskInput
        r_   rl   s    rh   r)   z"UpdateTaskRequest.selection_configI  r   rj   c                     || _         dS )zSets the selection_config of this UpdateTaskRequest.


        :param selection_config: The selection_config of this UpdateTaskRequest.  # noqa: E501
        :type: SelectionConfigForUpdateTaskInput
        Nr   )rg   r)   s     rh   r)   z"UpdateTaskRequest.selection_configS  s     "2rj   c                     | j         S )zGets the tags of this UpdateTaskRequest.  # noqa: E501


        :return: The tags of this UpdateTaskRequest.  # noqa: E501
        :rtype: list[TagForUpdateTaskInput]
        r`   rl   s    rh   r*   zUpdateTaskRequest.tags^  r   rj   c                     || _         dS )zSets the tags of this UpdateTaskRequest.


        :param tags: The tags of this UpdateTaskRequest.  # noqa: E501
        :type: list[TagForUpdateTaskInput]
        Nr   )rg   r*   s     rh   r*   zUpdateTaskRequest.tagsh  s     


rj   c                     | j         S )zGets the target_server_type of this UpdateTaskRequest.  # noqa: E501


        :return: The target_server_type of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        ra   rl   s    rh   r+   z$UpdateTaskRequest.target_server_types  s     ''rj   c                     || _         dS )zSets the target_server_type of this UpdateTaskRequest.


        :param target_server_type: The target_server_type of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nr   )rg   r+   s     rh   r+   z$UpdateTaskRequest.target_server_type}  s     $6   rj   c                     | j         S )zGets the task_group_id of this UpdateTaskRequest.  # noqa: E501


        :return: The task_group_id of this UpdateTaskRequest.  # noqa: E501
        :rtype: int
        rb   rl   s    rh   r,   zUpdateTaskRequest.task_group_id  rr   rj   c                     || _         dS )zSets the task_group_id of this UpdateTaskRequest.


        :param task_group_id: The task_group_id of this UpdateTaskRequest.  # noqa: E501
        :type: int
        Nr   )rg   r,   s     rh   r,   zUpdateTaskRequest.task_group_id  rt   rj   c                     | j         S )zGets the tcp_config of this UpdateTaskRequest.  # noqa: E501


        :return: The tcp_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: TcpConfigForUpdateTaskInput
        rc   rl   s    rh   r-   zUpdateTaskRequest.tcp_config  r   rj   c                     || _         dS )zSets the tcp_config of this UpdateTaskRequest.


        :param tcp_config: The tcp_config of this UpdateTaskRequest.  # noqa: E501
        :type: TcpConfigForUpdateTaskInput
        Nr   )rg   r-   s     rh   r-   zUpdateTaskRequest.tcp_config  r   rj   c                     | j         S )zGets the udp_config of this UpdateTaskRequest.  # noqa: E501


        :return: The udp_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: UdpConfigForUpdateTaskInput
        rd   rl   s    rh   r.   zUpdateTaskRequest.udp_config  r   rj   c                     || _         dS )zSets the udp_config of this UpdateTaskRequest.


        :param udp_config: The udp_config of this UpdateTaskRequest.  # noqa: E501
        :type: UdpConfigForUpdateTaskInput
        Nr   )rg   r.   s     rh   r.   zUpdateTaskRequest.udp_config  r   rj   c                     | j         S )zGets the upload_config of this UpdateTaskRequest.  # noqa: E501


        :return: The upload_config of this UpdateTaskRequest.  # noqa: E501
        :rtype: UploadConfigForUpdateTaskInput
        re   rl   s    rh   r/   zUpdateTaskRequest.upload_config  rr   rj   c                     || _         dS )zSets the upload_config of this UpdateTaskRequest.


        :param upload_config: The upload_config of this UpdateTaskRequest.  # noqa: E501
        :type: UploadConfigForUpdateTaskInput
        Nr   )rg   r/   s     rh   r/   zUpdateTaskRequest.upload_config  rt   rj   c                 4   i }t          j        | j                  D ]\  }}t          | |          }t	          |t
                    r"t          t          d |                    ||<   Lt          |d          r|                                ||<   tt	          |t                    r4t          t          d |
                                                    ||<   |||<   t          t          t                    r| 
                                D ]
\  }}|||<   |S )z&Returns the model properties as a dictc                 N    t          | d          r|                                 n| S )Nto_dicthasattrr   )xs    rh   <lambda>z+UpdateTaskRequest.to_dict.<locals>.<lambda>  s!    WQ	-B-BIaiikkk rj   r   c                 v    t          | d         d          r"| d         | d                                         fn| S )N   r   r   r   )items    rh   r   z+UpdateTaskRequest.to_dict.<locals>.<lambda>  s<    tAw	22"=$q'47??+<+<!=!=8< rj   )six	iteritemsswagger_typesgetattr
isinstancelistmapr   r   dictitems
issubclassr   )rg   resultattr_valuekeys         rh   r   zUpdateTaskRequest.to_dict  s,   }T%788 	% 	%GD!D$''E%&& %#CII% %    t 	** 	%$}}tE4(( %#C= =KKMM% %    t  %t'.. 	$"jjll $ $
U#srj   c                 N    t          j        |                                           S )z.Returns the string representation of the model)pprintpformatr   rl   s    rh   to_strzUpdateTaskRequest.to_str  s    ~dllnn---rj   c                 *    |                                  S )zFor `print` and `pprint`)r   rl   s    rh   __repr__zUpdateTaskRequest.__repr__  s    {{}}rj   c                     t          |t                    sdS |                                 |                                k    S )z&Returns true if both objects are equalFr   r   r   rg   others     rh   __eq__zUpdateTaskRequest.__eq__  s5    %!233 	5||~~00rj   c                     t          |t                    sdS |                                 |                                k    S )z*Returns true if both objects are not equalTr   r   s     rh   __ne__zUpdateTaskRequest.__ne__  s5    %!233 	4||~~00rj   )NNNNNNNNNNNNNNNNNNNNNNNNNNN)(__name__
__module____qualname____doc__r   attribute_mapri   propertyr   setterr   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   r    rj   rh   r   r      sd        
5 	 	=	
 	3 	@ 	= 	& 	u 	5 	e 	E 	 	 	e  	5!" 	9#$ 69?-#3395  M:9 	 	+	
 	k 	. 	+ 	/ 	| 	| 	d 	- 	 	 	k  	|!" 	#$ $'-0&!!'5  M:O/ O/ O/ O/b   X ^
  
  ^
  # # X# , , , # # X# , , , % % X% 0 0 0     X  & & & ' ' X' 4 4 4 % % X% 0 0 0 $ $ X$ . . . ! ! X! 
( 
( 
( ! ! X! ( ( (   X Y
 
 Y
 & & X& 
2 
2 
2 " " X" * * *   X 
[
 
 [
     X  
& 
& 
& ! ! X! ( ( ( # # X# , , , ! ! X! ( ( ( # # X# , , , & & X& 2 2 2   X 
[  [ ( ( X( 6 6 6 # # X# , , ,     X  & & &     X  & & & # # X# , , ,  6. . .  1 1 11 1 1 1 1rj   r   )r   r   rer   volcenginesdkcore.configurationr   objectr   r   rj   rh   <module>r      s|      				 



 9 9 9 9 9 9u1 u1 u1 u1 u1 u1 u1 u1 u1 u1rj   