Around The Rinks

Print Share

3

Long Term Contracts – Part II

Earlier this week, I posted a comical adaptation of what the NHL would become if the next Collective Bargaining Agreement (CBA) did not address long-term contracts.   Left unchanged, teams would start offering 30, 50, and even 80-year contracts just to circumvent the salary cap.  If an owner wanted to buy the Stanley Cup, they certainly could under the current CBA. 

For a review of that article: Long Term Contracts: Part I

Long-term contracts have recently allowed teams to manipulate the salary cap by signing players to 10 – 15 year deals that expire when the player is in his 40′s.  However, these contracts are front loaded so that the player gets the majority of the money upfront and only around a $1 million or so the last few years of the contract.  By spreading the contracts out over additional years, teams are lowering their per year cap hit for that player.  By retiring early, a player only forfeits a small percentage of the overall contract, while the team is off the hook for not only the remaining years of salary, but more importantly the remainder of the salary cap hit. It is the salary cap associated with the last few years of a contract that represents the issue.

CBA Background

All Player Salary and Bonuses earned in a League Year by a Player who is in the second or later year of a multi-year SPC which was signed when the Player was age 35 or older (as of June 30 prior to the League Year in which the SPC is to be effective), regardless of whether, or where, the Player is playing, except to the extent the Player is playing under his SPC in the minor leagues, in which case only the Player Salary and Bonuses in excess of $100,000 shall count towards the calculation of Actual Club Salary

The above clause in the CBA ensures that teams front loading a player’s multi-year contract over several years are also accountable for the salary cap at the end of the contract.  However, it only applies to players who are over 35 when the contract begins.  For all other contracts, if a player retires, the remaining salary and cap hit are voided.   Unfortunately, General Managers have figured out that signing a player younger than 35 to a front-loaded long term contract legally achieves the same advantage. 

I should clarify that I have no issue with long-term contracts in principal.  If a team wishes to extend a 15-year contract to a player, by all means, go right ahead.  As you will see below, though, the Swiss cheese sized loophole almost begs a general manager to circumvent the salary cap.

The Long Term Issue in Detail

For the purpose of explaining in detail the issue with long term contracts, I am using Roberto Luongo’s contract as an example.  He is currently 30 years old. He is under contract until he is 43 and has a cap hit of $5.3 million annually until the 2021/2022 season.  By the end of the 2017/2018 season, he will have received $57 million of the $64 million due in his contract.  However, he could easily walk away from the last $7 million as he already received 90% of the contract.  What incentive would Luongo have playing four more years at an average salary ($1.75 million)?  By retiring early, Vancouver would also benefit by not having to pay the remaining $7 million or the remaining $21.4 million in cap dollars.  Thus, for the first 8 years of the contract, Vancouver would have circumvented the cap by a total of $14.3 million. 

AGE SEASON SALARY CAP HIT TRUE CAP HIT
32 2010-2011 $10,000,000 $5,333,333 $7,125,000
33 2011-2012 $6,716,000 $5,333,333 $7,125,000
34 2012-2013 $6,714,000 $5,333,333 $7,125,000
35 2013-2014 $6,714,000 $5,333,333 $7,125,000
36 2014-2015 $6,714,000 $5,333,333 $7,125,000
37 2015-2016 $6,714,000 $5,333,333 $7,125,000
38 2016-2017 $6,714,000 $5,333,333 $7,125,000
39 2017-2018 $6,714,000 $5,333,333 $7,125,000
40 2018-2019 $3,382,000 $5,333,333  
41 2019-2020 $1,618,000 $5,333,333  
42 2020-2021 $1,000,000 $5,333,333  
43 2021-2022 $1,000,000 $5,333,333  

As you can see, the true cap hit for Luongo during the 8 years he does play is $7,125,000 (Average salary for first 8 years)  This is $1,791,667 more than the cap hit that Vancouver is charged.  If Luongo would somehow play until he is 43, it would even itself out as Vancouver would then have a higher cap it the last 4 years of the contract then Luongo is actually being paid.  However, by retiring, Luongo gives up on the final $7 million and Vancouver is no longer on the hook for the remaining $21.3 million cap hit on his contract.  Of that $21.3 million, $14.3 million of it was the carryover from the prior years when the cap hit was lower than the actual salary paid to Luongo.  This benefit allows Vancouver to spend those cap dollars on other players now, without an expectation of having to recoup them down the road should Luongo retire.

