GoldenEye

***GoldenEye*** is a 1995 spy film, the seventeenth in the *James Bond* series produced by Eon Productions, and the first to star Pierce Brosnan as the fictional MI6 agent James Bond. It was directed by Martin Campbell and is the first in the series not to utilize any story elements from the works of novelist Ian Fleming. This is also the first *James Bond* film not produced by Albert R. Broccoli, following his stepping down from Eon Productions and replacement by his daughter, Barbara Broccoli (along with Michael G. Wilson, although Albert was still involved in the film as consultant producer, which being his final involvement on *James Bond* film and also during his career, before his death in 1996). The story was conceived and written by Michael France, with later collaboration by other writers. In the film, Bond fights to prevent a rogue ex-MI6 agent (Sean Bean) from using a satellite weapon against London to cause a global financial meltdown.

The film was released after a six-year hiatus in the series caused by legal disputes, during which Timothy Dalton resigned from the role of James Bond and was replaced by Brosnan. M was also recast, with actress Judi Dench becoming the first woman to portray the character, replacing Robert Brown. The role of Miss Moneypenny was also recast, with Caroline Bliss being replaced by Samantha Bond; Desmond Llewelyn was the only actor to reprise his role, as Q. It was the first Bond film made after the dissolution of the Soviet Union and the end of the Cold War, which provided a background for the plot. Principal photography for *GoldenEye* took place in the UK, Russia, Monte Carlo and Puerto Rico; it was the inaugural film production to be shot at Leavesden Studios. The first Bond film to use computer-generated imagery (CGI), *GoldenEye* was also the final film of special effects supervisor Derek Meddings's career, and was dedicated to his memory.

The film accumulated a worldwide gross of over US$350 million, considerably better than Dalton's films, without taking inflation into account. It received positive reviews, with critics viewing Brosnan as a definite improvement over his predecessor. It also received award nominations for "Best Special Visual Effects" and "Best Sound" from the British Academy of Film and Television Arts.

The name "GoldenEye" pays homage to James Bond's creator, Ian Fleming. While working for British Naval Intelligence as a lieutenant commander, Fleming liaised with the Naval Intelligence Division to monitor developments in Spain after the Spanish Civil War, in an operation codenamed Operation Goldeneye. Fleming used the name of this operation for his estate in Oracabessa, Jamaica.

## Plot

In 1986, MI6 agents James Bond and Alec Trevelyan infiltrate a Soviet chemical weapons facility in Arkhangelsk. While Trevelyan is caught and assumed killed by Colonel Arkady Grigorovich Ourumov, the facility's commanding officer, Bond manages to destroy the site before escaping.

While undergoing an assessment nine years later, after the dissolution of the Soviet Union, Bond attempts to prevent Xenia Onatopp, a member of the Janus crime syndicate, from stealing a Eurocopter Tiger attack helicopter during a military demonstration in Monte Carlo, but is unable to prevent the theft. Returning to London, Bond oversees MI6 staff monitoring an incident in Severnaya, Siberia, after the stolen helicopter turns up at a radar facility there. An electromagnetic pulse blast suddenly hits the site, destroying it and Russian fighter aircraft, while knocking out all satellite systems in orbit above.

The newly appointed M assigns Bond to investigate, after it is determined the blast came from a Soviet-era satellite armed with a nuclear electromagnetic pulse space-based weapon, codenamed "GoldenEye". Although Janus is suspected of initiating the attack, Bond suspects Ourumov, now a general, had involvement due to the weapon system requiring high-level military access. Travelling to Saint Petersburg, Bond is advised by his CIA contact Jack Wade to meet former KGB agent-turned-gangster Valentin Zukovsky and have him arrange a meeting with Janus. Escorted to the meeting by Onatopp, Bond discovers that Janus is led by Trevelyan, having faked his death at Arkhangelsk, and learns he is descended from the Lienz Cossacks who were repatriated to the Soviet Union after collaboration with the Axis powers during World War II.

Learning that Trevelyan seeks revenge against Britain for betraying his parents, Bond is sedated before he can kill him, and trapped in the stolen Tiger alongside Natalya Simonova, a survivor of the Severnaya attack. Despite escaping before the helicopter's destruction, the pair are captured by Russian troops and taken before Russian Minister of Defence Dimitri Mishkin for interrogation. The heated argument between the men leads Natalya to prove Ourumov's involvement in the use of GoldenEye, revealing that fellow programmer Boris Grishenko survived along with her, and is now working for Janus in operating a second GoldenEye satellite. Before Mishkin can act on the information, Ourumov arrives and kills him. Bond escapes, pursuing after him to rescue Natalya. The chase leads to a missile train used by Janus, in which Bond kills Ourumov, before escaping from the train with Natalya before Trevelyan destroys it.

Bond and Natalya travel to Cuba, after Boris is traced to a location within the island's jungles. While flying over the area, the pair are shot down. Onatopp attacks them after they crash land, but Bond kills her during the fight. The pair soon uncover a hidden base beneath a large lake, concealing a satellite dish, and proceed to infiltrate it. Bond is captured while trying to rig explosives to destroy the base, and learns from Trevelyan that he intends to use GoldenEye to devastate London in order to conceal the theft of financial records from the Bank of England. While Natalya is captured as well, she manages to hack into the satellite and reprogram it to initiate atmospheric re-entry and thus destroy itself. When Boris loses his cool trying to undo her programming, Bond uses the moment to trigger a grenade, concealed in a pen, to allow him and Natalya to escape.

To prevent Boris regaining control of the satellite, Bond proceeds to sabotage the dish's antennae by jamming its gears. Trevelyan tries to stop him, and the ensuing fight between the two culminates in him being dangled below the antennae. When Trevelyan asks Bond if he is killing him for England, Bond admits it is for himself before dropping Trevelyan to the ground, mortally wounding him. Natalya soon rescues Bond in a commandeered helicopter, moments before the antennae malfunctions and explodes, destroying the base and killing its personnel, with Trevelyan killed by falling debris, and Boris killed by ruptured liquid nitrogen canisters. After landing somewhere safe, the pair prepare to enjoy some solitude together, but are interrupted by the arrival of Wade and a team of U.S. Marines, who escort them to Guantanamo base.

## Cast

* Pierce Brosnan as James Bond (007), an MI6 officer assigned to stop the Janus crime syndicate from acquiring "GoldenEye," a clandestine satellite weapon designed and launched by the Soviets during the Cold War.
* Sean Bean as Alec Trevelyan (006), initially another 00 officer and Bond's friend, he fakes his death at Arkhangelsk and then establishes the Janus crime syndicate over the following nine years.
* Izabella Scorupco as Natalya Simonova, a programmer at the Severnaya lab. She survives the GoldenEye attack on its own control centre.
* Famke Janssen as Xenia Onatopp, a Georgian fighter pilot and Trevelyan's henchwoman. A sadistic lust murderer, she enjoys torturing her enemies by asphyxiating them between her thighs.
* Joe Don Baker as Jack Wade, a veteran CIA officer on the same mission as Bond.
* Robbie Coltrane as Valentin Zukovsky, a Russian gangster and ex-KGB officer through whom Bond arranges a meeting with Janus.
* Tchéky Karyo as Dimitri Mishkin, the Russian Defence Minister.
* Gottfried John as Colonel Arkady Grigorovich Ourumov, a Hero of the Soviet Union, Commander of Russia's Space Division. He is secretly an agent of Janus who abuses his authority and position to obtain control over the GoldenEye.
* Alan Cumming as Boris Grishenko, a geeky computer programmer at Severnaya, later revealed to be an affiliate of Janus.
* Michael Kitchen as Bill Tanner, M's chief of staff.
* Serena Gordon as Caroline, an MI6 psychological and psychiatric evaluator whom Bond seduces at the beginning of the film
* Desmond Llewelyn as Q, the head of Q Branch (research and development division of the British Secret Service).
* Samantha Bond as Miss Moneypenny, M's secretary.
* Judi Dench as M, the head of MI6 and Bond's superior.
* Minnie Driver as Irina

## Production

### Prelude

Following the release of *Licence to Kill* in July 1989, pre-production work for the seventeenth film in the *James Bond* series, the third to star Timothy Dalton (fulfilling his three-film contract), began in May 1990. A poster for the then-upcoming movie was even featured on the Carlton Hotel during the 1990 Cannes Film Festival. In August, *The Sunday Times* reported that producer Albert R. Broccoli had parted company with writer Richard Maibaum, who had worked on the scripts of all but three *Bond* films so far, and director John Glen, responsible for the previous five instalments of the series. Broccoli listed among the possible directors John Landis, Ted Kotcheff, Roger Spottiswoode, and John Byrum. Broccoli's stepson Michael G. Wilson contributed a script, and *Wiseguy* co-producer Alfonse Ruggiero Jr. was hired to rewrite. Production was set to start in 1990 in Hong Kong, for a release in late 1991. It would have featured a terrorist attack on a British nuclear facility in Scotland threatening to cause World War III, Bond traveling to East Asia to investigate corrupt businessman Sir Henry Lee Ching along with jewel thief Connie Webb, and Bond fighting his former mentor Denholm Crisp. It also would have featured the Chinese Ministry of State Security. The script was further rewritten by William Osborne and William Davies. After the Gulf War, they moved the opening scene from a cyberattack on Scotland to Bond failing a mission in Libya. The film then would have focused on a high-tech stealth fighter being stolen by a Chinese People's Liberation Army general, a British industrialist, and American mobsters in order to stage a nuclear attack and coup d'état against Mainland China while leaving the industrialist in control of Hong Kong.

Dalton declared in a 2010 interview that the script was ready and "we were talking directors" before the project entered development hell caused by legal problems between Metro-Goldwyn-Mayer, parent company of the series' distributor United Artists, and Broccoli's Danjaq, owners of the *Bond* film rights. In 1990, MGM/UA was to be sold for $1.5 billion to Qintex, an Australian-American financial services company that had begun making television broadcast and entertainment purchases. When Qintex couldn't provide a $50 million letter of credit, the deal fell apart. Giancarlo Parretti, CEO of a company called Pathé Entertainment (unrelated to the French studio Pathé) quickly moved in to buy MGM/UA for $1.2 billion and merged the companies to create MGM-Pathé Communications. Parretti intended to sell off the distribution rights of the studio's catalogue so he could collect advance payments to finance the buyout. This included international broadcasting rights to the 007 library at cut-rate prices, leading Danjaq to sue, alleging the licensing violated the *Bond* distribution agreements the company made with United Artists in 1962, while denying Danjaq a share of the profits. Countersuits were filed. When asked what he would do following resolution of the lawsuits, Dalton told Broccoli that it was unlikely that he would continue in the role.

