text:
Professionista dal 2005 al 2022, aveva caratteristiche di passista-scalatore, si difendeva bene a cronometro ed era un forte discesista. Considerato uno dei campioni più forti e completi della sua generazione, è stato uno dei sette ciclisti (oltre a Jacques Anquetil, Eddy Merckx, Felice Gimondi, Bernard Hinault, Alberto Contador e Chris Froome) ad aver conquistato almeno un'edizione di tutti e tre i Grandi Giri, avendo vinto la Vuelta a España nel 2010, il Giro d'Italia nel 2013 e nel 2016 e il Tour de France nel 2014. È stato inoltre uno dei soli quattro corridori (insieme a Merckx, Hinault e Gimondi) ad aver vinto i tre Grandi Giri e almeno due classiche monumento: il Giro di Lombardia, nel 2015 e nel 2017, e la Milano-Sanremo, nel 2018.  A queste grandi vittorie si aggiungono due titoli italiani nella prova in linea, nel 2014 e nel 2015, due Tirreno-Adriatico, nel 2012 e nel 2013, e altri sette podi nei tre Grandi Giri.

Soprannominato Lo Squalo dello Stretto, o più semplicemente Lo Squalo, per il suo modo di correre sempre all'attacco e per le sue origini messinesi, ha un fratello minore, Antonio, anch'egli ciclista professionista e suo compagno di squadra tra il 2017 e il 2022.

Carriera

Gli esordi
Nella categoria Allievi ottiene 7 successi. Tra gli Juniores si aggiudica diciannove corse, cinque nel 2001 al primo anno nella categoria e quattordici nel 2002, tra cui spiccano la classifica finale del Giro della Lunigiana, il campionato italiano e la medaglia di bronzo a cronometro ai campionati del mondo di Zolder.

Nel 2003 passa alla categoria Under-23 con la toscana Mastromarco, ottenendo sette successi in totale, tra i quali due tappe alla Linz-Passau-Budweis e un secondo posto finale, risultati che gli valgono la chiamata per le prove Under-23 dei campionati europei e del mondo. Nel 2004, ancora da Under-23, ottiene dodici vittorie, ed è nuovamente convocato per il campionato europeo ad Atene; si fa notare soprattutto ai mondiali di Verona, durante i quali è quinto nella prova in linea e terzo in quella a cronometro di categoria.

2005-2007: i primi anni da professionista
Nel 2005 la Fassa Bortolo di Giancarlo Ferretti decide di arruolarlo nella propria squadra professionistica. Nello stesso anno Nibali si piazza secondo dietro Chris Horner nella sesta tappa del Giro di Svizzera, sesto nella Milano-Torino e quarto nella prova a cronometro del campionato italiano.

Nel 2006, con la chiusura della Fassa Bortolo, entra a far parte della Liquigas, ottenendo il suo primo successo da professionista nella seconda tappa della Settimana Internazionale di Coppi e Bartali, in seguito ad un attacco da lontano. La stagione continua con il successo al Grand Prix de Ouest-France a Plouay (valido per il calendario UCI ProTour), la convocazione per correre la prova a cronometro dei campionati del mondo (giunge sedicesimo) e con numerosi piazzamenti tra l'Eneco Tour, il Giro di Polonia e il Giro di Danimarca.

Nella stagione seguente Nibali vince il Gran Premio Industria e Artigianato a Larciano (arriva al traguardo con il compagno di squadra Pellizotti che gli cede la vittoria) e si ripete il giorno dopo al Giro di Toscana. Partecipa poi al Giro d'Italia, nelle vesti di gregario di Danilo Di Luca (vincitore finale della corsa), arrivando diciannovesimo e contribuendo anche al successo nella cronometro a squadre iniziale a La Maddalena. In seguito partecipa al Giro di Slovenia, vincendo la tappa di montagna e chiudendo secondo in classifica generale; successivamente è secondo nella cronometro dei campionati italiani (a due secondi da Marco Pinotti) e ottiene nuovamente la convocazione per la cronometro dei campionati del mondo, che conclude al diciannovesimo posto.

2008-2009: i piazzamenti al Giro e al Tour

Apre la stagione 2008 aggiudicandosi la classifica finale e una vittoria di tappa nel Giro del Trentino, e si prepara ad affrontare il Giro d'Italia come capitano della squadra insieme a Franco Pellizotti. Durante la gara si dimostra però non ancora abbastanza pronto e infatti accusa diversi ritardi dai migliori nelle tappe di montagna più dure; si mette in luce però nelle tappe a cronometro e come discesista. Dopo buone prestazioni nella tappa della Marmolada e sul Monte Pora, conclude il Giro in undicesima posizione (terzo nella classifica dei giovani).

Dopo la "Corsa Rosa" decide di partecipare al Tour de France, facendo da spalla al più giovane compagno Roman Kreuziger, fresco vincitore del Giro di Svizzera. Nella dodicesima tappa, anche in seguito alla squalifica per positività al CERA di Riccardo Riccò che lo precedeva in entrambe le classifiche, entra nella top ten della classifica generale della corsa e diventa leader nella classifica dei giovani, indossando quindi la maglia bianca, distintivo che perderà per soli 6" il 22 luglio a vantaggio del lussemburghese Andy Schleck. Il giorno successivo, all'Alpe d'Huez, arriva 41º a 17'21" dal vincitore Sastre, scivolando in classifica al ventesimo posto a 25'39" dalla maglia gialla. Scavalcato anche da Roman Kreuziger, giunge terzo nella graduatoria dei giovani. Durante la Grande Boucle viene annunciato come sesto uomo della spedizione olimpica in sostituzione di Riccardo Riccò: nella gara in linea si ritira, mentre nella cronometro olimpica conclude quindicesimo, miglior italiano, a 3'25" dal vincitore Fabian Cancellara.

Nel 2009 partecipa al Critérium du Dauphiné Libéré, concludendo in settima posizione, e vince in solitaria il Giro dell'Appennino. Prosegue la stagione al Tour de France, giungendo settimo dopo aver evidenziato buone qualità di scalatore. Dopo una breve sosta torna alle corse in agosto, mese in cui si aggiudica il Gran Premio Città di Camaiore con una decina di secondi sul gruppo degli inseguitori. Il 23 agosto, durante una tappa dell'Eneco Tour in cui era in fuga, è vittima di una caduta in cui rimedia una frattura scomposta della clavicola. L'infortunio gli impedisce di partecipare al campionati del mondo di Mendrisio e lo costringe a chiudere anticipatamente la stagione.

2010: la vittoria alla Vuelta e il terzo posto al Giro

Ristabilitosi dall'infortunio di fine 2009, inizia il 2010 con la partecipazione al Tour de San Luis, dove si aggiudica la vittoria nella quarta tappa, una cronometro individuale, e la vittoria finale della corsa. A causa della defezione di Franco Pellizotti, fermato per valori ematici sospetti, viene chiamato all'ultimo momento a sostituirlo al Giro d'Italia, dove esordisce con un undicesimo posto nella cronometro d'apertura. Nella quarta tappa, la cronosquadre di Cuneo, la vittoria dalla sua Liquigas-Doimo gli consente di recuperare i 5" di ritardo da Aleksandr Vinokurov e di vestire la maglia rosa di leader della corsa. La mantiene per tre giorni, perdendola, a seguito di una caduta durante la tappa degli sterrati, a favore dello stesso Vinokurov.

Conquista quindi la vittoria nella 14ª frazione, la Ferrara-Asolo: primo in vetta al Monte Grappa, salita situata a 25 chilometri dall'arrivo, stacca i tre compagni di fuga (Evans, Scarponi e Basso) in discesa e si invola vittorioso al traguardo; in questo modo riesce anche a risalire all'ottavo posto in classifica generale. Dopo la successiva cronoscalata di Plan de Corones risale fino al sesto posto della generale, mentre con la terzultima tappa (Brescia-Aprica), in cui al traguardo è terzo, battuto da Scarponi e Basso (coppia con cui aveva attaccato sul Mortirolo), risale in terza posizione generale con un ritardo di 2'30" da Ivan Basso. Nella penultima frazione, la Bormio-Ponte di Legno, perde 18" da Scarponi, suo rivale per il terzo posto, mantenendo comunque un margine di appena 1" sul marchigiano, margine che consolida nell'ultima tappa, la cronometro di Verona, potendo così salire sul terzo gradino del podio finale del Giro d'Italia 2010.

Dopo il Giro partecipa al Giro di Slovenia: giunge primo nella terza tappa, da Bled a Krvavec, e ottiene la testa nella classifica generale, confermandola l'indomani e aggiudicandosi la vittoria della corsa. Dopo aver rinunciato al Tour de France, in agosto, in preparazione alla Vuelta a España, corre e vince il Trofeo Melinda, in Trentino. Prende quindi il via alla Vuelta, con ambizioni di classifica. Fin dalle prime tappe lotta per il vertice della classifica, avvicinandosi alla maglia rossa di leader della generale in diverse occasioni. Nell'undicesima frazione perde circa venti secondi dal vincitore e nuovo capoclassifica Igor Antón; tre giorni dopo si piazza secondo alle spalle di Joaquim Rodríguez e, complici la caduta e il ritiro di Antón, conquista per la prima volta la maglia rossa, anche se con soli 4" su Rodríguez.

Perde la maglia nella sedicesima tappa, con l'arrivo in salita a Cotobello, a favore di Rodríguez, che va ad acquisire un vantaggio di 34", ma già l'indomani, nella cronometro individuale di Peñafiel, riesce, nonostante una foratura, a riguadagnare il simbolo del primato con un vantaggio di 39" su Ezequiel Mosquera e di 1'58" sul vincitore di tappa Peter Velits, mentre Rodríguez scende a quasi quattro minuti. Nella penultima tappa, quella decisiva con arrivo sulla Bola del Mundo, si piazza subito alle spalle del rivale Mosquera, vincitore di giornata, mantenendo così il primo posto nella generale. L'indomani a Madrid Nibali può festeggiare, quinto italiano ad essersi aggiudicato la corsa spagnola e primo a riuscirvi dopo 20 anni di digiuno. Oltre alla maglia rossa Nibali fa sua anche la maglia bianca della classifica combinata (è anche terzo nella classifica a punti e quinto in quella di montagna). Chiude la stagione con il quinto posto al Giro di Lombardia.

2011: il secondo posto al Giro d'Italia

Dopo un ritiro di due settimane con la squadra a Tenerife, Nibali fa il suo debutto per la stagione 2011 il 22 febbraio, in occasione del via del Giro di Sardegna. In marzo partecipa alla Tirreno-Adriatico concludendo la corsa al quinto posto; pochi giorni dopo, alla Milano-Sanremo, giunge al traguardo all'ottavo posto, nel gruppo di testa. La preparazione in vista del Giro d'Italia si conclude in aprile al Giro del Trentino, ove è ventiquattresimo, e alla Liegi-Bastogne-Liegi, nella quale si classifica ottavo. A maggio prende il via della "Corsa Rosa" da capitano della Liquigas-Cannondale, e tra i favoriti per il successo. Durante le tre settimane di gara, nonostante il terzo posto di tappa sul monte Zoncolan e il secondo a Nevegal, non riesce a contrastare il dominio di Alberto Contador: chiude la corsa sul terzo gradino del podio di Milano, a quasi sette minuti dallo spagnolo e superato in classifica anche da Michele Scarponi. In seguito alla squalifica per doping di Contador il messinese guadagna tuttavia il secondo posto finale alle spalle di Scarponi e il successo nella sedicesima tappa, la cronometro di Nevegal. Ottiene così il terzo piazzamento sul podio consecutivo negli ultimi tre grandi Giri cui ha partecipato.

Dopo aver corso il Giro di Slovenia e il Tour de Pologne senza particolari risultati, ritorna alla Vuelta a España, restando nelle zone alte della classifica fino alla quattordicesima tappa, nella quale va in crisi. Non riesce a ripetersi chiudendo la corsa spagnola al settimo posto, a 4'31" dal vincitore Juan José Cobo. Al successivo Giro di Lombardia entra in un tentativo promosso da Luca Paolini sulla discesa di Sormano e sul Ghisallo stacca tutti (compreso il plurivittorioso in stagione Philippe Gilbert); prova poi l'azione in solitaria, ma sul falsopiano successivo alla discesa del Ghisallo, il lavoro della Sky riporta il gruppo sul corridore siciliano: conclude la gara al 40º posto.

2012: il terzo posto al Tour de France

