시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 84 32 19 35.185%

문제

체스에서 전투를 피하고 기물을 지키려할 때 좋은 전략은 만남을 피하는 것이다. IBM은 Deep Blue에게 체스에서 이런 전략을 학습시키려한다. 따라서 IBM은 서로를 공격하는 기물이 없도록 만들 때, 최소의 없애야할 기물의 수를 찾는 프로그램이 필요하다.

모든 기물은 일반적인 체스 기물의 공격법을 따른다.

  • 킹(King) - 모든 방향으로 인접한 칸 공격 가능.(상하좌우, 대각선)
  • 퀸(Queen) - 모든 방향으로 길이 제한 없이 공격 가능.(상하좌우, 대각선)
  • 비숍(Bishop) - 대각선 방향으로 길이 제한 없이 공격 가능.
  • 룩(Rook) - 상하좌우 방향으로 길이 제한 없이 공격 가능.
  • 폰(Pawns) - 이 문제에서 폰은 없습니다.
  • 나이트(Knight) - L모양으로 공격 가 = [상, 하, 좌, 우]로 두 칸 [좌 또는 우, 좌 또는 우, 상 또는 하, 상 또는 하]로 한칸 있는 곳 공격 가능. 아래 참조
---------------
| | |*| |*| | |
---------------
| |*| | | |*| |
---------------
| | | |N| | | |
---------------
| |*| | | |*| |
---------------
| | |*| |*| | |
---------------
N = 나이트
* = 나이트가 공격할 수 있는 지점

입력

이 문제의 입력은 최고 100개의 데이터 셋으로 이루어진다. 각 데이터 셋은 다음 설명과 같이 구성되어 있으며 데이터 셋을 구분하는 빈 줄은 없다. 보드느 최고 10x10이며 기물은 최고 15개이다.

각 데이터 셋은 다섯 부분으로 나뉜다:

  1. 시작줄 - "START"
  2. 보드 가로 - 한 줄의 자연수 w, 1 <= w <= 10
  3. 보드 세로 - 한 줄의 자연수 h, 1 <= h <= 10
  4. 보드의 생김새 - h 줄의 w개의 띄워쓰기로 구분된 글자가 들어온다. n 번째 줄은 보드의 n번째 행을 의미한다. 각각의 글자는 다음을 의미한다
    • K - 킹(King)
    • Q - 퀸(Queen)
    • R - 룩(Rook)
    • B - 비숍(Bishop)
    • K - 나이트(Knight)
    • E - 빈공간(Empty Square)
  5. 마지막줄 - "END"

출력

각 데이터셋에 대하여 하나의 출력셋이 존재한다. 각각의 출력셋은 빈 줄로 구분되지 않는다.

각 출력셋은 한 줄로 구성되는데 아래의 문장에서 마지막의 X는 남은 기물들이 서로를 공격하지 않기 위해 제거해야할 최소 기물의 수이다.

 "Minimum Number of Pieces to be removed: X"

예제 입력 1

START
3
3
K E K
E Q E
K E K
END
START
8
8
E E E E E E E E
E B E K E E N E
E E E E N E E E
E E E E E E E R
B E Q E E E E E
E E E E E Q E E
E E E E E B E E
E B E R E E E E
END

예제 출력 1