Paretti's behavior led to the bankruptcy of MGM-Pathé and additional lawsuits eventually resulted in a foreclosure by financial backer Crédit Lyonnais in 1992. The *Bond* rights lawsuits were settled in December 1992, and the renamed Metro-Goldwyn-Mayer, now run by a Crédit Lyonnais subsidiary, began to explore further development of *Bond 17* with Danjaq in 1993. Dalton was still Broccoli's choice to play Bond, but the star's original seven-year contract with Danjaq expired in 1993. Dalton has stated that the delay of his third film effectively ended the contract in 1990.

### Pre-production and writing

In May 1993, MGM announced a seventeenth *James Bond* film was back in the works, to be based on a screenplay by Michael France. France studied for his script by traveling to Russia to interview former KGB agents. With Broccoli's health deteriorating (he died seven months after the release of *GoldenEye*), his daughter Barbara Broccoli described him as taking "a bit of a back seat" in the film's production. Barbara and Michael G. Wilson took the lead roles in production while Albert Broccoli oversaw the production of *GoldenEye* as a consulting producer, credited as "presenter". Wilson wanted to frame the film in the post-Cold War era and the aftermath of the collapse of the Soviet Union, when there were concerns of the proliferation of weapons of mass destruction. Broccoli contacted Dalton to ask again if he would come back and now found him open to the idea.

In August 1993, France had turned in his first draft, and continued to work on the script.[*citation needed*] In further discussion with Broccoli, Dalton expressed excitement over taking the best elements of his previous two films and combining them as a basis for one final film. Broccoli stressed that, after the long gap without a film, Dalton could not come back and just do a single film but needed to return for multiple films. Despite France's screenplay being completed by January, production was pushed back with no concrete start. In April 1994, Dalton officially resigned from the role. In a 2014 interview, Dalton revealed that he agreed with Broccoli's expectation but could not commit to appearing in four or five more films.

 File:PierceBrosnanCannesPhoto2.jpg
Further work was done on the screenplay throughout 1994. France's screenplay introduced the character of "Augstus Trevelyan" and the GoldenEye EMP satellite, and consisted of an cold open of an Aston Martin car chase aboard a high-speed train. However, Barbara Broccoli was concerned France's screenplay was still too unstructured and brought in Jeffrey Caine to rewrite it. Caine kept many of France's ideas but added the prologue prior to the credits and rewrote Trevelyan closer to his iteration in the final film. Kevin Wade polished the script and Bruce Feirstein added the finishing touches. In the film, the writing credit was shared by Caine and Feirstein, while France was credited with only the story, an arrangement he felt was unfair, particularly as he believed the additions made were not an improvement on his original version. Wade did not receive an official credit, but was acknowledged in the naming of Jack Wade, the CIA character he created.

While the story was not based on a work by Ian Fleming, the title *GoldenEye* traces its origins to the name of Fleming's Jamaican estate where he wrote the *Bond* novels. Fleming gave a number of origins for the name of his estate, including Carson McCullers' *Reflections in a Golden Eye* and Operation Goldeneye, a contingency plan Fleming himself developed during Second World War in case of a Nazi invasion through Spain.

Although released only six years after *Licence to Kill*, world politics had changed dramatically in the interim. *GoldenEye* was the first *James Bond* film to be produced since the fall of the Berlin Wall, the collapse of the Soviet Union, and the end of the Cold War, and there was doubt over the character's relevance in the modern world. Some in the film industry felt it would be "futile" for the *Bond* series to make a comeback, and that it was best left as "an icon of the past". The producers even thought of new concepts for the series, such as a period piece set in the 1960s, a female 007, or a black James Bond. Ultimately, they chose to return to the basics of the series, not following the sensitive and caring Bond of the Dalton films or the political correctness that started to permeate the decade. The film came to be seen as a successful revitalisation, and it effectively adapted the series for the 1990s. One of *GoldenEye*'s innovations includes the casting of a female M. In the film, the new M quickly establishes her authority, remarking that Bond is a "sexist, misogynist dinosaur" and a "relic of the Cold War". This is an early indication that Bond is portrayed as far less tempestuous than Timothy Dalton's Bond from 1989.

### Casting

To replace Dalton, the producers chose Pierce Brosnan, who had been prevented from succeeding Roger Moore in 1986 because of his contract to continue starring in the television series *Remington Steele*. He was introduced to the public at a press conference at the Regent Palace Hotel on 8 June 1994. Before negotiating with Brosnan, Mel Gibson, Hugh Grant, and Liam Neeson passed on the role. Broccoli and Campbell met Ralph Fiennes about taking the part. Paul McGann was the studio's original choice for it. He would have been cast as Bond only if Brosnan had turned down the role. Brosnan was paid $1.2 million for the film, out of a total budget of $60 million. Judi Dench, an English actress, was cast as M replacing Robert Brown, making this the first film of the series featuring a female M. The decision is widely believed to have been inspired by Stella Rimington having become head of MI5 in 1992. The character of Alec Trevelyan was originally scripted as "Augustus Trevelyan" and envisaged as an older character and a mentor figure to Bond. Anthony Hopkins and Alan Rickman were reportedly sought for the role but both turned it down. Sean Bean was subsequently cast and the character was rewritten as Bond's peer. John Rhys-Davies was asked to reprise his role as General Pushkin from *The Living Daylights* but declined, and the character was rewritten into Defense Minister Mishkin.

John Woo was approached as the director, and turned down the opportunity, but said he was honored by the offer. Michael Caton-Jones and Peter Medak were also considered. The producers then chose New Zealander Martin Campbell as the director. Brosnan later described Campbell as "warrior-like in his take on the piece" and that "there was a huge passion there on both our parts".

### Filming

Principal photography for the film began on 16 January 1995 and continued until 2 June. The producers were unable to film at Pinewood Studios, the usual studio for Bond films, because it had been reserved for *First Knight*. Instead, an old Rolls-Royce factory at Leavesden Aerodrome in Hertfordshire was converted into a new studio, dubbed Leavesden Studios. This process is shown on the 2006 DVD's special features.

 File:Arecibo radio telescope SJU 06 2019 7497.jpg
The bungee jump was filmed at the Contra Dam (also known as the Verzasca or Locarno Dam) in Ticino, Switzerland. The casino scenes and the Tiger helicopter's demonstration were shot in Monte Carlo. Reference footage for the tank chase was shot on location in Saint Petersburg and matched to the studio at Leavesden. The climactic scenes on the satellite dish were shot at Arecibo Observatory in Puerto Rico. The actual MI6 headquarters were used for external views of M's office. Some of the scenes in St. Petersburg were actually shot in London – the Epsom Downs Racecourse doubled as the airport – to reduce expenses and security concerns, as the second unit sent to Russia required bodyguards.

The French Navy provided full use of the frigate *La Fayette* and their newest helicopter, the Eurocopter Tiger, to the film's production team. The French government also allowed the use of Navy logos as part of the promotional campaign for it. However, the producers had a dispute with the French Ministry of Defence over Brosnan's opposition to French nuclear weapons testing and his involvement with Greenpeace; as a result, the French premiere of the film was cancelled.

The sequences involving the armoured train were filmed on the Nene Valley Railway, near Peterborough in England. The train was composed of a British Rail Class 20 diesel-electric locomotive and a pair of Mark 1 coaches, all three heavily disguised to resemble a Soviet armoured train.

### Effects

 File:Kleinman titlecredits.jpg
The film was the last one of special effects supervisor Derek Meddings, to whom it was dedicated. Meddings' major contribution was miniatures. It was also the first Bond film to use computer-generated imagery. Among the model effects are most external shots of Severnaya, the scene where Janus' train crashes into the tank, and the lake which hides the satellite dish, since the producers could not find a round lake in Puerto Rico. The climax in the satellite dish used scenes in Arecibo, a model built by Meddings' team and scenes shot with stuntmen in Britain.

Stunt car coordinator Rémy Julienne described the car chase between the Aston Martin DB5 and the Ferrari F355 as between "a perfectly shaped, old and vulnerable vehicle and a racecar." The stunt had to be meticulously planned as the cars are vastly different. Nails had to be attached to the F355 tyres to make it skid, and during one take of the sliding vehicles, the two cars collided.

The largest stunt sequence in the film was the tank chase, which took around six weeks to film, partly on location in St. Petersburg and partly on the old de Havilland runway at Leavesden. According to second-unit director Ian Sharp it was thought up by special effects supervisor Chris Corbould, during a pre-production meeting that lasted only ten minutes. Parts of the tank chase were filmed at the backlot of Leavesden, parts on location in St. Petersburg. The whole chase was storyboarded very carefully, said Sharp. A Russian T-54/T-55 tank, on loan from the East England Military Museum, was modified with the addition of fake explosive reactive armour panels. To avoid destroying the pavement on the city streets of St. Petersburg, the steel off-road tracks of the T-54/55 were replaced with the rubber-shoed tracks from a British Chieftain tank. The T-55 tank used in the film is now on permanent display at Old Buckenham Airfield, where the East England Military Museum is based.

For the confrontation between Bond and Trevelyan inside the antenna cradle, director Campbell decided to take inspiration from Bond's fight with Red Grant in *From Russia with Love*. Brosnan and Bean did all the stunts themselves, except for one take where one is thrown against the wall. Brosnan injured his hand while filming the extending ladder sequence, making producers delay his scenes and film the ones in Severnaya earlier.

The opening 220 m (720 ft)
220 m (720 ft) bungee jump at Arkhangelsk, shot at the Contra Dam in Switzerland and performed by Wayne Michaels, was voted the best movie stunt of all time in a 2002 Sky Movies poll, and set a record for the highest bungee jump off a fixed structure. The ending of the pre-credits sequence with Bond jumping after the aeroplane features Jacques Malnuit riding the motorcycle to the edge and jumping, and B.J. Worth diving after the plane – which was a working aircraft, with Worth adding that part of the difficulty of the stunt was the kerosene striking his face.

The fall of Communism in Russia is the main focus of the opening titles, designed by Daniel Kleinman (who took over from Maurice Binder after his death in 1991). They show the collapse and destruction of several structures associated with the Soviet Union, such as the red star, statues of Communist leaders—notably Joseph Stalin—and the hammer and sickle. In an interview, Kleinman said they were meant to be "a kind of story telling sequence" showing that "what was happening in Communist countries was Communism was falling down". According to producer Michael G. Wilson, some Communist parties protested against "Socialist symbols being destroyed not by governments, but by bikini-clad women", especially certain Indian Communist parties, which threatened to boycott the film.

