text:
The HVDC Inter-Island link is a  long, 1200 MW high-voltage direct current (HVDC) transmission system connecting the electricity networks of the North Island and South Island of New Zealand together. It is commonly referred to as the Cook Strait cable in the media and in press releases, although the link is much longer than its Cook Strait section. The link is owned and operated by state-owned transmission company Transpower New Zealand.

The HVDC link starts in the South Island at the Benmore Hydroelectric Power Station, on the Waitaki River in Canterbury and then it travels  on an overhead transmission line through inland Canterbury and Marlborough to Fighting Bay in the Marlborough Sounds. From Fighting Bay, the link travels 40 km via submarine cables underneath Cook Strait to Oteranga Bay, near Wellington, before travelling the final 37 km on overhead lines to Haywards transmission substation in Lower Hutt.

The HVDC link first became operational in April 1965 to primarily transport electricity from the generation-rich South Island to the more populous North Island. The link originally was a bipolar 600 MW link with mercury arc valves, until the original equipment was paralleled onto a single pole (Pole 1) in 1992, and a new thyristor-based pole (Pole 2) was constructed alongside it, increasing the link's capacity to 1040 MW. The ageing Pole 1 was fully decommissioned effective 1 August 2012, and a replacement thyristor-based pole, Pole 3, was commissioned on 29 May 2013, restoring the DC link to a bipolar 1200 MW configuration.

Rationale for the link

The HVDC link is an important component of the transmission system in New Zealand. It connects the transmission grids of the two islands, and is used as an energy-balancing system, helping to match energy availability and demand in the two islands.

The two islands are geographically different – the South Island is 33 percent larger than the North Island in land area (151,000 km2 vs 114,000 km2), but the North Island has over three times the population of the South Island ( million vs  million). As a consequence, the North Island has a substantially larger energy demand. However, the South Island uses more electricity per capita due to its cooler climate and the presence of the Tiwai Point Aluminium Smelter, which at a peak demand of 640 MW is New Zealand's largest single electricity user. In 2011, around 37.1% of the total electricity generated was consumed in the South Island, while 62.9% was consumed in the North Island. South Island generation accounted for 40.9% of the nation's electricity in 2011, nearly all (97%) from hydroelectricity, while the North Island generated the remaining 59.1% from a mixture of mainly hydroelectric, natural gas, and geothermal generation, plus smaller amount of coal and wind generation.

If all currently commissioned generation is available, both islands have enough generating capacity at peak times, without the connection between the two islands. However, the HVDC link provides benefits for customers in both the South Island and North Island:
 The link provides the South Island consumers with access to the North Island's thermal generation resources that can support the South Island demand during times of low water storage levels and low inflows to South Island hydroelectric lakes.
 The link provides North Island consumers with access to the South Island's large hydro generation resources that can support the North Island demand at times of peak load.

The link plays an important role in the New Zealand electricity market, and allows North and South Island generators to compete with each other, therefore driving wholesale electricity prices down.

The inter-island transmission system was designed as a high-voltage direct current (HVDC) system, despite the cost of the conversion from alternating current (AC) to direct current (DC) and back again, to suit the requirements of a long transmission line and a sea crossing. The link crosses Cook Strait, between the two islands, using submarine power cables laid along the sea floor. HVDC is more suitable than AC for transmission over long distances, and particularly where submarine cable transmission is required, because it is typically more economic, and has lower energy losses, despite the high costs of the AC/DC conversion process.

Route

The HVDC Inter Island link starts at two converter stations located adjacent to Benmore Hydroelectric Power Station in the Waitaki Valley. Electricity is taken from the main Benmore switchyard, which interconnects the Benmore generators and rest of the South Island transmission grid, at 220 kV via tie-lines across the Benmore tailrace. The AC power is converted at the stations to ±350 kV HVDC for transmission

The HVDC transmission line crosses the Benmore power station tailrace and takes a route along the eastern side of the dam. The line continues north along the eastern shore of Lake Benmore, before turning north-east and then east to meet the Christchurch to Twizel HVAC line. Crossing State Highway 8 south of Fairlie, the line then turns northeast, passing between Fairlie and Geraldine. North of Geraldine to Oxford, the HVDC line broadly follows the Inland Scenic Route tourist highway through the inland Canterbury Plains, passing close to the towns of Methven, Sheffield and Oxford, before continuing northeast towards Waipara.

The HVDC line passes through Weka Pass into the Amuri district, travelling north through the region, west of Culverden, to Hanmer Springs. From here, the line turns north-east and travels through Molesworth Station into Marlborough and down the Awatere River valley, before turning north to meet State Highway 1 through the Dashwood and Weld Passes. The line travels east of Blenheim, meeting the eastern coast of the island at Cloudy Bay, and travelling up the coast into the Marlborough Sounds. The line turns east and then south-east around Port Underwood, before crossing to Fighting Bay on the coast, where the South Island cable terminal is located.

At this physical location, the lines connects to three undersea cables taking electricity underneath Cook Strait. , Pole 2 uses two of these cables, with the third cable unused waiting the commissioning of Pole 3. The cables initially head south out of Fighting Bay, before turning east towards the North Island, and then turning northeast towards the North Island cable terminal at Oteranga Bay.

From Oteranga Bay, the land-based North Island transmission line travels northeast through Mākara just west of Johnsonville. West of Ngaio, the electrode line from the North Island shore electrode at Te Hikowhenua, north of Mākara Beach, merges with the main transmission line towers for the final connection to the North Island converter station. The line turns eastwards around Churton Park, crossing to Horokiwi before turning north-east and passing through Belmont Regional Park to Haywards in northern Lower Hutt, the site of the North Island static inverter plant.

At Haywards, two converter stations receive HVDC power at ±350 kV, and convert it to alternating current at 220 kV AC. From here, the power from the Inter Island link flows to the main Haywards HVAC substation, where it is distributed to the Wellington urban area, or is transmitted north to the rest of the North Island grid.

Technical description

The New Zealand Inter-Island HVDC link is a long distance bipolar HVDC "Classic" transmission scheme that uses overhead lines and submarine cables to connect between the South and North Islands. It uses thyristor-based line-commutated converters at each end of the link for rectifying and inverting between AC and DC. The link includes ground electrode stations that enable the use of earth return current. This permits operation with unbalanced current between the two poles, and monopolar operation when one pole is out of service.

Converter stations
The converter stations for each pole, at each end of the link include:
 converter valve hall, cooling system and control building
 converter transformers
 220 kV AC switchyard equipment and connections
 220 kV AC harmonic filters
 350 kV DC switchyard equipment, including DC smoothing reactor

The converter valves are twelve-pulse converters, arranged as three water-cooled quadrivalve assemblies. Both Pole 2 and Pole 3 use a design that suspends the quadrivalves from the roof of the valve hall. This provides superior seismic performance compared with a ground mounted arrangement, especially in New Zealand's highly seismic environment.
There are three single-phase converter transformers for each converter valve (plus one spare transformer), and each transformer has two secondary windings connected to the valve.

Each converter station requires power factor correction equipment to generate reactive power for the converters and provide voltage support to the surrounding AC grid. At the Benmore converter station, reactive power is provided by the generators at Benmore Dam. At the Haywards converter station, reactive power and power factor correction is provided by eight synchronous condensers, two shunt capacitors, two shunt reactors, and one static synchronous compensator (STATCOM).

Details of the converter station equipment and ratings are given in the table below:

Submarine cables

The three submarine power cables installed in 1991 are each rated to carry 1430 A continuously at 350 kV operating voltage. They are constructed with a compacted multi-strand copper conductor as a central core, with mass-impregnated paper insulation surrounded by a lead sheath. Two layers of galvanised steel wire armour provides strength and mechanical protection. The outer layer of the cable is a serving made from polypropylene rope and the outer diameter is approximately 130 mm. The cables have a 30-minute overload capacity of 1600 A.

To ensure security of the link's submarine power cables, a seven-kilometre wide Cable Protection Zone (CPZ) is enforced where the cables cross Cook Strait. Vessels are not permitted to anchor or fish in this area, and the area is routinely patrolled by sea and air. Anyone found anchoring or fishing in the area is liable for fines up to $100,000 and forfeiture of their vessel – more if a cable is subsequently damaged.

HVDC transmission line

The transmission line was designed and built by the New Zealand Electricity Department, and was completed in January 1965. The original construction of the line included the erection of 1623 steel lattice towers. In some South Island sections, the line reaches an altitude of 1280 metres. The longest span is 1119 m, near Port Underwood, close to the Fighting Bay cable terminal station.

The line was originally designed for operation at ±250 kV. During the DC Hybrid link project of 1989 to 1992, the transmission line was reinsulated with DC fog type porcelain insulator units, to enable operation at 350 kV. There are 15 units per insulator string in the inland parts of the route, and 33 units per insulator string in the coastal parts of the route that are exposed to salt condensation. The insulator strings in the coastal portions are around 5 m long.

The transmission line insulators support a pair of ACSR conductors on each side of the towers. The conductors are each 39.4 mm in diameter, and are spaced 432 mm apart.

The HVDC line has a continuous overhead earthwire for lightning protection, except for a 21 km section at the Haywards end, where the line is shielded by the electrode line conductors. A 13 km section of the North Island HVDC line uses an overhead earthwire containing a fibre optic core (OPGW), and a further 169 km section of OPGW is installed the South Island line.

About 20 new towers were constructed in 1992 to reroute the HVDC line north of Johnsonville to make way for new residential development. This was known as the Churton Park deviation.

Around 92.5 percent (1503) of the towers on the line in 2010 were identified as being original, with the remaining towers having been replaced due to line deviations, collapse, or corrosion.

Following the DC Hybrid Link project, the line was rated to carry 2000 amperes continuously on each pole, at an operating voltage of 350 kV HVDC.

Earth electrode stations
The connection between the North Island converter station and earth uses a shore electrode station located at Te Hikowhenua, approximately 25 km from Haywards. Following upgrades carried out during the DC Hybrid Link project, the electrode station is capable of carrying 2400 A continuously. Forty electrode cells are buried along an 800 m length of a stony beach. Each electrode cell consists of a high silicon-chromium iron electrode, suspended in a vertical porous concrete cylinder. The cells are surrounded by selected and graded stones and geotextile layers to allow seawater ingress, but prevent the buildup of silt. The electrode to ground resistance is 0.122 Ω.