Nibali inizia la stagione 2012 al Tour de San Luis, chiudendo al quinto posto della generale. Conquista la prima vittoria dell'anno nell'arrivo in salita della quinta tappa del Tour of Oman, corsa in cui conclude al secondo posto nella classifica generale a solo 1" dal vincitore Peter Velits.. Partecipa quindi alla Tirreno-Adriatico: dopo aver perso terreno nella cronosquadre, arriva terzo nella quarta tappa, superato al traguardo finale di Chieti dal compagno di squadra Peter Sagan e da Roman Kreuziger. Nella tappa successiva vince staccando tutti sulla salita di Prati di Tivo, mentre nella penultima tappa marchigiana arriva secondo dietro lo spagnolo Joaquim Rodríguez guadagnando sei secondi sul leader della generale Chris Horner. Grazie alla tappa a cronometro finale, conclusa al nono posto, guadagna venti secondi sull'atleta statunitense scavalcandolo nella classifica generale e vincendo la corsa.. La settimana successiva si classifica terzo alla Milano-Sanremo vinta da Simon Gerrans. In aprile è invece secondo alla Liegi-Bastogne-Liegi, alle spalle del kazako Maksim Iglinskij.

Non si presenta al Giro, rinunciando alla corsa per meglio preparare il Tour de France. Alla Grande Boucle Nibali sale al terzo posto della generale dopo la tappa di La Planche Des Belles Filles, è quindi protagonista nelle tappe alpine: conclude la corsa francese al terzo posto finale, dietro alla coppia britannica della Sky Bradley Wiggins-Chris Froome, diventando il secondo italiano dopo Felice Gimondi a salire sul podio di tutti i tre Grandi Giri. Dopo il Tour viene incluso nella selezione che partecipa alla prova in linea dei Giochi olimpici di Londra, ma nella gara a cinque cerchi termina lontano, poco oltre la centesima posizione. Il 3 agosto è ufficializzato il suo trasferimento all'Astana a partire dalla stagione ciclistica 2013.. Il 6 settembre torna quindi alla vittoria, dopo quasi sei mesi di digiuno, nella quarta tappa de Il Padania, conclusa sull'arrivo in salita del Passo della Bocchetta. Il giorno successivo si aggiudica la classifica generale della breve corsa a tappe. Nello stesso mese è il capitano della nazionale azzurra per la prova in linea dei campionati del mondo di Valkenburg: dopo aver tentato l'attacco all'ultimo passaggio sul Cauberg, che decide la corsa, viene ripreso e bruciato dal belga Gilbert, che va a vincere in solitaria, chiudendo 29º. Nella stessa rassegna iridata coglie il quarto posto nella cronosquadre disputata con la Liquigas-Cannondale.

2013: la vittoria al Giro e il secondo posto alla Vuelta
A seguito di un accordo ufficializzato nell'estate precedente, per il 2013 Nibali cambia squadra e passa all'Astana del campione olimpico Aleksandr Vinokurov. Nel passaggio di squadra, dalla Liquigas lo seguono i gregari Valerio Agnoli e Alessandro Vanotti.

Apre la stagione a fine gennaio, in Argentina, partecipando al Tour de San Luis e ottenendo un quarto posto a cronometro. A febbraio corre il Tour of Oman con buoni piazzamenti e chiudendo settimo nella classifica generale; prende poi parte al Gran Premio Città di Camaiore e, nei primi giorni del mese successivo, partecipa alla Roma Maxima, provando la fuga solitaria in entrambe le corse. Sempre a marzo si presenta alla Tirreno-Adriatico. Decisiva, in quella corsa, è la sesta tappa, a Porto Sant'Elpidio, quando Nibali, dopo essere andato all'attacco in salita a 16 km dal traguardo, stacca gli avversari e incrementa il proprio vantaggio nel tratto conclusivo di pianura, vincendo la tappa e giungendo così in testa alla graduatoria generale; manterrà la posizione anche dopo l'ultima cronometro, vincendo così per la seconda volta la "corsa dei due mari". Nell'occasione precede sul podio il britannico Chris Froome e lo spagnolo Alberto Contador. Dopo pochi giorni si presenta alla Milano-Sanremo, ma le avverse condizioni meteo lo spingono a ritirarsi. Nel mese di aprile è al via del Giro del Trentino: nella quarta frazione, quella con l'arrivo in salita a Sega di Ala, stacca Bradley Wiggins e Mauro Santambrogio, vincendo la tappa e la classifica generale della corsa. Terminato il Trentino disputa la Liegi-Bastogne-Liegi, ma non riesce a fare la differenza.

A maggio si presenta come uno degli aspiranti alla vittoria del Giro d'Italia, assieme a Bradley Wiggins, Michele Scarponi, Cadel Evans e il vincitore uscente, Ryder Hesjedal. Dopo la cronometro a squadre chiusa al terzo posto e una prima settimana di controllo, al termine dell'ottava tappa, una cronometro di 54,8 km da Gabicce a Saltara, indossa dopo tre anni la maglia rosa. Nella decima tappa, al primo vero arrivo in salita sull'altopiano del Montasio, si classifica terzo. Nel weekend della seconda settimana attacca sul monte Jafferau a 2 km dall'arrivo di Bardonecchia senza riuscire a staccare Mauro Santambrogio, vittorioso nello sprint conclusivo. Il giorno dopo sul Colle del Galibier mantiene il vantaggio in classifica nei confronti degli inseguitori; nella diciottesima tappa, la cronoscalata da Mori a Polsa, si aggiudica quindi la vittoria staccando di 2'36" il secondo della generale Cadel Evans. Dopo l'annullamento della diciannovesima tappa per avverse condizioni meteorologiche, si ripete nella ventesima frazione, l'ultima di montagna, con arrivo alle Tre Cime di Lavaredo (cima Coppi del Giro), staccando gli inseguitori e giungendo al traguardo in solitaria nel mezzo di una bufera di neve che nel frattempo si stava riversano sulla corsa. La ventunesima tappa, con arrivo a Brescia è una pura formalità. Nibali riesce dunque alla sua quinta presenza alla "corsa rosa" a ottenere la vittoria finale, dopo un terzo e un secondo posto rispettivamente nelle edizioni 2010 e 2011.

Dopo una lunga pausa di riposo, durante la quale si reca anche in Kazakistan, torna alle gare a luglio partecipando al Tour de Pologne in preparazione al secondo obiettivo stagionale, la Vuelta a España. Nella corsa spagnola, nella quale è uno dei favoriti per il successo, conquista dopo la seconda tappa la maglia di leader. Dopo aver perso la prima posizione riesce nella cronometro di Tarazona a riprenderla allo statunitense Chris Horner; nelle successive tappe di montagna gestisce gli attacchi degli avversari. Nella sedicesima tappa, però, viene attaccato e va in crisi, perdendo circa 20 secondi dai suoi avversari principali, Rodríguez, Horner e Valverde. Mantiene la maglia rossa, ma solo temporaneamente: nella diciannovesima frazione perde infatti la leadership che va definitivamente al quarantaduenne Horner. Nibali conclude così la corsa in seconda posizione, a 37" dal vincitore Horner.

Partecipa ai Mondiali di Firenze. Al penultimo giro Nibali cade e perde contatto dal gruppo di testa, ma riesce a recuperare: all'ultima tornata il suo attacco su Fiesole, dopo quello del connazionale Scarponi, opera la selezione definitiva: rimangono in testa Nibali, Rui Costa e il duo spagnolo Rodriguez-Valverde (Uran cade in discesa). Nelle fasi finali Nibali non riesce a imporsi anche a causa della tattica suicida degli spagnoli, che consegna l'iride a Rui Costa: il Mondiale si chiude con il quarto posto per Nibali, battuto in volata da Alejandro Valverde.

2014: la vittoria al Tour de France e il titolo italiano

Vincenzo Nibali inizia la stagione 2014 partecipando al Tour of Oman, alla Parigi-Nizza, al Tour de Romandie e al Critérium du Dauphiné, durante il quale riceve, insieme agli altri compagni di squadra, una lettera di richiamo da parte dei vertici dell'Astana a causa dello scarso rendimento della squadra nella prima parte di stagione. Vince quindi il Trofeo Melinda, valido per i Campionati nazionali in linea, e diventa per la prima volta campione italiano.

Il successivo Tour de France lo vede protagonista già il 6 luglio, quando conquista la seconda tappa, da York a Sheffield, con uno scatto a 1800 metri dall'arrivo, indossando la maglia gialla con 2 secondi di vantaggio su Froome e Contador, i due favoriti per la vittoria finale. Nella quinta tappa, caratterizzata dalla presenza di numerosi tratti in pavé, Nibali si piazza terzo staccando specialisti del calibro di Cancellara, Terpstra, Sagan e Trentin, e guadagnando un considerevole vantaggio sui principali avversari nella classifica generale. Nella stessa tappa Chris Froome, vincitore dell'edizione 2013 e già caduto nella tappa precedente, è vittima di altre due cadute e si ritira con una frattura al polso. Arrivati alle prime salite Nibali e Contador dimostrano di essere i corridori più in forma: nell'ottava tappa lo spagnolo attacca più volte, guadagnando soltanto 3" negli ultimi cento metri, mentre nella nona tappa, vinta dopo una lunga fuga dal tedesco Tony Martin, Nibali perde la maglia gialla a favore del francese Tony Gallopin, uno dei fuggitivi di giornata.

Riprende il primato il giorno successivo, nell'arrivo a La Planche des Belles Filles; nel frattempo il rivale Alberto Contador si era ritirato a causa di una caduta. Nella tappa alpina con arrivo in salita a Chamrousse Nibali vince per distacco la sua terza frazione al Tour. Nella diciottesima tappa, con il transito sul Colle del Tourmalet e l'arrivo in salita a Hautacam, vince ancora con più di un minuto su Thibaut Pinot e quasi due minuti su Alejandro Valverde. Nella cronometro finale continua a incrementare il distacco sugli avversari, prima della passerella finale a Parigi, che lo vede vincitore del Tour de France. Riporta così l'Italia al successo al Tour 16 anni dopo Marco Pantani, e diventa il settimo italiano ad aver vinto la corsa francese. Aggiudicandosi la classifica generale del Tour Nibali diventa il sesto ciclista della storia ad aggiudicarsi la cosiddetta Tripla Corona, ovvero la vittoria in almeno un'edizione di tutti e tre i grandi Giri, e diviene inoltre il secondo ciclista, dopo Bernard Hinault, ad esservi salito sul podio almeno due volte.

Nella settimana successiva prende parte a criterium post-Tour, ottenendo quattro successi, due secondi posti, battuto in volata da Greg Van Avermaet e da Rui Costa, e un terzo nel criterium di Ninove, vinto dal velocista Marcel Kittel. Dopo una pausa in seguito alla vittoria del Tour, Nibali rientra alle corse in occasione del Trittico Lombardo per cercare la miglior condizione in vista dei campionati del mondo di Ponferrada. Il percorso si presenta non adatto alle sue caratteristiche in più si aggiunge una caduta nella prima fase di corsa, concludendo così la gara in appoggio al titolare Sonny Colbrelli.

Il 2 dicembre pubblica per Mondadori la sua autobiografia Di furore e lealtà scritta a quattro mani con Enrico Brizzi.

2015: il secondo titolo italiano e il Giro di Lombardia

All'inizio del 2015, dopo alcune gare di secondo livello, si presenta al via della Tirreno-Adriatico con intenzione di ripetere i successi degli anni passati. La sua condizione tuttavia non si dimostra all'altezza di quella dei suoi avversari; nella tappa con arrivo in quota sul Terminillo subisce un distacco di 2'16" da Nairo Quintana, e conclude lontano dai migliori. Dopo un ritiro in altura sul Teide, torna in gara alla settimana delle Ardenne con l'obiettivo di vincere la Liegi-Bastogne-Liegi. All'Amstel Gold Race e alla Freccia Vallone dimostra una buona condizione, tentando rispettivamente un attacco da lontano e sulla penultima côte. Si presenta così alla Doyenne tra i favoriti: rimasto coinvolto in una caduta, rimane arretrato sulla Redoute e perde la possibilità di attaccare sulla côte de Roche-aux-Faucons; prova poi ad uscire dal gruppo sulla cotê de Saint-Nicolas ma non riesce a fare la differenza e giunge sul traguardo quattordicesimo. Prende poi il via al Tour de Romandie ma nella tappa regina perde contatto dai migliori giungendo al traguardo nono a 30" da Froome e Quintana e a quasi un minuto dal vincitore di tappa Thibaut Pinot.