### Product placement

Template:Further
The film was the first one bound by BMW's three-picture deal, so the producers were offered BMW's latest roadster, the BMW Z3. It was featured in the film months before its release, and a limited edition "007 model" sold out within a day of being available to order. As part of the car's marketing strategy, several Z3's were used to drive journalists from a complimentary meal at the Rainbow Room restaurant to its premiere at the Radio City Music Hall.

For the film, a convertible Z3 is equipped with the usual Q refinements, including a self-destruct feature and Stinger missiles behind the headlights. The Z3 does not have much screen time and none of the gadgets are used, which Martin Campbell attributed to the deal with BMW coming in the last stages of production. The Z3's appearance in the film is thought to be the most successful promotion through product placement in 1995. Ten years later, *The Hollywood Reporter* listed it as one of the most successful product placements in recent years. The article quoted Mary Lou Galician, head of media analysis and criticism at Arizona State University's Walter Cronkite School of Journalism and Mass Communication, as saying that the news coverage of Bond's switch from Aston Martin to BMW "generated hundreds of millions of dollars of media exposure for the movie and all of its marketing partners."

In addition, all computers in the film were provided by IBM, and in some scenes (such as the pen grenade scene towards the end), the OS/2 Warp splash screen can be seen on computer monitors. During the Q Lab scene, James Bond can be seen using an IBM ThinkPad laptop ignoring Q's instructions on the use of a leather belt modified with a piton gun. This moment wasn't present in early drafts of the film, but it is understood that director Martin Campbell had 007 fiddling with the keyboard of this computer as a way to show Bond was visibly ignoring the Quartermaster, but also as a way increase IBM's product placement arrangement.

A modified Omega Seamaster Professional Diver 300M wristwatch features as a spy gadget device several times in the film, concealing a cutting laser and detonator remote. This was the first time Bond was shown to be wearing a watch by Omega, and he has since worn Omega watches in every subsequent production.

While the scene of the tank running through a truck full of drinks was storyboarded with a Pepsi truck, Perrier signed in a deal to be featured, providing around 90,000 cans for the scene.

### Marketing

As James Bond entered in the 1990s, hand-painted poster designs were eschewed in favor of cutting-edge photomontage tools, promoting the return of 007 portrayed by Pierce Brosnan. Under the direction of John Parkinson and Gordon Arnell from the marketing department of MGM, many posters were produced for the film designed by Randi Braun and Earl Klasky with photographs taken by John Stoddart, Terry O'Neill, Keith Hamshere and George Withear. In the United States, an advance poster featured a gold-hued close-up on Bond's eyes pointing his Walther PPK handgun towards the viewer. The logo of the film wasn't displayed, only a tagline: "There is no substitute" and the 007 gun logo, in red. For the international market, a different advance poster was issued on which Pierce Brosnan appeared in black dinner jacket holding his silenced PPK gun, next to a 007 logo and under a different tagline: "You know the name. You know the number". This time, the film's logo was introduced, using the MatrixWide typeface (earlier versions of this logo used a modified FrizQuadrata typography). The theatrical artwork had two variations: both retained the same black background and action scenes collage surrounding the three principals (Pierce Brosnan, Izabella Scorupco and Famke Janssen), but the International poster had James Bond in tuxedo while in the US version only had the secret agent's face emerging from the shadows. The US variant was used for the cover artwork of the film's soundtrack and the box of the Nintendo 64 video game adaptation released in 1997. On a 2015 interview regarding his take on the *GoldenEye* poster campaign, photographer John Stoddart (who previously worked with Brosnan for a Brioni photoshoot) said his only directive was "Bond, girls and guns"

In July 1995, a teaser trailer for *GoldenEye* was attached to prints of Roger Donaldson's film *Species* after its debut on the syndicated US television program *Extra*, followed by a more generic theatrical trailer which revealed Bond's confrontation with agent 006. Asked about the inclusion of this spoiler in a 2019 interview, former MGM/UA Vice-president Jeff Kleeman pointed out that he felt "the idea of 006 vs 007 was a selling point". Both trailers were directed by Joe Nimziki.

### Music

*Main article: GoldenEye (soundtrack)*
The theme song, "GoldenEye", was written by Bono and the Edge, and was performed by Tina Turner. As the producers did not collaborate with Bono or the Edge, the film score did not incorporate any of the theme song's melodies, as was the case in previous James Bond films. Swedish group Ace of Base had also written a proposed theme song, but label Arista Records pulled the band out of the project fearing the negative impact in case the film flopped. The song was then rewritten as their single "The Juvenile".

The soundtrack was composed and performed by Éric Serra. Prolific Bond composer John Barry said that despite an offer by Barbara Broccoli, he turned it down. Serra's score has been criticised: Richard von Busack, in *Metro*, wrote that it was "more appropriate for a ride on an elevator than a ride on a roller coaster", and Filmtracks said Serra "failed completely in his attempt to tie *GoldenEye* to the franchise's past."

Martin Campbell would later express his disappointment with the score, citing budget constraints and difficulty working with Serra, who became uncooperative when asked to re-score the St. Petersburg tank chase after Campbell rejected his submitted track. John Altman would later provide the music for the sequence, while Serra's original track can still be found on the soundtrack as "A Pleasant Drive in St. Petersburg".

Serra composed and performed a number of synthesiser tracks, including the version of the "James Bond Theme" that plays during the gun barrel sequence, while Altman and David Arch provided the more traditional symphonic music. The end credits song, Serra's "The Experience of Love", was based on a short cue Serra had originally written for Luc Besson's *Léon* one year earlier.

## Release and reception

*GoldenEye* premiered on 13 November 1995, at the Radio City Music Hall, and went on general release in the United States on 17 November 1995. The UK premiere, attended by Prince Charles, followed on 21 November at the Odeon Leicester Square, with general release three days later. The film also had the German premiere on 5 December, at which Brosnan was present, at Mathäser-Filmpalast (de) in Munich, with general release on December 28; and the Swedish premiere on 8 December, attended by Brosnan and Scorupco, at Rigoletto (sv) in Stockholm, with general release on the same day. The after-party took place at Stockholm's Grand Hôtel. Brosnan boycotted the French premiere to support Greenpeace's protest against the French nuclear testing program.

The film earned over $26 million during its opening across 2,667 cinemas in the United States and Canada. In the United Kingdom, it grossed a record $5.5 million for a non-holiday week from 448 theatres and was the third biggest in history behind *Jurassic Park* and *Batman Forever*. It had the fourth-highest worldwide gross of all films in 1995, and was the most successful Bond film since *Moonraker*, taking inflation into account.

*GoldenEye* posted the largest revenue increase over its predecessor of any Bond film; when adjusted for inflation, it grossed 83% more worldwide than the preceding Bond film, 1989's *Licence to Kill*.

The film was edited to be guaranteed a PG-13 rating from the MPAA and a 12 rating from the BBFC. The cuts included the visible bullet impact to Trevelyan's head when he is shot in the prologue, several additional deaths during the sequence in which Onatopp guns down the workers at the Severnaya station, more explicit footage and violent behaviour in the Admiral's death, extra footage of Onatopp's death, and Bond knocking her out with a rabbit punch in the car. In 2006, the film was remastered and re-edited for the James Bond Ultimate Edition DVD in which the BBFC cuts were restored, causing the rating to be changed to 15. However, the original MPAA edits still remain.

### Reviews

The critical reception of the film was mostly positive. Film review aggregator website Rotten Tomatoes holds it at a 80% approval rating. Its consensus states: "The first and best Pierce Brosnan Bond film, *GoldenEye* brings the series into a more modern context, and the result is a 007 entry that's high-tech, action-packed, and urbane." A similar site, Metacritic, holds it at 65. Audiences polled by CinemaScore gave the film an average grade of "A-" on an A+ to F scale.

In the *Chicago Sun-Times*, Roger Ebert gave the film 3 stars out of 4, and said Brosnan's Bond was "somehow more sensitive, more vulnerable, more psychologically complete" than the previous ones, also commenting on Bond's "loss of innocence" since previous films. James Berardinelli described Brosnan as "a decided improvement over his immediate predecessor" with a "flair for wit to go along with his natural charm", but added that "fully one-quarter of *Goldeneye* is momentum-killing padding."

Several reviewers lauded M's appraisal of Bond as a "sexist, misogynist dinosaur", with Todd McCarthy in *Variety* saying the film "breathes fresh creative and commercial life" into the series. John Puccio of DVD Town said that it was "an eye- and ear-pleasing, action-packed entry in the Bond series" and that the film gave Bond "a bit of humanity, too". Ian Nathan of *Empire* said that it "revamps that indomitable British spirit" and that the *Die Hard* movies "don't even come close to 007". Tom Sonne of *The Sunday Times* considered it the best Bond film since *The Spy Who Loved Me*. Jose Arroyo of *Sight & Sound* considered the greatest success of it was in modernising the series.

However, the film received several negative reviews. Richard Schickel of *Time* wrote that after "a third of a century's hard use", Bond's conventions survived on "wobbly knees", while in *Entertainment Weekly*, Owen Gleiberman thought the series had "entered a near-terminal state of exhaustion." Dragan Antulov said that the film had a predictable series of scenes, and Kenneth Turan of the *Los Angeles Times* said that it was "a middle-aged entity anxious to appear trendy at all costs". David Eimer of *Premiere* wrote that "the trademark humour is in short supply" and that "Goldeneye isn't classic Bond by any stretch of the imagination." Madeleine Williams said that "there are plenty of stunts and explosions to take your mind off the plot."

### Retrospective reviews

Often cited as Pierce Brosnan's best Bond film, *GoldenEye*'s reputation has only improved since its release. It is ranked high in Bond-related lists, as *IGN* chose it as the fifth-best movie, while *Entertainment Weekly* ranked it eighth, and Norman Wilner of MSN as ninth. *EW* also voted Xenia Onatopp as the sixth-most memorable Bond girl, while *IGN* ranked Natalya as seventh in a similar list. The film enjoys a large and enthusiastic following among Bond fans, especially those who grew up with the *GoldenEye 007* video game. In a 2021 Yahoo survey consisting of 2200 scholars and Bond superfans, *GoldenEye* was voted as the best Bond film, followed by Daniel Craig's *Casino Royale* and George Lazenby's *On Her Majesty's Secret Service*. In 2019, an appreciative book about this film and its many video game versions, *The World of GoldenEye*, was published by author Nicolás Suszczyk. According to its official blurb, this publication offers "a comprehensive analysis on one of the best Bond films ever released and the impact in popular culture that brought a new generation of Bond fans, in a craze that was very reminiscent to the waves of Bond mania from the 1960s" while taking a look at the creative process behind the film and its relevance for the post-Cold War times to show *GoldenEye* is many times considered "an overlooked classic".