Minimum Number of Pieces to be removed: 1
Minimum Number of Pieces to be removed: 5
W3sicHJvYmxlbV9pZCI6Ijk5ODMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWIzNTQgXHVkNDc4XHViOTc0XHVhYzhjIiwiZGVzY3JpcHRpb24iOiI8cD5cdWNjYjRcdWMyYTRcdWM1ZDBcdWMxMWMgXHVjODA0XHVkMjJjXHViOTdjIFx1ZDUzY1x1ZDU1OFx1YWNlMCBcdWFlMzBcdWJiM2NcdWM3NDQgXHVjOWMwXHVkMGE0XHViODI0XHVkNTYwIFx1YjU0YyBcdWM4OGJcdWM3NDAgXHVjODA0XHViN2I1XHVjNzQwIFx1YjljY1x1YjBhOFx1Yzc0NCBcdWQ1M2NcdWQ1NThcdWIyOTQgXHVhYzgzXHVjNzc0XHViMmU0LiBJQk1cdWM3NDAgRGVlcCBCbHVlXHVjNWQwXHVhYzhjIFx1Y2NiNFx1YzJhNFx1YzVkMFx1YzExYyBcdWM3NzRcdWI3ZjAgXHVjODA0XHViN2I1XHVjNzQ0IFx1ZDU1OVx1YzJiNVx1YzJkY1x1ZDBhNFx1YjgyNFx1ZDU1Y1x1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjIElCTVx1Yzc0MCBcdWMxMWNcdWI4NWNcdWI5N2MgXHVhY2Y1XHVhY2E5XHVkNTU4XHViMjk0IFx1YWUzMFx1YmIzY1x1Yzc3NCBcdWM1YzZcdWIzYzRcdWI4NWQgXHViOWNjXHViNGU0IFx1YjU0YywgXHVjZDVjXHVjMThjXHVjNzU4IFx1YzVjNlx1YzU2MFx1YzU3Y1x1ZDU2MCBcdWFlMzBcdWJiM2NcdWM3NTggXHVjMjE4XHViOTdjIFx1Y2MzZVx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NzQgXHVkNTQ0XHVjNjk0XHVkNTU4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJhYThcdWI0ZTAgXHVhZTMwXHViYjNjXHVjNzQwIFx1Yzc3Y1x1YmMxOFx1YzgwMVx1Yzc3OCBcdWNjYjRcdWMyYTQgXHVhZTMwXHViYjNjXHVjNzU4IFx1YWNmNVx1YWNhOVx1YmM5NVx1Yzc0NCBcdWI1MzBcdWI5NzhcdWIyZTQuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHVkMGI5KEtpbmcpIC0gXHViYWE4XHViNGUwIFx1YmMyOVx1ZDVhNVx1YzczY1x1Yjg1YyBcdWM3NzhcdWM4MTFcdWQ1NWMgXHVjZTc4IFx1YWNmNVx1YWNhOSBcdWFjMDBcdWIyYTUuKFx1YzBjMVx1ZDU1OFx1Yzg4Y1x1YzZiMCwgXHViMzAwXHVhYzAxXHVjMTIwKTxcL2xpPlxyXG5cdDxsaT5cdWQwMzgoUXVlZW4pIC0gXHViYWE4XHViNGUwIFx1YmMyOVx1ZDVhNVx1YzczY1x1Yjg1YyBcdWFlMzhcdWM3NzQgXHVjODFjXHVkNTVjIFx1YzVjNlx1Yzc3NCBcdWFjZjVcdWFjYTkgXHVhYzAwXHViMmE1LihcdWMwYzFcdWQ1NThcdWM4OGNcdWM2YjAsIFx1YjMwMFx1YWMwMVx1YzEyMCk8XC9saT5cclxuXHQ8bGk+XHViZTQ0XHVjMjBkKEJpc2hvcCkgLSBcdWIzMDBcdWFjMDFcdWMxMjAgXHViYzI5XHVkNWE1XHVjNzNjXHViODVjIFx1YWUzOFx1Yzc3NCBcdWM4MWNcdWQ1NWMgXHVjNWM2XHVjNzc0IFx1YWNmNVx1YWNhOSBcdWFjMDBcdWIyYTUuPFwvbGk+XHJcblx0PGxpPlx1YjhlOShSb29rKSAtIFx1YzBjMVx1ZDU1OFx1Yzg4Y1x1YzZiMCBcdWJjMjlcdWQ1YTVcdWM3M2NcdWI4NWMgXHVhZTM4XHVjNzc0IFx1YzgxY1x1ZDU1YyBcdWM1YzZcdWM3NzQgXHVhY2Y1XHVhY2E5IFx1YWMwMFx1YjJhNS48XC9saT5cclxuXHQ8bGk+XHVkM2YwKFBhd25zKSAtIFx1Yzc3NCBcdWJiMzhcdWM4MWNcdWM1ZDBcdWMxMWMgXHVkM2YwXHVjNzQwIFx1YzVjNlx1YzJiNVx1YjJjOFx1YjJlNC48XC9saT5cclxuXHQ8bGk+XHViMDk4XHVjNzc0XHVkMmI4KEtuaWdodCkgLSBMXHViYWE4XHVjNTkxXHVjNzNjXHViODVjIFx1YWNmNVx1YWNhOSBcdWFjMDAgPSZuYnNwO1tcdWMwYzEsIFx1ZDU1OCwgXHVjODhjLCBcdWM2YjBdXHViODVjIFx1YjQ1MCBcdWNlNzggW1x1Yzg4YyBcdWI2MTBcdWIyOTQgXHVjNmIwLCBcdWM4OGMgXHViNjEwXHViMjk0IFx1YzZiMCwgXHVjMGMxIFx1YjYxMFx1YjI5NCBcdWQ1NTgsIFx1YzBjMSBcdWI2MTBcdWIyOTQgXHVkNTU4XVx1Yjg1YyBcdWQ1NWNcdWNlNzggXHVjNzg4XHViMjk0IFx1YWNmMyBcdWFjZjVcdWFjYTkgXHVhYzAwXHViMmE1LiBcdWM1NDRcdWI3OTggXHVjYzM4XHVjODcwPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHByZT5cclxuLS0tLS0tLS0tLS0tLS0tXHJcbnwgfCB8KnwgfCp8IHwgfFxyXG4tLS0tLS0tLS0tLS0tLS1cclxufCB8KnwgfCB8IHwqfCB8XHJcbi0tLS0tLS0tLS0tLS0tLVxyXG58IHwgfCB8TnwgfCB8IHxcclxuLS0tLS0tLS0tLS0tLS0tXHJcbnwgfCp8IHwgfCB8KnwgfFxyXG4tLS0tLS0tLS0tLS0tLS1cclxufCB8IHwqfCB8KnwgfCB8XHJcbi0tLS0tLS0tLS0tLS0tLVxyXG5OID0gXHViMDk4XHVjNzc0XHVkMmI4XHJcbiogPSBcdWIwOThcdWM3NzRcdWQyYjhcdWFjMDAgXHVhY2Y1XHVhY2E5XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjOWMwXHVjODEwXHJcbjxcL3ByZT5cclxuIiwiaW5wdXQiOiI8cD5cdWM3NzQgXHViYjM4XHVjODFjXHVjNzU4IFx1Yzc4NVx1YjgyNVx1Yzc0MCBcdWNkNWNcdWFjZTAgMTAwXHVhYzFjXHVjNzU4IFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWMxNGJcdWM3M2NcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzE0Ylx1Yzc0MCBcdWIyZTRcdWM3NGMgXHVjMTI0XHViYTg1XHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWFkNmNcdWMxMzFcdWI0MThcdWM1YjQgXHVjNzg4XHVjNzNjXHViYTcwIFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWMxNGJcdWM3NDQgXHVhZDZjXHViZDg0XHVkNTU4XHViMjk0IFx1YmU0OCBcdWM5MDRcdWM3NDAgXHVjNWM2XHViMmU0LiBcdWJjZjRcdWI0ZGNcdWIyOTAgXHVjZDVjXHVhY2UwIDEweDEwXHVjNzc0XHViYTcwIFx1YWUzMFx1YmIzY1x1Yzc0MCBcdWNkNWNcdWFjZTAgMTVcdWFjMWNcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSBcdWIzNzBcdWM3NzRcdWQxMzAgXHVjMTRiXHVjNzQwIFx1YjJlNFx1YzEyZiBcdWJkODBcdWJkODRcdWM3M2NcdWI4NWMgXHViMDk4XHViMjVjXHViMmU0OjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPlx1YzJkY1x1Yzc5MVx1YzkwNCAtJm5ic3A7JnF1b3Q7U1RBUlQmcXVvdDs8XC9saT5cclxuXHQ8bGk+XHViY2Y0XHViNGRjIFx1YWMwMFx1Yjg1YyAtIFx1ZDU1YyBcdWM5MDRcdWM3NTggXHVjNzkwXHVjNWYwXHVjMjE4IHcsIDEgJmx0Oz0gdyAmbHQ7PSAxMDxcL2xpPlxyXG5cdDxsaT5cdWJjZjRcdWI0ZGMgXHVjMTM4XHViODVjIC0gXHVkNTVjIFx1YzkwNFx1Yzc1OCBcdWM3OTBcdWM1ZjBcdWMyMTggaCwgMSAmbHQ7PSBoICZsdDs9IDEwPFwvbGk+XHJcblx0PGxpPlx1YmNmNFx1YjRkY1x1Yzc1OCBcdWMwZGRcdWFlNDBcdWMwYzggLSBoIFx1YzkwNFx1Yzc1OCB3XHVhYzFjXHVjNzU4IFx1Yjc0NFx1YzZjY1x1YzRmMFx1YWUzMFx1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MWMgXHVhZTAwXHVjNzkwXHVhYzAwIFx1YjRlNFx1YzViNFx1YzYyOFx1YjJlNC4gbiBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNzQwIFx1YmNmNFx1YjRkY1x1Yzc1OCBuXHViYzg4XHVjOWY4IFx1ZDU4OVx1Yzc0NCBcdWM3NThcdWJiZjhcdWQ1NWNcdWIyZTQuIFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWFlMDBcdWM3OTBcdWIyOTQgXHViMmU0XHVjNzRjXHVjNzQ0IFx1Yzc1OFx1YmJmOFx1ZDU1Y1x1YjJlNFxyXG5cdDx1bD5cclxuXHRcdDxsaT5LIC0gXHVkMGI5KEtpbmcpPFwvbGk+XHJcblx0XHQ8bGk+USAtIFx1ZDAzOChRdWVlbik8XC9saT5cclxuXHRcdDxsaT5SIC0gXHViOGU5KFJvb2spPFwvbGk+XHJcblx0XHQ8bGk+QiAtIFx1YmU0NFx1YzIwZChCaXNob3ApPFwvbGk+XHJcblx0XHQ8bGk+SyAtIFx1YjA5OFx1Yzc3NFx1ZDJiOChLbmlnaHQpPFwvbGk+XHJcblx0XHQ8bGk+RSAtIFx1YmU0OFx1YWNmNVx1YWMwNChFbXB0eSBTcXVhcmUpPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcblx0PGxpPlx1YjljOFx1YzljMFx1YjljOVx1YzkwNCAtICZxdW90O0VORCZxdW90OzxcL2xpPlxyXG48XC9vbD5cclxuIiwib3V0cHV0IjoiPHA+XHVhYzAxIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YzE0Ylx1YzVkMCBcdWIzMDBcdWQ1NThcdWM1ZWMgXHVkNTU4XHViMDk4XHVjNzU4IFx1Y2Q5Y1x1YjgyNVx1YzE0Ylx1Yzc3NCBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuIFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWNkOWNcdWI4MjVcdWMxNGJcdWM3NDAgXHViZTQ4IFx1YzkwNFx1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHVjZDljXHViODI1XHVjMTRiXHVjNzQwIFx1ZDU1YyBcdWM5MDRcdWI4NWMgXHVhZDZjXHVjMTMxXHViNDE4XHViMjk0XHViMzcwIFx1YzU0NFx1Yjc5OFx1Yzc1OCBcdWJiMzhcdWM3YTVcdWM1ZDBcdWMxMWMgXHViOWM4XHVjOWMwXHViOWM5XHVjNzU4IFhcdWIyOTQgXHViMGE4XHVjNzQwIFx1YWUzMFx1YmIzY1x1YjRlNFx1Yzc3NCBcdWMxMWNcdWI4NWNcdWI5N2MgXHVhY2Y1XHVhY2E5XHVkNTU4XHVjOWMwIFx1YzU0YVx1YWUzMCBcdWM3MDRcdWQ1NzQgXHVjODFjXHVhYzcwXHVkNTc0XHVjNTdjXHVkNTYwIFx1Y2Q1Y1x1YzE4YyBcdWFlMzBcdWJiM2NcdWM3NTggXHVjMjE4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD4mbmJzcDsmcXVvdDtNaW5pbXVtIE51bWJlciBvZiBQaWVjZXMgdG8gYmUgcmVtb3ZlZDogWCZxdW90OzxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiOTk4MyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkRlZXBlciBCbHVlIiwiZGVzY3JpcHRpb24iOiI8cD5XaGVuIHRyeWluZyB0byBhdm9pZCBjb25mbGljdCBhbmQgbWFpbnRhaW4gcGVhY2UsIGEgZ29vZCBzdHJhdGVneSBpcyB0byByZW1vdmUgdGhlIGVsZW1lbnRzIHRoYXQgY2F1c2UgdGhlIG1vc3QgdHJvdWJsZS4gSUJNIGlzIHVzaW5nIGl0cyBEZWVwIEJsdWUgbWFjaGluZSB0byB0cnkgdG8gc3R1ZHkgdGhpcyBzdHJhdGVneSBieSBtb2RlbGluZyBpdCB3aXRoIGEgZ2FtZSBvZiBjaGVzcy4gSUJNIG5lZWRzIGEgcHJvZ3JhbSB0byBmaW5kIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGVzcyBwaWVjZXMgdGhhdCBtdXN0IGJlIHJlbW92ZWQgZnJvbSBhIGNoZXNzYm9hcmQgaW4gb3JkZXIgZm9yIG5vbmUgb2YgdGhlIHBpZWNlcyB0byBiZSBhdHRhY2tpbmcgZWFjaCBvdGhlci48XC9wPlxyXG5cclxuPHA+QWxsIHBpZWNlcyB3aWxsIGhhdmUgdGhlIHN0YW5kYXJkIGF0dGFjayBtb3ZlbWVudHMgZm9yIHRoYXQgY2hlc3MgcGllY2UuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+S2luZyAtIENhbiBhdHRhY2sgdGhlIGFkamFjZW50IHNwYWNlIGluIGFueSBkaXJlY3Rpb24uIFVwLCBkb3duLCBsZWZ0LCByaWdodCBhbmQgZGlhZ29uYWxseS48XC9saT5cclxuXHQ8bGk+UXVlZW4gLSBDYW4gYXR0YWNrIGFueSBudW1iZXIgb2Ygc3BhY2VzIGluIGFueSBkaXJlY3Rpb24uIFVwLCBkb3duLCBsZWZ0LCByaWdodCBhbmQgZGlhZ29uYWxseS48XC9saT5cclxuXHQ8bGk+QmlzaG9wIC0gQ2FuIGF0dGFjayBhbnkgbnVtYmVyIG9mIHNwYWNlcyBkaWFnb25hbGx5LjxcL2xpPlxyXG5cdDxsaT5Sb29rIC0gQ2FuIGF0dGFjayBhbnkgbnVtYmVyIG9mIHNwYWNlcyB1cCwgZG93biwgbGVmdCwgb3IgcmlnaHQgYnV0IG5vdCBkaWFnb25hbGx5LjxcL2xpPlxyXG5cdDxsaT5QYXducyAtIFRoZXJlIHdvbiYjMzk7dCBiZSBhbnkgcGF3bnMuPFwvbGk+XHJcblx0PGxpPktuaWdodCAtIENhbiBhdHRhY2sgd2l0aCB0aGVpciB1c3VhbCAmIzM5O0wmIzM5OyBzaGFwZWQgbW92ZW1lbnQuIFVwIHR3aWNlIGFuZCByaWdodCBvbmNlLCB1cCBvbmNlIGFuZCBsZWZ0IHR3aWNlLCBldGMuLi4gSGVyZSBpcyBhIGRpYWdyYW0sIHdoaWNoIGRlbW9uc3RyYXRlcyB0aGUgbW92ZW1lbnQgb2YgYSBrbmlnaHQuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHByZT5cclxuIC0tLS0tLS0tLS0tLS0tXHJcbnwgfCB8KnwgfCp8IHwgfFxyXG4tLS0tLS0tLS0tLS0tLS1cclxufCB8KnwgfCB8IHwqfCB8XHJcbi0tLS0tLS0tLS0tLS0tLVxyXG58IHwgfCB8TnwgfCB8IHxcclxuLS0tLS0tLS0tLS0tLS0tXHJcbnwgfCp8IHwgfCB8KnwgfFxyXG4tLS0tLS0tLS0tLS0tLS1cclxufCB8IHwqfCB8KnwgfCB8XHJcbi0tLS0tLS0tLS0tLS0tLVxyXG5OID0gS25pZ2h0XHJcbiogPSBTcXVhcmUgdGhhdCB0aGUga25pZ2h0IGNhbiBhdHRhY2tcclxuPFwvcHJlPlxyXG4iLCJpbnB1dCI6IjxwPklucHV0IHRvIHRoaXMgcHJvYmxlbSB3aWxsIGNvbnNpc3Qgb2YgYSAobm9uLWVtcHR5KSBzZXJpZXMgb2YgdXAgdG8gMTAwIGRhdGEgc2V0cy4gRWFjaCBkYXRhIHNldCB3aWxsIGJlIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gYmxhbmsgbGluZXMgc2VwYXJhdGluZyBkYXRhIHNldHMuIFRoZSBtYXhpbXVtIGRpbWVuc2lvbnMgb2YgdGhlIGJvYXJkIGFyZSAxMCBzcXVhcmVzIHdpZGUgYnkgMTAgc3F1YXJlcyBoaWdoLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hlc3MgcGllY2VzIHRoYXQgd2lsbCBzdGFydCBvdXQgb24gdGhlIGJvYXJkIGlzIDE1LjxcL3A+XHJcblxyXG48cD5BIHNpbmdsZSBkYXRhIHNldCBoYXMgNSBjb21wb25lbnRzOjxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPlN0YXJ0IGxpbmUgLSBBIHNpbmdsZSBsaW5lLCAmcXVvdDtTVEFSVCZxdW90OzxcL2xpPlxyXG5cdDxsaT5Cb2FyZCBXaWR0aCAoIyBvZiBjb2x1bW5zKSAtIEEgc2luZ2xlIGxpbmUgY29udGFpbmluZyBhIHBvc2l0aXZlIGludGVnZXIsIHcsIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBzcXVhcmVzIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJvYXJkIHdoZXJlIDEgJmx0Oz0gdyAmbHQ7PSAxMC48XC9saT5cclxuXHQ8bGk+Qm9hcmQgSGVpZ2h0ICgjIG9mIHJvd3MpIC0gQSBzaW5nbGUgbGluZSBjb250YWluaW5nIGEgcG9zaXRpdmUgaW50ZWdlciwgaCwgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHNxdWFyZXMgdGhhdCBkaWN0YXRlIHRoZSBoZWlnaHQgb2YgdGhlIGJvYXJkLCB3aGVyZSAxICZsdDs9IGggJmx0Oz0gMTAuPFwvbGk+XHJcblx0PGxpPkJvYXJkIExheW91dCAtIGggbGluZXMsIGVhY2ggY29ycmVzcG9uZGluZyB0byBhIHJvdyBvZiB0aGUgYm9hcmQuIFRoZSBmaXJzdCBsaW5lIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCByb3csIHRoZSBzZWNvbmQgbGluZSB0byB0aGUgc2Vjb25kIHJvdywgYW5kIHNvIG9uLiBFYWNoIHJvdyBjb25zaXN0cyBvZiBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHNpbmdsZSBsZXR0ZXJzLCBlYWNoIHJlcHJlc2VudGluZyB0aGUgY29udGVudHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc3F1YXJlIG9uIHRoZSBib2FyZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBsaXN0OlxyXG5cdDx1bD5cclxuXHRcdDxsaT5LaW5nPFwvbGk+XHJcblx0XHQ8bGk+UXVlZW48XC9saT5cclxuXHRcdDxsaT5Sb29rPFwvbGk+XHJcblx0XHQ8bGk+QmlzaG9wPFwvbGk+XHJcblx0XHQ8bGk+S25pZ2h0PFwvbGk+XHJcblx0XHQ8bGk+RW1wdHkgU3F1YXJlPFwvbGk+XHJcblx0PFwvdWw+XHJcblx0PFwvbGk+XHJcblx0PGxpPkVuZCBsaW5lIC0gQSBzaW5nbGUgbGluZSwgJnF1b3Q7RU5EJnF1b3Q7PFwvbGk+XHJcbjxcL29sPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCBkYXRhIHNldCwgdGhlcmUgd2lsbCBiZSBleGFjdGx5IG9uZSBvdXRwdXQgc2V0LCBhbmQgdGhlcmUgd2lsbCBiZSBubyBibGFuayBsaW5lcyBzZXBhcmF0aW5nIG91dHB1dCBzZXRzLjxcL3A+XHJcblxyXG48cD5BIHNpbmdsZSBvdXRwdXQgc2V0IGNvbnNpc3RzIG9mIGEgc2luZ2xlIGxpbmUsICZxdW90O01pbmltdW0gTnVtYmVyIG9mIFBpZWNlcyB0byBiZSByZW1vdmVkOiBYJnF1b3Q7LCB3aGVyZSBYIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBwaWVjZXMgdGhhdCBtdXN0IGJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3VjaCB0aGF0IG5vbmUgb2YgdGhlIHJlbWFpbmluZyBwaWVjZXMgYXJlIGF0dGFja2luZyBhbnkgb3RoZXIgcmVtYWluaW5nIHBpZWNlLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d