L'avvicinamento al Tour de France passa per il Critérium du Dauphiné dove ottiene la maglia gialla, simbolo del primo in classifica, al termine della sesta tappa; conclude però fuori dalle prime posizioni di classifica. Dopo un ritiro in altura al Passo San Pellegrino, a pochi giorni dal Tour de France, si presenta ai nastri di partenza dei campionati italiani con l'obiettivo di ripetere il successo ottenuto l'anno prima. Dopo la prima ascesa alla Basilica di Superga, teatro dell'arrivo, sfrutta il tratto successivo di discesa per guadagnare spazio sugli avversari, affronta da solo la seconda ascesa e va a vincere in solitaria davanti a Francesco Reda e a Diego Ulissi, laureandosi per la seconda volta consecutiva campione d'Italia. Partito al Tour 2015 con l'obiettivo di bissare il successo dell'anno precedente, già dalla seconda tappa rimane attardato, scivolando indietro in classifica. Nell'ultima settimana invece si dimostra uno dei corridori più competitivi sulle salite: in particolare nella 19ª tappa da Saint-Jean-de-Maurienne a La Toussuire-Les Sybelles scatta a oltre 50 chilometri dal traguardo, andando a vincere in solitaria e risalendo sino al quarto posto della generale. Il giorno successivo, col terzo posto di Valverde nel mirino, Nibali fora all'inizio della decisiva salita dell'Alpe d'Huez, dicendo addio ai sogni di podio e concludendo quarto a Parigi.

Partecipa successivamente alla Vuelta a España, insieme ad Aru e Landa. Rimasto vittima di una caduta durante la seconda tappa, giunge al traguardo con un ritardo di circa un minuto sui rivali per la vittoria finale. Tuttavia, poche ore dopo viene squalificato dalla giuria per essersi attaccato all'ammiraglia della squadra in seguito alla caduta per ridurre il distacco dalla testa della corsa.

Riprende l'attività partecipando alle prove italiane dell'Europe Tour, aggiudicandosi per distacco due delle tre prove del Trittico Lombardo, la Coppa Bernocchi e la Tre Valli Varesine, che insieme al secondo posto nella Coppa Agostoni alle spalle di Davide Rebellin gli valgono anche il successo nella classifica complessiva. Il 4 ottobre vince la sua prima classica Monumento, vincendo il Giro di Lombardia dopo essere scattato nella discesa del Civiglio a 17 km da Como, teatro dell'arrivo, precedendo Daniel Moreno, che aveva provato a contrattaccare, e a Thibaut Pinot. La vittoria di Nibali interrompe il digiuno dei ciclisti italiani nelle classiche Monumento, che durava dal 2008, e gli consente inoltre di diventare il quarto ciclista (dopo Gimondi, Merckx e Hinault) capace di vincere in carriera le tre grandi corse a tappe, il titolo di campione nazionale ed almeno una fra le cinque classiche monumento.

2016: la seconda vittoria al Giro e la caduta ai Giochi olimpici

All'inizio della stagione 2016 la stampa specializzata riporta come suoi obiettivi per l'anno in corso il Giro d'Italia e la gara olimpica che si terrà a Rio de Janeiro.

Nibali inaugura l'annata partecipando a due brevi corse a tappe, l'argentino Tour de San Luis e il Tour of Oman, dove vince la quarta frazione, considerata la "tappa regina", e si aggiudica la classifica generale della corsa. Si presenta poi con ambizioni di vittoria alla Tirreno-Adriatico: dopo aver tentato un vano attacco a meno 2 km dalla traguardo viene ripreso ai meno 100 metri alla conclusione della tappa di Pomarance, conclude la "Corsa dei Due Mari" al sesto posto anche a causa della cancellazione per neve dell'unica tappa con arrivo in salita. Dopo un ritiro in altura al Teide rientra alle corse al Giro del Trentino, ma durante la corsa non riesce a reggere il ritmo dei migliori, pagando le fatiche del lavoro in quota e preferendo mettersi a disposizione dei compagni.

Prende poi il via al Giro d'Italia con i gradi di favorito. Dopo le prime giornate di pianura, nel primo arrivo in salita a Roccaraso tenta un attacco, venendo subito ripreso e staccato, arrivando al traguardo con Alejandro Valverde, Esteban Chaves e Mikel Landa. Giunto terzo nella tredicesima tappa, da Palmanova a Cividale del Friuli, si porta al terzo posto della generale; l'indomani attacca e stacca molti rivali in classifica, tranne l'olandese Steven Kruijswijk, nuova maglia rosa, e Esteban Chaves, vincitore di giornata, dei quali non riesce a tenere il passo: limita comunque i danni giungendo sul traguardo con 37" di ritardo, salendo al secondo posto nella generale. Nella tappa seguente, la cronoscalata da Castelrotto all'Alpe di Siusi, chiude con un ritardo di 2'10", anche a causa di un salto di catena, e scivola al terzo posto della generale. Dopo il giorno di riposo, nella tappa con arrivo ad Andalo si dimostra reattivo nei primi chilometri, salvo poi venire sfilato da tutti i migliori e giungere undicesimo al traguardo, a 1'47" dal vincitore Valverde e dalla maglia rosa. Scivola così fuori dal podio a 4'43", ma nella 19ª tappa da Pinerolo a Risoul, dopo la caduta della maglia rosa Kruijswijk nella discesa dal Colle dell'Agnello, cima Coppi del Giro 2016 (l'olandese perderà più di 5 minuti), e dopo aver beneficiato del lavoro del compagno di squadra Michele Scarponi, stacca gli avversari sull'ultima ascesa e vince in solitaria; rientra così in corsa per la vittoria definitiva, riducendo il ritardo da Chaves, giunto terzo al traguardo della tappa, a soli 44". Al traguardo dedica la vittoria al giovane ciclista e suo grande fan Rosario Costa, militante nell'A.S.D. Nibali di Messina, scomparso in un incidente stradale due settimane prima. L'indomani, nella penultima frazione con arrivo a Sant'Anna di Vinadio, chiude al sesto posto, dopo aver staccato tutti i meglio piazzati in classifica sul colle della Lombarda — grazie anche al lavoro dei compagni Scarponi e Tanel Kangert — riesce a infliggere un distacco di 1'36" al colombiano Chaves: conquista così la maglia rosa finale, che il giorno seguente porterà trionfante a Torino.

Nel successivo mese di luglio prende parte al Tour de France in appoggio di Fabio Aru, per poter raggiungere il livello di forma adeguato per l'appuntamento olimpico. Pur staccandosi dagli uomini di classifica sin dalle prime salite, riesce ad essere utile al suo capitano nelle salite più dure, pur non rinunciando ad iniziative personali, come la fuga che, nella settima tappa, gli varrà il premio della combattività. Proprio durante il Tour Davide Cassani annuncia l'inserimento di Nibali nella squadra olimpica per Rio de Janeiro sia per la prova in linea che per la prova a cronometro, stante l'assenza per infortunio del vicecampione del mondo Adriano Malori. Per Nibali, alla terza partecipazione alle Olimpiadi, si sarebbe trattato di un ritorno alle prove contro il tempo, in cui aveva vinto due medaglie iridate juniores e under-23, oltre ad aver partecipato alla crono olimpica di Pechino. Purtroppo per lui però la cattiva sorte è in agguato durante la prova in linea, in programma il 6 agosto sul circuito del Forte di Copacabana: a 11 chilometri dal traguardo, quando era in testa insieme ad altri due corridori, Nibali cade in discesa lungo una delle curve più pericolose del circuito, riportando una frattura scomposta pluriframmentata al terzo laterale della clavicola sinistra e vedendo sfumare una possibile medaglia olimpica. Rientrato alle corse a fine settembre alla Tre Valli Varesine, chiude la stagione agonistica senza altri acuti. In agosto viene intanto reso noto il suo trasferimento, per la stagione 2017, alla Bahrain-Merida, nuova squadra World Tour gestita da un consorzio di imprese del Bahrein.

2017: i podi a Giro e Vuelta e la seconda vittoria al Giro di Lombardia