### Awards

The film was nominated for two BAFTAs—Best Sound and Special Visual Effects—in 1996, but lost to *Braveheart* and *Apollo 13*, respectively. Éric Serra won a BMI Film Award for the soundtrack, and it also earned nominations for Best Action, Adventure or Thriller Film and Actor at the 22nd Saturn Awards, and Best Fight at the 1996 MTV Movie Awards.

## Appearances in other media

Template:See also

The film was the second and final Bond film to be adapted to a novel by novelist John Gardner. The book closely follows its storyline, but Gardner added a violent sequence prior to the opening bungee jump in which Bond kills a group of Russian guards, a change that would be retained and expanded upon in the video game *GoldenEye 007*.

In late 1995, Topps Comics began publishing a three-issue comic book adaptation of the film. The script was adapted by Don McGregor with art by Rick Magyar. The first issue carried a January 1996 cover date. For unknown reasons, Topps cancelled the entire adaptation after the first issue had been published, and to date the adaptation has not been released in its entirety.

Also in 1995, Tiger Electronics released a third-person shooter handheld electronic game in two different variants: a gamepad variant, with an liquid-crystal display (LCD), a cross-shaped push button and two line-shaped ones and four settings buttons on the lower side of the screen, and a "Grip Games" line variant, shaped like a pistol grip, with a trigger used to shoot and other buttons on the rear. The two editions were slightly different.

The film was the basis for *GoldenEye 007*, a video game for the Nintendo 64 developed by Rare and published by Nintendo. It was praised by critics and in January 2000, readers of the British video game magazine *Computer and Video Games* listed it in first place in a list of "the hundred greatest video games". In *Edge*'s 10th anniversary issue in 2003, the game was included as one of their top ten shooters of all time. It is based upon the film, but many of the missions were extended or modified.

The game was modified into a racing game intended to be released for the Virtual Boy console. However, it was cancelled before release. In 2004, Electronic Arts released *GoldenEye: Rogue Agent*, the first game of the James Bond series in which the player does not take on the role of Bond. Instead, the protagonist is an aspiring Double-0 agent Jonathan Hunter, known by his codename "GoldenEye", recruited by a villain of the Bond universe, Auric Goldfinger. Except for the appearance of Xenia Onatopp, it was unrelated to the film, and was released to mediocre reviews. It was excoriated by several critics including Eric Qualls for using the name "GoldenEye" as an attempt to ride on the success of Rare's game. In 2010, an independent development team released *GoldenEye: Source*, a multiplayer only total conversion mod developed using Valve's Source engine.

Nintendo announced a remake of the original *GoldenEye 007* at their E3 press conference on 15 June 2010. It is a modernised retelling of the original movie's story, with Daniel Craig playing the role of Bond. Bruce Feirstein returned to write a modernised version of the script, while Nicole Scherzinger covered the theme song. It was developed by Eurocom and published by Activision for the Wii and Nintendo DS and was released in November 2010. Both Wii and DS versions bear little to no resemblance to the locations and weapons of the original N64 release. In 2011, the game was ported to PlayStation 3 and Xbox 360 under the name *GoldenEye 007: Reloaded*.

## Legacy

The malware Petya (also known as "GoldenEye") is a reference to the film. A Twitter account, suspected by the German newspaper *Heise Online* to belong to the malware author, used an image of Boris Grishenko as their avatar.

## See also

**Lua error: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').**

* 9K720 Iskander
* Counter-electronics High Power Microwave Advanced Missile Project (CHAMP)
* Electromagnetic pulse in popular culture
* Outline of James Bond

## References

### Citations

1. ↑ Goldeneye. European Audiovisual Observatory.
2. ↑ AFI Catalog: GoldenEye (1995).
3. ↑ GoldenEye (1995).
4. ↑ The James Bond Films – 1994–2002. BBC News (10 November 2002).
5. ↑ 5.0 5.1 Box Office History for James Bond Movies. *The Numbers*. Nash Information Service.
6. ↑ Kendrick, James. GoldenEye. Qnetwork.
7. ↑ 7.0 7.1 7.2 7.3 McCarthy, Todd. "GoldenEye", *Variety*, 15 November 1995.
8. ↑ Null, Christopher. GoldenEye. Filmcritic.com.
9. ↑ 9.0 9.1 Film Nominations 1995. British Academy of Film and Television Arts.
10. ↑ "60 Seconds: Timothy Dalton", *An interview in Metro Newspaper by Andrew Williams*, 15 February 2007.
11. ↑ 11.00 11.01 11.02 11.03 11.04 11.05 11.06 11.07 11.08 11.09 11.10 Field, Matthew (2015). *Some kind of hero : 007 : the remarkable story of the James Bond films*. ISBN 978-0-7509-6421-0.
12. ↑ "Hollywood mogul puts $US200m price on James Bond's head; Albert "Cubby" Broccoli", *The Sunday Times*, 12 August 1990.
13. ↑ GoldenEye – The Road To Production. Mi6-HQ.com (23 June 2003).
14. ↑ Bond 17 – History. *Mi6-HQ.com- The Home of James Bond*.
15. ↑ Blauvelt, Christian. The Bond films that almost were (en).
16. ↑ Jeffery, Morgan (2016-11-07). 6 James Bond movies they planned but never made (en-GB).
17. ↑ Blauvelt, Christian (1 November 2010). Timothy Dalton talks 'Chuck,' 'The Tourist,' and, of course, Bond. *Entertainment Weekly*.
18. ↑ 007 Producer Fires Legal Salvo at MGM. *Variety* (17 February 1991).
19. ↑ A summary of Southern California-related business litigation developments during the past week.. *Los Angeles Times* (15 October 1990).
20. ↑ 20.0 20.1 20.2 20.3 20.4 Meslow, Scott (12 May 2014). Timothy Dalton opens up about Penny Dreadful, leaving James Bond, and the demon in all of us. *The Week*.
21. ↑ Cox, Dan (12 April 1994). Dalton bails out as Bond. *Variety*.
22. ↑ Ayscough, Suzan (13 May 1993). Bond set for 0017th. *Variety*.
23. ↑ Ashton, Richard (1995). Richard Ashton Interview Michael G. Wilson. Her Majesty's Secret Servant.
24. ↑ Familia Broccoli. Archivo 007.
25. ↑ James Bond 007 – Goldeneye. 007.info (13 November 1995).
26. ↑ Template:Cite AV media
27. ↑ Biography: Timothy Dalton. IanFleming.org.
28. ↑ Birren, Nick. "The Spirit of the Story: The Constant Gardener's Jeffrey Caine", *CreativeScreenwriting*, Inside Information Group Ltd., 30 September 2005.
29. ↑ Dye, Kerry Douglas (15 November 1999). His Word is Bond: An Interview With 007 Screenwriter Bruce Feirstein. LeisureSuit.net.
30. ↑ Screenwriting Punishment with Michael France.
31. ↑ Two profiles: Ian Fleming & Boris Johnson. Fortnightly Tenerife News (11 May 2008).
32. ↑ Pearson, John (1966). *The Life of Ian Fleming*. Vintage/Ebury, page 137. ISBN 0-224-61136-4.
33. ↑ The Real James Bond. Channel 4.
34. ↑ Lycett, Andrew. "Adultery, Cambridge spies, a Jamaican idyll – Ian Fleming's biographer Andrew Lycett traces the origins of James Bond", *The Times*, 5 November 2006.
35. ↑  (2005) *Ian Fleming and James Bond*. Indiana University Press. ISBN 978-0-253-34523-3.
36. ↑  (2003) "*GoldenEye*", *The Essential Bond: The Authorized Guide to the World of 007*. Boxtree, page 169. ISBN 0-7522-1562-0.
37. ↑ 37.0 37.1 37.2 Svetkey, Benjamin (17 November 1995). The Spy Who Came Back From The Cold. *Entertainment Weekly*.
38. ↑ GoldenEye. Notcoming.com.
39. ↑ Jay MacDonald. Her majesty's not-so-secret service. BookPage.
40. ↑ Nigel Morris. "Woman tipped to head MI5 in footsteps of Stella Rimington", *Independent, The (London)*, 30 April 2002.
41. ↑ 15 Things You (Probably) Didn't Know About Goldeneye. shortlist.com (9 January 2015).
42. ↑ A POST COLD WAR ERA BOND: REMEMBERING "GOLDENEYE" ON ITS 20TH ANNIVERSARY. thedigitalbits.com.
43. ↑ James Bond: Every Way GoldenEye's Original Plan Changed (en-US) (2021-03-16).
44. ↑ Heard, Christopher (1999). "8", *Ten Thousand Bullets: The Cinematic Journey of John Woo*. Doubleday Canada Limited, page 138–139. ISBN 0-385-25731-7.
45. ↑ Richard Jobson. "'My heavens, I haven't been found out yet'", *The Guardian*, 18 March 2003.
46. ↑ 46.0 46.1 Garth Pearce (31 October 1995). *The Making of GoldenEye*. Boxtree. ISBN 978-1-85283-484-5.
47. ↑  (18 June 2017) *The Film Studio: Film Production in the Global Economy*. Rowman & Littlefield. ISBN 9780742536814.
48. ↑ 48.0 48.1 Template:Cite AV media
49. ↑ 007's bungee jump tops best movie stunt poll. BreakingNews.ie (17 November 2002).
50. ↑ Template:Cite AV media
51. ↑ Lee Pfeiffer (2003). "*GoldenEye*", *The Essential Bond: The Authorized Guide to the World of 007*. Boxtree, page 171. ISBN 0-7522-1562-0.
52. ↑ 52.0 52.1 52.2 52.3 52.4 52.5 Template:Cite video
53. ↑ Lang, Kirsty. "Bond drops a bomb", *The Sunday Times*, 3 December 1995.
54. ↑ Sinister Class 20 is new James Bond movie star *Rail* issue 250 12 April 1995 page 6
55. ↑ Lee Pfeiffer (2003). "*GoldenEye*", *The Essential Bond: The Authorized Guide to the World of 007*. Boxtree, page 176. ISBN 0-7522-1562-0.
56. ↑ Andrew Wright (4 May 2006). Licensed to Thrill. *Historic James Bond Diesel Locomotive to star in evocative branch line weekend*. Swanage Railway.
57. ↑ Template:Cite video
58. ↑ Template:Cite video
59. ↑ Interview – Steve Street (Part 1). MI6-HQ.com (26 August 2003).
60. ↑ Ian Sharp interview (en-US).
61. ↑ Old Buckenham Airfield expands its offerings.
62. ↑ "Amazing Bond stunt wins top award", CBBC Newsround, 17 November 2002.
63. ↑ "007's bungee jump tops best movie stunt poll", Breaking News, 17 November 2002.
64. ↑ Template:Cite video
65. ↑ Opening Sequence W/ Daniel Kleinman. Metro-Goldwyn-Mayer Studios Inc..
66. ↑ From Russia with Scorn of Past Idols. *The Moscow Times*.
67. ↑ Asia Times: Indian movie stirs passions of intolerance.
68. ↑ THE LOST ART OF INTERROGATION - Daniel Kleinman Interview (25 January 2013).
69. ↑ Template:Cite AV media
70. ↑ Lee Pfeiffer (2003). "*GoldenEye*", *The Essential Bond: The Authorized Guide to the World of 007*. Boxtree, page 177. ISBN 0-7522-1562-0.
71. ↑ Lance Kinney; Barry Sapolsky (1994). *Product Placement*. University of Alabama, Florida State University.
72. ↑ "A look at some of the biggest hits in film and TV product placement", *The Hollywood Reporter*, 28 April 2005.
73. ↑ 73.0 73.1 73.2 Suszczyk, Nicolás (2020). *The World of GoldenEye: A Comprehensive Study on the Seventeenth James Bond Film and its Legacy*, Updated, United States: Amazon KDP, page 311. ISBN 97986221974596.
74. ↑ Review of the "Bond" Omega Seamaster Professional Model 2531.80.00 (28 July 2010).
75. ↑ "Ambassadors: James Bond --[[ ----------------------------------