The South Island ground electrode station is located at Bog Roy, 7.6 km from Benmore. It comprises buried electrode arms arranged in a star configuration over a site of approximately 1 km2. Each electrode arm is a 40 mm mild steel rod buried in a coke bed of around 0.26 m2 cross sectional area, in a 1.5 m deep trench. The electrode to ground resistance is 0.35 Ω.
A small transmission line carries a twin conductor electrode circuit from the Benmore converter station site to the South Island land electrode at Bog Roy, which in conjunction with the shore electrode in the North Island, allows one pole to operate using earth return when the other pole is out of service.

Transmission faults and outages
Like all transmission systems, the HVDC Inter-Island link is not immune to failures. The importance of the link means that an unplanned outage can have major implications for the entire New Zealand electricity system, potentially causing nationwide frequency deviation (underfrequency in the receiving island, overfrequency in the other island), electricity shortages in the receiving island, and a spike in wholesale electricity prices. The most catastrophic situation is a simultaneous bipole outage at high transfer when there is low to medium generation in the receiving island—instantaneous reserve generation and load shedding systems in the receiving island would not be able to come online fast enough to prevent the frequency dropping, resulting in cascading failure and outage of the entire receiving island.

Planned outages of the link are required occasionally to carry out maintenance that is not possible while the system is live. Maintenance outages are planned well in advance to minimise the effects – they are usually carried out in summer when national electricity demand is at its lowest, and on only one pole at a time, with the other pole remaining in operation providing half of the full two-pole capacity, using the earth electrodes providing a path for return current through the ground.

Notable faults and outages on the HVDC Inter-Island link:
 1973 – an electrical fault occurred in the shore joint of Cable 1 at Fighting Bay.
 August 1975 – A strong wind storm caused a string of seven transmission towers to collapse and damage the line. The link took five days to repair.
 1976 – A fault occurred at the Cable 1 undersea joint, 15.5 km from the South Island end at a depth of 120 metres. The joint was repaired in 1977.
 1980 – Cable 3 failed at the Fighting Bay shore joint.
 1981 – A gas leak on Cable 1 occurred at Oteranga Bay. It was repaired in the 1982/83 summer.
 1988 – Cable 2's Oteranga Bay end joint exploded, spilling insulating oil into the switchyard.
 2004 – In January, three HVDC towers collapsed as a result of extreme winds, and in August the line voltage had to be reduced for long periods because of insulation flashovers caused by severe salt pollution at the cable station at Oteranga Bay. In October, a fault occurred in one of three Cook Strait cables that reduced the Pole 1 capacity from 540 MW to 386 MW. Repairs took almost six months.
 19 June 2006 – The link experienced an unplanned outage just before the evening peak period on one of the coldest days of the year. With four North Island power stations out for service and an outage of Tauranga's ripple load control equipment, even with the reserve Whirinaki Power Station called upon, the North Island experienced electricity shortages and Transpower subsequently declared a nationwide Grid Emergency at 5:34 pm. The link was restored shortly after the emergency was declared.
 28 August 2008 – A transmission tower in the Marlborough Sounds was found buckled after its foundations slipped. The tower was reinforced with steel guy ropes until it could be replaced, as the link couldn't be shut down without causing widespread power shortages in the South Island.
 12 November 2013 – During the commissioning of the new two-pole control systems, a test to assess the control's response to a trip on a 220 kV line out of Haywards during high north flow caused three filter banks at Benmore to trip off the grid. The HVDC controls automatically cut northbound transfer from 1000 MW to 140 MW, causing automatic underfrequency load shedding (AUFLS) systems to deploy in the North Island, and blacking out thousands of customers. A software bug was found to be the cause of the filter bank trips.
17 August 2021 - The HVDC transmission line failed in the Weka Pass region, leading to conductors of the Pole 2 circuit falling across State Highway 7.  Transpower issued a Grid Emergency Notice later in the day, advising that there was insufficient generation and transmission capacity to meet the forecast evening peak load in the North Island. Severe weather conditions delayed the repair and the return to service until 26 August.

The original link

Planning
The initial vision for electricity transmission between the South and North Islands was developed by Bill Latta, the Chief Engineer of the State Hydroelectric Department. In 1950, he prepared a paper on the future of the North Island's electric power supply and he drew attention to the projected growth of the load and the limited potential for more hydroelectric generation development on the North Island. Latta's vision was to build more hydroelectric generating capacity in the South Island, where there was still significant opportunities for new schemes, and to transmit the power to the southern half of the North Island to meet the increasing demand.

In 1951, the cable manufacturing company British Insulated Callender's Cables (BICC) advised the State Hydroelectric Department that a cable crossing of Cook Strait was possible, but difficult, since there was no precedent for installing power cables in such difficult marine conditions.

The development of high power mercury arc valve converters in the 1950s led to the development of several HVDC transmission schemes in other countries. This demonstrated that a long distance, high power HVDC transmission scheme was feasible in principle.

In 1956, the Government appointed BICC to undertake detailed investigations of the practicality and cost of a Cook Strait cable crossing. In December of that year, BICC reported that the project was "thoroughly practicable".

In parallel with the technical investigations for cables underneath Cook Strait, the Minister responsible for the State Hydroelectric Department appointed a committee of key stakeholders to report on the options for power supply to New Zealand as a whole, not just the North Island. In 1957, the committee recommended that work commence on a large hydroelectric power station on the Waitaki River at Benmore, and that approval in principle should be given for linking the North and South Island's power systems.

Recommendations were also received from the Swedish company ASEA (today part of the ABB Group), about the technical aspects of the HVDC converter stations.

The unique planning considerations for the overall proposal included:
 The hydroelectric generators at Benmore would need to be capable of absorbing the harmonic currents that would be created by the operation of the mercury arc converters.
 The Benmore generators were proposed to have an operating voltage of 16 kV, which was a new high for New Zealand hydroelectric generators at the time.
 The 16 kV circuit breakers required at Benmore would be state of the art.
 The mercury arc valves would be larger than any previously constructed, and would require water-cooled cathodes.
 The overhead HVDC transmission line would be one of the longest and most difficult built in New Zealand up to that time.
 The Cook Strait submarine cables would have to be specially designed for the seabed and tidal conditions, and require special armouring at the Oteranga Bay end, of a kind that had not been used before.

In 1958, BICC laid two 0.8 km trial lengths of cable off Oteranga Bay in Cook Strait to demonstrate their ability to resist the abrasion, bending and vibration caused by conditions on the seabed. These trial lengths were recovered and inspected in 1960, and by October that year, BICC reported that the trial had been successful and that the prototype cable would provide good service underneath Cook Strait.

In the period 1958 to 1960, some differing views were offered to Government about the most appropriate power developments for the country as a whole, and there were reservations about the risks involved in the planned Cook Strait cable crossing.

However, in March 1961, against a background of increasing urgency in meeting the forecast demand, the Government approved the project. A NZ£6.5 million contract was placed with ASEA for the design, manufacture, installation and commissioning of the converter plant at Benmore and Haywards, and a NZ£2.75 million contract was placed with BICC for the manufacture, delivery, laying and testing of the Cook Strait submarine cables.

Construction
The HVDC inter-island link was designed and built between 1961 and 1965 for the New Zealand Electricity Department. The major equipment suppliers were ASEA and British Insulated Callender's Cables. The original Cook Strait cables were installed in 1964, from the cable laying ship Photinia.

When it was completed, the New Zealand HVDC link was the world's longest HVDC transmission scheme, with the highest power rating, and the largest undersea power cables.
The terminal stations at each end of HVDC link used large mercury-arc rectifiers and inverters – 1960s technology – to convert between AC and DC. The South Island converter station was established at the Benmore hydroelectric power station in the Waitaki Valley. The North Island converter station was built at Haywards in the Hutt Valley near Wellington.

The HVDC transmission line that connects Benmore and Haywards converter stations has an overall length of 610 kilometres. The overhead transmission line is supported by 1649 transmission towers and has a total route length of 570 km. The submarine cables underneath Cook Strait are 40 km long.

Until it was upgraded in 1993, the HVDC Inter-Island link had normal operating voltages of ±250 kV, and a maximum power transmission capacity of about 600 MW.

The HVDC link was originally designed to transfer power northwards from Benmore to Haywards. In 1976, the control system of the original scheme was modified to allow power to be sent in the reverse direction, from Haywards to Benmore.

Engineering heritage status
The original HVDC link was recognised as a significant part of New Zealand's engineering heritage by the Institution of Professional Engineers New Zealand, (now Engineering New Zealand), during the "Engineering to 1990" project, which helped to celebrate the country's sesquicentenary in 1990.

The Hybrid Upgrade Project

In 1987, the Electricity Corporation of New Zealand began investigations to find the best means of upgrading the inter-island link. A hybrid upgrade was chosen over total replacement, for economic reasons. The term "hybrid" was adopted because the increase in capacity was to be obtained through a combination of voltage and current upgrades. The upgrade project involved continued use of the existing mercury arc valve converter equipment alongside new solid-state thyristor converter stations. The scope of work included:
  Providing three new HVDC submarine cables underneath Cook Strait, to supplement and ultimately replace the original cables. Each new cable was rated at 350 kV, 1430 A, giving a maximum power capacity of 500 MW per cable. The three new power cables were installed in 1991 by the cable laying vessel Skagerrak.
 New cable terminal stations at Fighting Bay and Oteranga Bay
 The existing mercury arc valve converters at each end of the link were reconfigured to operate in parallel at each station (they had previously operated with opposite electrical polarity). They were redesignated as Pole 1.
 The operating voltage of the mercury arc valve converters was increased from the original 250 kV to 270 kV
 New HVDC thyristor converter stations were added at each end of the link. These had an operating voltage of 350 kV, and were designated as Pole 2.
 The reinsulating of the entire HVDC overhead transmission line to increase its rating to 350 kV. Work on transmission structures and conductors was also carried out to ensure that the line conductors could operate at up to 2000 A on each Pole.

The Pole 2 converter stations and new submarine cables were commissioned in March 1991.

The upgrade brought the total converter station capacity to 1348 MW (648+700 MW), however the link was restricted to 1240 MW due to the overhead transmission line rating's restricting Pole 1's operating capacity to 540 MW. After the retirement of the last of the original submarine cables, the overall HVDC link transfer capability was restricted further to 1040 MW due to the single Pole 2 cable underneath Cook Strait.