Per il 2017 Nibali focalizza i suoi obiettivi sul Giro d'Italia e sulla Vuelta a España. Inizia la sua nuova avventura a fine gennaio quando prende parte alla Vuelta a San Juan dove si piazza in ottava posizione con un ritardo di 1'15" dal vincitore Bauke Mollema. Prende poi parte all'Abu Dhabi Tour dove nella tappa regina con arrivo a Jebel Hafeet si posiziona quindicesimo a 1'05" dal vincitore di giornata, il portoghese Rui Costa. Chiude la breve corsa a tappe in sedicesima posizione. A marzo prende parte alla Tirreno-Adriatico dove, a causa di uno stato di forma precario, chiude 26º con un distacco di oltre 6 minuti da Nairo Quintana. Dopo aver saltato le classiche delle Ardenne, prende parte al Giro di Croazia in cerca della giusta forma per l'ormai imminente Giro d'Italia: la spedizione croata finisce con il trionfo nella generale (prima vittoria dell'anno) con soli 2" su Jaime Rosón. Nibali sul podio dedica la vittoria al suo amico Michele Scarponi, deceduto il giorno prima a causa di un incidente stradale.

Il 5 maggio è tra i favoriti al via del Giro d'Italia 2017. Nelle tappe appenniniche va più volte in difficoltà arrivando ad accumulare un ritardo massimo di 3'40" sul leader della classifica Tom Dumoulin. Si riscatta vincendo la sedicesima tappa, con un attacco in discesa dal passo dello Stelvio e una volata a due con Mikel Landa all'arrivo di Bormio, e nelle successive frazioni alpine risale fino al secondo posto in classifica, a 39" dalla maglia rosa che nel frattempo è passata a Nairo Quintana. Grazie alla decisiva frazione a cronometro la vittoria finale andrà a Dumoulin, con 31" su Quintana e 40" su Nibali, terzo classificato.

Dopo il Giro partecipa ai campionati italiani di ciclismo senza ambizioni di vittoria, e quindi, in preparazione alla Vuelta a España, al Tour de Pologne, non registrando però acuti e terminando nono. Punta tutto sul secondo obiettivo stagionale, la Vuelta a España. All'inizio della corsa spagnola dichiara di essere arrivato in gran forma: già alla terza tappa, con arrivo ad Andorra La Vella, centra infatti la vittoria di tappa, battendo allo sprint gli avversari diretti. Tuttavia, in alcune tappe successive, con arrivi non propriamente adatti alle sue caratteristiche, perde qualche secondo, arrivando al primo giorno di riposo dopo la nona tappa con un ritardo di 1'17'' da Chris Froome. Nella seconda settimana riesce a tenere il passo del britannico, diminuendo anche il distacco il classifica; nella cronometro della sedicesima tappa, però, accusa 57'' da Froome, che lo portano ad avere un gap di 1'58"; negli ultimi giorni consolida la sua posizione, senza però impensierire seriamente il britannico della Sky; conclude comunque la Vuelta con un ottimo secondo posto, decimo podio in un Grande Giro. In chiusura di stagione punta al Giro di Lombardia, per prepararsi alla corsa partecipa a varie gare tra cui Giro di Toscana (conclude quarto), Giro dell'Emilia (secondo) e Tre Valli Varesine (terzo). Arriva in gran forma alla "classica delle foglie morte", in cui attacca e stacca Thibaut Pinot (scattato precedentemente) nella penultima discesa, andando a vincere in solitaria la sua seconda classica monumento, dopo il trionfo nella medesima corsa due anni prima. Dopo il Lombardia vince il Taiwan KOM Challenge, gara in salita di 105 km che parte dal livello del mare e si conclude a 3.275 metri di quota.

2018: la vittoria alla Milano-Sanremo e l'infortunio al Tour de France
Come da lui stesso affermato, gli obiettivi principali del 2018 di Nibali sono una grande classica, il Tour de France e i mondiali di Innsbruck. Il debutto stagionale è inizialmente previsto alla Vuelta a San Juan ma a causa di una febbre improvvisa il giorno prima dell'inizio della corsa non è al via della prima tappa. Il suo debutto arriva poche settimane dopo al Dubai Tour, corsa non adatta alle sue caratteristiche e in cui non registra acuti. È poi al via del Tour of Oman, che conclude al dodicesimo posto, mentre in marzo corre la Tirreno-Adriatico concludendola all'undicesimo posto. Il 17 marzo centra il suo primo obiettivo: ottiene infatti la vittoria nella Milano-Sanremo attaccando con successo sulla salita del Poggio a 7 km dal traguardo e riuscendo a conservare un vantaggio sufficiente per imporsi sul traguardo in Via Roma; primo italiano a vincere in dodici anni, ottiene il suo terzo trionfo nelle classiche monumento, dopo le due affermazioni al Giro di Lombardia.

In aprile partecipa per la prima volta al Giro delle Fiandre, dove prova uno scatto sul muro del Kruisberg insieme al poi vincitore Niki Terpstra, salvo poi desistere dall'azione e concludere la prova al 24º posto. Prende poi parte all'Amstel Gold Race, che conclude in 32ª posizione, e alla Freccia Vallone, dove si rende protagonista di un attacco a 45 km dal traguardo sulla Côte de reve venendo ripreso a solo 1 km dall'arrivo. È poi al via della Liegi-Bastogne-Liegi, dove è tra i favoriti della vigilia; tuttavia perde contatto dal gruppo lungo la Côte de la Roche aux Faucons, terminando l'ultima prova del trittico delle Ardenne in 32ª posizione. Dopo un periodo di riposo e un ritiro sul Teide, agli inizi di giugno partecipa al Critérium du Dauphiné senza ambizioni di classifica (chiude lontano dai primi, ad oltre venti minuti dal vincitore Geraint Thomas) ma come preparazione al Tour de France. Arrivato al Tour come uno dei principali favoriti, mostra una buona condizione sin dalle prime tappe. Il 19 luglio 2018, poco prima dell'arrivo della tappa dell'Alpe d'Huez, è però vittima di una caduta quando il collare della macchina fotografica di un tifoso a bordo strada si impiglia alla sua bicicletta. Conclude la frazione a 13 secondi dal vincitore, la maglia gialla Geraint Thomas, ma gli viene riscontrata una frattura a una vertebra ed è per questo costretto al ritiro.

Dopo essersi sottoposto a un'operazione alla vertebra, prende parte alla Vuelta a España senza ambizioni di classifica, in vista del campionato del mondo. Fin dalle prime giornate accumula molto distacco dai pretendenti al successo, mentre nella seconda settimana si rende protagonista in alcune fughe senza però riuscire a cogliere successi di tappa. Conclude la corsa a tappe spagnola con due ore di ritardo dal vincitore Simon Yates. Nella rassegna iridata, organizzata su un percorso adatto agli scalatori, Nibali si presenta senza aver recuperato la piena forma dopo la frattura della vertebra e conclude la gara a sei minuti dal vincitore Alejandro Valverde, staccandosi dal gruppo dei migliori nell'ultima ascesa dell'Igls. Nell'ultima gara della stagione, il Giro di Lombardia, dimostra uno stato forma migliore rispetto al mondiale, e insieme a Thibaut Pinot scatta sul Muro di Sormano, salvo poi essere staccato dal francese sul successivo Civiglio, concludendo la gara al secondo posto.

2019: il secondo posto al Giro

Per l'inizio del 2019 decide di rinunciare agli appuntamenti di inizio anno in Sudamerica, facendo il proprio debutto stagionale all'UAE Tour, dove rimane però lontano dai migliori. Successivamente corre la Strade Bianche, che conclude 31º a 10 minuti dal vincitore Julian Alaphilippe, e la Tirreno-Adriatico, dove, pur soffrendo in alcuni momenti, riesce a tenere il passo dei migliori, terminando al quindicesimo posto della generale. Il 23 marzo partecipa alla Milano-Sanremo, rimane fino alla fine nel gruppetto che si gioca la vittoria e si classifica ottavo. Cresce quindi di condizione in avvicinamento al Giro d'Italia: al Tour of the Alps sfiora la vittoria in alcune tappe e conclude terzo nella classifica finale, mentre alla Liegi-Bastogne-Liegi si piazza ottavo, nel gruppetto dei migliori a ridosso del vincitore Jakob Fuglsang.

Prende il via del Giro d'Italia come uno dei principali favoriti per la maglia rosa. Alla prima tappa, una cronometro di 8 km che termina con la salita al Santuario della Madonna di San Luca, dimostra di avere già una discreta condizione piazzandosi al terzo posto a 23" da Primoz Roglic. Dopo diverse tappe senza particolari difficoltà, nella 9º tappa, una cronometro di 34,5 km, perde 1'05" da Roglic guadagnando comunque su tutti gli altri rivali. Nella seconda settimana di corsa complice un marcamento tra Nibali e Roglic, la maglia rosa passa sulle spalle di Richard Carapaz, vincitore della 14º tappa con quasi 2' di vantaggio sui migliori. Nella 15º tappa riesce a distanziare Roglic, vittima anche di una caduta in discesa, guadagnando 40", ma non Carapaz. Nella sedicesima tappa tenta un attacco sul Mortirolo venendo tuttavia ripreso dalla maglia rosa dopo poche centinaia di metri, riuscendo comunque a distanziare Roglič di oltre 1 minuto. Incrementa poi il vantaggio sullo sloveno nell'ascesa finale a Ponte di Legno. Nella 20º e ultima tappa di montagna si stacca sulle dura salita del Manghen insieme a Roglic riuscendo nella successiva discesa a tornare nel gruppo maglia rosa. Prova poi un paio di attacchi nell'ascesa a Croce d'Aune non riuscendo però a distanziare Carapaz. Recupera poi 50 secondi nei 17 chilometri della cronometro finale, rimanendo così al secondo posto, a 1'05" dal corridore sudamericano, e ottenendo il sesto podio al Giro d'Italia.

Prende parte successivamente anche al Tour de France: nelle prime frazioni riesce a mantenere il passo dei primi 20, salvo poi perdere le ruote dei migliori nella tappa con arrivo a Saint-Étienne, uscendo così definitivamente dalla lotta per la classifica generale. Nelle successive frazioni cerca la vittoria andando in fuga dove alla ventesima tappa (dimezzata causa maltempo), con arrivo in quota a Val Thorens, stacca i compagni di fuga a circa 10 km dall'arrivo e resiste al ritorno del gruppo.

Rientra alle corse a fine agosto al Giro di Germania, dove cerca di ritrovare la condizione per il finale di stagione, seguito poi dalle due classiche canadesi dove oltre ad un attacco al Grand Prix Cycliste de Québec non registra acuti. Si taglia fuori dalle convocazioni per il mondiale in Yorkshire in quanto la sua condizione non era ottimale. A ottobre prende parte al Giro dell'Emilia dove chiude in 23ª posizione staccandosi all'inizio dell'ultima ascesa verso San Luca, e alle Tre Valli Varesine, dove per un errore di una moto ripresa che manda fuori percorso il suo gruppetto, si ritira. È al via del Giro di Lombardia il 13 ottobre, dove è uno dei favoriti per la vittoria finale. Si stacca però sulle rampe del Civiglio, terminando al 55º posto. Con il Lombardia chiude la sua stagione e la sua avventura con la Bahrain-Merida.

2020: quarto posto alla Parigi Nizza e settimo al Giro d'Italia

Nel 2020 Vincenzo Nibali conquista un quarto posto nella corsa a tappe Parigi-Nizza a 1'16'' di distanza dal vincitore tedesco della Bora Hansgrohe Max Schachmann.

Anche se la gara era a rischio per colpa del COVID-19 essa non è stata annullata, ma è stata cancellata l'ultima tappa che sarebbe dovuta arrivare a Nizza. Dopo lo stop per il covid 19 Nibali torna a correre il 1 Agosto alle Strade Bianche dove è vittima di una caduta senza conseguenze ma è costretto al ritiro. Il 3 Agosto è al Gran Trittico Lombardo che chiude con un ottimo 5º posto. L'8 Agosto è alla Milano Sanremo dove prova uno scatto sul Poggio ma viene superato da Alaphillipe e Van Aert (vincitore) e chiude la corsa al 23º posto. Il 12 Agosto è al Gran Piemonte dove lavora per Giulio Ciccone che chiude la corsa al 9º posto. A ferragosto è al Giro di Lombardia dove prova un attacco nella discesa dopo il muro di Sormano, sul Civiglio lavora per Giulio Ciccone e Bauke Mollema, ma chiude la corsa comunque al 6º posto. Il 18 Agosto è al Giro dell'Emilia dove chiude la corsa al 7º posto. Il 23 Agosto è al Campionato Italiano dove prova uno scatto a 1 km dall'arrivo ma chiude la corsa all'11º posto. Dal 7 al 14 Settembre è alla Tirreno Adriatico, cercando la condizione in vista del Giro d'Italia, dove prova un attacco nella tappa di Sassotetto venendo ripreso dopo alcune centinaia di metri. Conclude la corsa al 19º posto a 8 minuti dal vincitore Yates. Il 19 Settembre è al Giro dell'Appennino, cercando condizione in vista del Mondiale di Imola e del Giro d'Italia, prova un attacco a tanti km dall'arrivo venendo ripreso. Il 27 Settembre è al Mondiale di Imola dove prova un attacco all'ultimo giro sulla salita di Mazzolano con altri 3 corridori (Landa, Uran e Van Aert) ma vengono ripresi poco dopo. Nibali perde contatto dai migliori sulla Cima Gallisterna (salita non adatta alle sue caratteristiche) concludendo la prova al 15º posto.

Dal 3 ottobre è al Giro d'Italia che conclude al 7º posto in classifica generale a 8 minuti e 15 secondi dal vincitore Tao Geoghegan Hart.

2021: obiettivo Giro e olimpiadi
Nibali debutta all'Étoile de Bessèges concludendo 26º in classifica generale, provando la fuga (ma non entrando nell'azione decisiva)  nella terza tappa e arrivando 18º nell'ultima tappa a cronometro a 53" dal vincitore Ganna. È poi all'UAE Tour dove conclude la corsa al 17º posto nella classifica generale.

Nel mese di marzo partecipa al Gran Premio Industria e Artigianato, dove conclude 10º a 16" dal vincitore, attaccando sulla penultima ascesa al San Baronto e anche nella discesa successiva facendo selezione con un gruppetto ripreso dopo pochi km di pianura. Alla Tirreno-Adriatico conclude 9º a 6'30" da Pogacar. Alla Milano-Sanremo è 35º ma a soli 10" dal vincitore, il compagno di squadra Jasper Stuyven.

Appena rientrato dal ritiro sul Teide, il 14 aprile Nibali si procura una frattura del radio destro mentre si stava allenando nella zona di Lugano. Torna al Giro d'Italia a poche settimane dall'infortunio, ma oltre ad accumulare un pesante ritardo in classifica generale, rimedia due gravi cadute alla quindicesima e alla diciassettesima tappa. Ciononostante riesce a portare a termine la corsa a tappe.

A luglio partecipa al Tour de France in preparazione della prova su strada delle Olimpiadi di Tokyo, sprofondato ad oltre un'ora di ritardo in classifica generale e senza aver raccolto una vittoria di tappa, si ritira dalla corsa prima della partenza della sedicesima tappa. Convocato in nazionale dal commissario tecnico Cassani, nella prova in linea di Tokyo lavora in salita per Gianni Moscon e Alberto Bettiol, quest'ultimo riesce a inserirsi nel gruppo di testa in lotta per le medaglie, ma viene fermato dai crampi a 20 chilometri dal traguardo.

Il 23 settembre viene annunciato il suo ritorno per la stagione 2022 nella squadra della Astana-Premier Tech, dopo cinque anni.

Il 1º di ottobre Nibali trionfa al Giro di Sicilia, vincendo tappa e Giro grazie ad uno scatto nella prima metà dell'ultimo GPM, quando a - 22 km stacca il gruppo e parte in solitaria, e poi consolidando il vantaggio nella discesa.

Il 9 ottobre partecipa all'ultima gara con la maglia della Trek Segafredo, il Giro di Lombardia, con arrivo a Bergamo, nella quale si piazza 13º dopo essersi reso protagonista con vari attacchi tra i -40 e i -30 km al traguardo.

2022: l'ultimo anno
Nel 2022 torna a vestire la maglia dell'Astana. Dopo essersi piazzato sedicesimo alla Volta a la Comunitat Valenciana, è obbligato per motivi di salute a saltare la Tirreno-Adriatico e la Milano Sanremo, i primi obiettivi stagionali. Torna a gareggiare il 16 marzo alla Milano-Torino.
Dopo aver finito al quarto posto il Giro di Sicilia partecipa alla Freccia Vallone, piazzandosi trentaquattresimo, e alla Liegi-Bastogne-Liegi, finendo trentesimo.

Si presenta ai nastri di partenza del Giro d'Italia in supporto di Miguel Ángel López per la classifica generale, ma assume i gradi di capitano della squadra a causa del ritiro del colombiano nel corso della quarta tappa, con arrivo sull'Etna, in cui Nibali arriva staccato di oltre due minuti dal gruppo degli uomini di classifica. L'11 maggio, dopo la fine della quinta tappa, con arrivo a Messina, sua città natale, annuncia il suo ritiro dalle corse al termine della stagione. Nel corso del Giro riesce a ritrovare la condizione fisica, arrivando ottavo nella nona tappa, con arrivo sul Blockhaus, in cui perde 34 secondi dal gruppo dei migliori, e classificandosi quarto nella quattordicesima tappa, con arrivo a Torino. Nelle tappe seguenti perde in salita rispetto a Richard Carapaz, Jai Hindley, Mikel Landa e João Almeida, favoriti per la vittoria finale, guadagnando però su tutti gli altri rivali, salendo fino al quinto posto in classifica; in seguito al ritiro di Almeida per positività al COVID-19, si assesta in quarta posizione. Nelle ultime tappe alpine riesce a difendersi dai più immediati inseguitori, Pello Bilbao e Jan Hirt, concludendo il suo ultimo Giro al quarto posto, a 9'02" dal vincitore, l'australiano Jai Hindley.