Lua module implementing the Template loop detected: Template:Webarchive template.

A merger of the functionality of three templates: Template:Wayback, Template:Webcite and Template:Cite archives

]]

--[[--------------------------< D E P E N D E N C I E S >------------------------------------------------------
]]

require('Module:No globals');
local getArgs = require ('Module:Arguments').getArgs;

--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]

local categories = {}; -- category names
local config = {}; -- global configuration settings
local digits = {}; -- for i18n; table that translates local-wiki digits to western digits
local err\_warn\_msgs = {}; -- error and warning messages
local excepted\_pages = {};
local month\_num = {}; -- for i18n; table that translates local-wiki month names to western digits
local prefixes = {}; -- service provider tail string prefixes
local services = {}; -- archive service provider data from
local s\_text = {}; -- table of static text strings used to build final rendering
local uncategorized\_namespaces = {}; -- list of namespaces that we should not categorize
local uncategorized\_subpages = {}; -- list of subpages that should not be categorized

--[[--------------------------< P A G E S C O P E I D E N T I F I E R S >----------------------------------
]]

local non\_western\_digits; -- boolean flag set true when data.digits.enable is true
local this\_page = mw.title.getCurrentTitle();

local track = {}; -- Associative array to hold tracking categories
local ulx = {}; -- Associative array to hold template data

--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------

Populates numbered arguments in a message string using an argument table.

]]

local function substitute (msg, args)
 return args and mw.message.newRawMessage (msg, args):plain() or msg;
end

--[[--------------------------< tableLength >-----------------------

Given a 1-D table, return number of elements

]]

local function tableLength(T)
 local count = 0
 for \_ in pairs(T) do count = count + 1 end
 return count
end

--[=[-------------------------< M A K E \_ W I K I L I N K >----------------------------------------------------

Makes a wikilink; when both link and display text is provided, returns a wikilink in the form D; if only
link is provided, returns a wikilink in the form L; if neither are provided or link is omitted, returns an
empty string.

]=]

local function make\_wikilink (link, display, no\_link)
 if nil == no\_link then
 if link and ( *~= link) then*
 if display and ( *~= display) then*
 return table.concat ({'', display, ''});
 else
 return table.concat ({'', link, ''});
 end
 end
 return display or *; -- link not set so return the display text*

 else -- no\_link
 if display and ( *~= display) then -- if there is display text*
 return display; -- return that
 else
 return link or *; -- return the target article name or empty string*
 end
 end
end

--[[--------------------------< createTracking >-----------------------

Return data in track[] ie. tracking categories

]]

local function createTracking()
 if not excepted\_pages[this\_page.fullText] then -- namespace:title/fragment is allowed to be categorized (typically this module's / template's testcases page(s))
 if uncategorized\_namespaces[this\_page.nsText] then
 return *; -- this page not to be categorized so return empty string*
 end
 for \_,v in ipairs (uncategorized\_subpages) do -- cycle through page name patterns
 if this\_page.text:match (v) then -- test page name against each pattern
 return *; -- this subpage type not to be categorized so return empty string*
 end
 end
 end

 local out = {};
 if tableLength(track) > 0 then
 for key, \_ in pairs(track) do -- loop through table
 table.insert (out, make\_wikilink (key)); -- and convert category names to links
 end
 end
 return table.concat (out); -- concat into one big string; empty string if table is empty

end

--[[--------------------------< inlineError >-----------------------

Critical error. Render output completely in red. Add to tracking category.

This function called as the last thing before abandoning this module

]]

local function inlineError (msg, args)
 track[categories.error] = 1
 return table.concat ({
 'Error in ', -- open the error message span
 config.tname, -- insert the local language template name
 ' template: ',
 substitute (msg, args), -- insert the formatted error message
 '.', -- close the span
 createTracking() -- add the category
 })
end

--[[--------------------------< inlineRed >-----------------------

Render a text fragment in red, such as a warning as part of the final output.
Add tracking category.

 ]]

local function inlineRed(msg, trackmsg)
 if trackmsg == "warning" then
 track[categories.warning] = 1;
 elseif trackmsg == "error" then
 track[categories.error] = 1;
 end

 return '' .. msg .. ''
end

--[[--------------------------< base62 >-----------------------

Convert base-62 to base-10
Credit: https://de.wikipedia.org/wiki/Modul:Expr

]]

local function base62( value )
 local r = 1 -- default return value is input value is malformed

 if value:match ('%W') then -- value must only be in the set [0-9a-zA-Z]
 return; -- nil return when value contains extraneous characters
 end

 local n = #value -- number of characters in value
 local k = 1
 local c
 r = 0
 for i = n, 1, -1 do -- loop through all characters in value from ls digit to ms digit
 c = value:byte( i, i )
 if c >= 48 and c <= 57 then -- character is digit 0-9
 c = c - 48
 elseif c >= 65 and c <= 90 then -- character is ascii a-z
 c = c - 55
 else -- must be ascii A-Z
 c = c - 61
 end
 r = r + c \* k -- accumulate this base62 character's value
 k = k \* 62 -- bump for next
 end -- for i

 return r
end

--[[--------------------------< D E C O D E \_ D A T E >--------------------------------------------------------

Given a date string, return it in iso format along with an indicator of the date's format. Except that month names
must be recognizable as legitimate month names with proper capitalization, and that the date string must match one
of the recognized date formats, no error checking is done here; return nil else

]]

