[Question]
  [
*Note to mods, if the title doesn't do justice, change it to whatever, I thought it was funny.*
---
You're tasked with hanging up the lights for this Christmas season, and your family has decided that for it to be a merry Christmas, you need to hang at least 2 Christmas lights on your house. So, your challenge is, given a number `1 < n`, output the corresponding number of christmas lights you're going to be hanging according to the following specifications...
---
Here is the structure of a basic christmas light:
```
  _?_
 [___]
 /:' \ 
|::   |
\::.  /
 \::./
  '='
```
The only uncertain part is the question mark, as depending on where the light lands in the chain, the connection will greatly differ.
***For the first light in the chain, you will need to output:***
```
    .--._ 
  _(_ 
 [___]
 /:' \ 
|::   |
\::.  /
 \::./
  '='
```
***For the last light in the chain, you will need to output:***
```
_.--. 
    _)_
   [___]
   /:' \ 
  |::   |
  \::.  /
   \::./
    '='
```
***And for all lights in the middle:***
```
_.--.--._
   _Y_ 
  [___]
  /:' \ 
 |::   |
 \::.  /
  \::./
   '='
```
---
# Example:
***N=2***:
```
    .--.__.--.    
  _(_        _)_  
 [___]      [___] 
 /:' \      /:' \ 
|::   |    |::   |
\::.  /    \::.  /
 \::./      \::./ 
  '='        '='  
```
***N=6***:
```
    .--.__.--.--.__.--.--.__.--.--.__.--.--.__.--.
  _(_       _Y_      _Y_      _Y_      _Y_       _)_
 [___]     [___]    [___]    [___]    [___]     [___]
 /:' \     /:' \    /:' \    /:' \    /:' \     /:' \
|::   |   |::   |  |::   |  |::   |  |::   |   |::   |
\::.  /   \::.  /  \::.  /  \::.  /  \::.  /   \::.  /
 \::./     \::./    \::./    \::./    \::./     \::./
  '='       '='      '='      '='      '='       '='
```
---
# Credit
ASCII-Art was taken from: <http://www.chris.com/ascii/index.php?art=holiday/christmas/other>
It was developed by a user named "jgs", who is responsible for around 40% of content on that site.
---
# Rules
* Trailing spaces are fine, same with a trailing newline.
* There is 1 more space between the first and last bulb from the rest of the chain.
* You may only take 1 integer as input, and the output MUST be a string, no arrays.
* Your program may have undefined functions for values less than 2.
This is [ascii-art](/questions/tagged/ascii-art "show questions tagged 'ascii-art'")[code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'"), lowest byte-count wins.
---
[Sanbox post link here.](https://codegolf.meta.stackexchange.com/questions/2140/sandbox-for-proposed-challenges/14432#14432)
  
[Answer]
# [SOGL V0.12](https://github.com/dzaima/SOGLOnline), ~~73~~ ~~71~~ ~~70~~ 66 [bytes](https://github.com/dzaima/SOGL/blob/master/chartable.md)
```
.”L7:±¹‘Ο4↕ooā.⁾ Y*¾(){"}^ņF⁵),WοΓy⅜¬κ8ΕL▓‚7m~Ε⅝Γ‘7n┼F (=f⁄2=+⁽{@┼
```
[Try it Here!](https://dzaima.github.io/SOGLOnline/?code=LiV1MjAxREw3JTNBJUIxJUI5JXUyMDE4JXUwMzlGNCV1MjE5NW9vJXUwMTAxLiV1MjA3RSUyMFkqJUJFJTI4JTI5JTdCJTIyJTdEJTVFJXUwMTQ2RiV1MjA3NSUyOSUyQ1cldTAzQkYldTAzOTN5JXUyMTVDJUFDJXUwM0JBOCV1MDM5NUwldTI1OTMldTIwMUE3bSU3RSV1MDM5NSV1MjE1RCV1MDM5MyV1MjAxODduJXUyNTNDRiUyMCUyOCUzRGYldTIwNDQyJTNEKyV1MjA3RCU3QkAldTI1M0M_,inputs=NA__,v=0.12)
-4 bytes by looping over a string like `(YYY)` like [the Charcoal answer](https://codegolf.stackexchange.com/a/151287/59183)
[63 bytes](https://dzaima.github.io/SOGLOnline/?code=LiV1MjAxREw3JTNBJUIxJUI5JXUyMDE4JXUwMzlGNCV1MjE5NW9vJXUwMTAxLiV1MjA3RSUyMFkqJUJFJTI4JTI5JTdCJTIyJTdEJTVFJXUwMTQ2RiV1MjA3NSUyOSUyQ1cldTAzQkYldTAzOTN5JXUyMTVDJUFDJXUwM0JBOCV1MDM5NUwldTI1OTMldTIwMUE3bSU3RSV1MDM5NSV1MjE1RCV1MDM5MyV1MjAxODduZjJXRiV1MjI2MCV1MjA3RCU3QkAldTI1M0MlN0QldTI1M0M_,inputs=NQ__,v=0.12) would work if 2 didn't need to be handled :/
[Answer]
# Python 3, ~~200~~ ~~195~~ ~~191~~ ~~190~~ 186 bytes
```
d,*l=" _%c_     , [___]   , /:' \   ,|::   |  ,\::.  /  , \::./   ,  '='    ".split(',')
x=int(input())-2
print(' '*3,-~x*'.--.__.--'+'.\n',d%'(',d%'Y'*x,d%')')
for s in l:print(s,s*x,s)
```
-1 byte from dylnan  
-4 bytes from Rod
Takes input on stdin.
[Try it online!](https://tio.run/##JYzBCsMgEETv@YolEFatGmigByEfUprioaFUCEaiBQuhv27ddA8zj53dCZ/0Wv1QyizFMrZgu4cFGgk3a@39oN4gTES7MdX2SpMxGqCnlLA/7gBHpN9Wx7C4xFAib/LofGLOh3dinKtzEzZaIKAYpPpmgVopbW1VPKGePMq5Q3boFUUm57XnuW4QwXlYzL8hyljTyEu5/AA "Python 3 – Try It Online")
Explanation:
```
d,*l=" _%c_     , [___]   , /:' \   ,|::   |  ,\::.  /  , \::./   ,  '='    ".split(',')
# d is the second row, without the (, Y, or ) to connect the light to the strand
# l is the third through eighth rows in a list
x=int(input())-2
# x is the number of lights in the middle of the strand
print(' '*3,-~x*'.--.__.--'+'.\n',d%'(',d%'Y'*x,d%')')
# print x+1 wire segments and a trailing dot, starting four spaces over
# on the next line, print the connectors, _(_, then _Y_ * x, then _)_
for s in l:print(s,s*x,s)
# on the Nth line, print the Nth light row, a space,
#     x * the Nth light row, a space, and the Nth light row
```
[Additional Festive Version!](https://repl.it/@pizzapants111/Festive-Christmas-Lights)
[Answer]
# [Pyth](https://github.com/isaacg1/pyth), ~~113~~ 107 bytes
```
+"    ."*=tQ"--.__.--."++"  _(_ "j"_Y_"*Q]*6d" _)_"jms[d;jd*Q]*2;;d)c5" /:' \ |::   |\::.  / \::./   '='  "
```
[Try it online!](http://pyth.herokuapp.com/?code=%2B%22++++.%22%2a%3DtQ%22--.__.--.%22%2B%2B%22++_%28_+%22j%22_Y_%22%2aQ%5D%2a6d%22+_%29_%22jms%5Bd%3Bjd%2aQ%5D%2a2%3B%3Bd%29c5%22+%2F%3A%27+%5C+%7C%3A%3A+++%7C%5C%3A%3A.++%2F+%5C%3A%3A.%2F+++%27%3D%27++%22&input=6&debug=0)
Not exactly the golfiest version...
[Answer]
# JavaScript (ES6), 180 bytes
```
n=>`    .${'--.__.--.'.repeat(n-1)}
`+`  _Y_  
 [___] 
 /:' \\ 
|::   |
\\::.  /
 \\::./ 
  '='  `.replace(/.+/g,(r,p)=>`${p?r:'  _(_  '}  ${` ${r} `.repeat(n-2)}  ${p?r:'  _)_'}`)
```
**Test**
```
var f=
n=>`    .${'--.__.--.'.repeat(n-1)}
`+`  _Y_  
 [___] 
 /:' \\ 
|::   |
\\::.  /
 \\::./ 
  '='  `.replace(/.+/g,(r,p)=>`${p?r:'  _(_  '}  ${` ${r} `.repeat(n-2)}  ${p?r:'  _)_'}`)
  
function update()
{
  var n=+I.value
  P.textContent=f(n)
}  
update()
```
```
<input id=I type=number value=2 min=2 oninput='update()'>
<pre id=P></pre>
```
[Answer]
# JavaScript (ES6), ~~204~~ ~~201~~ ~~196~~ ~~194~~ 192 bytes
```
N=>`     ${(r=x=>x.repeat(N-1))(`.--.__.--`)}.
   _(_    ${N--,r(`   _Y_   `)}    _)_
`+` [___] 
 /:' \\ 
|::   |
\\::.  /
 \\::./ 
  '='  `.split`
`.map(x=>`${x=` ${x} `} ${r(x)} `+x).join`
`
```
```
f=
N=>`     ${(r=x=>x.repeat(N-1))(`.--.__.--`)}.
   _(_    ${N--,r(`   _Y_   `)}    _)_
`+` [___] 
 /:' \\ 
|::   |
\\::.  /
 \\::./ 
  '='  `.split`
`.map(x=>`${x=` ${x} `} ${r(x)} `+x).join`
`
for(let i = 2; i <= 5; i++){
  console.log(f(i))
}
```
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), ~~78~~ 74 bytes
```
Ｍ⁴→×….--.__⁹⊖θ.⸿Ｆ⪫()×Y⁻θ²«Ｍ⁼ι)→Ｐ“ ▷υ ρ1↗N⁷Σ⭆ C✂⪪⟲⦃¬≡↘↨H℅⌕Σêλ⍘”  _ι_Ｍ⁺⁴⁼ι(→
```
[Try it online!](https://tio.run/##TZDBasMwEETPzlcsungFsgOlFKqQU9pLwRBKL6EqwjhKLFCkWLYDpcm3q4pdik47u8MMj23a2jeuNiFU7qLwkQF/18d2oKvF1ms74Ic@qR43341Rm9adkZRFUUpJGDxTBi@q8eqk7KD22FH6nyKl8CRuB@cB35y2SJDGzNxGdlFW2o49dgweYo7CzyKbCF67sTY9agaEEprgZNVoBn2e64WFTynlV5xLnoMQwl45B4CrsEJwXgIsozfJu4B8nd95sj88AJmsOnHm@4SyNREwfiRBQkJTplsIT6G4mF8 "Charcoal – Try It Online") Link is to verbose version of code. Edit: Saved 2 bytes by simplifying the way the wiring is printed. Saved 2 bytes because the new code automatically casts the input to integer. Explanation:
```
Ｍ⁴→×….--.__⁹⊖θ.⸿
```
Print the wiring by taking the string `.--.__`, moulding it to length 9, then repeating it once for each join, finishing with a final `.` before moving to the start of the next line for the bulbs.
```
Ｆ⪫()×Y⁻θ²«
```
Loop over a string of connectors: `(` and `)` at the ends, and `Y`s in the middle.
```
Ｍ⁼ι)→
```
Move right one character if this is the last bulb.
```
Ｐ“ ▷υ ρ1↗N⁷Σ⭆ C✂⪪⟲⦃¬≡↘↨H℅⌕Σêλ⍘”
```
Print the body of the bulb without moving the cursor.
```
  _ι_
```
Print the cap of the bulb including the connector.
```
Ｍ⁺⁴⁼ι(→
```
Move to the start of the next bulb (an extra character if this is the first bulb).
[Answer]
# Excel VBA, ~~224~~ ~~207~~ 205 Bytes
Anonymous VBE immediate window function that takes input from range `[A1]` and outputs to the VBE immediate window.
Prints the bulbs line by line, from top left to bottom right
```
?Spc(4)[Rept(".--.__.--",A1-1)]".":?"  _(_ "[Rept("      _Y_",A1-2)]"       _)_":For i=0To 5:b=Split(" [___]   1 /:' \   1|::   |  1\::.  /  1 \::./   1  '='    ",1)(i):[B1]=b:?b" "[Rept(B1,A1-2)]" "b:Next
```
Sample I/O
```
[A1]=7 ''  Input to worksheet, may also be done manually
?Spc(4)[Rept(".--.__.--",A1-1)]".":?"  _(_ "[Rept("      _Y_",A1-2)]"       _)_":For i=0To 5:b=Split(" [___]   1 /:' \   1|::   |  1\::.  /  1 \::./   1  '='    ",1)(i):[B1]=b:?b" "[Rept(B1,A1-2)]" "b:Next
    .--.__.--.--.__.--.--.__.--.--.__.--.--.__.--.--.__.--.
  _(_       _Y_      _Y_      _Y_      _Y_      _Y_       _)_
 [___]     [___]    [___]    [___]    [___]    [___]     [___]   
 /:' \     /:' \    /:' \    /:' \    /:' \    /:' \     /:' \   
|::   |   |::   |  |::   |  |::   |  |::   |  |::   |   |::   |  
\::.  /   \::.  /  \::.  /  \::.  /  \::.  /  \::.  /   \::.  /  
 \::./     \::./    \::./    \::./    \::./    \::./     \::./   
  '='       '='      '='      '='      '='      '='       '='    
```
-17 Bytes thanks to [@YowE3k](https://codegolf.stackexchange.com/users/76990/yowe3k)
-2 bytes for addition of temporary variable `b`
[Answer]
# C, ~~279~~ ~~278~~  ~~272~~  ~~262~~ 259 bytes
*Thanks to @NieDzejkob for saving six bytes!*
```
#define P;printf(
i,j;f(n){char*S=" [___]   \0 /:' \\   \0|::   |  \0\\::.  /  \0 \\::./   \0  \'=\'    \0"P"    ");for(i=n--;--i P".--.__.--"))P".\n  _(_ ");for(;++i<n P"      _Y_"))P"       _)_\n%s ",S);for(;*S P"%10s\n%s ",S,S+10),S+=10)for(i=n;--i P S));}
```
[Try it online!](https://tio.run/##NY/BboMwDIbvPMWvTBVxIUBvUzLeASmnaZ6iijVdJi2b6G5tn52FQC/2/9ufbXlU53Gc56ePkw/xhMH8TiH@eVmE@st4Gek6fh6nve0F3pxz7wC4Q6tLMGd90zrl2yKZtW6ANiPZtCsOLnsukY0YxCIEGf8zydBHpYxSAYNolGqcS1EQJccRcNI9SFNV4SVinU6dV5cxbJYcx90ForYbvreJ3R26y6Ne2@rQUYp9Stvt9TIskbnP6W98H0OUVFyLZamXz2SK@/wP)
**Unrolled:**
```
#define P;printf(
i, j;
f(n)
{
    char*S = " [___]   \0 /:' \\   \0|::   |  \0\\::.  /  \0 \\::./   \0  \'=\'    \0"
    P"    ");
    for (i=n--; --i P".--.__.--"))
    P".\n  _(_ ");
    for (; ++i<n P"      _Y_"))
    P"       _)_\n%s ",S);
    for (; *S P"%10s\n%s ", S, S+10), S+=10)
        for(i=n; --i P S));
}
```
[Answer]
# Java, ~~310~~ ~~307~~ ~~300~~ 275 bytes
Thanks to DevelopingDeveloper for converting it to a lambda expression
```
i->{int j=1;String o="     .";for(;j++<i;)o+="--.__.--.";o+="\n   _(_    ";for(;--j>2;)o+="   _Y_   ";o+="    _)_";String[]a={"  [___]  ","  /:' \\  "," |::   | "," \\::.  / ","  \\::./  ","   '='   "};for(String b:a)for(j=0;j++<i;)o+=j==1?"\n"+b+" ":j==i?" "+b:b;return o;};
```
Expanded:
```
i->
{
    int j=1;
    String o="     .";
    for(;j++<i;)
        o+="--.__.--.";
    o+="\n   _(_    ";
    for(;--j>2;)
        o+="   _Y_   ";
    o+="    _)_";
    String[]a={"  [___]  ","  /:' \\  "," |::   | "," \\::.  / ","  \\::./  ","   '='   "};
    for(String b:a)
        for(j=0;j++<i;)
            o+=j==1?"\n"+b+" ":j==i?" "+b:b;
    return o;
};
```
Looking into shorter ways to multiply strings, and found that streams are surprisingly [more verbose](https://stackoverflow.com/a/6857936/5475891)
[Try it online!](https://tio.run/##TVBBbsIwELzzipUvJAoxpVIvdg3iAT31VBFkORCQ3WBHiUGqQt6eroNb4YO145nRjseom8pdU1lz/B6ba1nrAxxq1XXwobTtZ9r6qj2pQwVb6GcQz6dvtT2DSpAGnfKJGGadVx79W1AgYNT5ug@8ESseDU6QyU8JP7k24SbL3jVPXSZInlMpKd6EB1hYlMlEBnUU57lZvz7EgfuSExUhyFSSuGa3V6LHx52Uco@aBc5LNoeieIA7Y2i4T3NRMEaRfqgmtIwWmIt5WDFM6@MPSqbSAI14eUpvhFhtMDPJyowAYYj1BoesZCVvK39tLTg@8DEkjS3Hsm5OH@GCXSd/4UG15y59bvun89WFuqunDUp8bRNFVfKW/hc/jL8)
[Answer]
## PHP, ~~276~~, ~~307~~, ~~303~~, ~~301~~, ~~293~~, ~~283~~, ~~280~~, 278 Bytes
```
function g($n){$a=["     .--._".r("_.--.--._",$n)."_.--.",r("_(_")." ".r(_Y_,$n)." ".r("_)_")];foreach(explode(9,"[___]9/:' \9|::   |9\::.  /9\::./9'='")as$b)$a[]=r($b)." ".r($b,$n)." ".r($b);return join("\n",$a);}function r($s,$n=3){return str_repeat(str_pad($s,9," ",2),$n-2);}
```
Readable version for testing:
```
function g($n){
    $a=[
         "     .--._".r("_.--.--._",$n)."_.--.",
         r("_(_")." ".r(_Y_,$n)." ".r("_)_")
    ];
    foreach(explode(9, "[___]9/:' \9|::   |9\::.  /9\::./9'='") as$b)
         $a[]=r($b)." ".r($b,$n)." ".r($b);
    return join("\n",$a);
}
function r($s,$n=3){
    return str_repeat(str_pad($s,9," ",2),$n-2);
}
```
Check minified version out [here](http://sandbox.onlinephpfunctions.com/code/29be1431ca8c7e0de6bff30572c17f9edcaef965)
Check readable version out [here](http://sandbox.onlinephpfunctions.com/code/e2c061fa3a23012d8cae9407d7e35fced8569c9b)
**UPDATE**
Wrapped it in a function, 
[Answer]
# [Clean](https://clean.cs.ru.nl), ~~305~~ ~~292~~ ~~288~~ 275 bytes
```
import StdEnv
f c=mklines['  _',c,'_  \n [___] \n /:\' \\ \n|::   |\n\\::.  /\n \\::./ \n  \'=\'  ']
@n=flatlines[a++b++c\\a<-[['    .--._']:[e++['  ']\\e<-f'(']]&b<-map(flatten o(repeatn(n-2)))[['_.--.--._']:[[' ':e]++[' ']\\e<-f'Y']]&c<-[['_.--.    ']:[['  ':e]\\e<-f')']]]
```
[Try it online!](https://tio.run/##PZDBSsQwEIbv@xRzMi3ZtODBQ2hhD3oQvO1JMiGkaSrFJi27URD22Y1JrN7@Yb75fhizWO2jW8ePxYLTs4@z29ZLgHMYn/znYQLTu/dl9vYqCIAiR3MkCgA9CKWUzKHlSAAxxRvnAHBDj8h5A9CmbYlt5gBJn0gg8nDy/bTo8OvVlA6UGkTdMZFbABrGGkUkF5ZSUU4QbccmUhEp74aOOb1V2RCsh7W62M3q4CvP7uu6Tg6VBX@OJCDcymL6F71mkSmFBc6tO1zoHasTJuM56PSSHk7wEL9N6n27RjZENn557WaThueX@LgPPw "Clean – Try It Online")
[Answer]
# [Python 2 (PyPy)](http://pypy.org/), ~~365~~ ~~316~~ ~~315~~ ~~251~~ 245 bytes
-21 thanks to [FlipTack](https://codegolf.stackexchange.com/users/60919/fliptack)
-43 thanks to [ovs](https://codegolf.stackexchange.com/users/64121/ovs)
-6 thanks to [Mr. Xcoder](https://codegolf.stackexchange.com/users/59487/mr-xcoder)
```
v,p=' \n'
a,l,n=".--._",["[___]"," /:' \ ","|::   |","\::.  /"," \::./ ","  '='  "],input()-2
e,b=v*5+"_)_",a[::-1]
r=v*4,a,(b[:4]+a)*n,b,p+"  _(_   ",(v*4+"_Y_  ")*n,e+p+v
for i in l:b=4-2*(i in l[1:]);r+=i+v*-~b,(i+v*b)*n,v+i+p
print''.join(r)
```
[Try it online!](https://tio.run/##JY1Ri8MgEITf/RWLL9G4JjSkLxZ/yGFFIvQ4j2Ik5IRA6V9PV@5tZmfm23LsP2uedDnKcZ6bdf5WsdgO7rljCz4xWz5oPQSOjrsQgufIYTRUAFIvYwDgRepuzAAwtrTJsaUAHZGAe0y5/O1C6ok9MNraXxUPkpiLM0ZfPNsUHWdcUERnZq8W2WeMWBQxggj0g6OgBs2@yPEWP1RRlX2vGyRIGZ4m2llPvfh37mK8vBE3qdrrd0TRRGzDqpIqrGwp7103/K4pi02e5/UD "Python 2 (PyPy) – Try It Online")
[Answer]
# [Kotlin](https://kotlinlang.org), 261 bytes
```
{val c="  [___]\n/:' \\\n |::|\n \\::./\n  \\::./\n   '='"
(0..7).map{i->print("     .--._\n   _(_\n$c".lines()[i].padEnd(10))
(0..L-3).map{print("_.--.--._\n   _Y_\n$c".lines()[i].padEnd(9))}
if(i>1)print(' ')
print("_.--.\n    _)_\n$c".lines()[i])
println()}}
```
## Beautified
```
{
    val c = "  [___]\n  /:' \\\n |::   |\n \\::.  /\n  \\::./\n   '='"
    (0..7).map {i->
        print("     .--._\n   _(_\n$c".lines()[i].padEnd(10))
        (0..L - 3).map {
            print("_.--.--._\n   _Y_\n$c".lines()[i].padEnd(9))
        }
        if (i > 1) print(' ')
        print("_.--.\n    _)_\n$c".lines()[i])
        println()
    }
}
```
## Test
```
fun f(L: Int)
{val c="  [___]\n/:' \\\n |::|\n \\::./\n  \\::./\n   '='"
(0..7).map{i->print("     .--._\n   _(_\n$c".lines()[i].padEnd(10))
(0..L-3).map{print("_.--.--._\n   _Y_\n$c".lines()[i].padEnd(9))}
if(i>1)print(' ')
print("_.--.\n    _)_\n$c".lines()[i])
println()}}
fun main(args: Array<String>) {
    f(6)
}
```
## TIO
[TryItOnline](https://tio.run/##ddDBisJADAbg+zxFKMIkh47KwoqDFvbgYcGbp8WRYahWBmu21Logtc/eHVtBQcwlOfz5Ajn8VrnnVmRnhgyXGr65orb+czmk8whgba3dGB5qCcYYhqvW19CM0VoNw/A0gZzLSOBIqQmpoytqHydF6bnC4IRScaxsF7QY+iCNVDi9OyGt/UYVbrvgLY5HRJ2xjD965U7Y2/pD+HkrTIka4TP0yZj6XQmSxDPTEWDpxbjHckZqmv4pR+cZXbk/afgqS3eZraoQ2ScEtbgpGX6SaNp/)
[Answer]
# Google Sheets, 190 Bytes
Anonymous worksheet function that take input from range `A1` and outputs to the calling cell
```
="    "&Rept(".--.__.--",A1-1)&".
  _(_    "&Rept("   _Y_   ",A1-2)&"    _)_"&RegexReplace("
 [___]   
 /:' \   
|::   |  
\::.  /  
 \::./   
  '='    
","
(.*)","
$1 "&Rept("$1",A1-2)&" $1
```
]