Energy efficiency and fault tolerance are two of the major concerns in wireless sensor networks (WSNs) for the target coverage. Design of target coverage algorithms for a large scale WSNs should incorporate both the energy efficiency and fault tolerance. In this paper, we study the coverage problem where the main objective is to construct two disjoint cover sets in randomly deployed WSNs based on relay energy (). Further, we present an approximation algorithm called Energy Efficient Maximum Disjoint Coverage (EMDC) with provable approximation ratios. We analyze the performance of EMDC theoretically and also perform extensive simulations to demonstrate the effectiveness of EMDC in terms of fault tolerance and energy efficiency.

1. Introduction

WSN is a random or deterministic deployment of massive number of sensor nodes in a monitored area. WSNs have extensive applications, including military surveillance [1], target tracking, wild life monitoring, fire prevention, rescue operations, and air quality monitoring [24]. The primary goal of sensor nodes is to sense and collect raw data by monitoring particular environment, target, and barrier, and report that event to some sink node after some local processing or aggregation [5, 6].

Target coverage and network life time are two of the recent research trends in WSNs. Deployment of a set of sensors to cover a particular area, targets, or barrier is called coverage problem [7]. The main purpose of target coverage [8] is to continuously monitor a set of targets by using a subset of sensors. These sensor nodes are subject to failures due to various reasons. One of the common reasons is battery failure. Other reasons may include radio interference, software or hardware faults, and environmental changes. Sensor node failures may affect the coverage and connectivity adversely which in turn degrades the sensor network performance with higher network delays and higher energy consumption [9].

Sensor nodes are equipped with limited capacity batteries. Recently, it has been investigated whether it is possible to conserve energy by using duty cycle protocols, where nodes switch their radio on and off periodically prolonging the life time of a WSN. Due to one time battery life and difficulty of replacing it, sensor nodes are densely deployed to increase connectivity and target coverage. However, if all the nodes are constantly on, it may quickly deplete their battery and may affect the network life time. Therefore it is important to tune these sensors to duty-cycled mode where they alternate between the active and sleep periods. Further, sensor hardware or software may fail due to weather or other physical conditions in a WSN affecting coverage of target nodes. If coverage of the target nodes is achieved by a single set of covering nodes, they may soon deplete their energy affecting the network life time. Therefore, it is important for WSNs to use redundant or disjoint covering sensors to cover particular area, targets, or barriers to construct a fault tolerant network which may still cover the targets, area, or barrier despite the failure of some covering sensors.

In order to effectively utilize the sensor nodes, some studies have selected a number of cover sets to provide coverage to some target sets. These studies organize the cover sets [7, 10] into disjoint or nondisjoint cover sets [11, 12]. The selection of such disjoint or nondisjoint cover sets is proved to be NP-complete problem [9, 11]. Disjoint or nondisjoint cover sets monitor the targets in a cooperative way. Compared to nondisjoint cover sets, disjoint cover sets are better at fault tolerance because all the cover sets have exclusive sensor nodes among their sets. Each cover set can alternatively work to maximize the network lifetime.

A number of studies have addressed the issue of target coverage; however, only fewer of them considered the disjoint target coverage based on minimum relay energy. In this article, our key focus is on the fault tolerant target coverage problem with minimum relay energy. We formulate the disjoint target coverage problem based on energy. This problem differs from the target coverage which is based on disjoint covering sets, since coverage ensures that the energy of each sensor from each of the disjoint sets is kept at minimum. We aim to select two disjoint covering sets with minimum to cover the targets; that is, each sensor has minimum energy. It is crucial to select sensor nodes which consume minimum energy to report an event to the sink node. Therefore, our primary objective is to maximize the network lifetime by selecting two disjoint covering sets with minimum overall energy. In order to fulfil both the fault tolerance and energy efficiency requirements, we propose an efficient approximation algorithm, Energy Efficient Maximum Disjoint Coverage (EMDC), with provable approximation bound. Our key contributions in this paper are summarized as follows:(i)We present a comprehensive comparison of well known target coverage, area coverage, and barrier coverage schemes.(ii)We formulate disjoint coverage problem with minimum energy.(iii)We propose an efficient bounded approximation algorithm, the EMDC, to the minimum energy coverage problem and present an appropriate theoretical analysis of the EMDC approximation ratio.(iv)We perform simulations under different scenarios to establish the effectiveness of EMDC.