The list below represents players signed to long-term contracts that expire after they are 35.  In each of these cases, the final years of the contract are for significantly less than the front loaded years.  Each team gains an advantage if the player retires with 2 to 4 years on their existing contract. 

Team Player Year Ending Yearly Cap Age at End
Boston Marc Savard 2016/2017 $4,007,143 39
Chicago Marian Hossa 2021/2022 $5,275,000 42
  Duncan Keith 2022/2023 $5,538,462 39
Detroit Henrik Zetterberg 2020/2021 $6,083,333 40
  Johan Franson 2019/2020 $3,954,545 40
Philadelphia Chris Pronger 2016/2017 $4,921,429 42
Tampa Bay Vinny Lecavalier 2019/2020 $7,727,273 40
  Mattias Ohland 2015/2016 $3,607,143 39
Vancouver Roberto Luongo 2021/2022 $5,333,333 43

You will notice that I highlighted Chris Pronger.  As he will be over 35 when the contract starts, he would fall into the 35+ clause that is in the CBA.  If he retires prior to the end of his contract, Philadelphia will still be on the hook for the $4.9 million salary cap each year until the end of his contract. Philadelphia does not necessarily agree that he falls into this 35+ category claiming they submitted the contract prior to Pronger turning 35. It will be interesting to see if Philadelphia challenges the salary cap down the road. 

LONG TERM CONTRACT SOLUTIONS

So how do we fix this?  I present three possible solutions.  In each of these solutions, the assumption uses Roberto Luongo’s contract.  Furthermore, the assumption is that Luongo will retire after the 2017/2018 season at age 39.  I also include the impact on the contract should Vancouver choose to buyout Luongo. 

I am sure opponents would suggest that these options present a major issue if a player suffers a career ending injury early in his contract.  I would argue that maybe a team should not have offered the player a 15-year contract.  Think Rick Dipietro!  However, what critics fail to mention is that the NHL insurance policy covers players for the first seven years of a contract. Within the first seven years, if a player is injured, the insurance policy kicks in.   Any contract over seven years is the team’s responsibility, or they can purchase additional insurance on their own.  Owners rarely, though, purchase this additional insurance due to the inflated premiums.  I find it ironic that a team is willing to sign a player to a contract over seven years, but is unwilling to insure their investment past the league negotiated insurance limit.  Furthermore, Critics cannot argue that an injury would put the team in cap trouble as the CBA allows all a team to exceed the cap ceiling by the total amount of dollars that are on the Long Term Injured Reserve (LTIR). 

—————————————————————————————————

Option #1) Continue to allow salary fluctuations throughout the life of a contract, but include a ‘claw back’ clause if the player retires. That would continue to allow teams to circumvent the cap now, but would have severe repercussions down the road if the player retired prior to the end of the contract. 

In the case of Luongo, his salary and cap hit would remain the same as it currently is until he retires.  Once retired, Vancouver would still owe the accumulated salary cap not accounted for in the initial eight years.  In the event that Luongo’s performance dropped significantly and Vancouver wanted to buy him out, the same buyout rules would apply (2/3rds of the remaining contract).  However, they would still be on the hook for the salary cap dollars not accounted for ($14.3 million) plus the cap dollars involved in the buyout ($4.62 million).  The $18.9 million would then be spread out over the remaining four years of the contract. Regardless of whether the player retires or is bought out, the cap dollars would equal the salary paid. 

SEASON SALARY Cap Hit SALARY w/ Buyout Cap Hit w/ Buyout
2010-2011 $10,000,000 $5,333,333 $10,000,000 $5,333,333
2011-2012 $6,716,000 $5,333,333 $6,716,000 $5,333,333
2012-2013 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2013-2014 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2014-2015 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2015-2016 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2016-2017 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2017-2018 $6,714,000 $5,333,333 $6,714,000 $5,333,333
2018-2019   $3,583,334 $4,620,000 $4,738,334
2019-2020   $3,583,334   $4,738,334
2020-2021   $3,583,334   $4,738,334
2021-2022   $3,583,334   $4,738,334
Total $57,000,000 $57,000,000 $61,620,000 $61,620,000