Dopo essere arrivato ventunesimo, nel gruppo principale, ai campionati italiani in linea, comincia il suo avvicinamento alla Vuelta, l'ultimo grande giro della sua carriera.
Partecipa a varie corse sulle strade spagnole: alla Prueba Villafranca de Ordizia, alla Vuelta a Castilla y León e alla Classica di San Sebastián, in cui trova rispettivamente la quarantaseiesima, la ventiseiesima e la ventunesima posizione.
La penultima corsa in terra iberica è la Vuelta a Burgos, dove finisce undicesimo in generale, centrando due volte la top ten di giornata, alla prima tappa e alla terza, chiuse rispettivamente in quinta e ottava posizione.
Prende il via al suo ultimo grande giro come gregario del team Astana per aiutare Miguel Ángel López e Aleksej Lucenko.
Nella classica delle foglie morte, il Giro di Lombardia, ultima gara della sua carriera, si classifica in ventiquattresima posizione.

Palmarès

2002 (Juniores)
Classifica generale Giro della Lunigiana
Campionati italiani, Prova in linea Juniores

2003 (Dilettanti Elite/Under-23, G.S. Mastromarco)
Trofeo Comune di Lamporecchio
1ª tappa Linz-Passau-Budweis (con la Nazionale italiana)
3ª tappa Linz-Passau-Budweis (con la Nazionale italiana)
Coppa Ciuffenna

2004 (Dilettanti Elite/Under-23, G.S. Mastromarco)
Trofeo Nesti e Nelli
Trofeo Mario Marchina
Gran Premio Città di Monsummano
Trofeo Egidio Bedogni
Circuito di San Pietro di Milazzo
4ª tappa Giro della Toscana Under-23 (Casalguidi > Cantagrillo)
Trofeo Mauro Pizzoli
Coppa Mobilio Ponsacco (cronometro e in linea)

2006 (Liquigas, due vittorie)
2ª tappa Settimana Internazionale di Coppi e Bartali (Cervia > Faenza)
Grand Prix de Ouest-France

2007 (Liquigas, quattro vittorie)
Gran Premio Industria e Artigianato
Giro di Toscana
3ª tappa Giro di Slovenia (Medvode > Beljak)
4ª tappa Giro di Slovenia (Kranjska Gora > Vršič)

2008 (Liquigas, due vittorie)
3ª tappa Giro del Trentino (Torri del Benaco > Folgaria)
Classifica generale Giro del Trentino

2009 (Liquigas, due vittorie)
Giro dell'Appennino
Gran Premio Città di Camaiore

2010 (Liquigas-Doimo, otto vittorie)
4ª tappa Tour de San Luis (San Luis > San Luis, cronometro)
Classifica generale Tour de San Luis
14ª tappa Giro d'Italia (Ferrara > Asolo)
3ª tappa Giro di Slovenia (Bled > Krvavec)
Classifica generale Giro di Slovenia
Trofeo Melinda
20ª tappa Vuelta a España (San Martín de Valdeiglesias > Bola del Mundo)
Classifica generale Vuelta a España

2011 (Liquigas-Cannondale, una vittoria)
16ª tappa Giro d'Italia (Belluno > Nevegal, cronometro)

2012 (Liquigas-Cannondale, cinque vittorie)
5ª tappa Tour of Oman (Royal Opera House Muscat > Jabal Al Akhdhar)
4ª tappa Tirreno-Adriatico (Martinsicuro > Prati di Tivo)
Classifica generale Tirreno-Adriatico
4ª tappa Il Padania (Lazzate > Passo della Bocchetta)
Classifica generale Il Padania

2013 (Astana Pro Team, sette vittorie)
Classifica generale Tirreno-Adriatico
4ª tappa Giro del Trentino (Arco > Sega di Ala)
Classifica generale Giro del Trentino
14ª tappa Giro d'Italia (Cervere > Bardonecchia)
18ª tappa Giro d'Italia (Mori > Polsa, cronometro)
20ª tappa Giro d'Italia (Silandro > Tre Cime di Lavaredo)
Classifica generale Giro d'Italia

2014 (Astana Pro Team, sei vittorie)
Trofeo Melinda, valido per i Campionati italiani, Prova in linea
2ª tappa Tour de France (York > Sheffield)
10ª tappa Tour de France (Mulhouse > La Planche des Belles Filles)
13ª tappa Tour de France (Saint-Étienne > Chamrousse)
18ª tappa Tour de France (Pau > Hautacam)
Classifica generale Tour de France

2015 (Astana Pro Team, cinque vittorie)
Trofeo Melinda, valido per i Campionati italiani, Prova in linea
19ª tappa Tour de France (Saint-Jean-de-Maurienne > La Toussuire-Les Sybelles)
Coppa Bernocchi
Tre Valli Varesine
Giro di Lombardia

2016 (Astana Pro Team, quattro vittorie)
4ª tappa Tour of Oman (Knowledge Oasis Muscat > Jabal Al Akhdhar)
Classifica generale Tour of Oman
19ª tappa Giro d'Italia (Pinerolo > Risoul)
Classifica generale Giro d'Italia

2017 (Bahrain-Merida Pro Cycling Team, quattro vittorie)
Classifica generale Giro di Croazia
16ª tappa Giro d'Italia (Rovetta > Bormio)
3ª tappa Vuelta a España (Prades Conflent Canigó > Andorra la Vella)
Giro di Lombardia

2018 (Bahrain-Merida Pro Cycling Team, una vittoria)
Milano-Sanremo

2019 (Bahrain-Merida Pro Cycling Team, una vittoria)
20ª tappa Tour de France (Albertville > Val Thorens)