The remaining article is organized as follows: Section 2 gives a comprehensive background of the coverage and presents a comparison of different coverage schemes in WSNs. Section 3 summarizes the related work followed by the formulation of minimum energy disjoint coverage problem in Section 4. Section 5 presents EMDC algorithm design. Section 6 presents the theoretical analysis of EMDC. Section 7 presents the EMDC simulation results, and, finally, Section 8 concludes the paper.

2. Coverage in WSNs

A sensor is a device with the capability of responding to different physical stimuli including sound, heat, smoke, pressure, and any other event and transforming it into corresponding electrical or mechanical signal [13]. These signals are mapped to sensor information. A sensor node consists of one or more sensing units, battery, memory, data processing unit, and data transmission unit. A WSN consists of different sensing nodes placed in an area to detect or monitor certain activity. One of the most recent trends in WSNs research is the coverage question which reflects how well a particular area, target, or barrier is monitored. Coverage problems in WSNs can arise during the network design, deployment, or operation [14]. During the design of the network, coverage questions can be addressed by deciding the number of sensors to cover a particular area. In WSN deployment, sensors are deployed to achieve the coverage of desired targets, barriers, or areas in a geographical region. During the operational phase of a sensor network, a schedule is decided to conserve energy and increase network life time. Sensor coverage problems can be divided into three categories:(i)Area coverage: [1518], where the primary objective is to continuously observe or cover some particular area or whole sensor field.(ii)Target coverage: [19], where the key objective is to monitor some particular points also termed as targets.(iii)Barrier coverage: [20], a barrier coverage is a circular area where the presence of any intruder can be detected by a set of sensor deployed in this area.Table 1 summarizes different coverage approaches with type of coverage and objectives in WSNs. Our work in this paper focuses on targeting coverage only.

2.1. Target Coverage Problems

In target coverage, the primary objective is to cover some particular set of points or targets deployed in a sensor field, for example, missile launchers in a battlefield. These targets can be covered by using a random or deterministic placement of sensors.

Optimal Placement of Sensors. In the deterministic approach to node placement, nodes are placed at predetermined locations to cover targets. The deterministic approach to node placement is convenient to use for reachable and friendly sensor fields. The main objective of this approach is to cover optimal locations by using a minimum number of covering nodes. In this technique, it is assumed that the locations of targets to be monitored are fixed, known, and are limited. In some cases, coverage of all the targets is not necessary, when the number of covering sensors is limited or it is expensive to cover them. Most of the problems related to sensor placement are optimization problems, and it is possible to formulate them as mathematical programming problems. However, greedy solutions may not produce the best possible placement. The problem to construct minimum number of disjoint sensors to cover targets is a well-known set cover problem [37]. Covering sensors can be represented as set covers used to cover particular deployed targets or area. To place a covering sensor, it must be placed on a location to cover at least one target, and it is possible to cover all the targets if the covering sensors are deployed on all the available locations. Different variants of the greedy approach for set cover are well documented in literature to solve various problems related to optimal node placement [3841]. Apart from greedy algorithms, several approximation solutions have also been proposed for node placement [42, 43].

Coverage Lifetime Maximization. In a random placement, sensors are randomly scattered to cover targets. In a random deployment, a single sensor node may cover multiple fixed targets, and a fixed target may be covered by multiple deployed sensors. Deployment of sensors in a random placement may be dense. The coverage lifetime maximization problem which is a distinct version of the target coverage problem is to partition the sensors into more than one set covers subject to certain coverage requirements and to activate these set covers alternately to increase the network lifetime. An example of random deployment of target coverage is illustrated in Figure 1(a), where 6 sensing devices are deployed to cover 4 targets in a random setting. In Figure 1(a) the and targets are covered by two sensors, and and are covered by three sensor nodes. The coverage relationship between the sensors and targets can be depicted by a bipartite graph as illustrated in Figure 1(b).

To achieve target coverage, all the sensors can be activated which is not very energy efficient and may reduce the network lifetime. However alternatively activating the sensors may prolong the network lifetime. Assume that if all the sensors are activated for one unit of time, it will consume one unit of network lifetime. In Figure 1, we have two disjoint set covers and to cover all the targets. For one time unit set can cover targets, and, for the other , increase the network lifetime to two time units. Using an optimal number of set covers and alternatively activating them may increase the network lifetime.