local function decode\_date (date\_str)
 local patterns = {
 ['dmy'] = {'^(%d%d?) +([^%s%d]+) +(%d%d%d%d)$', 'd', 'm', 'y'}, -- %a does not recognize unicode combining characters used by some languages
 ['mdy'] = {'^([^%s%d]+) (%d%d?), +(%d%d%d%d)$', 'm', 'd', 'y'},
 ['ymd'] = {'^(%d%d%d%d) +([^%s%d]+) (%d%d?)$', 'y', 'm', 'd'}, -- not mos compliant at en.wiki but may be acceptible at other wikis
 };

 local t = {};

 if non\_western\_digits then -- this wiki uses non-western digits?
 date\_str = mw.ustring.gsub (date\_str, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 if date\_str:match ('^%d%d%d%d%-%d%d%-%d%d$') then -- already an iso format date, return western digits form
 return date\_str, 'iso';
 end

 for k, v in pairs (patterns) do
 local c1, c2, c3 = mw.ustring.match (date\_str, patterns[k][1]); -- c1 .. c3 are captured but we don't know what they hold

 if c1 then -- set on match
 t = { -- translate unspecified captures to y, m, and d
 [patterns[k][2]] = c1, -- fill the table of captures with the captures
 [patterns[k][3]] = c2, -- take index names from src\_pattern table and assign sequential captures
 [patterns[k][4]] = c3,
 };
 if month\_num[t.m] then -- when month not already a number
 t.m = month\_num[t.m]; -- replace valid month name with a number
 else
 return nil, 'iso'; -- not a valid date form because month not valid
 end

 return mw.ustring.format ('%.4d-%.2d-%.2d', t.y, t.m, t.d), k; -- return date in iso format
 end
 end
 return nil, 'iso'; -- date could not be decoded; return nil and default iso date
end

--[[--------------------------< makeDate >-----------------------

Given year, month, day numbers, (zero-padded or not) return a full date in df format
where df may be one of:
 mdy, dmy, iso, ymd

on entry, year, month, day are presumed to be correct for the date that they represent; all are required

in this module, makeDate() is sometimes given an iso-format date in year:
 makeDate (2018-09-20, nil, nil, df)
this works because table.concat() sees only one table member

]]

local function makeDate (year, month, day, df)
 local format = {
 ['dmy'] = 'j F Y',
 ['mdy'] = 'F j, Y',
 ['ymd'] = 'Y F j',
 ['iso'] = 'Y-m-d',
 };

 local date = table.concat ({year, month, day}, '-'); -- assemble year-initial numeric-format date (zero padding not required here)

 if non\_western\_digits then -- this wiki uses non-western digits?
 date = mw.ustring.gsub (date, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 return mw.getContentLanguage():formatDate (format[df], date);
end

--[[--------------------------< I S \_ V A L I D \_ D A T E >----------------------------------------------------

Returns true if date is after 31 December 1899 (why is 1900 the min year? shouldn't the internet's date-of-birth
be min year?), not after today's date, and represents a valid date (29 February 2017 is not a valid date). Applies
Gregorian leapyear rules.

all arguments are required

]]

local function is\_valid\_date (year, month, day)
 local days\_in\_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 local month\_length;
 local y, m, d;
 local today = os.date ('\*t'); -- fetch a table of current date parts

 if not year or  *== year or not month or*  == month or not day or  *== day then*
 return false; -- something missing
 end

 y = tonumber (year);
 m = tonumber (month);
 d = tonumber (day);

 if 1900 > y or today.year < y or 1 > m or 12 < m then -- year and month are within bounds TODO: 1900?
 return false;
 end

 if (2==m) then -- if February
 month\_length = 28; -- then 28 days unless
 if (0==(y%4) and (0~=(y%100) or 0==(y%400))) then -- is a leap year?
 month\_length = 29; -- if leap year then 29 days in February
 end
 else
 month\_length=days\_in\_month[m];
 end

 if 1 > d or month\_length < d then -- day is within bounds
 return false;
 end
 -- here when date parts represent a valid date
 return os.time({['year']=y, ['month']=m, ['day']=d, ['hour']=0}) <= os.time(); -- date at midnight must be less than or equal to current date/time
end

--[[--------------------------< decodeWebciteDate >-----------------------

Given a URI-path to Webcite (eg. /67xHmVFWP) return the encoded date in df format

returns date string in df format - webcite date is a unix timestamp encoded as bae62
or the string 'query'

]]

local function decodeWebciteDate(path, df)

 local dt = {};
 local decode;

 dt = mw.text.split(path, "/")

 -- valid URL formats that are not base62

 -- http://www.webcitation.org/query?id=1138911916587475
 -- http://www.webcitation.org/query?url=http..&date=2012-06-01+21:40:03
 -- http://www.webcitation.org/1138911916587475
 -- http://www.webcitation.org/cache/73e53dd1f16cf8c5da298418d2a6e452870cf50e
 -- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e

 if dt[2]:find ('query', 1, true) or
 dt[2]:find ('cache', 1, true) or
 dt[2]:find ('getfile', 1, true) or
 tonumber(dt[2]) then
 return 'query';
 end

 decode = base62(dt[2]); -- base62 string -> exponential number
 if not decode then
 return nil; -- nil return when dt[2] contains characters not in %w
 end
 dt = os.date('\*t', string.format("%d", decode):sub(1,10)) -- exponential number -> text -> first 10 characters (a unix timestamp) -> a table of date parts

 decode = makeDate (dt.year, dt.month, dt.day, 'iso'); -- date comparisons are all done in iso format with western digits
 if non\_western\_digits then -- this wiki uses non-western digits?
 decode = mw.ustring.gsub (decode, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 return decode;
end

--[[--------------------------< decodeWaybackDate >-----------------------

Given a URI-path to Wayback (eg. /web/20160901010101/http://example.com )
or Library of Congress Web Archives (eg. /all/20160901010101/http://example.com)
or UK Government Web Archive (eg. /ukgwa/20160901010101/http://example.com or /tna/20160901010101/http://example.com)

return the formatted date eg. "September 1, 2016" in df format
Handle non-digits in snapshot ID such as "re\_" and "-" and "\*"

 valid date string in df format - wayback date is valid (including the text string 'index' when date is '/\*/')
 empty string - wayback date is malformed (less than 8 digits, not a valid date)
 nil - wayback date is '/save/' or otherwise not a number

 second return value is an appropriate 'message' may or may not be formatted

]]

local function decodeWaybackDate(path, df)

 local msg, snapdate;

 snapdate = path:gsub ('^/web/', *):gsub ('^/all/',* ):gsub ('^/ukgwa/', *):gsub ('^/tna/',* ):gsub ('^/', *); -- remove leading /web/, /all/, /ukgwa/, /tna/, or /*
 snapdate = snapdate:match ('^[^/]+'); -- get timestamp
 if snapdate == "\*" then -- eg. /web/\*/http.., etc.
 return 'index'; -- return indicator that this url has an index date
 end

 snapdate = snapdate:gsub ('%a%a\_%d?$', *):gsub ('%-',* ); -- from date, remove any trailing "re\_", dashes

 msg = *;*
 if snapdate:match ('%\*$') then -- a trailing '\*' causes calendar display at archive .org
 snapdate = snapdate:gsub ('%\*$', *); -- remove so not part of length calc later*
 msg = inlineRed (err\_warn\_msgs.ts\_cal, 'warning'); -- make a message
 end

 if not tonumber(snapdate) then
 return nil, 'ts\_nan'; -- return nil (fatal error flag) and message selector
 end

 local dlen = snapdate:len();
 if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
 return *, inlineRed (err\_warn\_msgs.ts\_short, 'error'); -- return empty string and error message*
 end

 local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here

 if not is\_valid\_date (year, month, day) then
 return *, inlineRed (err\_warn\_msgs.ts\_date, 'error'); -- return empty string and error message*
 end

 snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
 if 14 == dlen then
 return snapdate, msg; -- return date with message if any
 else
 return snapdate, msg .. inlineRed (err\_warn\_msgs.ts\_len, 'warning'); -- return date with warning message(s)
 end
end

--[[--------------------------< decodeArchiveisDate >-----------------------

Given an Archive.is "long link" URI-path (e.g. /2016.08.28-144552/http://example.com)
return the date in df format (e.g. if df = dmy, return 28 August 2016)
Handles "." and "-" in snapshot date, so 2016.08.28-144552 is same as 20160828144552

 valid date string in df format - archive.is date is valid (including the text string 'short link' when url is the short form)
 empty string - wayback date is malformed (not a number, less than 8 digits, not a valid date)
 nil - wayback date is '/save/'

 second return value is an appropriate 'message' may or may not be formatted

]]

local function decodeArchiveisDate(path, df)
 local snapdate

 if path:match ('^/%w+$') then -- short form url path is '/' followed by some number of base 62 digits and nothing else
 return "short link" -- e.g. http://archive.is/hD1qz
 end

 snapdate = mw.text.split (path, '/')[2]:gsub('[%.%-]', *); -- get snapshot date, e.g. 2016.08.28-144552; remove periods and hyphens*

 local dlen = string.len(snapdate)
 if dlen < 8 then -- we need 8 digits TODO: but shouldn't this be testing for 14 digits?
 return *, inlineRed (err\_warn\_msgs.ts\_short, 'error'); -- return empty string and error message*
 end

 local year, month, day = snapdate:match ('(%d%d%d%d)(%d%d)(%d%d)'); -- no need for snapdatelong here

 if not is\_valid\_date (year, month, day) then
 return *, inlineRed (err\_warn\_msgs.ts\_date, 'error'); -- return empty string and error message*
 end

 snapdate = table.concat ({year, month, day}, '-'); -- date comparisons are all done in iso format
 if 14 == dlen then
 return snapdate; -- return date
 else
 return snapdate, inlineRed (err\_warn\_msgs.ts\_len, 'warning'); -- return date with warning message
 end
 end

--[[--------------------------< serviceName >-----------------------

Given a domain extracted by mw.uri.new() (eg. web.archive.org) set tail string and service ID

]]

local function serviceName(host, no\_link)
 local tracking;
 local index;

 host = host:lower():gsub ('^web%.(.+)', '%1'):gsub ('^www%.(.+)', '%1'); -- lowercase, remove web. and www. subdomains

 if services[host] then
 index = host;
 else
 for k, \_ in pairs (services) do
 if host:find ('%f[%a]'..k:gsub ('([%.%-])', '%%%1')) then
 index = k;
 break;
 end
 end
 end

 if index then
 local out = {*}; -- empty string in [1] so that concatenated result has leading single space*
 ulx.url1.service = services[index][4] or 'other';
 tracking = services[index][5] or categories.other;
 -- build tail string
 if false == services[index][1] then -- select prefix
 table.insert (out, prefixes.at);
 elseif true == services[index][1] then
 table.insert (out, prefixes.atthe);
 else
 table.insert (out, services[index][1]);
 end

 table.insert (out, make\_wikilink (services[index][2], services[index][3], no\_link)); -- add article wikilink
 if services[index][6] then -- add tail postfix if it exists
 table.insert (out, services[index][6]);
 end

 ulx.url1.tail = table.concat (out, ' '); -- put it all together; result has leading space character

 else -- here when unknown archive
 ulx.url1.service = 'other';
 tracking = categories.unknown;
 ulx.url1.tail = table.concat ({*, prefixes.at, host, inlineRed (err\_warn\_msgs.unknown\_url, error)}, ' ');*
 end

 track[tracking] = 1
end

--[[--------------------------< parseExtraArgs >-----------------------

Parse numbered arguments starting at 2, such as url2..url10, date2..date10, title2..title10
 For example: Template loop detected: Template:Webarchive
 Three url arguments not in numeric sequence (1..4..7).
 Function only processes arguments numbered 2 or greater (in this case 4 and 7)
 It creates numeric sequenced table entries like:
 urlx.url2.url = <argument value for url4>
 urlx.url3.url = <argument value for url7>
 Returns the number of URL arguments found numbered 2 or greater (in this case returns "2")

 ]]

local function parseExtraArgs(args)

 local i, j, argurl, argurl2, argdate, argtitle

 j = 2
 for i = 2, config.maxurls do
 argurl = "url" .. i
 if args[argurl] then
 argurl2 = "url" .. j
 ulx[argurl2] = {}
 ulx[argurl2]["url"] = args[argurl]
 argdate = "date" .. i
 if args[argdate] then
 ulx[argurl2]["date"] = args[argdate]
 else
 ulx[argurl2]["date"] = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 end

 argtitle = "title" .. i
 if args[argtitle] then
 ulx[argurl2]["title"] = args[argtitle]
 else
 ulx[argurl2]["title"] = nil
 end
 j = j + 1
 end
 end

 if j == 2 then
 return 0
 else
 return j - 2
 end
end

--[[--------------------------< comma >-----------------------

Given a date string, return "," if it's MDY

]]

local function comma(date)
 return (date and date:match ('%a+ +%d%d?(,) +%d%d%d%d')) or *;*
end

--[[--------------------------< createRendering >-----------------------

Return a rendering of the data in ulx[][]

]]

local function createRendering()

 local displayfield
 local out = {};

 local index\_date, msg = ulx.url1.date:match ('(index)(.\*)'); -- when ulx.url1.date extract 'index' text and message text (if there is a message)
 ulx.url1.date = ulx.url1.date:gsub ('index.\*', 'index'); -- remove message

 if 'none' == ulx.url1.format then -- For Template:Wayback, Template:Webcite
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx.url1.url); -- add url

 if ulx.url1.title then
 table.insert (out, ' ') -- the required space
 table.insert (out, ulx.url1.title) -- the title
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, ulx.url1.tail); -- tail text
 if ulx.url1.date then
 table.insert (out, ' ('); -- open date text; TODO: why the html entity? replace with regular space?
 table.insert (out, 'index' == ulx.url1.date and s\_text.archive or s\_text.archived); -- add text
 table.insert (out, ' '); -- insert a space
 table.insert (out, ulx.url1.date); -- add date
 table.insert (out, ')'); -- close date text
 end
 else -- no title
 if index\_date then -- when url date is 'index'
 table.insert (out, table.concat ({' ', s\_text.Archive\_index, ']'})); -- add the index link label
 table.insert (out, msg or *); -- add date mismatch message when url date is /\*/ and |date= has valid date*
 else
 table.insert (out, table.concat ({' ', s\_text.Archived, '] '})); -- add link label for url has timestamp date (will include mismatch message if there is one)
 end
 if ulx.url1.date then
 if 'index' ~= ulx.url1.date then
 table.insert (out, ulx.url1.date); -- add date when data is not 'index'
 end
 table.insert (out, comma(ulx.url1.date)); -- add ',' if date format is mdy
 table.insert (out, ulx.url1.tail); -- add tail text
 else -- no date
 table.insert (out, ulx.url1.tail); -- add tail text
 end
 end

 if 0 < ulx.url1.extraurls then -- For multiple archive URLs
 local tot = ulx.url1.extraurls + 1
 table.insert (out, '.') -- terminate first url
 table.insert (out, table.concat ({' ', s\_text.addlarchives, ': '})); -- add header text

 for i=2, tot do -- loop through the additionals
 local index = table.concat ({'url', i}); -- make an index
 displayfield = ulx[index]['title'] and 'title' or 'date'; -- choose display text
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx[index]['url']); -- add the url
 table.insert (out, ' '); -- the required space
 table.insert (out, ulx[index][displayfield]); -- add the label
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, i==tot and '.' or ', '); -- add terminator
 end
 end
 return table.concat (out); -- make a big string and done

 else -- For Template:Cite archives
 if 'addlarchives' == ulx.url1.format then -- Multiple archive services
 table.insert (out, table.concat ({s\_text.addlarchives, ': '})); -- add header text
 else -- Multiple pages from the same archive
 table.insert (out, table.concat ({s\_text.addlpages, ' '})); -- add header text
 table.insert (out, ulx.url1.date); -- add date to header text
 table.insert (out, ': '); -- close header text
 end

 local tot = ulx.url1.extraurls + 1;
 for i=1, tot do -- loop through the additionals
 local index = table.concat ({'url', i}); -- make an index
 table.insert (out, '['); -- open extlink markup
 table.insert (out, ulx[index]['url']); -- add url
 table.insert (out, ' '); -- add required space

 displayfield = ulx[index]['title'];
 if 'addlarchives' == ulx.url1.format then
 if not displayfield then
 displayfield = ulx[index]['date']
 end
 else -- must be addlpages
 if not displayfield then
 displayfield = table.concat ({s\_text.Page, ' ', i});
 end
 end
 table.insert (out, displayfield); -- add title, date, page label text
 table.insert (out, ']'); -- close extlink markup
 table.insert (out, (i==tot and '.' or ', ')); -- add terminator
 end
 return table.concat (out); -- make a big string and done
 end
end

--[[--------------------------< P A R A M E T E R \_ N A M E \_ X L A T E >--------------------------------------

for internaltionalization, translate local-language parameter names to their English equivalents

TODO: return error message if multiple aliases of the same canonical parameter name are found?

returns two tables:
 new\_args - holds canonical form parameters and their values either from translation or because the parameter was already in canonical form
 origin - maps canonical-form parameter names to their untranslated (local language) form for error messaging in the local language

unrecognized parameters are ignored

]]

local function parameter\_name\_xlate (args, params, enum\_params)
 local name; -- holds modifiable name of the parameter name during evaluation
 local enum; -- for enumerated parameters, holds the enumerator during evaluation
 local found = false; -- flag used to break out of nested for loops
 local new\_args = {}; -- a table that holds canonical and translated parameter k/v pairs
 local origin = {}; -- a table that maps original (local language) parameter names to their canonical name for local language error messaging
 local unnamed\_params; -- set true when unsupported positional parameters are detected

 for k, v in pairs (args) do -- loop through all of the arguments in the args table
 name = k; -- copy of original parameter name

 if 'string' == type (k) then
 if non\_western\_digits then -- true when non-western digits supported at this wiki
 name = mw.ustring.gsub (name, '%d', digits); -- convert this wiki's non-western digits to western digits
 end

 enum = name:match ('%d+$'); -- get parameter enumerator if it exists; nil else

 if not enum then -- no enumerator so looking for non-enumnerated parameters
 -- TODO: insert shortcut here? if params[name] then name holds the canonical parameter name; no need to search further
 for pname, aliases in pairs (params) do -- loop through each parameter the params table
 for \_, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
 if name == alias then
 new\_args[pname] = v; -- create a new entry in the new\_args table
 origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
 found = true; -- flag so that we can break out of these nested for loops
 break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
 end
 end

 if found then -- true when we found an alias that matched name
 found = false; -- reset the flag
 break; -- go do next args k/v pair
 end
 end
 else -- enumerated parameters
 name = name:gsub ('%d$', '#'); -- replace enumeration digits with place holder for table search
 -- TODO: insert shortcut here? if num\_params[name] then name holds the canonical parameter name; no need to search further
 for pname, aliases in pairs (enum\_params) do -- loop through each parameter the num\_params table
 for \_, alias in ipairs (aliases) do -- loop through each alias in the parameter's aliases table
 if name == alias then
 pname = pname:gsub ('#$', enum); -- replace the '#' place holder with the actual enumerator
 new\_args[pname] = v; -- create a new entry in the new\_args table
 origin [pname] = k; -- create an entry to make canonical parameter name to original local language parameter name
 found = true; -- flag so that we can break out of these nested for loops
 break; -- no need to search the rest of the aliases table for name so go on to the next k, v pair
 end
 end

 if found then -- true when we found an alias that matched name
 found = false; -- reset the flag
 break; -- go do next args k/v pair
 end
 end
 end
 else
 unnamed\_params = true; -- flag for unsupported positional parameters
 end
 end -- for k, v
 return new\_args, origin, unnamed\_params;
end

--[[--------------------------< W E B A R C H I V E >----------------------------------------------------------

template entry point

]]

local function webarchive(frame)
 local args = getArgs (frame);

 local data = mw.loadData (table.concat ({ -- make a data module name; sandbox or live
 'Module:Webarchive/data',
 frame:getTitle():find('sandbox', 1, true) and '/sandbox' or  *-- this instance is ./sandbox then append /sandbox*
 }));
 categories = data.categories; -- fill in the forward declarations
 config = data.config;
 if data.digits.enable then
 digits = data.digits; -- for i18n; table of digits in the local wiki's language
 non\_western\_digits = true; -- use\_non\_western\_digits
 end
 err\_warn\_msgs = data.err\_warn\_msgs;
 excepted\_pages = data.excepted\_pages;
 month\_num = data.month\_num; -- for i18n; table of month names in the local wiki's language
 prefixes = data.prefixes;
 services = data.services;
 s\_text = data.s\_text;
 uncategorized\_namespaces = data.uncategorized\_namespaces;
 uncategorized\_subpages = data.uncategorized\_subpages;

 local origin = {}; -- holds a map of English to local language parameter names used in the current template; not currently used
 local unnamed\_params; -- boolean set to true when template call has unnamed parameters
 args, origin, unnamed\_params = parameter\_name\_xlate (args, data.params, data.enum\_params); -- translate parameter names in args to English

 local date, format, msg, udate, uri, url;
 local ldf = 'iso'; -- when there is no |date= parameter, render url dates in iso format

 if args.url and args.url1 then -- URL argument (first)
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.url, origin.url1});
 end

 url = args.url or args.url1;

 if not url then
 return inlineError (data.crit\_err\_msgs.empty);
 end
 -- these iabot bugs perportedly fixed; removing these causes lua script error
--[[ -- at Template:Webarchive/testcases/Production; resolve that before deleting these tests
 if mw.ustring.find( url, "https://web.http", 1, true ) then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
 track[categories.error] = 1;
 return inlineError (data.crit\_err\_msgs.iabot1);
 end
 if url == "https://web.archive.org/http:/" then -- track bug - TODO: IAbot bug; not known if the bug has been fixed; deferred
 track[categories.error] = 1;
 return inlineError (data.crit\_err\_msgs.iabot2);
 end
]]

 if not (url:lower():find ('^http') or url:find ('^//')) then
 return inlineError (data.crit\_err\_msgs.invalid\_url );
 end

 ulx.url1 = {}
 ulx.url1.url = url

 ulx.url1.extraurls = parseExtraArgs(args)

 local good = false;
 good, uri = pcall (mw.uri.new, ulx.url1.url); -- get a table of uri parts from this url; protected mode to prevent lua error when ulx.url1.url is malformed

 if not good or nil == uri.host then -- abandon when ulx.url1.url is malformed
 return inlineError (data.crit\_err\_msgs.invalid\_url);
 end

 serviceName(uri.host, args.nolink)

 if args.date and args.date1 then -- Date argument
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.date, origin.date1});
 end

 date = args.date or args.date1;
 date = date and date:gsub (' +', ' '); -- replace multiple spaces with a single space

 if date and config.verifydates then
 if '\*' == date then
 date = 'index';
 ldf = 'iso'; -- set to default format
 elseif 'mdy' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'mdy'; -- then |date=mdy overrides iso
 elseif 'dmy' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'dmy'; -- then |date=dmy overrides iso
 elseif 'ymd' == date then
 date = nil; -- if date extracted from URL,
 ldf = 'ymd'; -- then |date=ymd overrides iso
 else
 date, ldf = decode\_date (date); -- get an iso format date from date and get date's original format
 end
 end

 if 'wayback' == ulx.url1.service or 'locwebarchives' == ulx.url1.service or 'ukgwa' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate, msg = decodeWaybackDate (uri.path); -- get the url date in iso format and format of date in |date=; 'index' when wayback url date is \*
 if not udate then -- this is the only 'fatal' error return
 return inlineError (data.crit\_err\_msgs[msg]);
 end

 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'), -- add warning message
 msg, -- add message if there is one
 });
 end
 end
 end
 else -- no |date=
 udate, msg = decodeWaybackDate (uri.path);

 if not udate then -- this is the only 'fatal' error return
 return inlineError (data.crit\_err\_msgs[msg]);
 end

 if  *== udate then*
 date = nil; -- unset
 else
 date = udate;
 end
 end

 elseif 'webcite' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate = decodeWebciteDate (uri.path); -- get the url date in iso format
 if 'query' ~= udate then -- skip if query
 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'),
 });
 end
 end
 end
 end
 else
 date = decodeWebciteDate( uri.path, "iso" )
 if date == "query" then
 date = nil; -- unset
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 elseif not date then -- invalid base62 string
 date = inlineRed (err\_warn\_msgs.date1, 'error');
 end
 end

 elseif 'archiveis' == ulx.url1.service then
 if date then
 if config.verifydates then
 if ldf then
 udate, msg = decodeArchiveisDate (uri.path) -- get the url date in iso format
 if 'short link' ~= udate then -- skip if short link
 if udate ~= date then -- date comparison using iso format dates
 date = udate;
 msg = table.concat ({
 inlineRed (err\_warn\_msgs.mismatch, 'warning'), -- add warning message
 msg, -- add message if there is one
 });
 end
 end
 end
 end
 else -- no |date=
 udate, msg = decodeArchiveisDate( uri.path, "iso" )
 if udate == "short link" then
 date = nil; -- unset
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 elseif  *== udate then*
 date = nil; -- unset
 else
 date = udate;
 end
 end

 else -- some other service
 if not date then
 msg = inlineRed (err\_warn\_msgs.date\_miss, 'warning');
 end
 end

 if 'index' == date then
 ulx.url1.date = date .. (msg or *); -- create index + message (if there is one)*
 elseif date then
 ulx.url1.date = makeDate (date, nil, nil, ldf) .. (msg or *); -- create a date in the wiki's local language + message (if there is one)*
 else
 ulx.url1.date = msg;
 end

 format = args.format; -- Format argument

 if not format then
 format = "none"
 else
 for k, v in pairs (data.format\_vals) do -- |format= accepts two specific values loop through a table of those values
 local found; -- declare a nil flag
 for \_, p in ipairs (v) do -- loop through local language variants
 if format == p then -- when |format= value matches
 format = k; -- use name from table key
 found = true; -- declare found so that we can break out of outer for loop
 break; -- break out of inner for loop
 end
 end

 if found then
 break;
 end
 end

 if format == "addlpages" then
 if not ulx.url1.date then
 format = "none"
 end
 elseif format == "addlarchives" then
 format = "addlarchives"
 else
 format = "none"
 end
 end
 ulx.url1.format = format

 if args.title and args.title1 then -- Title argument
 return inlineError (data.crit\_err\_msgs.conflicting, {origin.title, origin.title1});
 end

 ulx.url1.title = args.title or args.title1;

 local rend = createRendering()
 if not rend then
 return inlineError (data.crit\_err\_msgs.unknown);
 end

 return rend .. ((unnamed\_params and inlineRed (err\_warn\_msgs.unnamed\_params, 'warning')) or *) .. createTracking();*