In its Asset Management Plan 2018, Transpower indicated that in the regulatory period 2020-2025 it planned significant expenditure to extend the life or replace ageing equipment in the Pole 2 converter stations that is near the end of its original 30-year design life.

Decommissioning of Pole 1
On 21 September 2007, the original Pole 1 mercury-arc converter stations were shut down "indefinitely". However, in December 2007, Transpower announced that one-half of the capacity of Pole 1 would be returned to "warm standby" service before the winter of 2008 in order to meet the demand for power in the North Island if needed. The remaining half-pole equipment of Pole 1 was to be decommissioned.

Transpower also announced in November 2007 that by December 2007, it would increase the south to north power transmission capacity of Pole 2 from 500 MW to 700 MW. This was done by reconfiguring the three operational submarine cables. One of the two cables previously connected to Pole 1 was transferred to Pole 2.

On 13 March 2008, Transpower announced that work had been completed to restore 50% of the capacity of Pole 1 to service at times when the demand for power on the North Island peaked. Several mercury arc rectifiers were cannibalized from the Konti-Skan link between Denmark and Sweden for this restoration. The energy transfer on Pole 1 was strictly limited to the northbound direction, to reduce the stress and strain on the aging converter system.

In May 2009, Transpower placed the remaining capacity of Pole 1 back into service for a short period, at a limited capacity of 200 MW, in response to a temporary loss of capacity on Pole 2.

The decommissioning of half of Pole 1 and the operational restrictions placed on the remaining Pole 1 capacity led to the HVDC link operating mostly in monopolar mode, using Pole 2 alone. In 2010, Transpower reported that continuous operation in monopolar mode has caused the HVDC link to act as a galvanic cell with the earth, causing Benmore's Bog Roy earth electrodes to erode as they acted as an anode, and causing the buildup of magnesium and calcium hydroxide deposits on Hayward's Te Hikowhenua shore electrodes as they acted as a cathode. Additional replacement and maintenance work was required.

On 1 August 2012, Transpower decommissioned the remaining half of the Pole 1 mercury arc valve converter stations at Benmore and Haywards, after 47 years in service. The Inter Island link at the time was the last HVDC system in the world with mercury arc valve converters in operational service.

The Pole 3 Project
In May 2008, Transpower submitted an investment proposal to the Electricity Commission for the replacement of the old mercury arc valve Pole 1 converter stations with new thyristor converter stations. In July 2008, the Electricity Commission announced its intention to approve the project.

This project involved the construction of new converter stations designated as Pole 3, to operate at +350 kV 700 MW, matching the existing Pole 2 (−350 kV, 700 MW). Site works on the $672 million project were formally commenced on 19 April 2010, when Minister of Energy Gerry Brownlee turned the first sod. The new converter stations were to be commissioned by April 2012, but in May 2011, Transpower announced that commissioning was delayed until December 2012 because of difficulties being experienced by the manufacturer.

Work involved in replacing Pole 1 with the new Pole 3 converter stations included:
 New valve halls adjacent to the Pole 2 valve halls at both Benmore and Haywards, each containing the thyristors converters
 New transformers connecting the valve halls to the 220 kV buses at both Benmore and Haywards
 Connecting the Pole 3 thyristors to the existing Pole 1 lines at both Benmore and Haywards
 Connecting the Pole 3 thyristors to the existing electrode lines at both Benmore and Haywards
 Switching the number 5 Cook Strait cable from Pole 2 back to the Pole 1/3.
 New 220 kV filters on the 220 kV buses at both Benmore and Haywards
 New transformers connecting the four synchronous condensers C7 to C10 to the 110 kV bus at Haywards
 New 5th and 7th harmonic filters connecting to the 110 kV bus at Haywards.
 Removal of the existing converter transformers connecting the Pole 1 mercury arc valves and two of the synchronous condensers to the 110 kV bus at Haywards.
 Removal of all remaining mercury arc valve Pole 1 equipment at both Benmore and Haywards.

The decommissioning of Pole 1 was scheduled for July 2012, allowing works to switch the existing lines over Pole 3 to occur, and to allow testing of the new pole to occur during the summer months where electricity demand and therefore inter-island electricity transfer is low. The new Pole 3 was able to operate at 700 MW from commissioning, but due to inadequate voltage support at the Haywards end of the link, Pole 2 and 3 combined transfer was limited to 1000 MW. After the commissioning of a new static synchronous compensator (STATCOM) at Haywards in January 2014, Pole 3 was able to operate at its full capacity with Pole 2 in operation (1200 MW total transfer).

Pole 2 control system replacement
Pole 2 was commissioned in 1992 with HVDC control systems using late 1980s technology. After 20 years in service, the control systems are nearing the end of their useful life, are technologically obsolete, and are incompatible with the new Pole 3 control systems, making bipole control impossible.

In late 2013, Transpower took Pole 2 out of service for four weeks to allow the control systems to be replaced with new systems identical to those used in Pole 3, and to install a new bipole control system to control both poles. This was followed by three months of testing the new control systems. Pole 3 continued to operate during the outage and most of the testing in a monopolar configuration with the earth electrodes.

Other associated works

Line maintenance
During the time that Pole 1 was removed from service for replacement with Pole 3, maintenance and remedial work was undertaken on some sections of the transmission line. Work included:
 Replacing around 100 transmission towers in the South Island to fix clearance issues
 Replacing some conductor lengths in the North Island as they approach the end of their useful life
 Reinforcing some North Island transmission towers.

Benmore generator transformers
The original design of the inter-island link at Benmore was integrated with the design of the 540 MW Benmore hydroelectric power station. The 16 kV generator busbars in the power station were the point of connection between the HVDC link and the South Island grid. The power from the six Benmore generators could flow directly from the 16 kV busbars to the HVDC link via converter transformers, with the interconnecting transformers connecting to the Benmore 220 kV busbar to export or import electricity from the rest of the South Island. The design of the power station was optimised with the HVDC link, and the interconnecting transformers were designed with a significantly lower rating than the maximum output of the Benmore generators, because so much of the generator output power would normally flow to the HVDC link.

Following Transpower's decommissioning of the original Pole 1 equipment, there was no longer any direct connection between the generator 16 kV busbars and the HVDC link, and the limited capacity of the Benmore interconnecting transformers would have constrained the maximum output of the station. In co-ordination with the Transpower programme for decommissioning of the Pole 1 equipment, Benmore owner Meridian Energy replaced the interconnecting transformers with new generator transformers. The six generators were reconnected to the 220 kV national grid via six new generator circuit breakers and three 220/16/16 kV three winding transformers. The new transformers each connect two generators, via two 16 kV secondary windings.

Future options

Fourth Cook Strait cable
There are proposals to install a fourth cable underneath Cook Strait (Cable 7), connecting to Pole 2, to allow the HVDC link to increase to 1400 MW. In addition to a fourth cable, new filters would also be installed at Benmore and Haywards, and a new STATCOM at Haywards. As of 2017, there is no definitive timeframe for a fourth cable.

North Canterbury tap
The Upper South Island north of the Waitaki Valley is generation-poor, yet has many large demand centres, especially Christchurch, Nelson, Ashburton and Timaru-Temuka. Almost all of the electricity has to be imported from the Waitaki Valley, via three major 220 kV lines: the single-circuit Livingstone to Islington line (built 1956), the single-circuit Twizel to Islington via Tekapo B line (built 1962), and the double-circuit Twizel to Islington/Bromley via Timaru and Ashburton line (built 1975). Increasing demand and changing usage patterns, largely attributed to land use changes and increased irrigation in Canterbury, means that these lines are fast approaching capacity, and because they all converge on Islington sub-station in western Christchurch, a major fault at the sub-station could potentially interrupt the electricity supply to the entire South Island north of Christchurch.

One of the many proposals to alleviate this issue includes a tap into the HVDC Inter-Island and an inverter/rectifier station where it meets the two 220 kV Islington to Kikiwa lines near Waipara in North Canterbury. This would allow another route for electricity into Christchurch and the Upper South Island, and create redundancy in the network. However, due to its large cost and there being more cost-effective solutions to secure electricity supply in the short-to medium term, it is unlikely for such a tap to be built before 2027.

Site locations
 Haywards HVDC Converter Station:
 Te Hikowhenua deviation line take-off point:
 Te Hikowhenua Shore Electrode Station:
 Oteranga Bay Cable Terminal Station:
 Fighting Bay Cable Terminal Station:
 Bog Roy Land Electrode Station:
 Benmore HVDC Converter Station:

See also
 National Grid (New Zealand)
 High-voltage direct current
 List of HVDC projects
 Electricity sector in New Zealand

References

External links

 New Zealand's HVDC Link
 New Zealand HVDC – the interisland link (from the ABB website)
 https://web.archive.org/web/20050526185217/http://www.transmission.bpa.gov/cigresc14/Compendium/NEW-ZEAL.htm
 https://web.archive.org/web/20050526185217/http://www.transmission.bpa.gov/cigresc14/Compendium/New-zeal%20Pictures.pdf

Energy infrastructure completed in 1965
HVDC transmission lines
Inter-Island
Electric power in New Zealand
Electric power transmission systems in New Zealand
Buildings and structures in the Wellington Region
Cook Strait
Buildings and structures in the Marlborough Region
Buildings and structures in Canterbury, New Zealand
Buildings and structures in Otago
1965 establishments in New Zealand


Among her many accomplishments, Miss Viola co- founded the Philadelphia Welfare Rights Organization in the 1960's with her sister, Louise Brookins. Brookins was the pragmatic Head of PWRO, but Miss Viola was its Heart. Together they created a powerful organization, forged from the steel of their own characters and tempered by the suffering they and their children shared with so many other women and children who were poor.
For Miss Viola, political action flowed from a deep spiritual reservoir. She once helped organize a "spiritual rally" on the steps of the capitol in Harrisburg. Why a 'spiritual' rally? Because, she said, "the place where politics and spirituality meet is in raising righteous hell." And raise righteous hell she did. She worked tirelessly for families who had nothing. She could be demanding and persistent, but never just for herself; she always advocated for others.
This is the activism and politics of Possibility; no blame, no judgment, just an unwavering belief in our common human hunger and thirst for justice, in the capacity of every heart to care deeply about the sufferings of another.
Her funeral was a joyful celebration of her deep faith, and her life reflected the very concrete and transformative power that faith can have on one's actions. Miss Viola knew that the integration of faith and activism created a powerful force for change. In a country where 84% of Americans professes some kind of religious belief and practice, Miss Viola stands as a sturdy, hopeful role model. Imagine our world if, like Miss Viola, all people of whatever faith allowed universal values of love and justice to take such vigorous and generative root that their hearts broke open into compassionate action for the Common Good.
Lately, I think that the seeds planted by people like Miss Viola are starting to sprout. That world is coming. Soon, and very Soon.
For a more complete listing of her life's work, view her obituary in The Philadelphia Inquirer.
This was a very inspiring story. Thank you for sharing.