Another version of the target coverage is Maximum Set Cover (MSC), in which the primary objective is to cover all the specified targets all the time. The MSC problem is known to be -complete [44]. Target coverage at all times is a strict requirement for the coverage. The -set cover for minimum coverage breach problem allows coverage breach and relaxes the strict coverage requirement [45]. A breached target is not covered by any sensor, or in other words breach coverage requires partial target coverage only. In this problem, set covers are computed to cover only a fraction of fixed targets and are activated alternatively for short duration. The main objective of the -set cover problem is to increase the lifetime of a WSN by constructing maximum set covers [4547]. In [45], a problem called disjoint set covers (DSC) has been proposed for complete target coverage which is similar to the MSC problem with disjointness constraints. Energy efficiency using disjoint set covers to alternatively perform the coverage task has been discussed in [18, 44].

Slijepcevic and Potkonjak [18] proposed a centralized solution for the -coverage problem, where points enclosed in a particular area called fields are monitored by set of sensors. The algorithm [18] covers the most critical fields by using maximum possible set covers. In this algorithm, the set covers which can cover a high number of uncovered points in an area are given priority. This algorithm also avoids field coverage redundancy. There exist several distributed solutions which can achieve 1-coverage, that is, can cover the target or area by using only one set cover. In [16], a pruning method is presented, where each node switches off its radio to conserve energy if its area can be covered by some of its neighbours. Unlike a centralized solution for the -coverage problem in [18], a distributed solution for the same problem has been proposed in [46].

In our work, we formulate a decision version of the target coverage problem called EMDC. The EMDC problem is to achieve the maximum disjoint coverage using two disjoint set covers and with minimum energy. Our problem aims to find a set cover with minimum energy to maximize the target coverage in such a way that disjoint set cover with minimum still completely covers all the targets. Further, of is less than or equal to energy of .

Recently, there is a trend in WSNs to discover set covers that are disjoint and are connected with a sink for target reporting. These disjoint sets can be activated alternatively to conserve energy or can be activated simultaneously to ensure reliable coverage. I. Cardei and M. Cardei [48] addressed the problem known as Connected Set Covers (CSC) problem which computes the maximum possible set covers connected to a sink node and proved this problem as an NP-complete problem. To address this problem, authors proposed two different heruistics based on integer programming and breadth-first search. Ostovari et al. presented an edge-cost based approach for the connected point coverage [49]. In this approach, a node can decide to act as a relay node by evaluating its edge cost in the Minimum Spanning Tree (MST) [50, 51].

Zhao and Gurusamy formulated the connected target coverage problem as maximum cover tree (MCT) problem [52]. They proved MCT problem as an NP-complete problem and established an upper bound for the network lifetime. Zorbas et al. [53] also considered the target coverage problem and proposed a power efficient coverage algorithm to select disjoint and nondisjoint cover sets with particular focus on weakly monitored targets. Yu et al. [54] presented a -coverage working set construction (CWSC) algorithm. CWSC algorithm is able to produce different degrees of coverage according to the application selected. In [55], Shih et al. modelled the target coverage problem by considering multiple sensing units. They reduced it to a connected set cover problem. Further, they presented two distributed heuristics: the energy efficiency first scheme (EEFS) and remaining energy first scheme (REFS). In [56], authors have proposed a centralized algorithm called and a distributed algorithm called for connected target -coverage problem in heterogeneous WSNs. Both algorithms construct connected cover sets to achieve connectivity and coverage in an energy efficient way.

Zhao and Gurusamy [52] proposed a distributed approximation algorithm known as Communication Weighted Greedy Cover (CWGC). The primary objective of the CWGC is to maximize the covering sets by considering minimum total weight from each node to the sink node. CWGC algorithm maximizes network lifetime compared to some existing work; however it does not take into account poorly covered targets. Yang et al. considered the special instance of -connected coverage and designed two distributed solutions based on clustering and pruning [57]. In [58], authors have considered the target coverage problem by considering two types of sensor nodes including resource rich sensors and energy-constrained sensors.