Option #2)  Distribute each contract equally, thus eliminating the fluctuating salaries.  This would eliminate all opportunities for creative contracts.  The implications of this are far reaching.  For starters, players would not have the benefit of front loaded contracts and thus would have incentives to play out their entire contract.  Teams would be leery of long-term deals, as they would have hefty salaries on the books if a player were injured or had a drop in performance.  On the other hand, teams would not have to worry about the worst-case scenario of having a cap hit for a player that is significantly more then what the player is worth in salary.  Finally, if a player retired early, the cap and salary figures would equal, and there would be no impact on future years. If Vancouver chose to buyout the contract, the team would only be on the hook for the cap hit associated with the buyout which could be spread out over the remainder of the contract. 

In the case of Luongo, if he retired at the end of the 2017/2018 season, his salary and cap hit would equal.  The team would not be on the hook for any further cap hit. In the event Luongo’s performance drops and the team wishes to execute a buyout, they would be on the hook for 2/3rd of his remaining salary($14,079,000), but the cap hit could be spread out over the remaining four years of the contract.  In each case, the salary earned equals the cap hit applied.

SEASON SALARY Cap Hit SALARY w/ Buyout Cap Hit w/ Buyout
2010-2011 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2011-2012 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2012-2013 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2013-2014 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2014-2015 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2015-2016 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2016-2017 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2017-2018 $5,333,333 $5,333,333 $5,333,333 $5,333,333
2018-2019     $14,079,999 $3,520,000
2019-2020       $3,520,000
2020-2021       $3,520,000
2021-2022       $3,520,000
 Totals $42,666,664 $42,666,664 $56,746,663 $56,746,663

Option #3) Allow for fluctuating salaries, but have the salary cap equal the salary.  If a team wishes to pay a player $10 million in year one, their cap hit would be $10 million.  Over the course of the contract, the salary and cap hit could go up or down depending on how the contract was structured.   This is similar to option #1 in that it allows for fluctuating salaries, but ties the cap to the salary for the given year like option #2.  A buyout would remain consistent with the 2/3rd policy resulting in $4,620,000 and could be spread out over the four remaining years of the contract.   Again, in all cases, the amount paid would equal the cap dollars charged.

SEASON SALARY Cap Hit SALARY w/ Buyout Cap Hit w/ Buyout
2010-2011 $10,000,000 $10,000,000 $10,000,000 $10,000,000
2011-2012 $6,716,000 $6,716,000 $6,716,000 $6,716,000
2012-2013 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2013-2014 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2014-2015 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2015-2016 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2016-2017 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2017-2018 $6,714,000 $6,714,000 $6,714,000 $6,714,000
2018-2019     $4,620,000 $1,155,000
2019-2020       $1,155,000
2020-2021       $1,155,000
2021-2022       $1,155,000
 Totals $57,000,000 $57,000,000 $61,620,000 $61,620,000

 Conclusion 

There is still one outstanding question that remains to be answered.  Do the players or owners want to close this loophole?  The easy answer is NO with regard to the players.  The loophole allows player to get more money up front with few years of service.  And it is safe to say that large market teams that spend near the cap limit don’t want this changed.  They are the biggest benifactors.  But what about the small market teams?  Teams like Nashville, Columbus, Atlanta, and Phoenix?  These teams worry less about the cap ceiling, and more about the cap floor.  The challenge for these teams is not the long term contracts, but the salary paid at the start of the contracts.  Paying  9, 10, 11 million up front to a player would represent almost $20% of their overall salary.  Furthermore, they need the cap hit to ensure they reach the minimum required by the CBA.  A perfect example would be Nashville and Steve Sullivan.  Due to a back injury, he missed over two years.  But Nashville did not put him on the LTIR because they needed his cap dollars just to reach the floor.  Thus, the future of the long term contracts will rest in the hands of the owners.  Will the small market owners have enough influence to close the loophole, or will the players and large market teams have their way and keep the loophole open?  As the CBA expires after the 2010/2011 season, we will know the answer long before we have a player opt out of his contract for retirement.