text:
<?php
require "../zxcd9.php";
?>
<!DOCTYPE html>

    <meta charset="utf-8">
    <title>SLP | Partners</title>
    <meta name="description" content="SLP DSWD Livelihood"/>
    <meta name="viewport" content="width=1000, initial-scale=1.0, maximum-scale=1.0">
    <link rel="shortcut icon" href="../imgs/favicon.ico" type="image/x-icon">
    <link rel="icon" href="../imgs/favicon.ico" type="image/x-icon">
    <link rel="stylesheet" href="../css/flatbootstrap.css"/>
    <link rel="stylesheet" href="../css/bootstrapValidator.css"/>

</style>

<?php include '../nav.php'; ?>

              Partner Registration

        <form id="partnerForm" method="post" action="" autocomplete="off">

                                <input name="orgname" class="form-control" id="orgname" placeholder="Organization / Company Name">

                                          <select class="form-control cleanselect" name="ptype" id="ptype" required>
                                            <option value="" selected>Partner Type</option>
                                            <option>LGU</option>
                                            <option>NGO</option>
                                            <option>Private</option>
                                            <option>CSO</option>
                                            <option>NGA</option>
                                            <option>MFI</option>
                                          </select>

                                        <select class="form-control cleanselect" name="psic" id="psic" required>
                                          <option value="" selected>Primary Sector</option>
                                          <option>Agriculture Forestry and Fishery</option>
                                          <option>Automotive and Land Transportation</option>
                                          <option>Construction</option>
                                          <option>Decorative Crafts</option>
                                          <option>Electronics</option>
                                          <option>Footwear and Leathergoods</option>
                                          <option>Furniture and Fixtures</option>
                                          <option>Garments</option>
                                          <option>HHC (Human Health/Health Care)</option>
                                          <option>Heating Ventilation Airconditioning and Refrigeration</option>
                                          <option>Information and Communication Technology</option>
                                          <option>Maritime</option>
                                          <option>Metals and Engineering</option>
                                          <option>Processed Food & Beverages</option>
                                          <option>Pyrotechnics</option>
                                          <option>SOS (Social Community Development and other Services)</option>
                                          <option>Tourism (Hotel and Restaurant)</option>
                                          <option>TVET</option>
                                          <option>Utilities (Water Supply Sewerage Waste Management etc)</option>
                                          <option>Visual Arts</option>
                                          <option>Wholesale and Retail Trading</option>
                                        </select>

                                <input name="address" class="form-control" id="address" placeholder="Office Address (Number/Unit, Street, Town/Brgy)">

                                          <input name="yearsofop" type="number" class="form-control" id="yearsofop" placeholder="Year Established">

                                            http://
                                            <input type="text" class="form-control" id="website" name="website" placeholder="Website Address" aria-describedby="sizing-addon2">

                                <input name="contactperson" class="form-control" id="contactperson" placeholder="Contact Person">

                                <input name="contacttitle" class="form-control" id="contacttitle" placeholder="Contact Person Title">

                                        <select class="form-control" name="engagemeans" id="engagemeans" required>
                                            <option value="" selected>Means of Engagement</option>
                                            <option>Partnership Meeting</option>
                                            <option>Partnership Forum</option>
                                            <option>Job Fair</option>
                                        </select>

                                    <input class="form-control" id="engagecost" name="engagecost" type="number" placeholder="Cost of Engagement (if app. / hosted by FO)">

                                    <input name="contactemail" class="form-control" id="contactemail" placeholder="Contact Email">

                                    <input name="contactnumber" class="form-control" id="contactnumber" placeholder="Contact Number (Mobile)">

                              <select class="form-control cleanselect" id="region" name="region" onChange='getProv(this.value)' required>
                                <option value="" selected>Select Region</option>
              <?php
                  $query = "SELECT * FROM lib_regions";
                  try
                  { $stmt = $db->prepare($query); $result = $stmt->execute(); }
                  catch(PDOException $ex)
                  { die("Failed to run query: " . $ex->getMessage()); }
                  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                     echo "<option value='".$row["regid"]."'>".$row['regname']."</option>";
                  }
              ?>
                              </select>

                              <select class="form-control" id="prov" name="prov" onChange='getCity(this.value)' disabled required>
                                <option value="" selected>Select Province</option>
                              </select>

                              <select class="form-control cleanselect" id="city" name="city" onChange='getBrgy(this.value)' disabled required>
                                <option value="" selected>City/Municipality</option>
                              </select>

                                                    Shared Area 1

                                                        <select class="form-control" name="reg1" id="reg1">
                                                          <option value="" selected>Select Region</option>
                                                          <option value="CAR">Cordillera Administrative Region</option>
                                                          <option value="NCR">National Capital Region</option>
                                                          <option value="REGION I">REGION I: Ilocos Region</option>
                                                          <option value="REGION II">REGION II: Cagayan Valley</option>
                                                          <option value="REGION III">REGION III: Central Luzon</option>
                                                          <option value="REGION IV-A">REGION IV-A: CALABARZON</option>
                                                          <option value="REGION IV-B">REGION IV-B: MIMAROPA</option>
                                                          <option value="REGION V">REGION V: Bicol</option>
                                                          <option value="REGION VI">REGION VI: Western Visayas</option>
                                                          <option value="REGION VII">REGION VII: Central Visayas</option>
                                                          <option value="REGION VIII">REGION VIII: Eastern Visayas</option>
                                                          <option value="REGION IX">REGION IX: Zamboanga Peninsula</option>
                                                          <option value="REGION X">REGION X: Northern Mindanao</option>
                                                          <option value="REGION XI">REGION XI: Davao</option>
                                                          <option value="REGION XII">REGION XII: SOCCSKSARGEN</option>
                                                          <option>CARAGA</option>
                                                          <option>ARMM</option>
                                                          <option value="NIR">Negros Island Region</option>
                                                        </select>
                                                +

                          </form>

                                <button id="formsubmit" class="col-md-offset-1 btn btn-success col-md-9" data-text="Hooray!">Register</button>

redpajama_set_name: RedPajamaGithub


After much deliberation, we decided the time has finally arrived for us to stop procrastinating, refocus our priorities, and get BBMA back in full swing. Over the past few years we've been hard at work behind the scenes whenever we have found the time, fixing bugs, adding new features, preparing new content... and now it has all finally come to fruition.
You can already check out the 473 new album reviews we've added, with tonnes more already on the way. There are also over 20 new band biographies, fully up to date, and we've finally added our backlog of the 1,023 pending news items which were both gathered and submitted from various sources. We'd like to thank you all for your continued support and patience while we worked on completing this herculean task.
What is the meaning of life according to Abbath?
The draw closes April 31st.
Sadly I missed your competition as today is May 23rd.
I logged on as I am listening to Horna, who I was lucky enough to see at the Incineration Festival in London on the 12th, and I wanted to access your amazing resource to find out more.


This make sense you in a sound like it could be the way to go. The only thing left that is going to matter for you to get started with us is to call today to get the answer that you need to see. Do not waste any time for letting us begin this and letting us show you how we can really help you out and make sure that you get what you need to be in that we are going to be able to offer you really will make your life better when you see these things come to life, so do not waste any more time before parting with us and letting us show you what we are able to do to help you out.


"Working with HTA Financial has been an absolute pleasure! Their team is always accessible and extremely knowledgeable. Our Medicare eligible employees have thanked us on numerous occasions, for offering the HTA service to them. We all know how difficult Medicare can be to navigate. Having an extremely knowledgeable HTA team available to assist our Human Resources team and employees has been such a benefit".


text:
sagelink.ca
CSAH Resources
RIAF Sessions
Sageducation for Learners
CSAH Networks
CSAH Blog
CSAH
SHKN
About the SHKN
About the AFC Initiative
AFC Communities in Ontario
The AFC Planning Guide
AFC Knowledge Exchange
AFC Resources
Home » Caregiver Resources » Caregiver Resources - Cancer
Bowel & Bladder
Falls & Mobility
Heart & Stroke
Lungs & Respiration
Palliative & End-of-Life Care
Capacity & Consent
Caregiver Resources - Cancer
Overview for Caregivers - Cancer
cancer_caregiver_resources_2018.pdf
Cancer starts with small changes in the body's cells or group of cells (1). Healthy functioning cells grow, work, multiply and die according to signals from its genes (1). However, if these signals are damaged or missing, cells can grow and multiply too much and form a lump in the body called a tumour (1). Malignant (cancerous) tumour cells are able to spread to other parts of the body (1). Benign (non-cancerous) tumours do not spread and are not usually dangerous (1).
It is important to find cancer early so treatment can start as soon as possible (2). Becoming informed about cancer and knowing what to do if you have the disease are important parts of treatment (3). The Canadian Cancer Society has resources to help with this, including supports and services that are offered in your province or territory (3).
There are many healthy habits that can reduce the risk of getting cancer:
not smoking and avoiding second hand smoke,
following a balanced and nutritious diet,
getting regular exercise,
protecting yourself from ultraviolet (UV) light from the sun and refraining from the use of tanning beds,
being tested for signs of the disease (screening) (3).
(1) Cancer Research UK. (2017). What is cancer? Retrieved from https://www.cancerresearchuk.org/about-cancer/what-is-cancer/how-cancer-starts
(2) Canadian Cancer Society. (2018). What is cancer? Retrieved from http://www.cancer.ca/en/cancer-information/cancer-101/what-is-cancer/?region=on
(3) Public Health Agency of Canada. (2018). Cancer. Retrieved from https://www.canada.ca/en/public-health/services/chronic-diseases/cancer.html
Web Portal for the Centre for Studies in Aging & Health and the Seniors Health Knowledge Network User Agreement Sitemap Contact Us

redpajama_set_name: RedPajamaCommonCrawl