Zorbas and Razafindralambo [34] proposed Optimized Connected Coverage Heuristic (OCCH) to compute set covers, and each node is assigned a weight which exempts the critical nodes from acting as relay nodes. OCCH prolongs network lifetime by conserving the energy of energy-constrained node. Experiments reveal that OCCH has better lifetime compared to CWGC. Some other popular approaches which satisfy the energy and connectivity have been discussed in [34, 59].

Henna and Erlebach [60] formulate a problem called Maximum Disjoint Coverage Problem (MDC). Main objective of MDC is to construct two disjoint set covers and , where completely covers all the targets and covers the maximum of these targets. Authors proved the problem as an NP-complete problem and presented an efficient approximation algorithm called DSC-MDC to solve it. However, DSC-MDC just computes the disjoint set covers but does not consider the relay energy of the sensor nodes. DSC-MDC therefore is not an energy efficient fault tolerance solution to target coverage.

Coverage, connectivity, and fault tolerance are primary objectives for most of the target tracking sensor networks. However, in order to achieve connectivity and coverage, we cannot ignore critical nodes, especially nodes with critical energy. Hence, it is necessary to select disjoint set covers which take into account energy of nodes to report an event to a particular sink. However, as discussed in the aforementioned work, most of the existing schemes discussing target coverage problem to compute cover sets ignore the issue of critical nodes as relay nodes. In this study, we propose an approximation Energy Efficient Maximum Disjoint Coverage (EMDC) algorithm to construct two disjoint cover sets to achieve both the fault tolerance and energy efficiency. We establish that approximation ratio of EMDC is , where denotes the number of fixed targets.

4. Preliminaries

4.1. Set Cover Problem

Let denote the set of elements and be a collection of subsets of set . Given both and , the set cover problem targets to cover all the elements of set by selecting the minimum number of sets from . Basically, set cover problem aims to cover all the elements of set . The set cover problem is illustrated below with the help of an example.

Let be the universal set. Given the following collection of sets , , where , , , and . Both and together form a minimum set cover, that is, . Another possible minimum set cover is . Both minimum set covers have size 2.

4.2. Disjoint Set Covers (DSC)

Given a finite set of sensor nodes to cover a finite set of targets, , the DSC problem is to construct disjoint set covers from to cover all the elements of [23]. A set cover is selected such that is covered by at least one of the elements of and for and , .

4.3. Maximum Disjoint Coverage Problem (MDC)

Given a set of subsets of a given finite target set , construct two disjoint set covers and for , such that each element of target is covered by at least one element of set , and an element of covers the maximum elements of , and, for the set covers and , .

The decision variation of the MDC called Disjoint Coverage (DC) is defined as follows.

Disjoint Coverage (DC). Given a finite set of targets for a collection of subsets of , determine if can be divided into two set covers with no common element, and these set covers can completely cover all the elements of set .

4.4. Energy Efficient Disjoint Target Coverage Problem (EMDC)

Given a collection of of subsets with energy of a given set , EMDC problem seeks two disjoint cover set and for such that the following objectives are achieved:(i)Each element of is being covered by at least one element of .(ii) covers maximum elements of .(iii)Set covers and , .(iv) energy of is less than or equal to energy of .

5. Energy Efficient Maximum Disjoint Coverage (EMDC)

EMDC is an approach to the fault tolerant energy efficient problem and is performed by each sensor. EMDC selects two energy efficient disjoint sets and based on the following principles: (i) select a sensor node as a candidate for or if it can cover maximum possible targets; (ii) favour sensor nodes that consumes minimum energy to report an event to the sink node; (iii) make sure both the set covers and cover the target nodes and are completely disjoint, with no common nodes.

It is worth mentioning that EMDC favours a sensor node to be added in the set cover or depending on the energy which is calculated according to (1). For a subset representing neighbours of node , is calculated according to

In (1), the first term denotes the expected waiting time a node from a set of sensor nodes takes to report an event to a fixed sink node and is inversely proportional the number of its 1-hop neighbours. The second terms represents the average expected time a node has to wait to report the event to a particular sink node . , therefore, represents the total expected waiting time a node will take to report the event to the sink node . is a better choice to select the nodes with less energy consumption to report an event to a particular sink node.