About the Author Subscribe to author's RSS feed
Written by


Tags , , , , , , , ,

3 Comments

In response to “Long Term Contracts – Part II”


  1. Corey Krakower Apr 4 20101:25 pm

    Reply

    What do you think about an option where the current rules for contracts still apply, but a clause is added that states:

    the maximum difference between the highest salary and the lowest salary in the contract is limited to 50%

    Using Luongo; his highest yearly number is $10 million, so his lowest possible yearly salary is $5 million, instead of having 3 years at the end each of which is close to $1 million.

    1. Chris Rydburg Apr 4 20102:31 pm

      Reply

      That could work, but I am more annoyed with Hossa who is basically going to die a blackhawk due to his ridiculous contract. I do like that idea though, it would solve a few of the problems with the CBA.

    2. Dave Gutzman Apr 5 20107:58 am

      Reply

      I think it is an interesting idea. They have something similar i believe in the year over year calculation of salary, but not highest to lowest. I think the challenge to this, as well as any of my 3 suggestions, is who would support it? Again, I am pretty sure the players wouldn’t support changing the current system, unless the owners were willing to remove the salary cap, or increase the revenue percentage.

Add Your Comment

PHVsPjxsaT48c3Ryb25nPndvb3dvb19ib3R0b21fYWRzZW5zZTE8L3N0cm9uZz4gLSBhZHZlcnRpc2VtZW50PGJyIC8+DQo8aW1nIHNyYz1cImh0dHA6Ly9wcm9zcG9ydHNibG9nZ2luZy5jb20vYWRzL3BzYi1sZWFkZXJib2FyZC03Mjh4OTAuZ2lmXCIgd2lkdGg9XCI3MjhcIiBoZWlnaHQ9XCI5MFwiIGJvcmRlcj1cIjBcIiBhbHQ9XCJQcm9TcG9ydHNCbG9nZ2luZy5jb21cIiB0aXRsZT1cIlByb1Nwb3J0c0Jsb2dnaW5nLmNvbVwiPjwvbGk+PGxpPjxzdHJvbmc+d29vX2Fkc19yb3RhdGU8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX2Fkc2Vuc2U8L3N0cm9uZz4gLSBibGFoIGJsYWggYmxhaDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzI1MF9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTI1MHgyNTAuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2NvbnRlbnRfYWRzZW5zZTwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwhLS0NCmdvb2dsZV9hZF9jbGllbnQgPSBcInB1Yi03ODkxMjI2NzY1MDc1NjQ3XCI7DQovKiA0Njh4NjAgY2VudGVyIGNvbnRlbnQgKi8NCmdvb2dsZV9hZF9zbG90ID0gXCIxMTkzNzQ4NDcyXCI7DQpnb29nbGVfYWRfd2lkdGggPSA0Njg7DQpnb29nbGVfYWRfaGVpZ2h0ID0gNjA7DQovLy0tPg0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIg0Kc3JjPVwiaHR0cDovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2Fkcy5qc1wiPg0KPC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF9kaXNhYmxlPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5wcm9zcG9ydHNibG9nZ2luZy5jb20vYWRzL3BzYi00Njh4NjAucG5nPC9saT48bGk+PHN0cm9uZz53b29fYWRfY29udGVudF91cmw8L3N0cm9uZz4gLSBodHRwOi8vd3d3LnByb3Nwb3J0c2Jsb2dnaW5nLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3LnByb3Nwb3J0c2Jsb2dnaW5nLmNvbS9hZHMvc3BvbnNvcnMvaG90aGVhZHRlZXNfMTI1X2Jhbm5lci5qcGc8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5wcm9zcG9ydHNibG9nZ2luZy5jb20vYWRzL3BzYi0xMjV4MTI1LTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cucHJvc3BvcnRzYmxvZ2dpbmcuY29tL2Fkcy9wc2ItMTI1eDEyNS0zLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vcHJvc3BvcnRzYmxvZ2dpbmcuY29tL2Fkcy9zcG9uc29ycy9sZWVzcG9ydHNjYXBwaW5nLTEyNXgxMjUucG5nPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cucHJvc3BvcnRzYmxvZ2dpbmcuY29tL2Fkcy9wc2ItMTI1eDEyNS0xLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3LnByb3Nwb3J0c2Jsb2dnaW5nLmNvbS9hZHMvcHNiLTEyNXgxMjUtMi5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfYWRzZW5zZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9kaXNhYmxlPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfaW1hZ2U8L3N0cm9uZz4gLSBodHRwOi8vcHJvc3BvcnRzYmxvZ2dpbmcuY29tL2Fkcy9sbWNpLWJhbm5lci0yNTB4MTMwLnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF91cmw8L3N0cm9uZz4gLSBodHRwOi8vd3d3LmxpYW1zY2kuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzE8L3N0cm9uZz4gLSBodHRwOi8vd3d3LmhvdGhlYWR0ZWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy5wcm9zcG9ydHNibG9nZ2luZy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMzwvc3Ryb25nPiAtIGh0dHA6Ly93d3cucHJvc3BvcnRzYmxvZ2dpbmcuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vbGVlc3BvcnRzY2FwcGluZy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfNTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cucHJvc3BvcnRzYmxvZ2dpbmcuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3LnByb3Nwb3J0c2Jsb2dnaW5nLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FsdF9zdHlsZXNoZWV0PC9zdHJvbmc+IC0gZGVmYXVsdC5jc3M8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYmxhbmtfYWRzZW5zZTE8L3N0cm9uZz4gLSA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OjE3cHg7XCI+PGlmcmFtZSBpZD1cInliX3dpZGdldF8xNDg2OFwiIGZyYW1lQm9yZGVyPVwiMFwiIHNjcm9sbGluZz1ubyBzdHlsZT1cIndpZHRoOiAzMDBweDsgaGVpZ2h0OiA1MDRweDsgYm9yZGVyOiAwcHg7XCIgc3JjPVwiaHR0cDovL3d3dy55YXJkYmFya2VyLmNvbS93aWRnZXQveWJuLzE0ODY4XCI+PC9pZnJhbWU+PC9kaXY+PC9saT48bGk+PHN0cm9uZz53b29fYm90dG9tX2Fkc2Vuc2UxPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY2F0X2V4PC9zdHJvbmc+IC0gMSwxMCwyNjc3LDMxOTYsNTU5NzwvbGk+PGxpPjxzdHJvbmc+d29vX2NsZWFyX2Fkc2Vuc2UxPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY2xlYXJfYWRzZW5zZTFfdGl0bGU8L3N0cm9uZz4gLSBTUE9OU09SUzwvbGk+PGxpPjxzdHJvbmc+d29vX2NsZWFyX2Fkc2Vuc2UyXzE8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jbGVhcl9hZHNlbnNlMl8yPC9zdHJvbmc+IC0gPHAgYWxpZ249XCJjZW50ZXJcIj4NCjxhIGhyZWY9XCJodHRwOi8vbGVlc3BvcnRzY2FwcGluZy5jb21cIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cImh0dHA6Ly9wcm9zcG9ydHNibG9nZ2luZy5jb20vYWRzL3Nwb25zb3JzL2xlZXNwb3J0c2NhcHBpbmctMTI1eDEyNS5wbmdcIiB3aWR0aD1cIjEyNVwiIGhlaWdodD1cIjEyNVwiIGFsdD1cIkxlZSBTcG9ydHMgQ2FwcGluZ1wiIGJvcmRlcj1cIjBcIj48L2E+DQo8L3A+PC9saT48bGk+PHN0cm9uZz53b29fY2xlYXJfYWRzZW5zZTJfdGl0bGU8L3N0cm9uZz4gLSBTUE9OU09SUzwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbW1lbnRfcG9zdHM8L3N0cm9uZz4gLSA1PC9saT48bGk+PHN0cm9uZz53b29fY29udGVudDwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9hcmNoaXZlczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9mZWF0PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2V4Y2x1ZGVfY2F0c19mcm9tX3VybDwvc3Ryb25nPiAtIG1vcmU8L2xpPjxsaT48c3Ryb25nPndvb19mYmludGVydmFsPC9zdHJvbmc+IC0gNTAwMDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlYXR1cmVkX2NhdF9pZDwvc3Ryb25nPiAtIDE1MTI2PC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfcG9zdHM8L3N0cm9uZz4gLSA1PC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl9pZDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KdmFyIGdhSnNIb3N0ID0gKChcImh0dHBzOlwiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/IFwiaHR0cHM6Ly9zc2wuXCIgOiBcImh0dHA6Ly93d3cuXCIpOw0KZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoXCIlM0NzY3JpcHQgc3JjPVwnXCIgKyBnYUpzSG9zdCArIFwiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanNcJyB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCclM0UlM0Mvc2NyaXB0JTNFXCIpKTsNCjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9XCJodHRwOi8vbmV0d29yay55YXJkYmFya2VyLmNvbS9uZXR3b3JrL3libl9waXhlbC83OTYxXCIgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwvc2NyaXB0PiA8bm9zY3JpcHQ+PC9ub3NjcmlwdD4NCjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KdHJ5IHsNCnZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRyYWNrZXIoXCJVQS0yNjcxNjEyLTNcIik7DQpwYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOw0KfSBjYXRjaChlcnIpIHt9PC9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fZ3JheV9hZHNlbnNlPC9zdHJvbmc+IC0gbG9yZW0gaXBzdW0uLi48L2xpPjxsaT48c3Ryb25nPndvb19ncmF5X2Fkc2Vuc2UxPC9zdHJvbmc+IC0gPHNwYW4gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6NDBweDtcIj48YSBocmVmPVwiaHR0cDovL3lvdXJiZXN0cGljay5jb21cIiB0YXJnZXQ9XCJfYmxhbmtcIj48aW1nIHNyYz1cImh0dHA6Ly93d3cucHJvc3BvcnRzYmxvZ2dpbmcuY29tL2Fkcy9zcG9uc29ycy9iYW5uZXIteW91cmJlc3RwaWNrLTIyMHgxMjUuanBnXCIgd2lkdGg9XCIyMjBcIiBoZWlnaHQ9XCIxMjVcIiBib3JkZXI9XCIwXCI+PC9hPjwvc3Bhbj48L2xpPjxsaT48c3Ryb25nPndvb19ncmF5X2Fkc2Vuc2UyPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9hcmM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGluazwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2xpbmtfZGVzYzwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGlua190ZXh0PC9zdHJvbmc+IC0gSG9tZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gMzA8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX3RodW1iX3dpZHRoPC9zdHJvbmc+IC0gMzA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9oZWlnaHQ8L3N0cm9uZz4gLSAyNTA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9zaW5nbGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gMjgwPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX21hbnVhbDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cub252aS5jb20vPC9saT48bGk+PHN0cm9uZz53b29fcG9wdWxhcl9wb3N0czwvc3Ryb25nPiAtIDU8L2xpPjxsaT48c3Ryb25nPndvb19yZXNpemU8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2hvcnRuYW1lPC9zdHJvbmc+IC0gd29vPC9saT48bGk+PHN0cm9uZz53b29fc2luZ2xlX2hlaWdodDwvc3Ryb25nPiAtIDI1MDwvbGk+PGxpPjxzdHJvbmc+d29vX3NpbmdsZV93aWR0aDwvc3Ryb25nPiAtIDI1MDwvbGk+PGxpPjxzdHJvbmc+d29vX3RhYnM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIFBTQjwvbGk+PGxpPjxzdHJvbmc+d29vX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDg4PC9saT48bGk+PHN0cm9uZz53b29fdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSA4ODwvbGk+PGxpPjxzdHJvbmc+d29vX3R3aXR0ZXI8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb192aWRlb19jYXRlZ29yeTwvc3Ryb25nPiAtIFNlbGVjdCBhIGNhdGVnb3J5OjwvbGk+PGxpPjxzdHJvbmc+d29vX3doaXRlX2Fkc2Vuc2U8L3N0cm9uZz4gLSBsb3JlbSBpcHN1bSAyLi4uPC9saT48bGk+PHN0cm9uZz53b29fd2hpdGVfYWRzZW5zZTE8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb193aGl0ZV9hZHNlbnNlMjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3doaXRlX2Fkc2Vuc2UzPC9zdHJvbmc+IC0gPG9iamVjdCBpZD1cInN3ZmNsaXBQODgxNzJcIiB3aWR0aD1cIjMwMVwiIGhlaWdodD1cIjM3MlwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIGRhdGE9XCJodHRwOi8vcGxheWVyLmdyYWJuZXR3b3Jrcy5jb20vc3dmL2N1YmUuc3dmP2E9UDg4MTcyJm09MTYxMjYwNlwiPjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1cImh0dHA6Ly9wbGF5ZXIuZ3JhYm5ldHdvcmtzLmNvbS9zd2YvY3ViZS5zd2Y/YT1QODgxNzImbT0xNjEyNjA2XCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dTY3JpcHRBY2Nlc3NcIiB2YWx1ZT1cImFsd2F5c1wiLz48cGFyYW0gbmFtZT1cImJhc2VcIiB2YWx1ZT1cIi5cIiAvPjxwYXJhbSBuYW1lPVwid21vZGVcIiB2YWx1ZT1cInRyYW5zcGFyZW50XCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dmdWxsc2NyZWVuXCIgdmFsdWU9XCJ0cnVlXCIvPjwvb2JqZWN0PjwvbGk+PGxpPjxzdHJvbmc+d29vX3doaXRlX2Fkc2Vuc2U0PC9zdHJvbmc+IC0gPG9iamVjdCBpZD1cInN3ZmNsaXBQODgxNzJcIiB3aWR0aD1cIjMwMVwiIGhlaWdodD1cIjUwMVwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIGRhdGE9XCJodHRwOi8vcGxheWVyLmdyYWJuZXR3b3Jrcy5jb20vc3dmL2N1YmUuc3dmP2E9UDg4MTcyJm09MTUxMTYyMVwiPjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1cImh0dHA6Ly9wbGF5ZXIuZ3JhYm5ldHdvcmtzLmNvbS9zd2YvY3ViZS5zd2Y/YT1QODgxNzImbT0xNTExNjIxXCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dTY3JpcHRBY2Nlc3NcIiB2YWx1ZT1cImFsd2F5c1wiLz48cGFyYW0gbmFtZT1cImJhc2VcIiB2YWx1ZT1cIi5cIiAvPjxwYXJhbSBuYW1lPVwid21vZGVcIiB2YWx1ZT1cInRyYW5zcGFyZW50XCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dmdWxsc2NyZWVuXCIgdmFsdWU9XCJ0cnVlXCIvPjwvb2JqZWN0PjwvbGk+PGxpPjxzdHJvbmc+d29vX3doaXRlX2Fkc2Vuc2U1PC9zdHJvbmc+IC0gPG9iamVjdCBpZD1cInN3ZmNsaXBQODgxNzJcIiB3aWR0aD1cIjMwMVwiIGhlaWdodD1cIjUwMVwiIHR5cGU9XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiIGRhdGE9XCJodHRwOi8vcGxheWVyLmdyYWJuZXR3b3Jrcy5jb20vc3dmL2N1YmUuc3dmP2E9UDg4MTcyJm09MTUxMTYyMVwiPjxwYXJhbSBuYW1lPVwibW92aWVcIiB2YWx1ZT1cImh0dHA6Ly9wbGF5ZXIuZ3JhYm5ldHdvcmtzLmNvbS9zd2YvY3ViZS5zd2Y/YT1QODgxNzImbT0xNTExNjIxXCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dTY3JpcHRBY2Nlc3NcIiB2YWx1ZT1cImFsd2F5c1wiLz48cGFyYW0gbmFtZT1cImJhc2VcIiB2YWx1ZT1cIi5cIiAvPjxwYXJhbSBuYW1lPVwid21vZGVcIiB2YWx1ZT1cInRyYW5zcGFyZW50XCIvPjxwYXJhbSBuYW1lPVwiYWxsb3dmdWxsc2NyZWVuXCIgdmFsdWU9XCJ0cnVlXCIvPjwvb2JqZWN0PjwvbGk+PC91bD4=