시간 제한메모리 제한제출정답맞힌 사람정답 비율
0.5 초 512 MB35222062.500%

문제

Albert와 Bob은 보드 게임을 즐겨하는데, 주로 다전제를 하여 승자를 가린다.

"$X$선승 다전제"란 최대 $2X-1$번의 게임을 통해 $X$번을 먼저 이긴 사람이 승자가 되는 게임 방식이다. 두 어린이가 하는 보드 게임에 비기는 경우는 없다고 하자. 예를 들어 $X = 3$인 경우 아래와 같은 다양한 결과가 나올 수 있다 (편의상 A는 Albert가 이긴 게임을, B는 Bob이 이긴 게임을 나타낸다):

  • AAA: 이 경우 Albert가 3승으로 다전제를 승리한다. 4, 5게임은 불필요하므로 진행하지 않는다.
  • BAAA, ABAA, AABA: 이 경우 Albert가 3승으로 다전제를 승리한다. 5게임은 불필요하므로 진행하지 않는다.
  • BBAAA, BAABA, BABAA, ABBAA, ABABA, AABBA: 이 경우 Albert가 3승으로 다전제를 승리한다.
  • 위의 10가지 결과 이외에도 A와 B를 뒤집으면 Bob이 다전제를 승리하는 10가지 결과를 얻을 수 있다.

두 사람이 다전제를 진행한 후, 당신에게 다음과 같은 아리송한 말을 남겼다: "$M$선승 다전제의 최종 승자는 $M$게임을 먼저 승리한 Bob이지만, 만약 $N$선승 다전제를 했다면 Albert가 이겼을 것이다. 즉 Albert가 먼저 $N$승을 했지만 Bob이 $M$승을 먼저 하여 최종 승자가 되었다. 물론 $N \lt M$ 이다."

이 말을 듣고 당신은 다전제의 결과가 어땠을지, 그리고 몇 가지나 다른 결과가 가능한지 궁금해졌다.

예를 들어 $M = 2$, $N = 1$인 경우, "ABB"로 1게임을 Albert가 이기고 나머지 두 게임을 Bob이 이기는 경우가 유일하다.

다른 예로 $M = 3$, $N = 2$인 경우 아래와 같은 세 가지 결과가 가능하다:

  • AABBB: 만약 2선승을 하는 다전제라면 Albert가 2게임째에서 다전제를 승리했겠지만, 3선승을 하는 다전제라 Bob이 최종 승자가 된다.
  • ABABB: 만약 2선승을 하는 다전제라면 Albert가 3게임째에서 다전제를 승리했겠지만, 3선승을 하는 다전제라 Bob이 최종 승자가 된다.
  • BAABB: 만약 2선승을 하는 다전제라면 Albert가 3게임째에서 다전제를 승리했겠지만, 3선승을 하는 다전제라 Bob이 최종 승자가 된다.

입력으로 $N$, $M$ 이 주어졌을 때, Bob이 $M$승을 하여 최종 승자가 되지만 Albert가 먼저 $N$승을 하게되는 다전제의 결과가 몇 가지나 존재하는지 구해보자. 단, 이 수가 매우 클 수 있으므로 $10^9+7$로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 수 $T$가 주어진다.

각 테스트 케이스의 입력은 한 줄에 $N$, $M$ 두 정수가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

제한

  • $1 \le T \le 10$
  • $1 \le N \lt M \le 10^5$

예제 입력 1

5
1 2
2 3
1 3
2 4
500 1000

예제 출력 1

1
3
4
13
886458341

예제 1: 본문에서 다루었다.

예제 2: 본문에서 다루었다.

예제 3: 다음과 같은 4가지 가능성이 있다: "ABBB", "AABBB" "ABABB", "ABBAB"

예제 4: 추가 설명 없음

예제 5: 답이 매우 커질 수 있으므로 $10^9+7$로 나눈 나머지를 출력해야한다.