EMDC determines two energy efficient disjoint set covers and with minimum energy. Algorithm first constructs by including sensor nodes which have minimum energy and can cover the maximum elements of set . On the other hand, includes sensor nodes with minimum energy and are able to cover all the given targets from the set . In order to compute two disjoint sets and , algorithm takes subsets and . EMDC assumes that each subset from the collection knows its energy. Each subset from the collection is mapped to a certain number of subsets from the collection . EMDC selects a set from the collection by using a greedy approach. EMDC selects from to be added into the set if covers the maximum number of elements from the set and has minimum energy, and there exists a set which covers the same or more number of targets as . Further, EMDC evaluates if has less or equal energy as , if it is true, EMDC adds the set in . The algorithm EMDC repeats until all the possible subsets from the collection have been added in the set cover . Subsets in , that is, , are passed to the algorithm. adds a subset in set if it covers maximum targets from the set and has minimum energy among all the subsets covering the same number of targets. repeats until all the targets are covered from . At the end, returns a disjoint set cover with minimum energy which covers all the targets from the set . Finally, returns and set covers with minimum energy, where covers all the targets from the set , and covers maximum of them. Algorithm EMDC and its counterpart are shown in Algorithms 1 and 2.

Data: Subsets with
Result: Disjoint Set Covers , and with minimum
while do
 Let be a set with minimum which covers the maximum number of targets from
if all targets covered by can still be covered by some other set in which has less or equal compared to
of then
Output Disjoint Set Covers and with minimum
Data: Subsets
Result: Set Cover with minimum
while does not cover all targets do
 Let be a set that increases the coverage of by
 as much as possible
 Let has less compared to of some
 other nodes
 Let covers the same or less number of targets as

We can explain the operation of Algorithm 1 with an example given in Figure 2. Figure 2 shows a bipartite graph with two sets and . is a covering set which can cover the elements in set . The coverage relationship between the elements of set and is illustrated with the help of an edge. From the bipartite graph given in Figure 2, Algorithms 1 and 2 compute two disjoint set covers and .

Algorithm 1 computes to cover the set of targets as follows:(1)EMDC chooses greedily to cover maximum targets, that is, , such that still it is possible to cover these targets by and which has less than and adds to .(2)EMDC chooses greedily to cover maximum targets, that is, , such that still it is possible to cover these targets by and having less energy compared to and adds to .(3)EMDC chooses greedily to cover maximum targets, that is, , such that still it is possible to cover these targets by and which has less energy compared to and adds to . EMDC does not select or because then or cannot be covered by .Targets covered by set cover areFrom the remaining sets, that is, , Algorithm 2 computes greedily to cover the set of targets as follows: Targets covered by set cover In this example, and are selected disjoint set covers. By using Algorithms 1 and 2, achieves complete coverage of set , and covers maximum elements of set .

6. Approximation Analysis

Theorem 1. Approximation ratio of EMDC is not worse than , where denotes the number of elements in the set .

Proof. Given a finite set of targets with elements, let us have a collection of subsets in which cover all elements of . Let EMDC selects which has minimum and adds it in set which can cover elements from the target set . Let us say EMDC adds number of sets with minimum to set . Let us say in each iteration, , number of targets covered by particular set with minimum is represented by . Then, the total number of targets covered by EMDC using with minimum in iterations is given as follows:Let us say in order to cover targets with with minimum , we have an solution. Given that solution, we can prove that in the worst case EMDC is a approximation compared to . Let us say that EMDC computes which covers the number of targets which are greater than or equal to . In this case optimal algorithm is able to cover maximum elements. We can compare the maximum number of targets covered by both EMDC and as follows:On the contrary, let the number of targets covered by using EMDC be less than or equal to . Let for each iteration, , EMDC selects a set for and is the last available set in . Let us say covers targets in each iteration. In worst case for all iterations and for each set , EMDC loses at most elements, where . It means EMDC loses at most denoted by , that is,On the other hand, is able to cover all the targets either part of or . For all the iterations, , the maximum number of targets covered by can be represented as follows:We compare the number of targets covered by EMDC to the maximum number of targets covered by algorithm as follows: From the above analysis, it is proved that EMDC is a -approximation.

7. Performance Evaluations

In our simulation scenarios, we use a sensor network with static sensor and target nodes randomly deployed in a 1000 m × 1000 m area. We specify the number of sensors and targets in each simulation scenario. In the sensing region, deployed targets and sensors are fixed during whole simulation time. If not stated otherwise, all deployed sensor nodes use uniform sensing range of 100 m. Sensing range of each node is assumed to be twice of its transmission range. All results are averaged over 10 runs. The simulation parameters for the evaluation of EMDC are summarized in Table 2.