2021 (Trek-Segafredo, due vittorie)
4ª tappa Giro di Sicilia (Sant'Agata di Militello > Mascali)
Classifica generale Giro di Sicilia

Altri successi

2005 (Fassa Bortolo)
1ª tappa, 2ª semitappa Settimana Internazionale di Coppi e Bartali (cronosquadre)

2006 (Liquigas)
Classifica giovani Settimana Internazionale di Coppi e Bartali

2007 (Liquigas)
Classifica giovani Giro del Trentino
1ª tappa Giro d'Italia (Caprera > La Maddalena, cronosquadre)
Classifica a punti Giro di Slovenia
Trofeo Città di Borgomanero (cronocoppie con Roman Kreuziger)

2008 (Liquigas)
1ª tappa, 2ª semitappa Settimana Internazionale di Coppi e Bartali (cronosquadre)

2010 (Liquigas-Doimo)
4ª tappa Giro d'Italia (Savigliano > Cuneo, cronosquadre)
Premio Azzurri d'Italia Giro d'Italia
Gran Premio Fontaneto-Coppa Guffanti (gara a eliminazione)
Classifica combinata Vuelta a España

2011 (Liquigas-Cannondale)
Gran Premio Fontaneto-Coppa Guffanti (gara scratch)

2012 (Liquigas-Cannondale)
Classifica a punti Tirreno-Adriatico
Daags na de Tour (criterium)
Classifica a punti Il Padania
Classifica scalatori Il Padania

2013 (Astana Pro Team)
Classifica scalatori Giro del Trentino
Trofeo Vincenzo Torriani Giro d'Italia
1ª tappa Vuelta a España (Vilanova de Arousa > Sanxenxo, cronosquadre)

2014 (Astana Pro Team)
Profronde van Stiphout (criterium)
Profronde van Lommel (criterium)
Herentals Fietst (criterium)
Na-Tour Criterium Wolvertem (criterium)

2015 (Astana Pro Team)
Classifica generale Trittico Lombardo

2016 (Astana Pro Team)
1ª tappa Giro del Trentino (Riva > Torbole, cronosquadre)

2017 (Bahrain-Merida Pro Cycling)
Trofeo Bonacossa Giro d'Italia
Trofeo Vincenzo Torriani Giro d'Italia
Cycling Stars Montebelluna (criterium)
Taiwan Kom Challenge

2022 (Astana Qazaqstan Team)
Trofeo Bonacossa Giro d'Italia
Cycling Stars Valdobbiadene (criterium)
RSM Wealer Ronde (criterium)

Piazzamenti

Grandi Giri

Giro d'Italia
2007: 19º
2008: 11º
2010: 3º
2011: 2º
2013: vincitore
2016: vincitore
2017: 3º
2019: 2º
2020: 7º
2021: 18º
2022: 4º

Tour de France
2008: 20º
2009: 6º
2012: 3º
2014: vincitore
2015: 4º
2016: 30º
2018: non partito (13ª tappa)
2019: 39º
2021: non partito (16ª tappa)

Vuelta a España
2010: vincitore
2011: 6º
2013: 2º
2015: squalificato (2ª tappa)
2017: 2º
2018: 59º
2022: 45º

Classiche monumento

Milano-Sanremo
2006: 70º
2009: 49º
2010: 28º
2011: 8º
2012: 3º
2013: ritirato
2014: 44º
2015: 45º
2016: 33º
2018: vincitore
2019: 8º
2020: 23º
2021: 35º

Giro delle Fiandre
2018: 24º

Liegi-Bastogne-Liegi
2005: 113º
2006: ritirato
2007: 71º
2008: 10º
2009: 39º
2010: 28º
2011: 8º
2012: 2º
2013: 23º
2014: 30º
2015: 13º
2016: 51º
2018: 32º
2019: 8º
2022: 30º

Giro di Lombardia
2005: 80º
2006: ritirato
2007: 34º
2008: 37º
2010: 5º
2011: 40º
2012: 26º
2013: ritirato
2015: vincitore
2017: vincitore
2018: 2º
2019: 55º
2020: 6º
2021: 13º
2022: 24º

Competizioni mondiali

Campionati del mondo
Zolder 2002 - Cronometro Juniores: 3º
Zolder 2002 - In Linea Juniores: 71º
Hamilton 2003 - In linea Under-23: fuori tempo massimo
Verona 2004 - Cronometro Under-23: 3º
Verona 2004 - In linea Under-23: 5º
Salisburgo 2006 - Cronometro Elite: 16º
Stoccarda 2007 - Cronometro Elite: 19º
Melbourne 2010 - In linea Elite: 40º
Limburgo 2012 - Cronosquadre: 4º
Limburgo 2012 - In linea Elite: 29º
Toscana 2013 - In linea Elite: 4º
Ponferrada 2014 - In linea Elite: 40º
Richmond 2015 - In linea Elite: 42º
Innsbruck 2018 - In linea Elite: 49º
Imola 2020 - In linea Elite: 15º

Giochi olimpici
Pechino 2008 - In linea: ritirato
Pechino 2008 - Cronometro: 14º
Londra 2012 - In linea: 101º
Rio de Janeiro 2016 - In linea: ritirato
Tokyo 2020 - In linea: 53º

Riconoscimenti
Memorial Gastone Nencini nel 2006
Oscar TuttoBici nel 2010, 2012, 2013, 2014, 2017 e nel 2002 da juniores
Premio Italia professionisti nel 2010, 2012 e 2013
Giglio d'Oro nel 2010, 2012, 2013, 2014, 2015, 2017
Mendrisio d'Oro del Velo Club Mendrisio nel 2010 e 2014
 Cittadinanza onoraria di Venetico nel 2012
 Premio Vincenzo Torriani nel 2016
 Inserito nella Top 25 della Cycling Hall of Fame
 Gazzetta Sports Awards: 4
Categoria Uomo dell'anno in ambito italiano: 2013, 2014
Categoria Uomo dell'anno in ambito internazionale: 2014
Categoria Legend: 2018

Onorificenze

Note
Annotazioni

Fonti

Altri progetti

Collegamenti esterni

Vincitori del Giro d'Italia
Vincitori del Tour de France
Vincitori della Vuelta a España
Vincitori del Giro di Lombardia
Vincitori della Milano-Sanremo
Vincitori della Tre Valli Varesine
Insigniti con il Collare d'oro al merito sportivo
Insigniti con la medaglia al valore atletico


text:
/**
 * Thin jQuery.ajax wrapper for WP REST API requests.
 *
 * Currently only applies to requests that do not use the `wp-api.js` Backbone
 * client library, though this may change.  Serves several purposes:
 *
 * - Allows overriding these requests as needed by customized WP installations.
 * - Sends the REST API nonce as a request header.
 * - Allows specifying only an endpoint namespace/path instead of a full URL.
 *
 * @since     4.9.0
 */

( function( $ ) {
	var wpApiSettings = window.wpApiSettings;

	function apiRequest( options ) {
		options = apiRequest.buildAjaxOptions( options );
		return apiRequest.transport( options );
	}

	apiRequest.buildAjaxOptions = function( options ) {
		var url = options.url;
		var path = options.path;
		var namespaceTrimmed, endpointTrimmed;
		var headers, addNonceHeader, headerName;

		if (
			typeof options.namespace === 'string' &&
			typeof options.endpoint === 'string'
		) {
			namespaceTrimmed = options.namespace.replace( /^\/|\/$/g, '' );
			endpointTrimmed = options.endpoint.replace( /^\//, '' );
			if ( endpointTrimmed ) {
				path = namespaceTrimmed + '/' + endpointTrimmed;
			} else {
				path = namespaceTrimmed;
			}
		}
		if ( typeof path === 'string' ) {
			url = wpApiSettings.root + path.replace( /^\//, '' );
		}

		// If ?_wpnonce=... is present, no need to add a nonce header.
		addNonceHeader = ! ( options.data && options.data._wpnonce );

		headers = options.headers || {};

		// If an 'X-WP-Nonce' header (or any case-insensitive variation
		// thereof) was specified, no need to add a nonce header.
		if ( addNonceHeader ) {
			for ( headerName in headers ) {
				if ( headers.hasOwnProperty( headerName ) ) {
					if ( headerName.toLowerCase() === 'x-wp-nonce' ) {
						addNonceHeader = false;
						break;
					}
				}
			}
		}

		if ( addNonceHeader ) {
			// Do not mutate the original headers object, if any.
			headers = $.extend( {
				'X-WP-Nonce': wpApiSettings.nonce
			}, headers );
		}

		// Do not mutate the original options object.
		options = $.extend( {}, options, {
			headers: headers,
			url: url
		} );

		delete options.path;
		delete options.namespace;
		delete options.endpoint;

		return options;
	};

	apiRequest.transport = $.ajax;

	/** @namespace wp */
	window.wp = window.wp || {};
	window.wp.apiRequest = apiRequest;
} )( jQuery );

redpajama_set_name: RedPajamaGithub


text:
class Game < ActiveRecord::Base
  include AASM

  RANKS = { 'Jack' => 11, 'Queen' => 12, 'King' => 13, 'Ace' => 14 }
  SUITS = [:hearts, :diamonds, :spades, :clubs]
  SUIT_INVERSE = { hearts: :diamonds, diamonds: :hearts, clubs: :spades, spades: :clubs }

  has_many :players
  validates :players, length: { in: 0..4 }
  validates :trump_suit, inclusion: { in: [:hearts, :diamonds, :spades, :clubs] }

  attr_reader :up_card, :trump_suit, :trump_declaring_team, :first_card,
              :play_pile, :discard_pile, :team_scores, :top_card_trump,
              :tricks_won, :whose_turn, :whose_deal, :first_turn

  attr_accessor :deck

  after_initialize do |game|
    @whose_deal   = (0..3).to_a.sample
    @team_scores  = { 0 => 0, 1 => 0 }
    true
  end

  def status
    case state
    when :need_players
      "Need #{4 - self.players.size} more players."
    when :declaring_trump
      "It's #{player.name}'s turn to call trump."
    when :trump_suit_undeclared
      if @whose_turn == @whose_deal
        "#{dealer.name} is forced to declare trump."
      else
        "It's #{player.name}'s turn to call trump."
      end
    when :dealer_discarding
      "Waiting on #{dealer.name} to discard."
    end
  end

  def join_game(player_name)
    return Msg::GAME_FULL if self.players.size >= 4

    new_player      = self.players.new
    new_player.name = player_name
    new_player.save!

    deal if enough_players?
    new_player.code
  end

  def player_pick_it_up(player_code)
    return Msg.invalid_action(:pick_it_up) unless self.may_pick_it_up?
    return Msg::NOT_YOUR_TURN  unless player_turn?(code_to_turn(player_code))

    @trump_declaring_team = team(player_code)
    @trump_suit           = suitify(@up_card.cards.first)
    dealer.hand = RubyCards::Hand.new(dealer.hand.cards + @up_card.cards)
    @up_card    = RubyCards::Hand.new

    pick_it_up
  end

  def player_declare_trump(player_code, suit)
    return Msg.invalid_action(:declare_trump) unless self.may_declare_trump?

    suit = suit.downcase.to_sym
    return Msg::INVALID_SUIT                  unless SUITS.include?(suit)
    return Msg::INVALID_TRUMP_SUIT            if self.trump_suit_undeclared? && suit == @top_card_trump

    @trump_suit           = suit
    @trump_declaring_team = team(player_code)
    declare_trump
  end

  def player_pass(player_code)
    return Msg.invalid_action(:pass) unless self.may_pass?
    return Msg::NOT_YOUR_TURN unless player_turn?(code_to_turn(player_code))
    pass
  end

  def player_discard(player_code, card)
    return Msg.invalid_action(:dealer_discard) unless self.may_dealer_discard?
    return Msg::NOT_YOUR_TURN   unless player_turn?(code_to_turn(player_code))
    return Msg::NOT_IN_HAND     unless card_in_player_hand?(player_code, card)

    @discard_pile = RubyCards::Hand.new(@discard_pile.cards + [card])
    dealer.hand   = RubyCards::Hand.new(dealer.hand.cards - [card])

    dealer_discard
  end

  def player_play(player_code, card)
    return Msg.invalid_action(:play) unless self.may_play?
    return Msg::NOT_YOUR_TURN unless player_turn?(code_to_turn(player_code))
    return Msg::NOT_IN_HAND   unless card_in_player_hand?(player_code, card)

    @current_suit = suitify(card) if game_first_turn?
    @play_pile    = RubyCards::Hand.new(@play_pile.cards + [card])
    player.hand   = RubyCards::Hand.new(player.hand.cards - [card])

    play
  end

  def game_discard_top_card!
    @discard_pile = RubyCards::Hand.new(@discard_pile.cards + @up_card.cards)
    @up_card      = RubyCards::Hand.new
  end

  def game_rake_cards!
    @first_turn = winner_of_this_trick
    @tricks_won[@first_turn % 2] += 1

    @discard_pile = RubyCards::Hand.new(@play_pile.cards + @discard_pile.cards)
    @play_pile    = RubyCards::Hand.new
    @current_suit = nil

    # Todo: This transition fails
    rake
  end

  def game_calculate_scores!
    team0 = @tricks_won[0]
    team1 = @tricks_won[1]
    winning_team = team0 > team1 ? 0 : 1

    if @trump_declaring_team == winning_team
      if @tricks_won[winning_team] == 5
        @team_scores[winning_team] += 2
      else
        @team_scores[winning_team] += 1
      end
    else
      @team_scores[1 - winning_team] += 2
    end

    if end_of_game?
      end_game
    else
      deal
    end
  end

  def game_deal!
    @deck = RubyCards::Deck.new({number_decks: 1, exclude_rank: [2,3,4,5,6,7,8]})
    @deck.shuffle!
    @tricks_won   = { 0 => 0, 1 => 0 }
    @up_card        = RubyCards::Hand.new
    @play_pile      = RubyCards::Hand.new
    @discard_pile   = RubyCards::Hand.new

    num_to_draw = [2, 3, 2, 3, 2]
    2.times do |j|
      4.times do |p|
        players[p].hand.draw(@deck, num_to_draw[p + j])
      end
    end

    @whose_deal = (@whose_deal + 1) % 4
    @first_turn = (@whose_deal + 1) % 4
    @whose_turn = @first_turn

    @up_card.draw(@deck, 1)
    @discard_pile.draw(@deck, 3)
    @top_card_trump = suitify(@up_card.cards.first)
  end

  def is_dealer?(player_code)
    @whose_deal == code_to_turn(player_code)
  end

  def game_first_turn?
    @whose_turn == @first_turn
  end

  def game_dealer_turn?
    @whose_turn == @whose_deal
  end

  def game_screw_the_dealer?
    game_next_turn_dealer? && self.trump_suit_undeclared?
  end

  def game_next_turn_dealer?
    @whose_turn == (@whose_deal-1)%4
  end

  def card_in_player_hand?(player_code, card)
    self.players.select { |p| p.code == player_code }[0].hand.cards.any? do |c|
      c.rank == card.rank && c.suit == card.suit
    end
  end

  def state
    aasm_state
  end

  aasm :whiny_transitions => true do
    state :need_players, initial: true
    state :scoring, :declaring_trump, :trump_suit_undeclared, :dealer_declaring_trump
    state :raking_cards, :laying_cards, :game_over, :dealer_discarding

    event :deal do
      transitions from: :need_players, to: :declaring_trump, guard: :enough_players?, after: :game_deal!
      transitions from: :scoring, to: :declaring_trump, guard: :end_of_round?, after: :game_deal!
    end

    event :pass do
      transitions from: :declaring_trump, to: :declaring_trump, guard: -> { !game_dealer_turn? }, after: :next_turn!
      transitions from: :declaring_trump, to: :trump_suit_undeclared, guard: :game_dealer_turn?, after: -> {
          game_discard_top_card!
          next_turn!
        }
      transitions from: :trump_suit_undeclared, to: :trump_suit_undeclared, guard: -> { !game_screw_the_dealer? }, after: :next_turn!
      transitions from: :trump_suit_undeclared, to: :dealer_declaring_trump, guard: :game_screw_the_dealer?, after: :next_turn!
    end

    event :pick_it_up do
      transitions from: :declaring_trump, to: :dealer_discarding, after: :dealer_turn!
    end

    event :declare_trump do
      transitions from: :dealer_declaring_trump, to: :laying_cards, guard: :game_dealer_turn?
      transitions from: :trump_suit_undeclared, to: :laying_cards, guard: -> { !game_dealer_turn? }
    end

    event :dealer_discard do
      transitions from: :dealer_discarding, to: :laying_cards, guard: :game_dealer_turn?, after: :lead_turn!
    end

    event :play do
      transitions from: :laying_cards, to: :laying_cards, guard: -> { !end_of_trick? }, after: :next_turn!
      # This transition never appears to happen.
      transitions from: :laying_cards, to: :raking_cards, guard: :end_of_trick?, after: :game_rake_cards!
    end

    event :rake do
      transitions from: :raking_cards, to: :scoring, guard: :end_of_round?, after: :game_calculate_scores!
      transitions from: :raking_cards, to: :laying_cards, guard: -> { !end_of_round? }
    end

    event :end_game do
      transitions :scoring => :game_over, guard: :end_of_game?
    end
  end

  protected

  def team0
    [0, 2]
  end

  def team1
    [1, 3]
  end

  def end_of_game?
    @team_scores.any? { |_, score| score >= 10 }
  end

  def end_of_round?
    @discard_pile.cards.size == 24
  end

  def end_of_trick?
    @play_pile.cards.size == 4
  end

  def next_turn!
    @whose_turn = (@whose_turn + 1) % 4
  end

  def lead_turn!
    @whose_turn = @first_turn
  end

  def dealer_turn!
    @whose_turn = @whose_deal
  end

  def winner_of_this_trick
    (@first_turn + max_in_play[1]) % 4
  end

  def player_turn?(player_number)
    player_number == @whose_turn && !end_of_round?
  end

  def max_in_play
    trump = @trump_suit.downcase.to_sym
    @play_pile.each_with_index.max_by do |card, idx|
      card_suit = card.suit.downcase.to_sym
      rank      = card.rank.to_i
      rank      = rank == 0 ? RANKS[card.rank] : rank

      if card_suit == trump
        rank += 100
        rank += 100 if card.rank == 'Jack'
      elsif SUIT_INVERSE[card_suit] == trump
        rank += 199 if card.rank == 'Jack' && SUIT_INVERSE[card_suit] == trump
      elsif card_suit == @current_suit
        rank += 50
      end

      rank
    end
  end

  def code_to_turn(player_code)
    self.players.index { |p| p.code == player_code }
  end

  def team(player_code)
    code_to_turn(player_code) % 2
  end

  def suitify(card)
    card.suit.downcase.to_sym
  end

  def dealer
    self.players[@whose_deal]
  end

  def player
    self.players[@whose_turn]
  end

  def enough_players?
    return false if players.size < 4

    self.players.each do |player|
      return false unless player.ready?
    end
  end
end


Please enter your current Username, the last four digits of your Tax ID number (Social Security Number), and the e-mail address associated with your online banking account.  The e-mail address must match the e-mail address we have on file.  A temporary password will be e-mailed to you.


Published on July 14, 2018. Lighting Ideas Home Gym. Basement gym ideas home gym contemporary with workout room, 248 best images about home gym & equipment on pinterest. Basement gym ideas home gym contemporary with workout room. Missouri City Ballet.


It may still be pretty early days in the NBA betting season, but there can be no denying that the playoff race in the Eastern Conference is already turning into a very intriguing one. Cleveland have the lead right now, but they are a mere 2.5 games up on the Detroit Pistons in 8th. The Boston Celtics are just 2 games back of the Cavaliers right now, and they will try to close that gap when they play host to Cleveland on Tuesday night.
The Celtics have recalled forward Jordan Mickey from the Maine Red Claws of the NBA Development League.
The Cleveland Cavaliers (15-7) may be on top of the heap right now, but there are very few people who are impressed by how they got there. While it's true that the Cavs have not been particularly dominant, especially on the road where they are just 5-6 so far, they have also had some injury issues to deal with. Perhaps the biggest of those is the absence of Kyrie Irving, who has yet to start this season. The rumors are that Irving is ready to play right now, but that the Cavaliers brass are not going to rush him back in at this early stage of the season. That would suggest that they are comfortable enough with their current level of play, otherwise you think they would be getting him back into the fray ASAP. The Cavaliers are coming into this one on a modest 2-game winning streak that included a rare road win in Orlando over the weekend. The Cavs were dominant in that one, winning 111-76, and they will hope that they can get back to .500 on the road with a win in Boston.
It has been something of an inconsistent start to the season for the Boston Celtics (14-10), but a 3-1 record last week has them coming into this big game on a bit of a high. The Celtics are finally starting to achieve a pretty decent balance between offense as defense, and are in the top 10 in both points scored and points against. They were also very unfortunate not to have a perfect un last week, as they took the Golden State Warriors to double OT before finally going down 124-119. All signs now point to a team that seems to have found its groove, although they will want to start improving on their home record of 7-5. If they can get things rolling at home, there is no reason why Boston can't be challenging for top spot in the east at the end of the season.


text:
Q: Confused about computation of integral basis In Proposition 10.2 in Algebraic Number Theory by Neukirch, the author computes the integral basis for the ring of integers of $\mathbb{Q}(\zeta)$, the $n$th cyclotomic field. There is one small computation that I'm confused about:

Specifically, why does the isomorphism $\mathcal{O}/\lambda\mathcal{O}\cong \mathbb{Z}/\ell\mathbb{Z}$ imply that $\mathcal{O}=\mathbb{Z}+\lambda\mathcal{O}$?

A: The inclusion $i : \mathbf{Z} \to \mathcal{O}$ induces an isomorphism $\bar i \colon \mathbf{Z} / \ell \mathbf{Z} \to \mathcal O / \lambda \mathcal O$. In particular, $\bar i$ is surjective. Thus for any $x \in \mathcal O$ we have that $x + \lambda \mathcal O$ lies in the image of $\bar i$. It can thus be written as $i(a) + \lambda \mathcal O$ for some $a \in \mathbb{Z}$. Now $x \in i(a) + \lambda \mathcal O = a + \lambda \mathcal O$. This proves $\mathcal O \subseteq \mathbb Z + \lambda \mathcal O$. The other inclusion is clear.

redpajama_set_name: RedPajamaStackExchange


text:
Politics, It's Personal: Stirring the Epiphanic Political Awakening in Dear Rachel Maddow, Part 2
craft review by Sarah S. Davis
In Part 1, we saw how Kisner shapes Brynn's political awakening through internal conflict. Read on to find out how Kisner creates stakes that push Brynn toward change.
Even Losers Have Something to Lose
So what could possibly change her mind and push Brynn towards risking not just a guaranteed loss, but a potentially fatal blow to her self-esteem? For Brynn to take such a leap, she has to personally stand to lose something from not running in the election, and the threat of losing it must push her past her comfort zone. She has to see that she has a stake in the results of not running in these elections, that she would lose something bigger than an election if she did not try, that political opportunity does not belong solely to the rich and privileged, but to all.
Brynn admits that what she would really want is for Adam to not be the only one calling all the shots:
I legit want everyone to get a say . . . if one student is allowed to try to get stuff, then all the students should get a chance. Even the kids in the rooms named after colors. (73)
Michaela builds on Brynn's passion for giving all students a voice, arguing that she should do it for the blue room students and "[for] the blue roomers to come after you" (74). Brynn begins to shift her thinking as she realizes that if she doesn't run for the spot on the superintendent selection committee, she wouldn't be the only person missing out.
The election is a rare opportunity that would allow the Blue Room students to have a voice in a major decision that would affect everyone. Brynn may participate in the election and still not win, but without her perspective on the ballot, students who would benefit from a peer representative lose automatically.
With Michaela cheering her on, and Lacey and newspaper colleague Justin crafting a campaign strategy, a newly bolstered Brynn signs up for the campaign and runs as herself in a school that craves authenticity. Casting a wide scope, Brynn talks to as many students as she can about what they would like to see changed, including kids who cut class, smoke, and think that student government doesn't care about them.
In Brynn they find a champion and an underdog: turns out a lot of people want to make a loser a winner. Although Brynn does not claim a victory in either election, the experience teaches her that you can win even when you lose. By running, Brynn defeats her core beliefs and gains more confidence and self-worth, seeing that she is loved and admired by many for being clever, ambitious, and altruistic.
Making Politics Feel Personal in Contemporary YA
It's easy for teen readers to identify with Brynn, who feels like she is part of a demographic that's often left behind. For their entire adolescence, American teenagers are disenfranchised, only securing the right to vote when they turn 18 and are legally an adult. Voting rights are set up in a way to deprive teen constituents of a voice at the ballot and make them powerless. Yet today's teenagers confront politics every day when they go to school and live with the knowledge that gun control laws cannot prevent a slaughter in the hallways.
Because legislative progress is precarious, students might feel like they don't matter to politicians, that progress is impossible, that civic engagement is pointless. For many teens who relate to Brynn, the feeling of powerlessness is stifling. To see her transcend her nihilism and have a political awakening shows teen readers that politics can be personal.
Facing defeat and rejection—at school, at dating, and especially at home—Brynn Harper has a stubborn persistence that is an infectious, stirring encouragement for teen readers to never give up fighting for what matters. Brynn demonstrates this by transforming from being jaded, defeated, and cynical about the country's political system to recognizing her duty to advocate for everyone regardless of their grades and high school caste.
Watching Rachel Maddow stirs Brynn to realize the importance of fighting the good fight against corruption. However, the opportunity to run for the representative seat and later student body president gives Brynn a chance to get involved with politics on a personal level. Brynn feels called to enter the elections despite knowing that she could face a smear campaign by her opponents, but the stakes are too high for her to walk away.
Suddenly, government stops being a concept in a textbook or a jumble of clips, sound bites, and talking heads on MSNBC, and starts impacting Brynn's life in a way she can touch. For authors writing fiction with political themes for young readers, Dear Rachel Maddow proves that teen characters need to feel that politics impact them in some tangible, urgent way in order to feel empowered to participate—vote or no vote.
Sarah S. Davis lives among cats and piles of books outside Philadelphia. Her writing has appeared on Book Riot, Electric Literature, and Kirkus Reviews. She holds a BA in English form the University of Pennsylvania and a Master's of Library Science from Clarion University. Sarah is currently an MFA student in Vermont College of Fine Arts' kid lit program. She is working on a middle grade fantasy novel, a YA dystopian series, and collection of nonsense verse. Besides reading books, Sarah also reads tarot cards professionally.
Find Sarah on her blog, Broke by Books.
character, plot, realistic fiction
Katherine Paterson's Surprising and Inevitable Endings, Part 1 »
« Letter to Myself After Going Down the Twitter Hole Tonight
You can embed a Mailchimp signup form.

redpajama_set_name: RedPajamaCommonCrawl


The Wildlife Art Museum of Australia (WAMA) is a visionary project to create an art museum within an Australia botanical landscape, approximately 6 kilometers from Halls Gap.
WAMA is currently in the early stages of design and concepts of the initial proposal will be on display at the Halls Gap cricket pavilion from 1pm-5pm on Sunday May 24th. All members of the Halls Gap and surrounding community are invited to participate in this event, and view and provide feedback on the WAMA proposals.
In conjunction with the WAMA Foundation, TRACT Consultants, WT Partnership, Northern Grampians Shire and Regional Development Victoria.


Ampad Gold Fibre Wirebound Writing Pad w/Cover, 8 1/2 x 11 3/4, White, Gray Cover - Wirebound pad features numbered lines and space for project headings for quick reference. Each 20 lb. sheet is microperforated and legal-ruled. Design includes classic cover and extra-stiff, 80 point back. Pad contains 70 sheets of 20 lb. white paper.


text:
package org.wso2.carbon.identity.user.store.configuration.internal;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.base.api.ServerConfigurationService;
import org.wso2.carbon.user.api.RealmConfiguration;
import org.wso2.carbon.user.core.service.RealmService;

/**
 * @scr.component name="org.wso2.carbon.identity.user.store.configuration.component" immediate="true"
 * @scr.reference name="user.realmservice.default"
 * interface="org.wso2.carbon.user.core.service.RealmService"
 * cardinality="1..1" policy="dynamic" bind="setRealmService"
 * unbind="unsetRealmService"
 *
 * @scr.reference name="server.configuration.service"
 * interface="org.wso2.carbon.base.api.ServerConfigurationService" cardinality="1..1"
 * policy="dynamic"  bind="setServerConfigurationService"
 * unbind="unsetServerConfigurationService"
 */
public class UserStoreConfigComponent {
    private static Log log = LogFactory.getLog(UserStoreConfigComponent.class);
    private static RealmService realmService = null;
    private static RealmConfiguration realmConfiguration = null;
    private static ServerConfigurationService serverConfigurationService = null;
    public UserStoreConfigComponent() {
    }

    /**
     * @param ctxt
     */
    protected void activate(ComponentContext ctxt) {

        if (log.isDebugEnabled()) {
            log.info("Identity User Store bundle is activated.");
        }
        try {
        } catch (Throwable e) {
            log.error("Failed to load user store org.wso2.carbon.identity.user.store.configuration details.", e);
        }
        if (log.isDebugEnabled()) {
            log.info("Identity User Store-Config bundle is activated.");

        }
    }

    /**
     * @param ctxt
     */
    protected void deactivate(ComponentContext ctxt) {
        if (log.isDebugEnabled()) {
            log.info("Identity User Store-Config bundle is deactivated");
        }
    }

    protected void setRealmService(RealmService realmService) {
        UserStoreConfigComponent.realmService = realmService;
        if (log.isDebugEnabled()) {
            log.info("Set the Realm Service");
        }
    }

    protected void unsetRealmService(RealmService realmService) {
        UserStoreConfigComponent.realmService = null;
        if (log.isDebugEnabled()) {
            log.info("Unset the Realm Service");
        }
    }

    public static RealmService getRealmService() {
        return realmService;
    }

    public static RealmConfiguration getRealmConfiguration() {
        realmConfiguration = UserStoreConfigComponent.getRealmService().getBootstrapRealmConfiguration();
        return realmConfiguration;
    }

    protected void setServerConfigurationService(ServerConfigurationService serverConfigurationService) {
        if (serverConfigurationService == null) {
            String msg = "Before activating Carbon Core bundle, an instance of "
                    + "ServerConfigurationService should be in existence";
            log.error(msg);
        }

        UserStoreConfigComponent.serverConfigurationService = serverConfigurationService;
    }

    protected void unsetServerConfigurationService(ServerConfigurationService serverConfigurationService) {
        if (log.isDebugEnabled()) {
            log.info("Unsetting the ServerConfigurationService");
        }
        UserStoreConfigComponent.serverConfigurationService = null;
    }

    public static ServerConfigurationService getServerConfigurationService(){
        return UserStoreConfigComponent.serverConfigurationService;
    }

}


Treat yourself and shop with our big technology brands on a fantastic range of technology products! Whether you are looking for a laptop, games consoles or a new phone, there'll be something to make you smile. Just shop with one of the below brands and your points will be winging their way to you in no time.


CLEVELAND (AP) Even Rolling Stone is throwing rocks at Browns coach Eric Mangini.
Mangini, fired by the New York Jets in December, has become a target of abuse – much of it from outside Cleveland – for some of his decisions this season, most notably his handling of the Browns quarterbacks and excessive fines levied on players who break his rules.
The Browns are 1-5 with their only win a 6-3 decision over the Buffalo Bills on Oct. 11.
Long before Rolling Stone piled on, Mangini was being slammed for some of his coaching methods. He has fined players for not adhering to his policies – like parking in the wrong spot – and he slapped one unidentified player a $1,701 fine for failing to pay for a $3 bottle of water during a hotel stay.
Some players complained privately about the length of training camp practices and more hitting than some of them had experienced since high school. Mangini also has subjected players to pop quizzes during meetings, his way of making sure they are learning their playbook and about each other. He forced his rookies to take a 10-hour bus trip this summer to his football camp, and made his team practice outdoors in the rain.
Mangini won't tolerate anyone not part of his program.
He traded playmaker Braylon Edwards to the Jets one day after the wide receiver allegedly punched a friend of NBA superstar LeBron James outside a Cleveland nightclub. Mangini has transformed Cleveland's roster, bringing in 26 new players from last season, including 10 who played for him in New York last season.
One of them, linebacker David Bowens, said Mangini is unfairly portrayed as tyrant.
Rolling Stone writer Matt Taibbi went as far as saying the Browns have quit on Mangini in lopsided defeats, a charge many of Cleveland's players dismissed after road losses to Denver and Baltimore.


text:
Plácido Domingo disinvited from Philadelphia Orchestra gala after harassment allegations
Nine women have said he had sexually harassed them starting as far back as the 1980s.
By Anne Midgette and Peggy McGloneWashington Post
In this Sunday, July 9, 2006, file photo, Placido Domingo performs during the final of the soccer World Cup between Italy and France in the Olympic Stadium in Berlin. Eight opera singers and a dancer have told The Associated Press that they were sexually harassed by Domingo, one of the most celebrated and powerful men in opera. The women say the encounters took place over three decades, at venues that included opera companies where he held top managerial positions. AP Photo/Luca Bruno
The Philadelphia Orchestra has pulled its invitation to tenor Plácido Domingo to headline its season-opening gala Sept. 18 in the wake of an Associated Press article in which nine women said he had sexually harassed them starting as far back as the 1980s.
"We are committed to providing a safe, supportive, respectful, and appropriate environment for the Orchestra and staff, for collaborating artists and composers, and for our audiences and communities," the orchestra said in a statement Tuesday.
Domingo, 78, the leading living tenor and a famous figure in the opera world, was a top administrator at the Washington National Opera for 14 years and is well known for his generosity and commitment to the art form. But he also has a reputation for womanizing.
The AP article, published on Tuesday, paints a picture of a man who has used his power as a way to win sexual favors and who has withheld jobs when his advances are rejected.
Women: Opera's Domingo abused power to sexually harass them
In a statement, the tenor told the AP the allegations are "deeply troubling, and as presented, inaccurate."
"I believed that all of my interactions and relationships were always welcomed and consensual. People who know me or who have worked with me know that I am not someone who would intentionally harm, offend, or embarrass anyone," according to the statement. "However, I recognize that the rules and standards by which we are – and should be – measured against today are very different than they were in the past. I am blessed and privileged to have had a more than 50-year career in opera and will hold myself to the highest standards."
Patricia Wulf, a mezzo-soprano who sang at the Washington National Opera, was the only one of the nine accusers – eight singers and a dancer – who would allow her name to be used in the story. Domingo is still active as a singer, conductor and administrator – he is general director with the Los Angeles Opera.
One singer who spoke to the AP said the singer's pursuit of her was relentless, even after she rebuffed him and reminded him that she was married. "It's a shame your husband doesn't understand about your career," he reportedly told her.
That singer, now 49 and retired, said once Domingo took over control of casting decisions at the LA Opera, he never hired her again.
Other women told the AP that Domingo had made overtures to them, and almost three dozen people in the field confirmed that "they witnessed inappropriate sexually tinged behavior by Domingo and that he pursued younger women with impunity."
Seven of the nine accusers said they believed their careers had been negatively affected by their refusal of Domingo's advances.
Kennedy Center President Deborah Rutter and WNO General Director Timothy O'Leary said in a joint statement that the organizations have zero-tolerance policies regarding sexual harassment, discrimination and abuse of any kind.
"We take allegations of this nature very seriously," they said. "The specific accusations reported today predate WNO's affiliation with the Kennedy Center in 2011 – and Mr. Domingo has not been engaged by WNO since the fall of 2011. Our goal always is to ensure that all of our artists and employees can work and thrive in an environment of safety, trust, support, creativity, and mutual respect."
Domingo has been especially active in the careers of young artists, and the WNO's Domingo-Cafritz Young Artist Program still bears his name.
Domingo's behavior set the tone for others, Cynthia Weinman, a mezzo-soprano who participated in the training program from 2008-2010, told The Washington Post. Weinman said Domingo and another young artist had a sexual relationship that everyone in the company, and Domingo's wife, knew about. "All of us knew it was going on," she said.
Weinman recounted a trip to China for a production of "Rigoletto." Most of the singers flew coach, she said, while the singer Domingo was allegedly involved with had flown first-class a few days earlier. "We all pretended nothing was happening," she said. "I think it created a culture of it being accepted in that company."
Weinman questioned why the young artist program remains connected to the tenor. "I don't understand why it's still named that," she said. "I don't think it makes sense, especially after today."
Domingo's Operalia competition, founded in 1993, also seeks to identify and place young talent in the field.
"Participating or even winning a prize in this competition is only the beginning of every singer's relationship with Plácido Domingo's Operalia," the website says. It continues, "Plácido Domingo himself, a singer, a conductor and the General Director of the Los Angeles Opera, takes a committed interest in the career development of the competitors. Some singers, perhaps not yet ready for the big stages, may be chosen to join one of several Young Artists programs currently established in Washington and Los Angeles in the United States and Valencia in Spain."
Domingo is also among the most beloved of classical stars – handsome, charming and popular. One of the original Three Tenors, the talent behind the best-selling classical album of all time, and a multiple Grammy winner, Domingo has remained active on major international stages, increasingly taking on baritone roles as the higher notes have gotten tricky with time.
Domingo is slated to sing the title role of Verdi's "Macbeth," a baritone part, for three performances at the Metropolitan Opera in September and October. The Met has not yet responded to queries about whether he will still perform.
The Salzburg Festival in Austria, however, said Tuesday that Domingo would appear as scheduled in performances of Verdi's "Luisa Miller" – in which he takes another baritone role – on Aug. 25 and 31.
"I have known Plácido Domingo for more than 25 years," the festival's president, Helga Rabl-Stadler, said in a statement. "In addition to his artistic competence, I was impressed from the very beginning by his appreciative treatment of all Festival employees. . . . Had the accusations against him been voiced inside the Festspielhaus in Salzburg, I am sure I would have heard of it. . . . Artistic Director Markus Hinterhäuser, Executive Director Lukas Crepaz and I all agree that Plácido Domingo should perform as planned."
CBS, Viacom to reunite as media giants bulk up for streaming
NFL teaming with Jay-Z on entertainment and social activism
Browse more in Lifestyle


Goin' on a Frog Hunt!
We've been having a fantastic time observing our baby chicks, but we have also started to talk about frogs. The children are very excited to observe frogs, and to see them hatch from eggs too. We have been hearing the frogs at night, but have yet to find any out and about.
Yesterday, before it started to rain too hard, we took a walk up the street to see if we could find any frogs in the pond near the cemetery. We had fun playing with our nets and trying to dance between the rain drops, but we didn't see any frogs or frog eggs.
When the rain started to pick up, we found out that trees make great umbrellas. We sat under the tree for awhile and watched the rain drops hit the pond. Then, when the rain let up, we used our "real umbrella" and walked back.
Today, we opted to take a walk along the bike path. Some of the children remembered seeing water near the tunnel and wanted to investigate.
We ran into a chipmunk "hanging" out near a tree.
We saw a pair of mallard ducks swimming in the water.
Even though we didn't find any frogs today, we sure had fun exploring! We made a list of other places where we might be able to find some frogs. There are a lots of little ponds, puddles, and streams near by; I know we will have better luck one of these days!
It sure is fun to get out and investigate though! Especially when it involves tossing rocks in the water, trying to scoop things out with our nets, counting critters, and making echos in the tunnel!
oh my gosh- that sounds like fun! I wish we had as many places to explore near our school as you do!
@Pam - We are very fortunate. We live one block from the main downtown street, but our city is in the Upper Peninsula of Michigan! (That means we have more trees than people!) Being right in town allows us to walk to so many great places!
@Stephanie- Thanks for the link up :). It looks like your *littles* really had a lot of fun with those caterpillars!
Amy, This looks like such a beautiful place to live and walk. Looks like a great time!
You and your children sure have fun!
What great exploring! Love that you took them out in the rainy weather. My girls love using their nets in the creek and pond near us but we haven't caught any frogs either. Those little stinkers are so loud in the evenings but we can never see them! I think it is probably still too cool during the day around here.
You know I'm going to love this one Amy. Getting out and about and exploring nature = what could be better?


I'm breathing a contented sigh of relief this weekend, as we have finally put a floor down in our family room. No more designer, easy clean green plastic!
The room is 9 metres long so we asked Project Managers sister around to see if we could manage the job with three people. Incase you've never laid laminate flooring, it's an easy enough job as long as you have enough people equally spaced along the length of the room to slot it all in at once. PM brought enough packs of floor in from the garage to aclimatise and give us sufficient planks to have a good go. We were pretty much of the opinion that it would need four people to manage the 9 metre length.
Unbelievably, four hours later, we had laid the whole floor including shifting furniture around with no major dramas!
I knew it would make a huge difference to the space but I don't think I realised how much - you do get used to living in a renovation site and the green plastic had become totally acceptable to us. I became instantly house-proud and was mopping away the last of the dust marks at quarter to midnight!
And then, just to show it off at its best, the sun has been streaming in the windows all of today - lovely spot for my cuppa and book.


STAMFORD, Conn., August 30, 2011 – The worldwide social customer relationship management (CRM) market is forecast to reach over $1 billion in revenue by year-end 2012, up from approximately $625 million in 2010, according to Gartner, Inc. Worldwide social CRM is projected to total $820 million in 2011.
However, analysts said spending by buyers on social software for marketing, customer service and sales increased by 40 percent in 2010, but social CRM remained less than 5 percent of the total CRM application market. More than 100 vendors have social CRM offerings. Most are not profitable and generate annual revenue of less than $1 million.
Gartner analysts said that R&D in social CRM will center on five areas: (1) deeper integration with traditional CRM processes; (2) tools to measure ROI; (3) deeper integration with social network services – particularly Facebook and Twitter; (4) increased use of analytics; and (5) new use cases for social CRM.
Additional information is available in the Gartner report "Magic Quadrant for Social CRM" at http://www.gartner.com/resId=1751130.
Gartner analysts will examine the key issues around social CRM at Gartner Symposium/ITxpo 2011 this year.
Gartner Symposium/ITxpo 2011 is the world's most important gathering of CIOs and senior IT executives. This event delivers independent and objective content with the authority and weight of the world's leading IT research and advisory organization, and provides access to the latest solutions from key technology providers. Gartner's annual Symposium/ITxpo events are key components of attendees' annual planning efforts. IT executives rely on Gartner Symposium/ITxpo to gain insight into how their organizations can use IT to address business challenges and improve operational efficiency.


text:
<?php

/**
 * TOP API: taobao.fenxiao.discounts.get request
 *
 * @author auto create
 * @since  1.0, 2013-09-13 16:51:03
 */
class Taobao_Request_FenxiaoDiscountsGetRequest {
	/**
	 * 折扣ID
	 **/
	private $discountId;

	/**
	 * 指定查询额外的信息,可选值:DETAIL(查询折扣详情),多个可选值用逗号分割。(只允许指定折扣ID情况下使用)
	 **/
	private $extFields;

	private $apiParas = array();

	public function setDiscountId($discountId) {
		$this->discountId = $discountId;
		$this->apiParas["discount_id"] = $discountId;
	}

	public function getDiscountId() {
		return $this->discountId;
	}

	public function setExtFields($extFields) {
		$this->extFields = $extFields;
		$this->apiParas["ext_fields"] = $extFields;
	}

	public function getExtFields() {
		return $this->extFields;
	}

	public function getApiMethodName() {
		return "taobao.fenxiao.discounts.get";
	}

	public function getApiParas() {
		return $this->apiParas;
	}

	public function check() {

	}

	public function putOtherTextParam($key, $value) {
		$this->apiParas[$key] = $value;
		$this->$key = $value;
	}
}


In honor of Indie Week, hosted by A Life Among the Pages, here's cover love for an indie cover that is so beautiful, I would never have known it wasn't from one of the Big Six. It's grungy in a deep and high-res kind of way, not an I-got-brushes-from-DeviantART way. The text is simple and clear. The color scheme is beyond gorgeous. It's like a painting. I'd hang the middle bit in my house. No joke. If someone knows how I can get a print of it, comment me.
And for an indie cover is an indie cover! One of my favorite indie bands, Company of Thieves, covers one of my favorite non-indie bands. Genevieve's voice is gorgeous beyond belief.
I had this book on my to read list for over a month, not completely sure I wanted to buy it. I am so glad I gave it a chance. This book was amazing. I couldn't put it down and I'm kicking myself for waiting so long to read it. Penryn is an amazingly strong character and the story flows so well that you can't wait to see what happens next. Buying the next book now. Fingers crossed that it's just as great.