,*++*:                                        
                                                        ``      .+xxxxxxn;                                      
                                                      :zMMMz;  :xxxxxxxxxxz,                                    
                                                    ,zxxxxMMM#;Mxxxxxxxxxxxx#.                                  
                                                   ixxxxxxxxMMWMxxxxxxxxxxxxxx*`                                
                                                  +xxxxxMMMMMMMMMMMMxxxxxxxxxxxn:                               
                                                 ixxxxMMMWWWWMMMxxxxxxxxxxxxxxxxMz,                             
                                                ;xxxxMMMxxMMWWMxxxxxxxxxxxxxxxxxxxM;                            
                                               ;xxxxMxxxxxMMMMMMMMMMxxxxxxxxxxxxxxxM:                           
                                              ixxxxxxxxxxMMMMMMxxxxxxxxMxxxxxxxxxxxxx.                          
                                             +xxxxMxxxxxxMMMMMxxxxxxxxxMMxxxxxxxxxxxM#                          
                                           `zxxxxMxxxxxMMMMWWMxxxxxxxxxxxMxxxxMxxnxxxM,                         
                                          .nxxxxMxxxxxMMxxxMWMWWMxxxxxxxxxWMxxMMxnnxnMn                         
                                         ,xxxMMMxxxxxxxxxxxMMxMMWWWMxxxxxxxWMxxMMxnxnxM;                        
                                        ,xxxMMMMxxxxxMMMWMMWMxxMMMMMMxxxxxxMMxnMMMxxxxMn`                       
                                       ,xnxMMxMxxxxxMWMMMWMWxxxxxxxxWxxxxxxxWMxnWMxxxxxM;                       
                                       +nxMMxMxxxxxMMMxxMWMMxxxxxxxnMMxnxnnnMMxnxWMxMxxxx`                      
                                      ,#nxWxxMnxxxMMMxxxMMWMxMxnxnxnxMxnnxnnxWMxxMMMMxxxM+                      
                                      :nnMMnMnxxxMMxMxxMMMWMxWxnnnnnxMxxxxxxxWMMxxWMMMxxxM,                     
                                      ,nxWxxMnnnxMMxxxxMMMWMMMMnnnxxxWMxxxxxxMMMxxxWMMxxxxn`                    
                                      ,zxWxMxnnxMMxnxnxWMMMMWMMnxxxxxWMxxxxxxxWMMxxxWWMMxxMz                    
                                      :nxMxMnnxMMMnxxxMWWMMMWMMnxxxMxWMxxxxxxxxWMMxxMWWMMxxM+                   
                                      :MxMxxxxxWMxnxxxWWWMMWMMWxxxxMxMMxxxxxxxxxWMMxxxMWMxxMMn;,::              
                                :`    :xMMMxxxMWMxxxxxWWMWMWMWWxxxxMMWMxxxMxxxxMxMMMxxxMWMxxMW+i,               
                               +,*. ``#xMMMxxxWMMxxxxxWMMWMWMMMxxxMMMWMMxxMMxxxxMxMWMMxxxWMxMM#                 
                              .+;i,.,inxxMxxxxWMWxxMxMWMMMMMMMMxMMMMMWMMxxMWxxxxMMxMMMMxxMWMxMM:                
                            ``,*;*;:#+znnMxMMMWMWxxMxMWMMMMMWMWxMMMMWWMMxxMMWxxxxMMxWMMWMMWMMMM#                
                        `````..i:#iz##n+xxxWWWWMMxMMxMWMMMWM+inxMMMWWMMWxxMMMWxxxxMMMMMMWMMWMWMx`               
                       ````..;:*i#+n#xnzxxxMMW@WMxMMxMWWnz**::zxMMMWWMMWMxMMMMWxMxMMMWMMWMMWMWWM:               
                   ``````,,;;*+#zznnnnnnznnnxMW@MxMMxM*:::::::nMMMWWWMMxMxMMMMWMMMxWMMMMWMMWMWWMi               
                 ````.`.::i*##xnxxxxnnzzzzzzznxWMMMMMM+:::::::xMMMWWzMMnnMxMMMMWMMxMMMMMWMMWMWWM#               
               `````,,;:**##nnnnnnnxxxnz###zzznzWMWMMMz:::::,:MWMMWMiWMx*MxMMMMWMWMMWMMWWMMWMMWMz               
              ``,`;,*i++#zzznnnnnzzznnnnnz###znzMMWMMMMi:::,.;xWMMWn:MMx;xMxWMMMMWMMWMMWMMMWMxMMz               
             `..i;i*#zzzzzznnzznzz####znnxz##znnxMWMMMnxi::..+MWMWWz:#MM+iMMWMMWWWMMWMWMMMWMMznM#               
           ``,.+in+nznnzzzzznz+znnnz##++#nn##znxMMWMMM*zx;,..zMMMWn#:;MM#:+MMWMWWWMWMWWxMWWMMixM*               
           .,:;z#xnnnxnnnnnnn#+#znnnnnzz++nzzznMWMMxMMz:##,..xnMMx##;nMMx,,zMW@WMWMWMWxMWWMMM,MM,               
          .:iiz#xnnnxxxnnnxxxnz####znnnn#+znnnxMMMMxMMM;:n..,M*MM#*nxx:zM;.,#MWWMWWMWxWWWMWM#;MM`               
         .;*+znnnzznnnnnnzznnxxnz#++#zznn#znxxxM+;nWWMMx;z..,M;nM*;WMi::xz...iMWW@WWMWWWMMWW:zM#                
        `;#+nnnnzzznzznzz#+#zznxxz#+++zzzznnnMMW*+zMWWMMMx,.,M,+M*#Wn:..*M:...:MWWWWMWWMWMWn:MM,                
        ,+xnxxnz###nz+znnz##++#zxz###zznnnnxxxWx:::*MWWMMMM+.x:+MMM+;:...xz....#MMMMWWWWWMW;xWz                 
       `inMMnnxxnzzzz+#znnnnzz++#n#zzznMxxMMMMWz,,,:z;#MWMzxz#,;nn::;....*M;...*MMMMMWW@MMx#WW:                 
       .+MMxnxxxxxxxz####zznxn#*#zznnnnxMMMMMW##,,iz**i;+xM;x*,,:n:i,....:xn,..ixMMMMWWWMWMMMz                  
       ,nWMnznnznxxxxxnzz##znzz+#nnnxxxxMWMMWMi*;,i****iiii;+,:..,i,...,:ixMx#.;xMMMMMWWMMWnM,                  
       ,x@xzznn###znnxxxnz###zz#znnnxxMMMWMMWWi,,z@#WMMMM#i:*.........:in##MM,.;xMMMMMMMMWM#+                   
       .MWxz#zz######zznnnzzzzzznnz#nxMWWWMMWWz,,Mz;nnxxnMn,,........:#+...nM;.ixWMMMMMMMWxx`                   
        x@xz##z##########zznzxnznx**ixMMWMWMWWW::@*`*nxxxnM..........+;....*M#.*MWxMWMMWM@W*                    
        *@Wn#########zz##znnzz#+#Mi.::MMWMWMWWM+:Wi .+znxz*..........;.....;MM.#WMxMWMMWWWW.                    
        `M@Mnzzzzzzzzznzzzz#+*i:;W# `:*MMWWMMWMM.in  `:xxz.................,MM:MMxxWWMxWWWW:`,                  
         ;xWMxxnnnnzzzz#++*i;,.` nM: `:nMWWMMWWWi,ii .nnni`.................MMMMMxWWMMxWWWW+:i                  
          ;+zzzz#++++*ii;:,.``   ,MM;  zWWWMMWWMn..,``,+#,.................,MWWMxMWMWMxWWWWW#`.                 
           .:;;i;;:::,,.``        :xM#`:WWWWMMWWW;....::...................;MMMxMWMMWMMWWMWW+i,                 
             ```````               `;x#.MMWMxxMMWz.........................nMMMWWMMWWxMWWMMMW;                  
                                    ,`x+xxMWMxxnxxx#;..................;.,zMMWWMMMMWWxxWWMMMMM*                 
                                   ,. #MxxMM@Mxxxnxxxn;.......:.......,#*xWMWWMWMxWWWxxWWMMMMMMz.               
                                   .z+xxxxMWWWWMMMMMMxx#.....::........izWMWWWWWxxWMWxMWWMMMMMMMMi              
                                    ,#MMMMMMWW@WWWWWMWMM#....:*,,.......#zxWWMnMMMWMWxMWWWMWMMMMMMx,            
                                    ixMMMMMMMWWWMMMW#MWxM,....;:,......:+nzMWM#MMMWMWMMMWWWWMMMMMMMM*           
                                   +xWxnzznxMMMWMMMMn:M#Mi.....,,......;;MiMWxMMMWWWMMMMWWWWWMWMMxWMMz`         
                                 `#MWMz*iii+M#xMWMWMW*#+M*.............:;M:xW@WMMWMWWWMWWWMMWMWWWMxniMz         
                                 #MnMM*:,,,:*zMMWMWMWMnnM;......,.......iM,nMWWMMWWMMMMWWMWMWWMnWWMM;:M+        
                                *M+xMW*,.`...;zMWMWMWMMWM,......*,;......Mi#MM@MMWWWWWWMWMWMMWMnnnMxz :M.       
                               `xn+xMW+.````..:nWWMWWMMMM:......,::.....,x+:+MWWMW@MMMMWMMMWMMWM+*xMM` +*       
                               ,MinxMW*.````...:MWM@WWMxWM+,...........,*#z::xWMMM@WMMMWxMMWMMMW#i*MM: .z       
                               ;M,xMMWi.````....iWMWWWMMWMnx*...;ii...:*;:ii:xMWMMMWWMMWxMMWMMMWM;,MM:  #       
                               :x;nMMWi..```....,zMWWWMWn:,*;+;..:,..i*::::*;MMWMWMWWMMWxMWWMMxMW.`WM, .:       
                               .:MxMMM*..``......:MM@WMMn;innz+#,..:+;:::,+inWMWMWMWWWMMxWWWMMMMW..WM..*        
                                :`:zMMz..........,znMWMWWMMWMnMiz#++::::,,zz#WMMMWWWWMMxMWWWMWMxM;:M# :`        
                                 ,::xMx..........,iiinxMMMMMM+z#:::::::,..zMn+xMMWWMMWWWW@WMMWMxM*zM.           
                                    #MW:.........,:*:;nWW#,:M**ni*i;::,...ixxxxMnxMx+#nW@WMWMWMxMxW+            
                                `.  +MW+.........,:*::;xW;.,M:i;``,ii,,...,*xxn*#WM:,,;;i#MWMMMxMWn             
                                i. .xM*+,.......,::*:::*W,;z; , `;;:;,.....:+.,,xx+,,,;````,izMMMM.`            
                                i+;zM*:;*.......,::;+;::z     `;;,,,;......:#i:,xM;..`.   ,**xWMWn ;`           
                                 *z++::;+;,....,:::::;+*i   ,+;,,:i*#:.....:*,ii+Wi`   :#MW;zMWMiMz+            
                                   ;::;*+#;,,,,::::::,:z*:*xWWx#zxxMMM#....:z,,,:+z:`  iMW*+MMW: .,             
                                  `i:;*i;**i:::::::::,,:*iMMMMMMMz*,:zMz;,.:++:,.`.``   .n*MMW+                 
                                  ;:;*;ii,:;*::::::::,.,**#MMMWWWz;,` .M:i.;*i#,.  ``  `iiMMWx`                 
                                  *;i:ii,..:;+:::::::,..,+ixMMMMMMW#,  z#;.:*:z,.     `#iMM#ni                  
                                 `*;::*.....:#;:::::,,...*:iMMWMMMMMx; in;..i:*,.    `z+xMM,M.                  
                                 :;;:*,.....,:n;::::,,...;i:*WMWWMxxMM#:z;....::. `  +x*MM+*W.                  
                                 ;:::i......,:##*:::,,...:+:;zMWMMWMxMMx;;,...,;` ` :xxnMx***;  :               
                                 i::*......,,:;i;*;:,,...,+::++nzWMMxnxW..:...,;````#xMMxxn+;*++,               
                                 *::i.....,::::i,.++i,...:#;:;+#izxxMxxM+ ;,..,i`.`:n+nWxW#i*;#,                
                                 *;*.......:::::,*,,i*:,,:#z:;+*#:xzzMxWn :,...i.. iz#;xM#::z+ii                
                                 i+,......,:i;:i;;..,;#:::##;;+;n+;M#MnMM``;...i,,.*z#:zMn:;+z;*                
                                 +:........:*#:;z:...,:+::#i+;+i#+:iMMxzW. ;,..i,.;*+i;iMWz+n*;+`               
                                `+...........:*:z;;:,.,:#iz;#;*i+i+i#WW+M. `;..i:.;;+;i:*xMxi:;*`               
                                :;............:+#i.....:++#i+ii*ii*nzWMz#.` ;,.*;.;*+#*:::::;:;*`               
                                .*::,..........*:......,*::zi+i+;;*WWxMx*.`.`;.ii,,*+;*::::;;;;*`               
                                 +::::,...............,:*::i*+;+;;nMMMxWi;``,.:;*;,**;i::::;;i;+`               
                                 ,+:ii:,............,:::+::i#+;+;iMz#z;#n*. .,;;#*,*+*+::::;;+;*`               
                                  *::;i:,..........,:::i+::*i#;*;+nx;i*:n++``:.ii*:i+;+::::ii+;*                
                                  *,::ii::,......,::,:i+:::#;#i*;iMn#:i*;M*z,`i,*;:*+;i::::i++;+                
                                 .i..,:*i::,...,:::::+i:::;+i+*i;:*xi::+:iM+*;.*:,:++*+::::;#+;+                
                                 ;,...,:+;::..,::::i#::,::#i;;+;;:;xi:::*;+x*,;;*.;+*;+::::;ni;+                
                                 *.....,:+;::,::::++::,:::+;;;#;:::;*::::+:z#*..i`:i+;*:::::#i;+                
                                 +......::+::::::#i::,,::i*;;#+;:::;;::::;*;n**;+:ii+*+:::::*+;#.               
                                 z,.....,::+;::;+;::,.,::#;;ini;::::;:::::;#:x*i+ii++;*:::::;#;+*               
                                 :#:::,,,:::##+*:::,..:::n;;z#;;:::::::::::;*;x*#,,z+;i:::::;#;+*.              
                                  `i+:::::::::::::,..,::*+;**+;;::::::::::::;#in+: *#i*::::::+*ii;              
                                    .#:::::,,::::::,,:::++*#i+;;:::::::::::::;iin*`;#:*::::::;#;;i              
                                     +::;i*i;,,,,::::::+;+n**i;:::::::::::::::i+*#*i#;*::::::;#;;;              
                                     i,.,:::i***i;::::+#:++i*;;::::::::::::::::ii*#*z**:::::::+ii:              
                                     ::...,::::::;***+i::#+;i;;:::::::::::::::::***#n:*:::::::i+*.              
                                      ;:.,::::::::::::::#*+;;;:::::::::::::::::::*;*zii:::::::;##,              
                                       .i*::i+******++nz*i*;;;::::::::::::::::::::i;:*;:::::::;#z,              
                                         i:,,,,::;;;:++;;+;:;;:::::::::::::::::::::+;*;::::::::z#,              
                                         .;...:::::++;;;;+;:;:::::::::::::::::::::::i#:::::::::zi;              
                                          i::i***++;;;;;i*::;::::::::::::::::::::::::;::::::::;#;i              
                                           *z****;;;;;;;*i::::::::::::::::::::::::::::::::::::;z;+              
                                           `#;;i+;;;;;;;*;:::::::::::::::::::::::::::::::::::;;#;+              
                                            #;;i+;;;;;;;*:::::::::::::::::::::::::::::::::::;;;#;+`             
                                            +;;;+;;;;;;i;::::::::::::::::::::::::::::::::::;;;;#i+.             
                                            *;;;*;;;;;;;;::::::::::::::::::::::::;;::::::;;;;;;#i+,             
                                            :*;;*;;;;;;;:::::::::::::::::::::;;;;;;::::;;;;;;;:#ii:             
                                            ,#;;*;;;;;;;:::::::::::::;;;;;;;;;;;;;::::;;;;;;;:;#i;i             
                                            `z;;*;;;;;;::::::::::::::;;;;;;;;;;;;;::::;;;;;;;:;*;;*             
                                             z;;*i;:;;;:::::::::::::;;;;;;;;;;;;;;::::;;;;;;;:*i;;#             
                                             +i;ii::;;::::::::::::::;;;;;;;;;;;;;::::;;;;;;;;:*;;;#`            
                                             ;+;;i::;;:::::::::::::;;;;;;;;;;;;;;::::;;;;;;;;:+;;;i:            
                                             `z;;*:;;::::::::::::::;;;;;;;;;;;;;::::;;;;;;;;::+;;;;*            
                                              #;;*:;::::::::::::::;;;;;;;;;;;;;;::::;;;;;;;;:ii;;;;+`           
                                              :*;*:;::::::::::::::;;;;;;;;;;;;;::::;;;;;;;;;:*;;;;;;i           
                                              `#;i;:::::::;:::::::;;;;;;;;;;;;:::::;;;;;;;;::+;;;;;;+           
                                               +;:*:::::::;::::::;;;;;;;;;;;;;::::;;;;;;;;;:;*;;;;;;*.          
                                               ii;*::::::;;::::::;;;;;;;;;::::::::;;;::;;;;:*;;;;;;;;i          
                                               .+;*:::::;;;:::::;;;;;;;;:::::::::;;;:::;;;;:#;;;;;;;;+          
                                                +;*:::::;;::::::;;;;;;;:::::::::;;;:::;;;;;i+;;;;;;;;*.         
                                                iii::::;;;:::::;;;;;;::::::::::;;;;:::;;;;;#;;;;;;;;;ii         
                                                .*;;:::;;::::::;;;;;:::::::::::;;;:::;;;;;;z*;;;;;:;;;i         
                                                 +;;::;;;::::::;;;;:::::::::::;;:::::;;;;;i+*;;;;;:;;;*         
                                                 *;;::;;:::::::;;::::::::::::;;:::::;;;;;;+;;i;;;::;;;*`        
                                                 iii:;;;::::::::::::::::::::;;::::::;;;::;#;;;;;;:::;;i,        
                                                 ,*i:;i;::::::::::::::::::::;::::::;;;;::ix*;;;;;:::;;;:        
                                                 `#i;;#::::::::::::::::::::;::::::;;;;:::#*+i;;;;:::;;;i        
                                                  ziin;:::::::::::::::::::;:::::::;;;:::;n;;+;;;;:::;;;i        
                                                  #iz*:::::::::::::::::::::::::::;;;;:::ix;;;#;:::::;;;*        
                                                  +#z:::::::::::::::::::::::::::;;;;:::;+#;;;i*::::::;;*        
                                                  nn:::::::::::::::::::::::::::;;;;;:::;*+;;;;i;:::::;;*`       
                                                 `n;::::::::::::::::::::::::::;;;;;::::;;+;;;;;;:::::;;i.       
                                                 *i::::::::::::::::::::::::::;;;;;::::;;;+;;;;;;:::::;;i,       
                                                ii;:::::::::::::::::::::::::;;;;;;:::;;;;+;;;;;;;::::;;;:       
                                               ii;:::::::::::::::::::::::::;;;;;;;::;;;;;+;;;;::;;::::;;:       
                                              **;;::::::::::::::::::::::::;;;;;;;;;;;;;;;#;;;;:::;;:::;;;       
                                             +i;;::::::::::::::::::::::::;;;;;;;;;;;;;;;;#;;;;::::;;::;;;       
                                           `+i;;;:::::::::::::::::::::::;;;;;;;;;;;;;;;;;z;;;;:::::;;:;;;       
                                          `*;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;;;;;z;;;;:::::;;;;;i