For the average network lifetime, energy model of MICA2 is considered. Each sensor is assumed to has an initial energy of 200 J. We assume that energy consumed by each sensor is J/minute. Each simulation run lasts for 100 minutes. Table 3 summarizes the energy model for our simulations.

In the first scenario, sensors are varied from 50 to 150 to cover 50 targets deployed in an area of . All sensor nodes have uniform sensing range of 100 m. Figure 3 shows the average disjoint set covers generated under varying number of sensor nodes for EMDC and DSC-MDC [60]. We can see that disjoint set covers tend to increase with an increase in sensor nodes for both EMDC and DSC-MDC. Disjoint set covers increase with an increase in the number of sensors, since more sensor nodes are available to qualify as set covers.

In the second scenario, 100 nodes with sensing range of 100 m are deployed in a fixed simulation area of to cover targets varying from 10 to 80. Figure 4 shows disjoint set covers generated for varying number of targets. We observe that average disjoint set covers decreases as targets increase for both. The reason is that when targets increase while keeping the number of sensor nodes fixed, disjoint set covers decrease as likelihood of disjoint target coverage decreases. We can observe that EMDC has less disjoint set covers for all the targets due to the constraint of energy during the selection of set covers.

In third scenario, 100 sensors are deployed in a fixed simulation area of 1000 m × 1000 to cover 50 targets. Sensing range of each node is varied from 100 m to 500 m. In Figure 5, we observe the effect of sensing range on disjoint set covers. We can observe that for both the EMDC and DSC-MDC, with an increase in the sensing range, number of disjoint set covers increases. Disjoint set covers tend to increase consistently for all sensing ranges since each sensor node is able to cover more targets. This coverage increase results in an increase in disjoint set covers. However, we can observe that EMDC consistently has less disjoint set covers compared to the DSC-MDC due to the minimum energy constraint on the selection of disjoint set covers.

Simulation parameters used in this experiment are same as used in scenario 1. All the nodes consume energy by using the energy model shown in Table 3. In Figure 6, we observe the effect of varying number of sensors on the average network lifetime. In case of DSC-MDC, more number of disjoint set covers is computed compared to EMDC since there is no constraint on the sensor nodes to qualify as a member of the set covers. Average network lifetime for both EMDC and DSC-MDC is directly proportional to disjoint sets produced. We already observed that EMDC has less disjoint set covers compared to the DSC-MDC as shown in Figure 4. However, we can observe that EMDC is still competitive to DSC-MDC for the average network lifetime because EMDC always selects disjoint set covers by taking into account the minimum energy.

Simulation parameters used in this experiment are the same as those used in scenario 2. All the nodes use the energy model as listed in Table 3. Figure 7 shows the network lifetime while increasing sensor nodes. It is clear from the Figure that network lifetime of EMDC is better than DSC-MDC when number of nodes increases. In case of DSC-MDC, assuming constant energy consumption for each node to forward the event, we can observe that average network lifetime consistently drops with an increase in targets. In order to monitor more targets, more energy is consumed to notify the event to the sink node. EMDC has better network lifetime compared to DSC-MDC because EMDC considers the nodes with minimum energy in order to qualify for the set covers for both the disjoint sets. Results show that network lifetime is significantly improved when set covers are selected according to minimum energy. This observation is still valid when the number of targets tends to increase. For example, with 60 targets, average lifetime of EMDC is more than 80% better compared to DSC-MDC.

8. Conclusion

The proposed algorithm EMDC maximizes network lifetime by using two energy efficient disjoint set covers in a single hop WSN with a single sink. EMDC achieves energy efficiency and fault tolerance by selecting two disjoint set covers with minimum relay energy. On one hand, two disjoint set covers achieve fault tolerance by providing double coverage, and on the other hand they maximize network lifetime by considering the relay nodes with minimum energy required to report the event to the sink node. The experimental results reveal that EMDC achieves reasonable number of disjoint set covers to achieve fault tolerance under varying number of nodes and sensing ranges. Further, EMDC achieves better network lifetime compared to DSC-MDC for different number of nodes and sensing ranges.

Conflicts of Interest

The author declares no conflicts of interest.