W3sicHJvYmxlbV9pZCI6IjI3MzcxIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHViMmU0XHVjODA0XHVjODFjIFx1YzJiOVx1Yzc5MFx1YjI5ND8iLCJkZXNjcmlwdGlvbiI6IjxwPkFsYmVydFx1YzY0MCBCb2JcdWM3NDAgXHViY2Y0XHViNGRjIFx1YWM4Y1x1Yzc4NFx1Yzc0NCBcdWM5OTBcdWFjYThcdWQ1NThcdWIyOTRcdWIzNzAsIFx1YzhmY1x1Yjg1YyBcdWIyZTRcdWM4MDRcdWM4MWNcdWI5N2MgXHVkNTU4XHVjNWVjIFx1YzJiOVx1Yzc5MFx1Yjk3YyBcdWFjMDBcdWI5YjBcdWIyZTQuPFwvcD5cclxuXHJcbjxwPiZxdW90OyRYJFx1YzEyMFx1YzJiOSBcdWIyZTRcdWM4MDRcdWM4MWMmcXVvdDtcdWI3ODAgXHVjZDVjXHViMzAwICQyWC0xJFx1YmM4OFx1Yzc1OCBcdWFjOGNcdWM3ODRcdWM3NDQgXHVkMWI1XHVkNTc0ICRYJFx1YmM4OFx1Yzc0NCBcdWJhM2NcdWM4MDAgXHVjNzc0XHVhZTM0IFx1YzBhY1x1Yjc4Y1x1Yzc3NCBcdWMyYjlcdWM3OTBcdWFjMDAgXHViNDE4XHViMjk0IFx1YWM4Y1x1Yzc4NCBcdWJjMjlcdWMyZGRcdWM3NzRcdWIyZTQuIFx1YjQ1MCBcdWM1YjRcdWI5YjBcdWM3NzRcdWFjMDAgXHVkNTU4XHViMjk0IFx1YmNmNFx1YjRkYyBcdWFjOGNcdWM3ODRcdWM1ZDAgXHViZTQ0XHVhZTMwXHViMjk0IFx1YWNiZFx1YzZiMFx1YjI5NCBcdWM1YzZcdWIyZTRcdWFjZTAgXHVkNTU4XHVjNzkwLiBcdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0ICRYID0gMyRcdWM3NzggXHVhY2JkXHVjNmIwIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgXHViMmU0XHVjNTkxXHVkNTVjIFx1YWNiMFx1YWNmY1x1YWMwMCBcdWIwOThcdWM2MmMgXHVjMjE4IFx1Yzc4OFx1YjJlNCAoXHVkM2I4XHVjNzU4XHVjMGMxIEFcdWIyOTQgQWxiZXJ0XHVhYzAwIFx1Yzc3NFx1YWUzNCBcdWFjOGNcdWM3ODRcdWM3NDQsIEJcdWIyOTQgQm9iXHVjNzc0IFx1Yzc3NFx1YWUzNCBcdWFjOGNcdWM3ODRcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0KTo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT48Y29kZT5BQUE8XC9jb2RlPjogXHVjNzc0IFx1YWNiZFx1YzZiMCBBbGJlcnRcdWFjMDAgM1x1YzJiOVx1YzczY1x1Yjg1YyBcdWIyZTRcdWM4MDRcdWM4MWNcdWI5N2MgXHVjMmI5XHViOWFjXHVkNTVjXHViMmU0LiA0LCA1XHVhYzhjXHVjNzg0XHVjNzQwIFx1YmQ4OFx1ZDU0NFx1YzY5NFx1ZDU1OFx1YmJjMFx1Yjg1YyBcdWM5YzRcdWQ1ODlcdWQ1NThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL2xpPlxyXG5cdDxsaT48Y29kZT5CQUFBPFwvY29kZT4sIDxjb2RlPkFCQUE8XC9jb2RlPiwgPGNvZGU+QUFCQTxcL2NvZGU+OiBcdWM3NzQgXHVhY2JkXHVjNmIwIEFsYmVydFx1YWMwMCAzXHVjMmI5XHVjNzNjXHViODVjIFx1YjJlNFx1YzgwNFx1YzgxY1x1Yjk3YyBcdWMyYjlcdWI5YWNcdWQ1NWNcdWIyZTQuIDVcdWFjOGNcdWM3ODRcdWM3NDAgXHViZDg4XHVkNTQ0XHVjNjk0XHVkNTU4XHViYmMwXHViODVjIFx1YzljNFx1ZDU4OVx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjxjb2RlPkJCQUFBPFwvY29kZT4sIDxjb2RlPkJBQUJBPFwvY29kZT4sIDxjb2RlPkJBQkFBPFwvY29kZT4sIDxjb2RlPkFCQkFBPFwvY29kZT4sIDxjb2RlPkFCQUJBPFwvY29kZT4sIDxjb2RlPkFBQkJBPFwvY29kZT46IFx1Yzc3NCBcdWFjYmRcdWM2YjAgQWxiZXJ0XHVhYzAwIDNcdWMyYjlcdWM3M2NcdWI4NWMgXHViMmU0XHVjODA0XHVjODFjXHViOTdjIFx1YzJiOVx1YjlhY1x1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVjNzA0XHVjNzU4IDEwXHVhYzAwXHVjOWMwIFx1YWNiMFx1YWNmYyBcdWM3NzRcdWM2NzhcdWM1ZDBcdWIzYzQgQVx1YzY0MCBCXHViOTdjIFx1YjRhNFx1YzlkMVx1YzczY1x1YmE3NCBCb2JcdWM3NzQgXHViMmU0XHVjODA0XHVjODFjXHViOTdjIFx1YzJiOVx1YjlhY1x1ZDU1OFx1YjI5NCAxMFx1YWMwMFx1YzljMCBcdWFjYjBcdWFjZmNcdWI5N2MgXHVjNWJiXHVjNzQ0IFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHViNDUwIFx1YzBhY1x1Yjc4Y1x1Yzc3NCBcdWIyZTRcdWM4MDRcdWM4MWNcdWI5N2MgXHVjOWM0XHVkNTg5XHVkNTVjIFx1ZDZjNCwgXHViMmY5XHVjMmUwXHVjNWQwXHVhYzhjIFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NDAgXHVjNTQ0XHViOWFjXHVjMWExXHVkNTVjIFx1YjlkMFx1Yzc0NCBcdWIwYThcdWFjYmNcdWIyZTQ6ICZxdW90OyRNJFx1YzEyMFx1YzJiOSBcdWIyZTRcdWM4MDRcdWM4MWNcdWM3NTggXHVjZDVjXHVjODg1IFx1YzJiOVx1Yzc5MFx1YjI5NCAkTSRcdWFjOGNcdWM3ODRcdWM3NDQgXHViYTNjXHVjODAwIFx1YzJiOVx1YjlhY1x1ZDU1YyBCb2JcdWM3NzRcdWM5YzBcdWI5Y2MsIFx1YjljY1x1YzU3ZCAkTiRcdWMxMjBcdWMyYjkgXHViMmU0XHVjODA0XHVjODFjXHViOTdjIFx1ZDU4OFx1YjJlNFx1YmE3NCBBbGJlcnRcdWFjMDAgXHVjNzc0XHVhY2JjXHVjNzQ0IFx1YWM4M1x1Yzc3NFx1YjJlNC4gXHVjOTg5IEFsYmVydFx1YWMwMCBcdWJhM2NcdWM4MDAgJE4kXHVjMmI5XHVjNzQ0IFx1ZDU4OFx1YzljMFx1YjljYyBCb2JcdWM3NzQgJE0kXHVjMmI5XHVjNzQ0IFx1YmEzY1x1YzgwMCBcdWQ1NThcdWM1ZWMgXHVjZDVjXHVjODg1IFx1YzJiOVx1Yzc5MFx1YWMwMCBcdWI0MThcdWM1YzhcdWIyZTQuIFx1YmIzY1x1Yjg2MCAkTiBcXGx0IE0kIFx1Yzc3NFx1YjJlNC4mcXVvdDs8XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1YjlkMFx1Yzc0NCBcdWI0ZTNcdWFjZTAgXHViMmY5XHVjMmUwXHVjNzQwIFx1YjJlNFx1YzgwNFx1YzgxY1x1Yzc1OCBcdWFjYjBcdWFjZmNcdWFjMDAgXHVjNWI0XHViNTYwXHVjNzQ0XHVjOWMwLCBcdWFkZjhcdWI5YWNcdWFjZTAgXHViYTg3IFx1YWMwMFx1YzljMFx1YjA5OCBcdWIyZTRcdWI5NzggXHVhY2IwXHVhY2ZjXHVhYzAwIFx1YWMwMFx1YjJhNVx1ZDU1Y1x1YzljMCBcdWFkODFcdWFlMDhcdWQ1NzRcdWM4NGNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQgJE0gPSAyJCwgJE4gPSAxJFx1Yzc3OCBcdWFjYmRcdWM2YjAsICZxdW90Ozxjb2RlPkFCQjxcL2NvZGU+JnF1b3Q7XHViODVjIDFcdWFjOGNcdWM3ODRcdWM3NDQgQWxiZXJ0XHVhYzAwIFx1Yzc3NFx1YWUzMFx1YWNlMCBcdWIwOThcdWJhMzhcdWM5YzAgXHViNDUwIFx1YWM4Y1x1Yzc4NFx1Yzc0NCBCb2JcdWM3NzQgXHVjNzc0XHVhZTMwXHViMjk0IFx1YWNiZFx1YzZiMFx1YWMwMCBcdWM3MjBcdWM3N2NcdWQ1NThcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yjk3OCBcdWM2MDhcdWI4NWMgJE0gPSAzJCwgJE4gPSAyJFx1Yzc3OCBcdWFjYmRcdWM2YjAgXHVjNTQ0XHViNzk4XHVjNjQwIFx1YWMxOVx1Yzc0MCBcdWMxMzggXHVhYzAwXHVjOWMwIFx1YWNiMFx1YWNmY1x1YWMwMCBcdWFjMDBcdWIyYTVcdWQ1NThcdWIyZTQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+PGNvZGU+QUFCQkI8XC9jb2RlPjogXHViOWNjXHVjNTdkIDJcdWMxMjBcdWMyYjlcdWM3NDQgXHVkNTU4XHViMjk0IFx1YjJlNFx1YzgwNFx1YzgxY1x1Yjc3Y1x1YmE3NCBBbGJlcnRcdWFjMDAgMlx1YWM4Y1x1Yzc4NFx1YzlmOFx1YzVkMFx1YzExYyBcdWIyZTRcdWM4MDRcdWM4MWNcdWI5N2MgXHVjMmI5XHViOWFjXHVkNTg4XHVhY2EwXHVjOWMwXHViOWNjLCAzXHVjMTIwXHVjMmI5XHVjNzQ0IFx1ZDU1OFx1YjI5NCBcdWIyZTRcdWM4MDRcdWM4MWNcdWI3N2MgQm9iXHVjNzc0IFx1Y2Q1Y1x1Yzg4NSBcdWMyYjlcdWM3OTBcdWFjMDAgXHViNDFjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT48Y29kZT5BQkFCQjxcL2NvZGU+OiBcdWI5Y2NcdWM1N2QgMlx1YzEyMFx1YzJiOVx1Yzc0NCBcdWQ1NThcdWIyOTQgXHViMmU0XHVjODA0XHVjODFjXHViNzdjXHViYTc0IEFsYmVydFx1YWMwMCAzXHVhYzhjXHVjNzg0XHVjOWY4XHVjNWQwXHVjMTFjIFx1YjJlNFx1YzgwNFx1YzgxY1x1Yjk3YyBcdWMyYjlcdWI5YWNcdWQ1ODhcdWFjYTBcdWM5YzBcdWI5Y2MsIDNcdWMxMjBcdWMyYjlcdWM3NDQgXHVkNTU4XHViMjk0IFx1YjJlNFx1YzgwNFx1YzgxY1x1Yjc3YyBCb2JcdWM3NzQgXHVjZDVjXHVjODg1IFx1YzJiOVx1Yzc5MFx1YWMwMCBcdWI0MWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPjxjb2RlPkJBQUJCPFwvY29kZT46IFx1YjljY1x1YzU3ZCAyXHVjMTIwXHVjMmI5XHVjNzQ0IFx1ZDU1OFx1YjI5NCBcdWIyZTRcdWM4MDRcdWM4MWNcdWI3N2NcdWJhNzQgQWxiZXJ0XHVhYzAwIDNcdWFjOGNcdWM3ODRcdWM5ZjhcdWM1ZDBcdWMxMWMgXHViMmU0XHVjODA0XHVjODFjXHViOTdjIFx1YzJiOVx1YjlhY1x1ZDU4OFx1YWNhMFx1YzljMFx1YjljYywgM1x1YzEyMFx1YzJiOVx1Yzc0NCBcdWQ1NThcdWIyOTQgXHViMmU0XHVjODA0XHVjODFjXHViNzdjIEJvYlx1Yzc3NCBcdWNkNWNcdWM4ODUgXHVjMmI5XHVjNzkwXHVhYzAwIFx1YjQxY1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgJE4kLCAkTSQgXHVjNzc0IFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIEJvYlx1Yzc3NCAkTSRcdWMyYjlcdWM3NDQgXHVkNTU4XHVjNWVjIFx1Y2Q1Y1x1Yzg4NSBcdWMyYjlcdWM3OTBcdWFjMDAgXHViNDE4XHVjOWMwXHViOWNjIEFsYmVydFx1YWMwMCBcdWJhM2NcdWM4MDAgJE4kXHVjMmI5XHVjNzQ0IFx1ZDU1OFx1YWM4Y1x1YjQxOFx1YjI5NCBcdWIyZTRcdWM4MDRcdWM4MWNcdWM3NTggXHVhY2IwXHVhY2ZjXHVhYzAwIFx1YmE4NyBcdWFjMDBcdWM5YzBcdWIwOTggXHVjODc0XHVjN2FjXHVkNTU4XHViMjk0XHVjOWMwIFx1YWQ2Y1x1ZDU3NFx1YmNmNFx1Yzc5MC4gXHViMmU4LCBcdWM3NzQgXHVjMjE4XHVhYzAwIFx1YjllNFx1YzZiMCBcdWQwNzQgXHVjMjE4IFx1Yzc4OFx1YzczY1x1YmJjMFx1Yjg1YyAkMTBeOSs3JFx1Yjg1YyBcdWIwOThcdWIyMDggXHViMDk4XHViYTM4XHVjOWMwXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWM5MDRcdWM1ZDAgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWMyMTggJFQkXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjNzg1XHViODI1XHVjNzQwIFx1ZDU1YyBcdWM5MDRcdWM1ZDAgJE4kLCAkTSQgXHViNDUwIFx1YzgxNVx1YzIxOFx1YWMwMCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHViNDE4XHVjNWI0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWM4MTVcdWIyZjVcdWM3NDQgXHVhYzAxIFx1YzkwNFx1YzVkMCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIiwibGltaXQiOiI8dWw+XHJcblx0PGxpPiQxIFxcbGUgVCBcXGxlIDEwJDxcL2xpPlxyXG5cdDxsaT4kMSBcXGxlIE4gXFxsdCBNIFxcbGUgMTBeNSQ8XC9saT5cclxuPFwvdWw+XHJcbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cD5cdWM2MDhcdWM4MWMgMTogXHViY2Y4XHViYjM4XHVjNWQwXHVjMTFjIFx1YjJlNFx1YjhlOFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjODFjIDI6IFx1YmNmOFx1YmIzOFx1YzVkMFx1YzExYyBcdWIyZTRcdWI4ZThcdWM1YzhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyAzOiBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzQwIDRcdWFjMDBcdWM5YzAgXHVhYzAwXHViMmE1XHVjMTMxXHVjNzc0IFx1Yzc4OFx1YjJlNDogJnF1b3Q7QUJCQiZxdW90OywgJnF1b3Q7QUFCQkImcXVvdDsgJnF1b3Q7QUJBQkImcXVvdDssICZxdW90O0FCQkFCJnF1b3Q7PFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyA0OiBcdWNkOTRcdWFjMDAgXHVjMTI0XHViYTg1IFx1YzVjNlx1Yzc0YzxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWMgNTogXHViMmY1XHVjNzc0IFx1YjllNFx1YzZiMCBcdWNlZTRcdWM5YzggXHVjMjE4IFx1Yzc4OFx1YzczY1x1YmJjMFx1Yjg1YyAkMTBeOSs3JFx1Yjg1YyBcdWIwOThcdWIyMDggXHViMDk4XHViYTM4XHVjOWMwXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU3NFx1YzU3Y1x1ZDU1Y1x1YjJlNC48XC9wPlxyXG4ifSx7InByb2JsZW1faWQiOiIyNzM3MSIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ildpbm5lciBvZiBCZXN0LW9mIFNlcmllcz8iLCJkZXNjcmlwdGlvbiI6IjxwPkFsYmVydCBhbmQgQm9iIG9mdGVuIHBsYXkgYm9hcmQgZ2FtZXMsIGFuZCB0aGV5IHBsYXkgYSBzZXJpZXMgb2YgZ2FtZXMuPFwvcD5cclxuXHJcbjxwPlRoZSBXaW4tJFgkLWZpcnN0IGZvcm1hdCBpczombmJzcDtXaXRoIGF0IG1vc3QgJDJYLTEkIGdhbWVzIGJlaW5nIHBsYXllZCBhcyBhIHNlcmllcywgd2hvZXZlciB3aW5zICRYJCBnYW1lcyBmaXJzdCB3aWxsIHdpbiB0aGUgc2VyaWVzLiBBc3N1bWUgdGhhdCB0aGVyZSBhcmUgbm8gdGllcyBpbiB0aGlzIGdhbWUgcGxheWVkIGJ5IHRoZSB0d28ga2lkcy4gRm9yIGluc3RhbmNlLCBpZiAkWCA9IDMkLCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgc2NlbmFyaW9zIGFzIHNob3duIGJlbG93IChmb3IgYnJldml0eSwgbGV0IEEgZGVub3RlIHRoZSBnYW1lcyB3b24gYnkgQWxiZXJ0IGFuZCBCIGJ5IEJvYik6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+PGNvZGU+QUFBPFwvY29kZT46IEluIHRoaXMgc2NlbmFyaW8sIEFsYmVydCB3aW5zIHRoZSBzZXJpZXMuIEdhbWVzIDQgYW5kIDUgd2lsbCBub3QgYmUgcGxheWVkIChhcyB0aGV5IGFyZSBub3QgbmVjZXNzYXJ5KS48XC9saT5cclxuXHQ8bGk+PGNvZGU+QkFBQTxcL2NvZGU+LCA8Y29kZT5BQkFBPFwvY29kZT4sIDxjb2RlPkFBQkE8XC9jb2RlPjogSW4gYW55IG9mIHRoZXNlIHNjZW5hcmlvcywgQWxiZXJ0IHdpbnMgdGhlIHNlcmllcyBhZnRlciB3aW5uaW5nIDMgZ2FtZXMuIEdhbWUgNSB3aWxsIG5vdCBiZSBwbGF5ZWQgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeS48XC9saT5cclxuXHQ8bGk+PGNvZGU+QkJBQUE8XC9jb2RlPiwgPGNvZGU+QkFBQkE8XC9jb2RlPiwmbmJzcDs8Y29kZT5CQUJBQTxcL2NvZGU+LCA8Y29kZT5BQkJBQTxcL2NvZGU+LCA8Y29kZT5BQkFCQTxcL2NvZGU+LCA8Y29kZT5BQUJCQTxcL2NvZGU+OiZuYnNwO0luIGFueSBvZiB0aGVzZSBzY2VuYXJpb3MsIEFsYmVydCB3aW5zIHRoZSBzZXJpZXMgYWZ0ZXIgd2lubmluZyAzIGdhbWVzLjxcL2xpPlxyXG5cdDxsaT5JbiBhZGRpdGlvbiB0byB0aGUgMTAgc2NlbmFyaW9zIGFib3ZlLCBpZiB3ZSBmbGlwIEEgYW5kIEIsIHdlIGNhbiBvYnRhaW4gYW5vdGhlciAxMCBzY2VuYXJpb3MgaW4gd2hpY2ggQm9iIHdpbnMgdGhlIHNlcmllcy48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5BZnRlciB0aGUgdHdvIGtpZHMgcGxheWVkIGEgc2VyaWVzLCB0aGV5IGdvdCB5b3UgcHV6emxlZCBieSBzYXlpbmc6ICZxdW90O0JvYiBpcyB0aGUgd2lubmVyIG9mIHRoZSBXaW4tJE0kLWZpcnN0Jm5ic3A7c2VyaWVzIGJ5IHdpbm5pbmcgJE0kIGdhbWVzIGZpcnN0LCBidXQgQWxiZXJ0Jm5ic3A7d291bGQgaGF2ZSBiZWVuIHRoZSB3aW5uZXIgaGFkIHdlIHBsYXllZCBhIFdpbi0kTiQtZmlyc3Qgc2VyaWVzIGluc3RlYWQuIFRoYXQgaXMsIEFsYmVydCB3b24gJE4kIGdhbWVzIGZpcnN0LCBidXQgQm9iIHdvbiAkTSQgZ2FtZXMgZmlyc3QuIE9mIGNvdXJzZSwgJE4gXFxsdCBNJC4mcXVvdDs8XC9wPlxyXG5cclxuPHA+QWZ0ZXIgaGVhcmluZyB0aGlzLCB5b3UgYXJlIGN1cmlvdXMgYWJvdXQgZXhhY3RseSBob3cgdGhlIHNlcmllcyBwbGF5ZWQgb3V0LCBhbmQgaG93IG1hbnkgZGlmZmVyZW50IHNjZW5hcmlvcyB3b3VsZCBiZSBjb25zaXN0ZW50IHdpdGggd2hhdCB0aGV5IHNhaWQgdG8geW91LjxcL3A+XHJcblxyXG48cD5Gb3IgaW5zdGFuY2UsIGlmICRNID0gMiQgYW5kJm5ic3A7JE4gPSAxJCwgdGhlIHVuaXF1ZSBzY2VuYXJpbyBpczogJnF1b3Q7PGNvZGU+QUJCPFwvY29kZT4mcXVvdDsgd2hlcmUgQWxiZXJ0IHdpbnMgMSBnYW1lIGFuZCBCb2Igd2lucyB0aGUgbmV4dCB0d28gZ2FtZXMuPFwvcD5cclxuXHJcbjxwPkluIGEgZGlmZmVyZW50IGV4YW1wbGUsIHN1cHBvc2UgJE0gPSAzJCwgYW5kICROID0gMiQuIFRoZW4sIHdlIGhhdmUgdGhlIGZvbGxvd2luZyAzIHNjZW5hcmlvczo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT48Y29kZT5BQUJCQjxcL2NvZGU+OiBBbGJlcnQgd291bGQgaGF2ZSB3b24gdGhlIGJlc3Qtb2YtMyBzZXJpZXMsIGJ1dCBCb2IgaXMgdGhlIHdpbm5lciBvZiB0aGUgYmVzdC1vZi01IHNlcmllcy48XC9saT5cclxuXHQ8bGk+PGNvZGU+QUJBQkI8XC9jb2RlPjogQWxiZXJ0IHdvdWxkIGhhdmUgd29uIHRoZSBiZXN0LW9mLTMgc2VyaWVzLCBidXQgQm9iIGlzIHRoZSB3aW5uZXIgb2YgdGhlIGJlc3Qtb2YtNSBzZXJpZXMuPFwvbGk+XHJcblx0PGxpPjxjb2RlPkJBQUJCPFwvY29kZT46IEFsYmVydCB3b3VsZCBoYXZlIHdvbiB0aGUgYmVzdC1vZi0zIHNlcmllcywgYnV0IEJvYiBpcyB0aGUgd2lubmVyIG9mIHRoZSBiZXN0LW9mLTUgc2VyaWVzLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkdpdmVuICROJCBhbmQgJE0kIGFzIGlucHV0LCBvdXRwdXQgdGhlIG51bWJlciBvZiBzY2VuYXJpb3MgaW4gd2hpY2ggQWxiZXJ0IHdpbnMgJE4kIGdhbWVzIGZpcnN0IGJ1dCBCb2Igd2lucyAkTSQgZ2FtZXMgZmlyc3QuIFRoaXMgbnVtYmVyIG1heSBiZSB2ZXJ5IGxhcmdlLCBzbyBvdXRwdXQgdGhlIGFuc3dlciBtb2R1bG8gJDEwXjkgKyA3JC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIHdpbGwgY29udGFpbiAkVCQsIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlcy48XC9wPlxyXG5cclxuPHA+RWFjaCB0ZXN0IGNhc2UmIzM5O3MgaW5wdXQgd2lsbCBiZSBnaXZlbiBpbiBhIHNpbmdsZSBsaW5lIGNvbnRhaW5pbmcgdHdvIGludGVnZXJzICROJCBhbmQgJE0kLCBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCB0ZXN0IGNhc2UsIG91dHB1dCB0aGUgYW5zd2VyJm5ic3A7aW4gYSBzaW5nbGUgbGluZS48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIiwibGltaXQiOiI8dWw+XHJcblx0PGxpPiQxIFxcbGUgVCBcXGxlIDEwJDxcL2xpPlxyXG5cdDxsaT4kMSBcXGxlIE4gXFxsdCBNIFxcbGUgMTBeNSQ8XC9saT5cclxuPFwvdWw+XHJcbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cD5DYXNlIDE6IERlc2NyaWJlZCBpbiB0aGUgcHJvYmxlbSBzdGF0ZW1lbnQuPFwvcD5cclxuXHJcbjxwPkNhc2UgMjogRGVzY3JpYmVkIGluIHRoZSBwcm9ibGVtIHN0YXRlbWVudC48XC9wPlxyXG5cclxuPHA+Q2FzZSAzOiBUaGVyZSBhcmUgZm91ciBzY2VuYXJpb3M6ICZxdW90O0FCQkImcXVvdDssICZxdW90O0FBQkJCJnF1b3Q7ICZxdW90O0FCQUJCJnF1b3Q7LCAmcXVvdDtBQkJBQiZxdW90OzxcL3A+XHJcblxyXG48cD5DYXNlIDQ6IE5vIGV4cGxhbmF0aW9uIHByb3ZpZGVkLjxcL3A+XHJcblxyXG48cD5DYXNlIDU6IE91dHB1dCB0aGUgYW5zd2VyIG1vZHVsbyAkMTBeOSs3JC48XC9wPlxyXG4ifV0=