Error Codes¶
Description¶
If an error occurs when an API is called, error information is returned. This section describes the error information for EIP APIs (excluding native OpenStack APIs).
Example of Returned Error Information¶
{
"code": "VPC.0504",
"message": "Floating IP could not be found."
}
Error Code Description¶
Module | Status Code | Error Code | Message | Description | Handling Measure |
---|---|---|---|---|---|
Public | 400 | VPC.0002 | Available zone Name is null. | The AZ is left blank. | Check whether the availability_zone field in the request body for creating a subnet is left blank. |
404 | VPC.0003 | VPC does not exist. | The VPC does not exist. | Check whether the VPC ID is correct or whether the VPC exists under the tenant. | |
400 | VPC.0004 | VPC is not active, please try later. | The VPC status is abnormal. | Try again later or contact technical support. | |
401 | VPC.0005 | Lack of user authority. | User restricted. | Check whether the account is in arrears or has not applied for the OBT permission. | |
401 | VPC.0009 | real-name authentication fail. | Real-name authentication fails. | Contact technical support. | |
Public | 400 | VPC.0007 | urlTenantId is not equal tokenTenantId | Inconsistent tenant IDs. | The tenant ID in the URL is different from that parsed in the token. |
401 | VPC.0008 | Invalid token in the header. | Invalid token. | Check whether the token in the request header is valid. | |
403 | VPC.2701 | Token not allowed to do this action. | You do not have permission to perform this operation, or your account balance is insufficient. | Check whether the account balance is insufficient or whether your account has been frozen. | |
Public | 403 | VPC.0010 | Rules on xx by ** disallowed by policy | Insufficient permissions to make calls to the underlying system. | Obtain the required permissions. |
403 | VPC.2201 | Policy doesn't allow <x:x:x> to be performed | Insufficient fine-grained permissions. | Obtain the required permissions. | |
Creating a VPC | 400 | VPC.0101 | Param is invalid. | VPC parameters are incorrect. | Check whether the parameter values are valid based on the returned error message and API reference document. |
409 | VPC.0114 | Quota exceeded for resources: ['router']. | The number of VPCs has reached the maximum allowed limit specified by the quota. | Clear VPC resources that no longer will be used or apply for expanding the VPC resource quota. | |
400 | VPC.0115 | The router name has exist. | The VPC name already exists. | Change the VPC name. | |
Querying a VPC | 400 | VPC.0101 | getVpc error vpcId is invalid. | VPC parameters are incorrect. | Ensure that the specified VPC ID is correct. |
404/500 | VPC.0105 | Neutron Error. | Calling the backend service fails. | Check whether the Neutron service is normal or contact technical support. | |
500 | VPC.0106 | get router is null. | An error is returned for the failure to call the backend service. | Check whether the Neutron service is normal or contact technical support. | |
Querying VPCs | 400 | VPC.0101 | Query vpc list error. | Failed to query the VPCs. | Check whether the parameter values are valid based on the returned error message. |
500 | VPC.0105 | Neutron Error. | Calling the backend service fails. | Check whether the Neutron service is normal or contact technical support. | |
500 | VPC.0106 | query routers or getList are null. | The response result of calls to the IaaS OpenStack system is null or empty. | Check whether the Neutron service is normal or contact technical support. | |
Deleting a VPC | 400/404 | VPC.0101 | Delete router error xx is invalid. | Invalid parameters. | Check whether the parameter values are valid based on the returned error message. |
500 | VPC.0102 | Delete router fail. | The interface fails to obtain the routing resources. | Contact technical support. | |
409 | VPC.0103 | Resource status is busy, try it again later. | The VPC cannot be deleted because it is being created. | Contact technical support. | |
409 | VPC.0104 | Router contains subnets, please delete subnet first. | The VPC cannot be deleted because it contains subnets. | Delete the subnet in the VPC. | |
404/500 | VPC.0105 | Neutron Error. | Calling the backend service fails. | Check whether the Neutron service is normal or contact technical support. | |
409 | VPC.0107 | Delete the firewall first before deleting the router. | Failed to delete the VPC because it has firewalls associated. | Delete the firewalls of the tenant first. | |
409 | VPC.0108 | Router is used not allow deleted. | Failed to delete the VPC because it has EIPs associated. | Delete the EIPs of the tenant first. | |
409 | VPC.0109 | Router is used not allow deleted. | Failed to delete the VPC because one or more VPNs have been created for it. | Delete VPNs of the tenant. | |
409 | VPC.0110 | deleteDefaultNetworkFromRouter router status is invalid. | The VPC cannot be deleted because its status is unstable. | Contact technical support. | |
500 | VPC.0111 | Database Error. | An internal VPC exception occurs. | Contact technical support. | |
409 | VPC.0112 | Delete the securitygroup first before deleting the router. | The VPC cannot be deleted because it contains security groups. | Delete security groups of the tenant. | |
409 | VPC.0118 | ELB exists under this router, delete ELB firstly. | The VPC cannot be deleted because it contains load balancers. | Delete load balancers in the VPC. | |
500 | VPC.0119 | ELB Error. | An error occurred when the VPC service makes calls to the ELB service. | Check whether the ELB service is normal or contact technical support. | |
409 | VPC.0120 | exroutes exists under this router, delete exroutes firstly. | The VPC cannot be deleted because it contains extension routes. | Delete extension routes in the VPC. | |
Updating a VPC | 400 | VPC.0101 | Update router xx is invalid. | Invalid parameters. | Check whether the parameter values are valid based on the returned error message. |
404/500 | VPC.0105 | Neutron Error. | Calling the backend service fails. | Check whether the Neutron service is normal or contact technical support. | |
500 | VPC.0113 | Router status is not active. | The VPC cannot be updated because the status of the VPC is abnormal. | Try again later or contact technical support. | |
400 | VPC.0115 | The router name has exist. | The VPC name already exists. | Change the VPC name. | |
400 | VPC.0117 | Cidr can not contain subnetList cidr. | The subnet parameters are invalid. The VPC CIDR block does not contain all its subnet CIDR blocks. | Change the CIDR block of the VPC. | |
Creating a subnet | 400 | VPC.0201 | Subnet name is invalid. | Incorrect subnet parameters. | Check whether the parameter values are valid based on the returned error message and API reference document. |
500 | VPC.0202 | Create subnet failed. | An internal error occurs in the subnet. | Contact technical support. | |
400 | VPC.0203 | Subnet is not in the range of VPC. | The CIDR block of the subnet is not in the range of the VPC. | Change the CIDR block of the subnet. | |
400 | VPC.0204 | The subnet has already existed in the VPC, or has been in conflict with the VPC subnet. | The CIDR block of the subnet already exists in the VPC. | Change the CIDR block of the subnet. | |
400 | VPC.0212 | The subnet cidr is not valid. | Invalid subnet CIDR block. | Check whether the subnet CIDR block is valid. | |
Querying a subnet | 400 | VPC.0201 | Subnet ID is invalid. | Invalid subnet ID. | Check whether the subnet ID is valid. |
404/500 | VPC.0202 | Query subnet fail. | Failed to query the subnet. | Contact technical support. | |
Querying subnets | 400 | VPC.0201 | Query subnets list error. | Failed to query the subnets. | Check whether the parameter values are valid based on the returned error message. |
500 | VPC.0202 | List subnets error. | Failed to query the subnets. | Contact technical support. | |
Deleting a subnet | 400 | VPC.0201 | Subnet ID is invalid. | Invalid subnet ID. | Check whether the parameter values are valid based on the returned error message. |
404/500 | VPC.0202 | Neutron Error. | An internal error occurs in the subnet. | Contact technical support. | |
500 | VPC.0206 | Subnet has been used by VPN, please remove the subnet from the VPN and try again. | The subnet cannot be deleted because it is being used by the VPN. | Delete the subnet that is used by the VPN. | |
400 | VPC.0207 | Subnet does not belong to the VPC. | This operation is not allowed because the subnet does not belong to the VPC. | Check whether the subnet is in the VPC. | |
500 | VPC.0208 | Subnet is used by private IP, can not be deleted. | The subnet cannot be deleted because it is being used by the private IP address. | Delete the private IP address of the subnet. | |
500 | VPC.0209 | subnet is still used ,such as computer,LB. | The subnet cannot be deleted because it is being used by an ECS or load balancer. | Delete the ECS or load balancer in the subnet. | |
500 | VPC.0210 | Subnet has been used by routes, please remove the routes first and try again. | The subnet cannot be deleted because it is being used by the custom route. | Delete the custom route. | |
500 | VPC.0211 | subnet is still used by LBaas. | The subnet cannot be deleted because it is being used by load balancers. | Delete load balancers in the subnet. | |
Updating a subnet | 400 | VPC.0201 | xx is invalid. | Incorrect subnet parameters. | Check whether the parameter values are valid based on the returned error message. |
404/500 | VPC.0202 | Neutron Error. | An internal error occurs in the subnet. | Contact technical support. | |
500 | VPC.0205 | Subnet states is invalid, please try again later. | The subnet cannot be updated because it is being processed. | Try again later or contact technical support. | |
400 | VPC.0207 | Subnet does not belong to the VPC. | This operation is not allowed because the subnet does not belong to the VPC. | Check whether the subnet is in the VPC. | |
Assigning an EIP | 400 | VPC.0301 | Bandwidth name or share_type is invalid. | The specified bandwidth parameter for assigning an EIP is invalid. | Check whether the specified bandwidth parameter is valid. |
400 | VPC.0501 | Bandwidth share_type is invalid. | Invalid EIP parameters. | Check whether the parameter values are valid based on the returned error message and API reference document. | |
403 | VPC.0502 | Tenant status is op_restricted. | You are not allowed to assign the EIP. | Check whether the account balance is insufficient or whether your account has been frozen. | |
500 | VPC.0503 | Creating publicIp failed. | Failed to assign the EIP. | Contact technical support. | |
500 | VPC.0504 | FloatIp is null. | Failed to assign the EIP because no IP address is found. | Contact technical support. | |
500 | VPC.0508 | Port is invalid. | Port-related resources could not be found. | Contact technical support. | |
409 | VPC.0510 | Floatingip has already associated with port. | The EIP has already been bound to another ECS. | Unbind the EIP from the ECS. | |
409 | VPC.0511 | Port has already associated with floatingip. | The port has already been associated with an EIP. | Disassociate the port from the EIP. | |
409 | VPC.0521 | Quota exceeded for resources: ['floatingip']. | Insufficient EIP quota. | Release the unbound EIPs or request to increase the EIP quota. | |
409 | VPC.0522 | The IP address is in use. | The IP address is invalid or in use. | Check whether the IP address format is valid or replace it with another IP address. | |
409 | VPC.0532 | No more IP addresses available on network. | Failed to assign the IP address because no IP addresses are available. | Release unbound EIPs or try again later. | |
Querying an EIP | 400 | VPC.0501 | Invalid floatingip_id. | Invalid EIP parameters. | Check whether the EIP ID is valid. |
404 | VPC.0504 | Floating IP could not be found. | The EIP could not be found. | Check whether the specified EIP ID is valid. | |
500 | VPC.0514 | Neutron Error. | An exception occurs in the IaaS OpenStack system. | Check whether the Neutron service is normal or contact technical support. | |
Querying EIPs | 400 | VPC.0501 | Invalid limit. | Invalid EIP parameters. | Check whether the parameter values are valid based on the returned error message and API reference document. |
Releasing an EIP | 400 | VPC.0501 | Invalid param. | Invalid EIP parameters. | Contact technical support. |
404 | VPC.0504 | Floating IP could not be found. | The EIP could not be found. | Check whether the specified EIP ID is valid. | |
409 | VPC.0512 | Resource status is busy, try it again later. | The EIP status is abnormal. | Try again later or contact technical support. | |
500 | VPC.0513 | getElementByKey error. | Network resources cannot be found. | Contact technical support. | |
500 | VPC.0516 | Publicip is in used by ELB. | Failed to release the EIP because it is being used by a load balancer. | Unbind the EIP from the load balancer. | |
409 | VPC.0517 | Floatingip has associated with port, please disassociate it firstly. | Failed to release the EIP because it is bound to an ECS. | Unbind the EIP from the ECS. | |
500 | VPC.0518 | Public IP has firewall rules. | Failed to release the EIP because it is being used by a firewall. | Contact technical support. | |
Updating an EIP | 400 | VPC.0501 | Port id is invalid. | Invalid EIP parameters. | Check whether the port ID is valid. |
404 | VPC.0504 | Floating IP could not be found. | The EIP could not be found. | Check whether the specified EIP ID is valid. | |
500 | VPC.0509 | Floating ip double status is invalid. | The port has already been associated with an EIP. | Disassociate the port from the EIP. | |
409 | VPC.0510 | Floatingip has already associated with port. | The EIP has already been bound to another ECS. | Unbind the EIP from the ECS. | |
409 | VPC.0511 | Port has already associated with floatingip. | Failed to bind the EIP to the ECS because another EIP has already been bound to the ECS. | Unbind the EIP from the ECS. | |
409 | VPC.0512 | Resource status is busy, try it again later. | The EIP status is abnormal. | Try again later or contact technical support. | |
404/500 | VPC.0514 | Neutron Error. | An exception occurs in the IaaS OpenStack system. | Check whether the Neutron service is normal or contact technical support. | |
Querying a bandwidth | 400 | VPC.0301 | getBandwidth error bandwidthId is invalid. | The bandwidth parameters are incorrect. | Check whether the bandwidth ID is valid. |
404 | VPC.0306 | No Eip bandwidth exist with id. | The bandwidth object does not exist. | The bandwidth object to be queried does not exist. | |
500 | VPC.0302 | Neutron Error. | An exception occurs in the IaaS OpenStack system. | Check whether the Neutron service is normal or contact technical support. | |
Querying bandwidths | 400 | VPC.0301 | Get bandwidths error limit is invalid. | The bandwidth parameters are incorrect. | Check whether the parameter values are valid based on the returned error message and API reference document. |
404 | VPC.0306 | No Eip bandwidth exist with id. | The bandwidth object does not exist. | The bandwidth object to be queried does not exist. | |
500 | VPC.0302 | Neutron Error. | An exception occurs in the IaaS OpenStack system. | Check whether the Neutron service is normal or contact technical support. | |
Updating a bandwidth | 400 | VPC.0301 | updateBandwidth input param is invalid. | The bandwidth parameters are incorrect. | Check whether the parameter values are valid based on the returned error message and API reference document. |
500 | VPC.0302 | Neutron Error. | Failed to obtain underlying resources. | Check whether the Neutron service is normal or contact technical support. | |
500 | VPC.0305 | updateBandwidth error. | An internal error occurs during the bandwidth update. | Contact technical support. | |
Querying quotas | 400 | VPC.1207 | resource type is invalid. | The specified resource type does not exist. | Use an existing resource type. |
Assigning a private IP address | 500 | VPC.0701 | The IP has been used. | The private IP address already exists. | Change another private IP address and try again. |
400 | VPC.0705 | IP address is not a valid IP for the specified subnet. | Invalid private IP address | Check whether the specified IP address in the request body is within the subnet CIDR block. | |
404 | VPC.2204 | Query resource by id fail. | The resource does not exist or the permission is insufficient. | Check whether the specified subnet in the request body exists or the current account has the permission to query the subnet. | |
409 | VPC.0703 | No more IP addresses available on network xxx. | Insufficient IP addresses. | Check whether the subnet has sufficient IP addresses. | |
Querying a Private IP Address | 404 | VPC.0704 | Query resource by id fail. | The private IP address does not exist. | Check whether the private IP address exists. |
Querying Private IP Addresses | 400 | VPC.0702 | query privateIps error. | Invalid parameters. | Check whether the parameter values are valid based on the returned error message. |
Releasing a Private IP Address | 404 | VPC.0704 | Query resource by id fail. | The private IP address does not exist. | Check whether the private IP address exists. |
500 | VPC.0706 | Delete port fail. | An error occurs when the private IP address is being released. | Try again later or contact technical support. | |
409 | VPC.0707 | privateIp is in use. | The private IP address is in use. | Check whether the private IP address is being used by other resource. | |
Creating a security group | 400 | VPC.0601 | Creating securitygroup name is invalid. | The parameters of the security group are incorrect. | Check whether the parameter values are valid based on the returned error message and API reference document. |
500 | VPC.0602 | Add security group fail. | An internal error occurs in the security group. | Check whether the Neutron service is normal or contact technical support. | |
409 | VPC.0604 | Quota exceeded for resources: ['security_group']. | Insufficient security group quota. | Delete the security group that is no longer required or apply for increasing the quota. | |
Querying a security group | 400 | VPC.0601 | Securitygroup id is invalid. | The parameters of the security group are incorrect. | Check whether the security group ID is valid. |
500 | VPC.0602 | Query security group fail. | An internal error occurs in the security group. | Check whether the Neutron service is normal or contact technical support. | |
404 | VPC.0603 | Securitygroup is not exist. | The security group does not exist. | Check whether the security group ID is correct or whether the security group exists under the tenant. | |
404/500 | VPC.0612 | Neutron Error. | An internal error occurs in the security group. | Contact technical support. | |
Querying security groups | 400 | VPC.0601 | Query security groups error limit is invalid. | The parameters of the security group are incorrect. | Check whether the parameter values are valid based on the returned error message and API reference document. |
500 | VPC.0602 | Query security groups fail. | An internal error occurs in the security group. | Check whether the Neutron service is normal or contact technical support. | |
Associating multiple NIC ports to or disassociating them from a security group at a time | 400 | VPC.0606 | Security group id is invalid | Invalid security group ID. | Use a valid security group ID. |
400 | VPC.0606 | Request is invalid | The request structure is missing. | Use a valid request body. | |
400 | VPC.0606 | Request is null | The request is empty. | Use a valid request body. | |
400 | VPC.0606 | Action is invalid | Invalid action value. | Use a valid action value (add or remove). | |
400 | VPC.0606 | Ports list is empty | The ports are an empty list. | Use a valid ports list. | |
400 | VPC.0606 | Port id is invalid | The ports list contains invalid port IDs. | Use a valid ports list. | |
400 | VPC.0609 | Ports list exceeds limit | The ports list contains more than 20 IDs. | Use a valid ports list. | |
400 | VPC.0606 | Endpoint is invalid | Invalid endpoint. | Contact technical support. | |
200 | VPC.0607 | Security group of this instance doesn't exist | The security group does not exist. | Use a valid security group ID. | |
200 | VPC.0607 | An instance must belong to at least one security group | Do not disassociate the instance from the security group when it is associated with only one security group. | Perform other operations. | |
200 | VPC.0608 | Neutron Error | An internal error occurs when you perform batch operations. | Contact technical support. | |
Flow log | 400 | VPC.3001 | resource could not be found, flowlog id is invalid | Invalid parameters. | Check whether the parameters are valid. |
400 | VPC.3002 | create its topic failed | An error occurred during log topic creation in LTS. | Check whether the parameters are valid. | |
404 | VPC.3002 | NeutronError | Failed to query the flow log. | Check whether the parameters are valid. | |
500 | VPC.3002 | NeutronError | Failed to create the flow log. | Contact technical support. | |
Resource tags | 400 | VPC.1801 | resource id is invalid. | Incorrect resource ID. | Use a correct resource ID. |
400 | VPC.1801 | action is invalid. | Invalid action value. | Ensure that the value of action is create or delete. | |
400 | VPC.1801 | Tag length is invalid. The key length must be in range [1,36] and value in range [0,43] | Invalid key length. The key can contain 1 to 36 characters. | Use a valid key value. | |
400 | VPC.1801 | Tag length is invalid. The key length must be in range [1,36] and value in range [0,43] | Invalid value length. The value can contain 0 to 43 characters. | Use a value of valid length. | |
400 | VPC.1801 | Resource_type xxx is invalid. | Incorrect resource type. | Ensure that the value of resource_type is vpcs. | |
400 | VPC.1801 | Tag can not be null. | The tag list contains value null. | Use valid tags. | |
400 | VPC.1801 | The list of matches contains null. | The matches list contains value null. | Use valid matches. | |
400 | VPC.1801 | Tag value can not be null. | The tags exist, but their values are null. | Use valid tags. | |
400 | VPC.1801 | The value of Matches in resourceInstancesReq is null. | The matches exist, and the value is null. | Use valid matches. | |
400 | VPC.1801 | number of tags exceeds max num of 10. | The tag list contains more than 10 keys. | Use valid tags. | |
400 | VPC.1801 | Tag key is repeated. | The tag list contains duplicate keys. | Use valid tags. | |
400 | VPC.1801 | Value of tags in resourceInstancesReq is duplicate. | There are duplicate tag values in the tag list. | Use valid tags. | |
400 | VPC.1801 | number of tags exceeds max num of 10. | The tag in the tag list has more than 10 tag values. | Use valid tags. | |
400 | VPC.1801 | The key of matches is invalid. | The key in matches is not the resource name. | Use valid matches. | |
400 | VPC.1801 | Limit in resourceInstancesReq is invalid. Offset in resourceInstancesReq is invalid. | Invalid limit or offset value. | Use valid limit and offset values. | |
400 | VPC.1801 | ResourceInstancesReq is null or invalid. | The tags dictionary structure is missing. | Use a valid tags dictionary structure. | |
400 | VPC.1801 | Tag length is invalid. The key length must be in range [1,36] and value in range [0,43] | The key in tags exceeds the maximum length or is left blank. | Use valid keys in tags. | |
400 | VPC.1801 | Tag length is invalid. The key length must be in range [1,36] and value in range [0,43] | A value in tags exceeds the maximum length. | Use valid values in tags. | |
400 | VPC.1801 | ResourceInstancesReq is null or invalid. | The matches dictionary structure is missing. | Use a valid matches dictionary structure. | |
400 | VPC.1801 | The number of Matches in resourceInstancesReq is 0. | The matches are an empty list. | Use a valid matches list. | |
400 | VPC.1801 | The value's length of Matches in resourceInstancesReq is more than 255. | The matches list contains tag values that contain more than 255 Unicode characters. | Use a valid matches list. | |
500 | VPC.1801 | InvalidInput | Incorrect request body format. | Use the correct request body format. | |
404 | VPC.2204 | Query subnet by id fail. | The resource does not exist or the permission is insufficient. | Use an existing resource or obtain required permission. | |
Querying the network IP address usage | 400 | VPC.2301 | parameter network_id is invalid. | The request parameter is incorrect. | Enter a valid network ID. |
400 | VPC.2302 | Network xxx could not be found. | The network is not found. | Ensure that the network ID exists. | |
Creating a VPC flow log | 400 | VPC.3001 | resource_type/log_store_type/traffic_type/log_group_id/log_topic_id is invalid | Incorrect type or ID. | Check whether the type is supported or whether the ID format is correct. |
400 | VPC.3002 | Port does not support flow log, port id : xxx | The VPC flow log does not support this type of port. | Check whether the port is an S3, C3, or M3 ECS NIC port. | |
404 | VPC.3002 | Port/Network/Vpc xxx could not be found. | The resource does not exist. | Check whether the resource exists. | |
409 | VPC.3004 | Content of flow log is duplicate: resource type xxx, reousce id xxx, traffic type all, log group id xxx, log topic id xxx, log store type xxx, log store name xxx. | This VPC flow log already exists. | Modify the parameters of the VPC flow log. | |
500 | VPC.3002 | Create flow log by xxx(tenant_id) fail. | Calling the backend service fails. | Try again later or contact technical support. | |
Querying VPC flow logs | 404 | VPC.3001 | resource could not be found, xxx(listParam) is invalid | Invalid parameters. | Check whether the parameter format is correct. |
500 | VPC.3002 | Neutron Error. | Calling the backend service fails. | Try again later or contact technical support. | |
Querying a VPC flow log | 404 | VPC.3001 | resource could not be found, flowlog id is invalid. | Invalid VPC flow log ID. | Check whether the VPC flow log ID format is correct. |
404 | VPC.3002 | Flow log xxx could not be found. | The VPC flow log does not exist. | Check whether the VPC flow log exists or whether its ID is correct. | |
Updating a VPC flow log | 404 | VPC.3001 | resource could not be found, flowlog id is invalid. | Invalid VPC flow log ID. | Check whether the VPC flow log ID format is correct. |
404 | VPC.3005 | Flow log xxx could not be found. | The VPC flow log does not exist. | Check whether the VPC flow log exists or whether its ID is correct. | |
500 | VPC.3002 | Update flow log by xxx(tenant_id) fail. | Calling the backend service fails. | Try again later or contact technical support. | |
Deleting a VPC flow log | 404 | VPC.3001 | resource could not be found, flowlog id is invalid. | Invalid VPC flow log ID. | Check whether the VPC flow log ID format is correct. |
404 | VPC.3005 | Flow log xxx could not be found. | The VPC flow log does not exist. | Check whether the VPC flow log exists or whether its ID is correct. | |
500 | VPC.3002 | Delete flow log by xxx(tenant_id) fail. | Calling the backend service fails. | Try again later or contact technical support. |