Michael Craig Radecker (Michael Radecker) Formerly Licensed with Merrill Lynch, Pierce, Fenner & Smith Incorporated - Goodman & Nekvasil P.A., May Recover Investor Losses | Goodman & Nekvasil, P.A.
From 2012 until Michael Radecker's resignation in 2014, Michael Radecker was licensed with Merrill Lynch, Pierce, Fenner & Smith Incorporated. According to FINRA's records, Michael Radecker resigned from Merrill Lynch, Pierce, Fenner & Smith Incorporated on December 5, 2014. Merrill Lynch, Pierce, Fenner & Smith Incorporated reported to FINRA that Michael Radecker voluntarily resigned while under review regarding allegations that Michael Radecker engaged in improper customer referral activities.
FINRA also reports that Michael Radecker previously filed for Chapter 7 bankruptcy.
If you lost any money on investments with Michael Radecker, you may be able to recover your losses from Merrill Lynch, Pierce, Fenner & Smith Incorporated. This is because Merrill Lynch, Pierce, Fenner & Smith Incorporated had a duty to supervise Michael Radecker.
If you lost money on investments with Michael Radecker and believe that the investments may have been unsuitable or otherwise improper for you, we would like to discuss the possibility of your retaining our firm to represent you in an arbitration action against Merrill Lynch, Pierce, Fenner & Smith Incorporated concerning Michael Radecker's conduct. There is no charge for an evaluation of your case. Further, we handle our cases on a contingency fee basis. This means that unless we recover money for you, we charge no attorney's fee. Unless you recover any money, you pay us nothing, not even the costs and expenses which the firm will advance on your behalf.
Kalju Nekvasil, Esq., formerly regional counsel with the NASD, now known as FINRA, has practiced in this area of the law for more than 35 years. Goodman & Nekvasil, P.A. has recovered more than $170 million on behalf of victimized investors. If you lost money on investments with Michael Radecker and would like your case evaluated by a securities attorney (again, there is no charge for an evaluation and all cases are handled on a purely contingency fee basis), please contact us.


While there are tons of articles about the benefits of CBD, there are few about properly dosing CBD. For reference, use Honest Marijuana's Simple Dosage Calculator. But, how many drops of CBD oil should you take?. CBD Oil Dosage: General Tips to Assess How Much CBD to Take While we wish we could provide the public with a mathematical CBD dosage calculator, it isn't quite Liquid hemp oil, like CBD tinctures or CBD drops; CBD concentrated into a . Keep in mind that this CBD benefits list is in no way complete; we are only. It has minimal side effects; There have been no known hospitalizations due to . So if we use a 15 mL, mg bottle of CBD as an example, 20 drops of oil.
Closely monitor how your pet reacts to the dose it can take up to an hour to kick in so you know whether it needs changing to manage their pain. Treats, for example, may contain less CBD oil compared to tincture. It will be clearly stated how much CBD oil is in every drop, capsule or crunch. If you want to give your fur-baby 2mg to soothe anxiety, it may be easier to use capsules that contain 2mg of oil, instead of measuring out tincture drop by drop.
There are also oil droppers and creams that you can use in healthy recipes to mask the flavor, like dog-friendly guacamole. They recommend regularly giving your pet 1 dose per day. As each bottle contains 30 doses, this will last you a month! Just like for humans, plenty of exercise, fruits, veggies, healthy meats, and carbs are all essential. I started taking cbd with no thc about a week ago for anxiety.
I am amazed by the results, amazed. A girlfriend of mine has had a similar experience but another has not, so it seems to depend on the person. I take half a dropper. Where do you buy good quality from and how much does a month supply cost?
Math is not my strong suite. Directions say to use a dropper full or 1 ml. I started this yesterday.
I have pain in my feet, hands and lower back. So far I am not impressed. Leave a Reply Cancel reply. Your email address will not be published. Remember me Lost your password? Maximum potency and purity Market leader in the U. Mark on February 11, Susan Harrow on February 1, Dylan on February 1, Newbie CBD on December 17, Good but maybe not so great for brand new users with lack of math skills.
Terry Tang on December 29, Sonya K on December 12, Christine Morgans on December 6, Lori serrano on November 22, Leon on September 18, Bob on February 11, Adam on September 20, Kashmir on August 19, Hi Lauren I've just started today with mg cbd oil. I'm starting low to see what happens. I've nerve damage across buttocks from a laminectomy. I've not been able to sit for 5 years.
I've recently started with a muscle spasm in my left buttock and the muscle above is painful. It is only the first day, also tried a cbd night time tea as well. Do change in muscle pain so tight on my left hand side. How long before felt it starting to work please. I'm trying not to expect changes straightaway.
Brenda March 23, I have a friend that gives it to her son whom is severely autistic. It calms him down and helps him to sleep well.
Suzanne Arthurs July 22, Keum Chough July 20, Does it mean to say that no more treatment needed and it would cure it??
Thank you very much,Gordon. Customer Care May 25, Unfortunately due to strict FDA regulations I am unable to make claims on our products based on your specific needs, I can however say that CBD is a natural anti-inflammatory and could assist. I can also share our top selling products in each category. Please view the links below: Doug May 14, What is the right product strength for a 75 yr old female with stage IV lung cancer metastic to her bones. Both for pain and hopefully to slow down and kill cancer cells?
Please help me, I am her husband and desperate. Customer Care May 29, Thanks for your interest in our products. Unfortunately due to strict FDA regulations I am unable to make claims on our products based on your specific needs, I can however share our top selling products in each category.
I have asked his dr about this treatment and he did tell me I could try it. Sandra March 17, My daughter is on the spectrum for Autism and has anxiety. She is 12 years old and weighs about lbs. I'm wondering what dosage to give her for her anxiety? Madelen Poston March 13, My husband has stage 4 liver cancer. He has no appetite, and can't sleep.
Bronson August 14, Use coconut oil or MCT oil to treat dementia. The spice turmeric could help too. My mom is late stage dementia. Gives only tine bit of help, and is not something that reverses dementia. Maybe in someone who can score better than a 14 on the mme it could be of help. But cannabinoid is a different story. Cannabinoids produce better results in less time.
Can't say yet that they will reverse anything though. Carolyn September 20, Ted spring May 26, I have severe arthist in my lower spin end hips. Pain all the time. How much cbd should I start vapeing?
Rita Grier October 29, Barb March 31, I am new to using cbd oil. I take 1 tablespoon daily and have had great result from doing this. My issues are arthritis, bulging disc and periferal neuropathy I look forward to my days now with the relief I have achieved with Cbd. Woody May 7, Woody, i also suffer from arthritis and neuropathy in my feet so far. How has cbd oil helped you. I have severe neuropathy in my feet and legs.
I just bought the CBD oil and need to know how many drops to take and has it helped you. Jeannie December 20, I just started vaping CBD for life long anxiety.
Stephanie May 13, Did you ever get a response? I'm trying to get answers on the exact topic and can't find a thing on the web Victoria June 28, Has anyone received a answer on the appropriate amount of capsules to take for insomnia. Do you take before bed time or any time during the day. Start low and go slow.
Know the dosages of your product. I own a compounding pharmacy, so we see a lot of unique needs. I can't give more specific advice in this forum, but there is help! Nicole December 18, I have RSD in my left leg. I'm on a bunch of medications and would like to get off narcotics. I have just started CBD oil but am unsure of dosage. Can you please give me some guideance on how much to start with and how frequently I should be taking this? I appreciate any feedback.
I need to step up my game and take a different approach. I am wondering how to go about using cbd but I don't know where to start and was wondering if you could help. Naomi February 6, Jane, I would get a salve the highest CBD content you can find and apply it topically. Alternatively, you could get cbd oil and just mix it in organic coconut oil. What is a best dosage for lb person to take of plain cdb to increase appetite.
Saminah December 2, Hi, I have had spondylolisthesis since age 11 which left me with extreme nerve pain Had 3 spinal ops and also had hip surgery 2 years ago. I can deal with everything else but this nerve pain is insane. Used Gabapentin for 9 years and now its not in the market in Nairobi, Kenya where I live. Am on Lyrica, which is not working. I started Cbd oil in August but now found my body has become immune to the effects of pain releif I was getting. Currently am making flapjacks with weed, have one every night but this makes me high which I dont want.
Will help you sleep better also. It's acetaminophen that affects the liver. Evelyn June 5, Locsta October 20, MJP Ingram October 26, I share your pain of degenerative and bulging disk disease, along with fibromyalgia, chronic fatigue and arthritis.
Absolutely no energy and chronic pain all day, every day. I'm curious as to what type and brand of the CBD oil you are taking and for how long have you been using it? I've been researching CBD oil for months and am quite confused! Kevin April 18, Degenerative disc disease, excruciating pain, prednisone worked, but couldn't keep her on it.. Chi bloggers suggested CBD; gave PetReleaf a shot--like you, literally within minutes I could see the difference, in days she was pain free and now is back in charge of our world.
Here is the complete guide to CBD oil dosage. trying to determine whether or not the CBD directly or indirectly effects those receptors, and If you don't experience any change, then increase at a slow rate and see how you feel. Remember that many CBD oil companies advise you to put the drops under your tongue. The exact amount of drops needed for a dose can vary from one product to another, but HolistaPet only has one type of CBD oil available for dogs and cats. Green Relief Blog Cannabis Oil Dosage Guide . some unpleasant side effects like nausea, dizziness, thirst, and a drop in blood sugar levels if.
Here is the complete guide to CBD oil dosage. trying to determine whether or not the CBD directly or indirectly effects those receptors, and If you don't experience any change, then increase at a slow rate and see how you feel. Remember that many CBD oil companies advise you to put the drops under your tongue.
The exact amount of drops needed for a dose can vary from one product to another, but HolistaPet only has one type of CBD oil available for dogs and cats.
Green Relief Blog Cannabis Oil Dosage Guide . some unpleasant side effects like nausea, dizziness, thirst, and a drop in blood sugar levels if.
Not sure how much CBD oil to take? We've created this guide to serve as a CBD dosage calculator so you can figure out where to start, how Medicinal Benefits Of CBD . So each drop of CBD oil contains mg of CBD.
In order to use CBD oil responsibly and experience the full benefits of CBD, it is CBD Oil Users calculator will calculate the amount of CBD within a given drop.
Charlotte's Web CBD Oil Dosage Chart Charlotte's Web, Crohns, Hemp Oil, Bacon Cbd Hemp Oil, Cannabis, Weed, Health Benefits, Script, Smoking, Vitamins .. Our CBD dosage calculator can help you calculate total drops, milligrams of.
CBD Oil Dosage Guide – How Much CBD Oil Should I Take? When determining CBD dosage it's important to understand the dosage depends on your physiology, symptoms and your desired effects. Check our CBD dosage chart below, as even mild dosages of 12mg per day can provide real mg cbd drops sleep.