end

--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]

return {webarchive = webarchive};", Omega SA, 29 March 2004 (Retrieved 21 February 2007).
76. ↑ Focus Of The Week: GoldenEye Tank Chase. 007.com (25 September 2017). Retrieved on February 26, 2021.
77. ↑ MARKETING (en).
78. ↑ John Stoddart Interview (en).
79. ↑ Suszczyk, Nicolas (2019-03-28). The Secret Agent Lair: INTERVIEW: Jeff Kleeman, former United Artists VP, on GoldenEye's success and Bond 25.
80. ↑ Template:Cite magazine
81. ↑ Lee Pfeiffer (2003). "*GoldenEye*", *The Essential Bond: The Authorized Guide to the World of 007*. Boxtree, page 175. ISBN 0-7522-1562-0.
82. ↑ Burlingame, Jon (2012). *The Music of James Bond*. Oxford University Press, page 264–5. ISBN 978-0-19-986330-3.
83. ↑ Robert Hoshowsky (November 1996). John Barry The Gstaad Memorandum. Film Score.
84. ↑ Richard von Busack (22 November 1995). Bond for Glory. Metro.
85. ↑ Filmtracks Editorial Review. *filmtracks.com*.
86. ↑ GoldenEye: How Director Martin Campbell Created an Iconic James Bond Opening Sequence (en-sg) (2020-12-30).
87. ↑ Composer John Altman Explains What Went Wrong with GoldenEye's Score (en-GB) (2016-12-05).
88. ↑ Template:Cite AV media
89. ↑ Template:Cite AV media
90. ↑ Template:Cite AV media notes
91. ↑ World Premiere of *GoldenEye* at Radio City Music Hall - 24 October 1995 /PR Newswire UK/. Prnewswire.co.uk (24 October 1995).
92. ↑ "UK: Prince Charles and Pierce Brosnan attend Royal Premiere of 'Goldeneye'", 21 November 1995.
93. ↑ Template:Cite AV media
94. ↑ 94.0 94.1 Template:Cite AV media
95. ↑ GoldenEye (1995) (sv). Swedish Film Institute.
96. ↑ Pierce Brosnan boycotts French premiere of GoldenEye to support Greenpeace protests. PRNewswire (12 January 1995).
97. ↑ Template:Cite magazine
98. ↑ 1995 Worldwide Grosses.
99. ↑ James Bond Franchise Box Office History.
100. ↑ Template:Cite AV media
101. ↑ GoldenEye (1995). *rottentomatoes.com*.
102. ↑ GoldenEye. *metacritic.com*.
103. ↑ CinemaScore. *cinemascore.com*.
104. ↑ Roger Ebert. "GoldenEye", *Chicago Sun-Times*, 17 November 1995.
105. ↑ James Berardinelli (1995). GoldenEye. *reelviews.net*.
106. ↑ Hal Hinson. "14-Karat 'GoldenEye': A Polished New Bond", 17 November 1995.
107. ↑ Peter Stack. "New Bond More Action Than Style", *San Francisco Chronicle*, 17 November 1995.
108. ↑ John J. Puccio. DVD review of GoldenEye. DVD Town.
109. ↑ 109.0 109.1 GoldenEye – Premiere & Press. MI6-HQ.com.
110. ↑ Template:Cite magazine
111. ↑ Owen Gleiberman. "GoldenEye", *Entertainment Weekly*, 18 November 1995.
112. ↑ Dragan Antulov (2002). Retrospective: GoldenEye (1995). Retrospective.
113. ↑ Kenneth Turan (17 November 1995). GoldenEye – Movie Review. *Los Angeles Times*.
114. ↑ GoldenEye film review. *Cinematter.com*.
115. ↑ James Bond's Top 20 (17 November 2006).
116. ↑ Benjamin Svetkey, Joshua Rich. "Ranking the Bond Films", *Entertainment Weekly*, 15 November 2006.
117. ↑ Norman Wilner. Rating the Spy Game. MSN.
118. ↑ "The 10 Best Bond Girls", *Entertainment Weekly*, 30 March 2007.
119. ↑ Top 10 Bond Babes (15 November 2006).
120. ↑ My favourite Bond film: GoldenEye (26 September 2012).
121. ↑ How GoldenEye inspired a video game classic (19 November 2020).
122. ↑ O'Connell, Mark (5 February 2021). The best James Bond movies according to the experts and its biggest fans. Verizon Media.
123. ↑ Love, From Sweden with. The World Of GoldenEye: A book written by Nicolas Suszczyk (en).
124. ↑ Awards for Eric Serra.
125. ↑  (13 June 1996) *MTV Movie Awards*. Burbank, CA: Walt Disney Studios.
126. ↑ Awards and nominations for GoldenEye (1995).
127. ↑  (1997) *Goldeneye 007 Official Player's Guide*. Nintendo Power. ASIN: B000B66WKA.
128. ↑ Don McGregor (January 1996). *James Bond 007: GoldenEye*, New York City: Topps Comics. Direct Sales 61114 00257.
129. ↑ John Cox (19 May 2005). When Bond Battled Dinosaurs. commanderbond.net.
130. ↑ Before GoldenEye On N64, There Was This GoldenEye Game (en-us).
131. ↑ GoldenEye 007 Reviews. gamerankings.com.
132. ↑ Microsoft Acquires Video Game Powerhouse Rare Ltd.. Microsoft (24 September 2002).
133. ↑ Template:Cite magazine
134. ↑ Template:Cite magazine
135. ↑ Martin Hollis (2 September 2004). The Making of GoldenEye 007. Zoonami.
136. ↑ The Lost GoldenEye Videogame. MI6-HQ.com (11 January 2007).
137. ↑ Kaizen Media Group (23 November 2004). *Golden Eye: Rogue Agent (Prima Official Game Guide)*. Roseville, California: Prima Games. ISBN 0-7615-4633-2.
138. ↑ Reviews of GoldenEye: Rogue Agent for PS2.
139. ↑ GoldenEye: Rogue Agent for GameCube.
140. ↑ Reviews of GoldenEye: Rogue Agent for Xbox.
141. ↑ Eric Qualls. GoldenEye: Rogue Agent. *About.com: Xbox Games*. The New York Times Company.
142. ↑ Benjamin Turner. GoldenEye: Rogue Agent (PS2). GameSpy.
143. ↑ Senior, Tom (13 December 2010). GoldenEye: Source released.
144. ↑ Keith Stewart. "E3 2010: GoldenEye first look", *The Guardian*, 17 June 2010.
145. ↑ Scherschel, Fabian A. (15 December 2016). Petya, Mischa, Goldeneye: Die Erpresser sind Nerds. Heise Online. “Die Virenschreiber hinter disen Erpressungstrojanern scheinen große Fans des Films zu sein. Wahrscheinlich sind sie in den Neunzigern aufgewachsen und identif.izieren sich mit Boris Grishenko, dem russischen Hacker-Genie aus dem Film. Ob ein Twitter-Konto, welches genau auf dieses Profil passt, ein Bild von Boris Grishenko als Avatar nutzt und nach dem Verbrechersyndikat aus dem Film benannt ist, von den Drahtziehern betrieben wird, konnten wir nicht bestätigen. Aber es ist immerhin denkbar.”

## External links

* GoldenEye at Wikipedia

* *GoldenEye* at James Bond Wiki
* *GoldenEye* at the Internet Movie Database
* *GoldenEye* at the TCM Movie Database
* *GoldenEye* at Metro-Goldwyn-Mayer
* *GoldenEye* at AFI Catalog
* *GoldenEye* at BFI Screenonline