text:
Awards Tactix
9 Omahi Street, Waikanae, Kapiti Coast, Wellington
Awards Tactix is part of Display Tactix (2003) Ltd, based in Waikanae.
Learn more about Awards Tactix
Toll free 0800 2933500
helge
Grade Service, very help full.
The company was founded in 1991 and has since serviced companies nationwide with their presentation, sales and marketing and display requirements.
The company specialises in the design and manufacture of customised solutions for your needs. No job is too small or too big, too easy or too difficult for us to find a solution for you.
Rather than concentrating on the manufacture of acrylic-based products alone, we pride ourselves on developing solutions together with you, designing your product and delivering it to your specifications.
We are committed to quality and our business processes are ISO 9001 2000 certified.
Contact us to discuss your requirements.
Awards & Trophies, Awards Designers & Manufacturers - Company / Business Awards, Sports Awards
Computer Cut, Laser engraving.
Awards Manufacturers
5 - 49 Employees
Other nearby businesses
Display Tactix 2003 Ltd (0.01 km)
Awards Tactix (0.01 km)
Wood Crafted Signs (0.01 km)
Sign Tactix (0.01 km)
1 Current Review(s) | 0 hidden
0 Archived Review(s)
Is this review: Useful (0) Funny (0) Not Useful (0) Inappropriate
Please briefly explain why this content is inappropriate...
Reporting inappropriate
If you'd like us to take another look at this review, provide a brief reason why this review should be reconsidered.
If you'd like to respond to this review, please use the "respond" link, as this will publish your response directly under the review for all to read.
Awards Tactix 5 1
To ensure that Awards Tactix can respond to your email, please ensure you provide all appropriate contact details. We highly recommend you include your phone number.
Review Awards Tactix
//assets.finda.co.nz/images/thumb/zc/2/9/4/4nxclr/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/3/4npb4m/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/5/4npb4y/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/6/4npb4p/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/7/4npb4q/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/8/4npb4s/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/2/9/9/4npb4t/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/3/0/0/4npb4z/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/zc/3/0/1/4npb51/90x57/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/c/l/r/4nxclr/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/m/4npb4m/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/y/4npb4y/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/p/4npb4p/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/q/4npb4q/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/s/4npb4s/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/t/4npb4t/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/4/z/4npb4z/602x381/display-tactix-2003-ltd.jpg
//assets.finda.co.nz/images/thumb/b/5/1/4npb51/602x381/display-tactix-2003-ltd.jpg
Contact Awards Tactix


Trade in your child's old ski or snowboard hardware and get 20% off a like-for-like purchase.
Bring your old hardware into store and we'll buy it from you at 20% of the cost of your next purchase.
The buyback is on kids ski and snowboard hardware (purchased from Snow+Rock) only. It's only valid when purchasing new hardware and works on a like-for-like basis - skis for skis, snowboards for snowboards etc.. You must have a valid receipt to be eligible for the buyback scheme.


A small rangoli pattern, which is typically a lotus flower with eight petals, is drawn on the Pooja altar where the idol is placed. Prepare sweets – Finish the preparation of any sweet or savory on the previous day of the Pooja itself to avoid any last minute hassles.
17/09/2018 · Prepare the kalash the night before you celebrate Varalakshmi since the rituals start in the morning. If you're draping a saree around the idol, you can buy a saree that comes pleated already so you don't have to do it yourself.


text:
Domestic Abuse (34)
Grandparents' Rights (49)
Guardian Ad Litem (27)
Modification of Judgment (95)
Paternity (40)
Protective Placement (52)
Termination of Parental Rights (55)
Uniform Child Custody Jurisdiction Act and Enforcement Act (76)
Show Category 'Protective Placement'
Bennett Law Offices
8A W Davenport St, Rhinelander, United States
Vue Legal
155 Wabasha St S, Suite 110, St Paul, United States
He is the founder of Vue Legal, LLC. He received his Bachelors degree in Chemistry and Philosophy from St. Olaf College and his Juris Doctor degree from William Mitchell College of Law. He was admitted to practice law in the State of Minnesota in 2007, and in the U.S. District Court-District of MN and the U.S. Tax Court in 2008. Mr. Vue is also a qualified Alternative Dispute Resolution neutral. Prior to his legal career, Mr. Vue worked as a research chemist for the U.S. Dept of Interior.
Sjoquist Law LLC
1 West Water Street, Ste. 275, Saint Paul, United States
My many roles in the system, my passion for the law, my competitive spirit and my compassion for people all work to your advantage. I know the law and its limits. I am familiar with the Twin Cities judges who will hear your case. Family law is all I do and I take my job seriously because of what's at stake for you.
Sellnow Law Office PA
229 Central Avenue, Long Prairie, United States
With 39 years of combined service to Central Minnesota, we pride ourselves on common sense advice and pragmatic action. We maximize client resources advising the pursuit of actions most likely to generate client success. We are prepared to meet your expectations for strong, ethical representation at a fair price.
Legal Recourse LLC
3616 W National Ave, Suite 201, Milwaukee, United States
Bachelani Law Office
8609 Lyndale Avenue South, Ste., 209 D, Bloomington, United States
Understanding, compassion and devotion towards clientele is important. With strong dedication and a will that never quits, Attorney Bachelani will represent your interests with utmost skill. Finding solutions to complex problems is what he strives for, everyday for every client, with every issue that is brought to him.
Arami Law Office P C
53 West Jackson Boulevard, Ste. 1633, Chicago, United States
Chicago Attorneys Providing Exceptional Representation in Family and Personal Injury Law Effective Legal Representation – Inside and Outside the Courtroom
Atty Barnes LLC
353 Forest Grove Dr, Ste. 200, Pewaukee, United States
Figuring out where to start can be a challenge when you are dealing with the stress of a legal issue. Att'y Barnes is focused on providing helpful information that enables you to regain control of your life.
Robert L Caplan Attorney At Law Inc
90 North Nelson Road, Columbus, United States
When you have a legal problem involving your family members or your finances, it is critical to consult with an attorney who can offer you the friendly and personal service you deserve and quality legal advocacy you need to effectively resolve it. We represent individuals and families in Columbus and throughout the surrounding Ohio cities in complicated bankruptcy and family law matters.
PIETROWSKI LAW PRACTICE PLLC
113 Robins Street, Tupelo, United States
Full Service Law Firm. DUI, Family Law & Criminal Matters: Our team is dedicated to excellence, responsiveness, caring, and always with a sense of humble appreciation for the trust expected from us by those who call upon our services. Serving the North Mississippi area. We have offices located in Oxford and Tupelo, Mississippi.
Arami Law Office, PC
53 West Jackson Boul 53 West Jackson Boulevard, Suite 1633, Chicago, United States
Arthur & Hoffman LLC
310 E Buffalo St., Ste. 160, Milwaukee, United States
Arthur & Hoffman LLC the competent and respected law firm serving the greater Milwaukee area and surrounding counties. For the present legal challenge you face, and for your concerns of the future of your family and business we can help.
Bednarek Law Office LLC
10 East Doty Street, Ste. 617, Madison, United States
At Bednarek Law Office, LLC, we don't shy away from the fight. We are energized by the battle, by the confrontation that is often necessary to stand up for our clients, and for their rights.
6940 Ste 400 O Street, Lincoln, United States
Berry Law Firm's dedication to the rights and well being of Nebraskans and Veterans goes beyond the courtroom. Berry Law is proud to sponsor and participate in a number of activities benefiting the lives of military service members and every Nebraskan who values the warrior ethos.
Brau Law Office
111 East Washington Street, Mount Pleasant, United States
Experienced, focused, representation, for the help you deserve, in resolving some of the most important matters you will ever deal with. We treat these matters with the care they deserve. You deserve clear explanations and realistic expectations at each step of the process. Serving Henry, Washington, Jefferson, Lee, and Des Moines counties.
Brimley Family Law LLC
43 East street 200 North St, Provo, United States
Hiring an experienced and knowledgeable attorney can take a lot of the guess work, stress and frustration out of the divorce process. An attorney can assist you with obtaining the facts, pursuing your goals, managing your expectations, and ultimately obtaining a result that is palpable for all individuals involved. Serving Clients in Utah County and Surrounding Counties
Caffee Law Office
3409 Golf Rd, Suite A, Eau Claire, United States
Gietman Law
133 Wisconsin Ave, Brillion, United States
Hoffman Law PLLC
My firm's mission is to provide clients with legal services that soar above their expectations.
Contact: Brian F. Bennett Address: 8A W Davenport St, Rhinelander, Wisconsin, United States
Contact: Chue Vue Address: 155 Wabasha St S, Suite 110, St Paul, Minnesota, United States
Phone: 651-200-3961 Fax: 651-925-0081	Mobile: 651-283-7090
Contact: Geri C Sjoquist Address: 1 West Water Street, Ste. 275, Saint Paul, Minnesota, United States
I guide you through the important decisions and legal proceedings, finding agreement where we can and fighting where we must. I know the law and its limits. I am familiar with the Twin Cities judges who will hear your case. I am effective in the court, we also can explore alternative resolutions.	» More Info
Contact: Jason R Sellnow Address: 229 Central Avenue, Long Prairie, Minnesota, United States
We are a multigenerational law firm serving Central Minnesota including all of Todd County, Morrison County, Wadena County, Douglas County, Otter Tail County, Cass County, Stearns County and Crow Wing counties. Our offices in Long Prairie and Staples serve all of central Minnesota.	» More Info
Contact: Yeng Kong Lee Address: 3616 W National Ave, Suite 201, Milwaukee, Wisconsin, United States
Contact: Ahmed Bachelani Address: 8609 Lyndale Avenue South, Ste., 209 D, Bloomington, Minnesota, United States
Ahmed helps clients in areas of criminal misdemeanors, divorce, credit situations and estate planning. Ahmed Bachelani wants to know you and know the details about your case so that he may make the best arguments and represent you zealously.	» More Info
Contact: Kourosh Arami Address: 53 West Jackson Boulevard, Ste. 1633, Chicago, Illinois, United States
The Arami Law Office, P.C. is dedicated to providing experienced, knowledgeable, and timely legal advice and assistance to clients who are struggling with the physical and emotional pain caused by divorce, personal injury, or medical malpractice. Chicago attorney Kourosh Arami has fought for justice	» More Info
Contact: Atty. Priya Barnes Address: 353 Forest Grove Dr, Ste. 200, Pewaukee, Wisconsin, United States
Family law, including divorce, custody, placement, paternity, and more. Business law, including startup, intellectual property, contracts, litigation, and more.	» More Info
Contact: Robert L. Caplan Address: 90 North Nelson Road, Columbus, Ohio, United States
At Robert L. Caplan Attorney at Law, we are committed to our clients. Founder and managing lawyer Robert L. Caplan has spent nearly two decades helping individuals struggling with challenging legal issues, from overwhelming debt and home foreclosures to divorce and child custody matters.	» More Info
Contact: Amy Pietrowski Address: 113 Robins Street, Tupelo, Mississippi, United States
Tupelo and Oxford's DUI Law firm in your corner. Family Law / DUI / Criminal Defense » More Info
Contact: Kourosh Arami Address: 53 West Jackson Boul 53 West Jackson Boulevard, Suite 1633, Chicago, Illinois, United States
Phone: 3122121399 Fax: 3122121398
Arami Law Office is the premier Chicago divorce attorney that has the experience and understanding you need when it pertains to family law issues or in need of an injury attorney » More Info
Contact: Robert McMillan Arthur Address: 310 E Buffalo St., Ste. 160, Milwaukee, Wisconsin, United States
Phone: (414) 501-2370 x1 Fax: (414) 501-2382
Resolve issues regarding divorce and the impact on the family. Planning for business venture(s) and current operations. Counsel for individuals, groups, and organizations in the Entertainment Industry.	» More Info
Contact: Amber Address: 10 East Doty Street, Ste. 617, Madison, Wisconsin, United States
We defend people accused of criminal and drunk driving offenses, in municipal, state (circuit court) and federal courts. We represent people charged with misdemeanor and felony offenses, and any level of drunk driving or other related traffic offenses. We are "Child Rights" advocates at all levels>	» More Info
Contact: Riley Northrup Address: 6940 Ste 400 O Street, Lincoln, Nebraska, United States
Beyond criminal defense, our trial attorneys also represent the needs of personal injury claims, business formation, management and litigation, real estate litigation, elder law, and other civil litigation. Our Veterans Disability practice has represented Veterans in all 50 states as a core focus.	» More Info
Contact: Patrick C. Brau Address: 111 East Washington Street, Mount Pleasant, Iowa, United States
The legal issues we help you resolve are Divorce, Child Custody, Adoption, Juvenile Law, General Real Estate Transactions, and Municipal Law. We are also a Henry Country certified Divorce Mediator. You deserve clear explanations and realistic expectations at each step of the process. » More Info
Contact: Mathew C. Brimley Address: 43 East street 200 North St, Provo, Utah, United States
The Firm exclusively handles divorce cases including property division, spousal maintenance (alimony), child custody (legal decision-making), and child support, as well as other family law matters such as paternity, legal separation and prenuptial agreements.	» More Info
Contact: Atty. Mandy L. Caffee Address: 3409 Golf Rd, Suite A, Eau Claire, Wisconsin, United States
Contact: Rebecca L. Gietman Address: 133 Wisconsin Ave, Brillion, Wisconsin, United States
Contact: Karen Hoffman Address: 243 Central Avenue, Long Prairie, Minnesota, United States
I practice mostly in Todd County, traveling to practice in Douglas, Morrison, Stearns, Wadena counties, and other counties as needed	» More Info


text:
Q: Domain entities - automatic ids? Domain entities are always unique and therefore need an identifier that's unique accross the domain. A common approach is to decorate a domain entity with a id and leave it open to the underlying architectural technology to set that id.
public MyDomainEntity {
    int Id { get; set; }
}

Mostly, domain entities get stored in a database that is capable of auto incrementing ids. Or we use a ORM mapper that allowes to generate ids (UUIDs etc.)
However, I find this approach very problematic. Who guarantees that the e.g. database is capable of generating an id? And who ensures that the automatic id fits the requirements of the domain?
If I want to specify how entities are being made unique and how new ids are being generated - where do I implement this? On the repository implementations? On UnitOfWorks?

A: since an id is something technical, there should not be any requirements of the domain towards id generation.
If you want to control id generation, then I think the repository would be the best place to do it.

redpajama_set_name: RedPajamaStackExchange


Police have charged a 48-year-old Mountain View man in connection to a murder that occurred earlier this year in Puna.
At 5 p.m. Friday afternoon (October 5), after conferring with prosecutors, detectives from the Area I, Criminal Investigations Section charged Walter Boyd Bremmer with second-degree murder, first-degree burglary and use of a firearm in commission of a separate felony. He was held without bail in the police cellblock and is scheduled to make his initial court appearance on Monday ( October 8).
On January 28, the body of 52-year-old Robert John Leong was found at a residence in the Eden Roc Subdivision. An autopsy determined that the victim died from a combination of ligature strangulation and a brain injury from a gunshot wound.
Police continue to ask that anyone with information on this investigation to contact Detective Ernest Matsumoto at 961-2379 or ematsumoto@co.hawaii.hi.us or Detective Derek Morimoto at 961-2380 or dmorimoto@co.hawaii.hi.us. Callers may also dial the police non emergency line at 935-3311.


text:
package sccmatching

import (
	"testing"

	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	kapi "k8s.io/kubernetes/pkg/apis/core"

	securityv1 "github.com/openshift/api/security/v1"
	"github.com/openshift/library-go/pkg/security/uid"
)

func TestAssignSecurityContext(t *testing.T) {
	// set up test data
	// scc that will deny privileged container requests and has a default value for a field (uid)
	var uid int64 = 9999
	fsGroup := int64(1)
	scc := &securityv1.SecurityContextConstraints{
		ObjectMeta: metav1.ObjectMeta{
			Name: "test scc",
		},
		SELinuxContext: securityv1.SELinuxContextStrategyOptions{
			Type: securityv1.SELinuxStrategyRunAsAny,
		},
		RunAsUser: securityv1.RunAsUserStrategyOptions{
			Type: securityv1.RunAsUserStrategyMustRunAs,
			UID:  &uid,
		},

		// require allocation for a field in the psc as well to test changes/no changes
		FSGroup: securityv1.FSGroupStrategyOptions{
			Type: securityv1.FSGroupStrategyMustRunAs,
			Ranges: []securityv1.IDRange{
				{Min: fsGroup, Max: fsGroup},
			},
		},
		SupplementalGroups: securityv1.SupplementalGroupsStrategyOptions{
			Type: securityv1.SupplementalGroupsStrategyRunAsAny,
		},
	}
	provider, err := NewSimpleProvider(scc)
	if err != nil {
		t.Fatalf("failed to create provider: %v", err)
	}

	createContainer := func(priv bool) kapi.Container {
		return kapi.Container{
			SecurityContext: &kapi.SecurityContext{
				Privileged: &priv,
			},
		}
	}

	testCases := map[string]struct {
		pod            *kapi.Pod
		shouldValidate bool
		expectedUID    *int64
	}{
		"pod and container SC is not changed when invalid": {
			pod: &kapi.Pod{
				Spec: kapi.PodSpec{
					SecurityContext: &kapi.PodSecurityContext{},
					Containers:      []kapi.Container{createContainer(true)},
				},
			},
			shouldValidate: false,
		},
		"must validate all containers": {
			pod: &kapi.Pod{
				Spec: kapi.PodSpec{
					// good pod and bad pod
					SecurityContext: &kapi.PodSecurityContext{},
					Containers:      []kapi.Container{createContainer(false), createContainer(true)},
				},
			},
			shouldValidate: false,
		},
		"pod validates": {
			pod: &kapi.Pod{
				Spec: kapi.PodSpec{
					SecurityContext: &kapi.PodSecurityContext{},
					Containers:      []kapi.Container{createContainer(false)},
				},
			},
			shouldValidate: true,
		},
	}

	for i := 0; i < 2; i++ {
		for k, v := range testCases {
			v.pod.Spec.Containers, v.pod.Spec.InitContainers = v.pod.Spec.InitContainers, v.pod.Spec.Containers

			errs := AssignSecurityContext(provider, v.pod, nil)
			if v.shouldValidate && len(errs) > 0 {
				t.Errorf("%s expected to validate but received errors %v", k, errs)
				continue
			}
			if !v.shouldValidate && len(errs) == 0 {
				t.Errorf("%s expected validation errors but received none", k)
				continue
			}
		}
	}
}

func TestRequiresPreAllocatedUIDRange(t *testing.T) {
	var uid int64 = 1

	testCases := map[string]struct {
		scc      *securityv1.SecurityContextConstraints
		requires bool
	}{
		"must run as": {
			scc: &securityv1.SecurityContextConstraints{
				RunAsUser: securityv1.RunAsUserStrategyOptions{
					Type: securityv1.RunAsUserStrategyMustRunAs,
				},
			},
		},
		"run as any": {
			scc: &securityv1.SecurityContextConstraints{
				RunAsUser: securityv1.RunAsUserStrategyOptions{
					Type: securityv1.RunAsUserStrategyRunAsAny,
				},
			},
		},
		"run as non-root": {
			scc: &securityv1.SecurityContextConstraints{
				RunAsUser: securityv1.RunAsUserStrategyOptions{
					Type: securityv1.RunAsUserStrategyMustRunAsNonRoot,
				},
			},
		},
		"run as range": {
			scc: &securityv1.SecurityContextConstraints{
				RunAsUser: securityv1.RunAsUserStrategyOptions{
					Type: securityv1.RunAsUserStrategyMustRunAsRange,
				},
			},
			requires: true,
		},
		"run as range with specified params": {
			scc: &securityv1.SecurityContextConstraints{
				RunAsUser: securityv1.RunAsUserStrategyOptions{
					Type:        securityv1.RunAsUserStrategyMustRunAsRange,
					UIDRangeMin: &uid,
					UIDRangeMax: &uid,
				},
			},
		},
	}

	for k, v := range testCases {
		result := requiresPreAllocatedUIDRange(v.scc)
		if result != v.requires {
			t.Errorf("%s expected result %t but got %t", k, v.requires, result)
		}
	}
}

func TestRequiresPreAllocatedSELinuxLevel(t *testing.T) {
	testCases := map[string]struct {
		scc      *securityv1.SecurityContextConstraints
		requires bool
	}{
		"must run as": {
			scc: &securityv1.SecurityContextConstraints{
				SELinuxContext: securityv1.SELinuxContextStrategyOptions{
					Type: securityv1.SELinuxStrategyMustRunAs,
				},
			},
			requires: true,
		},
		"must with level specified": {
			scc: &securityv1.SecurityContextConstraints{
				SELinuxContext: securityv1.SELinuxContextStrategyOptions{
					Type: securityv1.SELinuxStrategyMustRunAs,
					SELinuxOptions: &corev1.SELinuxOptions{
						Level: "foo",
					},
				},
			},
		},
		"run as any": {
			scc: &securityv1.SecurityContextConstraints{
				SELinuxContext: securityv1.SELinuxContextStrategyOptions{
					Type: securityv1.SELinuxStrategyRunAsAny,
				},
			},
		},
	}

	for k, v := range testCases {
		result := requiresPreAllocatedSELinuxLevel(v.scc)
		if result != v.requires {
			t.Errorf("%s expected result %t but got %t", k, v.requires, result)
		}
	}
}

func TestRequiresPreallocatedSupplementalGroups(t *testing.T) {
	testCases := map[string]struct {
		scc      *securityv1.SecurityContextConstraints
		requires bool
	}{
		"must run as": {
			scc: &securityv1.SecurityContextConstraints{
				SupplementalGroups: securityv1.SupplementalGroupsStrategyOptions{
					Type: securityv1.SupplementalGroupsStrategyMustRunAs,
				},
			},
			requires: true,
		},
		"must with range specified": {
			scc: &securityv1.SecurityContextConstraints{
				SupplementalGroups: securityv1.SupplementalGroupsStrategyOptions{
					Type: securityv1.SupplementalGroupsStrategyMustRunAs,
					Ranges: []securityv1.IDRange{
						{Min: 1, Max: 1},
					},
				},
			},
		},
		"run as any": {
			scc: &securityv1.SecurityContextConstraints{
				SupplementalGroups: securityv1.SupplementalGroupsStrategyOptions{
					Type: securityv1.SupplementalGroupsStrategyRunAsAny,
				},
			},
		},
	}
	for k, v := range testCases {
		result := requiresPreallocatedSupplementalGroups(v.scc)
		if result != v.requires {
			t.Errorf("%s expected result %t but got %t", k, v.requires, result)
		}
	}
}

func TestRequiresPreallocatedFSGroup(t *testing.T) {
	testCases := map[string]struct {
		scc      *securityv1.SecurityContextConstraints
		requires bool
	}{
		"must run as": {
			scc: &securityv1.SecurityContextConstraints{
				FSGroup: securityv1.FSGroupStrategyOptions{
					Type: securityv1.FSGroupStrategyMustRunAs,
				},
			},
			requires: true,
		},
		"must with range specified": {
			scc: &securityv1.SecurityContextConstraints{
				FSGroup: securityv1.FSGroupStrategyOptions{
					Type: securityv1.FSGroupStrategyMustRunAs,
					Ranges: []securityv1.IDRange{
						{Min: 1, Max: 1},
					},
				},
			},
		},
		"run as any": {
			scc: &securityv1.SecurityContextConstraints{
				FSGroup: securityv1.FSGroupStrategyOptions{
					Type: securityv1.FSGroupStrategyRunAsAny,
				},
			},
		},
	}
	for k, v := range testCases {
		result := requiresPreallocatedFSGroup(v.scc)
		if result != v.requires {
			t.Errorf("%s expected result %t but got %t", k, v.requires, result)
		}
	}
}

func TestParseSupplementalGroupAnnotation(t *testing.T) {
	tests := map[string]struct {
		groups     string
		expected   []uid.Block
		shouldFail bool
	}{
		"single block slash": {
			groups: "1/5",
			expected: []uid.Block{
				{Start: 1, End: 5},
			},
		},
		"single block dash": {
			groups: "1-5",
			expected: []uid.Block{
				{Start: 1, End: 5},
			},
		},
		"multiple blocks": {
			groups: "1/5,6/5,11/5",
			expected: []uid.Block{
				{Start: 1, End: 5},
				{Start: 6, End: 10},
				{Start: 11, End: 15},
			},
		},
		"dash format": {
			groups: "1-5,6-10,11-15",
			expected: []uid.Block{
				{Start: 1, End: 5},
				{Start: 6, End: 10},
				{Start: 11, End: 15},
			},
		},
		"no blocks": {
			groups:     "",
			shouldFail: true,
		},
	}
	for k, v := range tests {
		blocks, err := parseSupplementalGroupAnnotation(v.groups)

		if v.shouldFail && err == nil {
			t.Errorf("%s was expected to fail but received no error and blocks %v", k, blocks)
			continue
		}

		if !v.shouldFail && err != nil {
			t.Errorf("%s had an unexpected error %v", k, err)
			continue
		}

		if len(blocks) != len(v.expected) {
			t.Errorf("%s received unexpected number of blocks expected: %v, actual %v", k, v.expected, blocks)
		}

		for _, b := range v.expected {
			if !hasBlock(b, blocks) {
				t.Errorf("%s was missing block %v", k, b)
			}
		}
	}
}

func hasBlock(block uid.Block, blocks []uid.Block) bool {
	for _, b := range blocks {
		if b.Start == block.Start && b.End == block.End {
			return true
		}
	}
	return false
}

func TestGetPreallocatedFSGroup(t *testing.T) {
	ns := func() *corev1.Namespace {
		return &corev1.Namespace{
			ObjectMeta: metav1.ObjectMeta{
				Annotations: map[string]string{},
			},
		}
	}

	fallbackNS := ns()
	fallbackNS.Annotations[securityv1.UIDRangeAnnotation] = "1/5"

	emptyAnnotationNS := ns()
	emptyAnnotationNS.Annotations[securityv1.SupplementalGroupsAnnotation] = ""

	badBlockNS := ns()
	badBlockNS.Annotations[securityv1.SupplementalGroupsAnnotation] = "foo"

	goodNS := ns()
	goodNS.Annotations[securityv1.SupplementalGroupsAnnotation] = "1/5"

	tests := map[string]struct {
		ns         *corev1.Namespace
		expected   []securityv1.IDRange
		shouldFail bool
	}{
		"fall back to uid if sup group doesn't exist": {
			ns: fallbackNS,
			expected: []securityv1.IDRange{
				{Min: 1, Max: 1},
			},
		},
		"no annotation": {
			ns:         ns(),
			shouldFail: true,
		},
		"empty annotation": {
			ns:         emptyAnnotationNS,
			shouldFail: true,
		},
		"bad block": {
			ns:         badBlockNS,
			shouldFail: true,
		},
		"good sup group annotation": {
			ns: goodNS,
			expected: []securityv1.IDRange{
				{Min: 1, Max: 1},
			},
		},
	}

	for k, v := range tests {
		ranges, err := getPreallocatedFSGroup(v.ns)
		if v.shouldFail && err == nil {
			t.Errorf("%s was expected to fail but received no error and ranges %v", k, ranges)
			continue
		}

		if !v.shouldFail && err != nil {
			t.Errorf("%s had an unexpected error %v", k, err)
			continue
		}

		if len(ranges) != len(v.expected) {
			t.Errorf("%s received unexpected number of ranges expected: %v, actual %v", k, v.expected, ranges)
		}

		for _, r := range v.expected {
			if !hasRange(r, ranges) {
				t.Errorf("%s was missing range %v", k, r)
			}
		}
	}
}

func TestGetPreallocatedSupplementalGroups(t *testing.T) {
	ns := func() *corev1.Namespace {
		return &corev1.Namespace{
			ObjectMeta: metav1.ObjectMeta{
				Annotations: map[string]string{},
			},
		}
	}

	fallbackNS := ns()
	fallbackNS.Annotations[securityv1.UIDRangeAnnotation] = "1/5"

	emptyAnnotationNS := ns()
	emptyAnnotationNS.Annotations[securityv1.SupplementalGroupsAnnotation] = ""

	badBlockNS := ns()
	badBlockNS.Annotations[securityv1.SupplementalGroupsAnnotation] = "foo"

	goodNS := ns()
	goodNS.Annotations[securityv1.SupplementalGroupsAnnotation] = "1/5"

	tests := map[string]struct {
		ns         *corev1.Namespace
		expected   []securityv1.IDRange
		shouldFail bool
	}{
		"fall back to uid if sup group doesn't exist": {
			ns: fallbackNS,
			expected: []securityv1.IDRange{
				{Min: 1, Max: 5},
			},
		},
		"no annotation": {
			ns:         ns(),
			shouldFail: true,
		},
		"empty annotation": {
			ns:         emptyAnnotationNS,
			shouldFail: true,
		},
		"bad block": {
			ns:         badBlockNS,
			shouldFail: true,
		},
		"good sup group annotation": {
			ns: goodNS,
			expected: []securityv1.IDRange{
				{Min: 1, Max: 5},
			},
		},
	}

	for k, v := range tests {
		ranges, err := getPreallocatedSupplementalGroups(v.ns)
		if v.shouldFail && err == nil {
			t.Errorf("%s was expected to fail but received no error and ranges %v", k, ranges)
			continue
		}

		if !v.shouldFail && err != nil {
			t.Errorf("%s had an unexpected error %v", k, err)
			continue
		}

		if len(ranges) != len(v.expected) {
			t.Errorf("%s received unexpected number of ranges expected: %v, actual %v", k, v.expected, ranges)
		}

		for _, r := range v.expected {
			if !hasRange(r, ranges) {
				t.Errorf("%s was missing range %v", k, r)
			}
		}
	}
}

func hasRange(rng securityv1.IDRange, ranges []securityv1.IDRange) bool {
	for _, r := range ranges {
		if r.Min == rng.Min && r.Max == rng.Max {
			return true
		}
	}
	return false
}


Wedding Day card is elegant and beautiful. The ivory satin finish to the card puts it in a league above most others and it is suitable for just about anyone celebrating their special day. Definitely one for the drawer!
Simple and elegant are the words best used to describe this collection. The board is beautiful and has a luxurious, woven finish which makes it feel like silk.