시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB52529124557.512%

문제

종수는 새 마이크로프로세서를 구매했다. 새 프로세서에 예전 프로세서에서 작동하던 프로그램을 실행시키니 실행이 되지 않았다.

며칠동안 두 프로세서의 기술 문서를 살펴본 결과, 그 결과를 알게 되었다. 새 프로세서의 실행 속도를 향상시키기 위해서 프로그램 머신 코드에 제한이 새로 생겼다. 예전 프로세서에서는 제한이 없었다.

프로세서의 머신 코드는 명령을 실행할 순서대로 나열한 것이다. 각 명령은 메모리를 1바이트 사용한다. 또, 명령은 0개 또는 그 이상의 파라미터를 가질 수 있으며, 각 파라미터도 1바이트씩 메모리를 차지한다. 머신 코드에서 파라미터는 명령의 바로 뒤에 따라 나온다.

머신 코드를 명령은 대문자, 파라미터는 소문자로 나타낼 수 있다.

위의 프로그램은 명령 4개로 이루어져 있다. 첫 번째 명령은 파라미터 3개, 두 번째는 2개, 세 번째는 파라미터가 없고, 네 번째는 4개이다. 이 프로그램은 메모리를 13바이트 사용한다.

새 프로세서는 메모리를 4바이트 단위로 가져온다. 즉, 명령은 반드시 4로 나누어지는 위치에서 시작해야 한다. (메모리의 첫 바이트가 주소 0) 따라서, 새로운 명령 NOP(no operation)를 추가해 모든 명령이 시작하는 위치를 4로 나누어지는 곳으로 맞춰야 한다. 위의 프로그램을 새 프로세서용으로 변환한 머신 코드는 아래와 같다.

명령 A, B, C, D의 시작 위치는 0, 4, 8, 12로 모두 4로 나누어 떨어진다.

예전 프로세서의 머신 코드가 주어졌을 때, 새 프로세서에서 실행시키기 위해 삽입해야 하는 NOP 개수의 최솟값을 구하는 프로그램을 작성하시오.

입력

예전 프로세서용 머신 코드 프로그램이 주어진다. 프로그램은 최대 200글자로 이루어져 있다.

프로그램은 항상 명령으로 시작한다. (첫 글자가 대문자) 한 명령이 머신 코드에서 여러 번 나오는 경우에, 항상 같은 개수의 파라미터를 갖는다.

출력

삽입해야하는 NOP 개수의 최솟값을 출력한다.

예제 입력 1

Abcd

예제 출력 1

0

예제 입력 2

EaEbFabG

예제 출력 2

5

예제 입력 3

AbcbBccCDefgh

예제 출력 3

4
W3sicHJvYmxlbV9pZCI6IjI5MjkiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM4ODVcdWMyMThcdWIyOTQgXHVjMGM4IFx1YjljOFx1Yzc3NFx1ZDA2Y1x1Yjg1Y1x1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1Yjk3YyBcdWFkNmNcdWI5ZTRcdWQ1ODhcdWIyZTQuIFx1YzBjOCBcdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM1ZDAgXHVjNjA4XHVjODA0IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzVkMFx1YzExYyBcdWM3OTFcdWIzZDlcdWQ1NThcdWIzNTggXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1YzJlNFx1ZDU4OVx1YzJkY1x1ZDBhNFx1YjJjOCBcdWMyZTRcdWQ1ODlcdWM3NzQgXHViNDE4XHVjOWMwIFx1YzU0YVx1YzU1OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViYTcwXHVjZTYwXHViM2Q5XHVjNTQ4IFx1YjQ1MCBcdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM3NTggXHVhZTMwXHVjMjIwIFx1YmIzOFx1YzExY1x1Yjk3YyBcdWMwYjRcdWQzYjRcdWJjZjggXHVhY2IwXHVhY2ZjLCBcdWFkZjggXHVhY2IwXHVhY2ZjXHViOTdjIFx1YzU0Y1x1YWM4YyBcdWI0MThcdWM1YzhcdWIyZTQuIFx1YzBjOCBcdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM3NTggXHVjMmU0XHVkNTg5IFx1YzE4ZFx1YjNjNFx1Yjk3YyBcdWQ1YTVcdWMwYzFcdWMyZGNcdWQwYTRcdWFlMzAgXHVjNzA0XHVkNTc0XHVjMTFjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOCBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHVjNWQwIFx1YzgxY1x1ZDU1Y1x1Yzc3NCBcdWMwYzhcdWI4NWMgXHVjMGRkXHVhY2JjXHViMmU0LiBcdWM2MDhcdWM4MDQgXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNWQwXHVjMTFjXHViMjk0IFx1YzgxY1x1ZDU1Y1x1Yzc3NCBcdWM1YzZcdWM1YzhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1Yzc1OCBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHViMjk0IFx1YmE4NVx1YjgzOVx1Yzc0NCBcdWMyZTRcdWQ1ODlcdWQ1NjAgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YjA5OFx1YzVmNFx1ZDU1YyBcdWFjODNcdWM3NzRcdWIyZTQuIFx1YWMwMSBcdWJhODVcdWI4MzlcdWM3NDAgXHViYTU0XHViYWE4XHViOWFjXHViOTdjIDFcdWJjMTRcdWM3NzRcdWQyYjggXHVjMGFjXHVjNmE5XHVkNTVjXHViMmU0LiBcdWI2MTAsIFx1YmE4NVx1YjgzOVx1Yzc0MCAwXHVhYzFjIFx1YjYxMFx1YjI5NCBcdWFkZjggXHVjNzc0XHVjMGMxXHVjNzU4IFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1Yjk3YyBcdWFjMDBcdWM5YzggXHVjMjE4IFx1Yzc4OFx1YzczY1x1YmE3MCwgXHVhYzAxIFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1YjNjNCAxXHViYzE0XHVjNzc0XHVkMmI4XHVjNTI5IFx1YmE1NFx1YmFhOFx1YjlhY1x1Yjk3YyBcdWNjMjhcdWM5YzBcdWQ1NWNcdWIyZTQuIFx1YmEzOFx1YzJlMCBcdWNmNTRcdWI0ZGNcdWM1ZDBcdWMxMWMgXHVkMzBjXHViNzdjXHViYmY4XHVkMTMwXHViMjk0IFx1YmE4NVx1YjgzOVx1Yzc1OCBcdWJjMTRcdWI4NWMgXHViNGE0XHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWIwOThcdWM2MjhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YmEzOFx1YzJlMCBcdWNmNTRcdWI0ZGNcdWI5N2MgXHViYTg1XHViODM5XHVjNzQwIFx1YjMwMFx1YmIzOFx1Yzc5MCwgXHVkMzBjXHViNzdjXHViYmY4XHVkMTMwXHViMjk0IFx1YzE4Y1x1YmIzOFx1Yzc5MFx1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYmMgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC9mZTRlZDQ3NC1iNmUyLTRkM2YtOTY4NC0yODVjNDQ5ZTZjZDVcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDQ0OXB4OyBoZWlnaHQ6IDQwcHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzcwNFx1Yzc1OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDAgXHViYTg1XHViODM5IDRcdWFjMWNcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gXHVjY2FiIFx1YmM4OFx1YzlmOCBcdWJhODVcdWI4MzlcdWM3NDAgXHVkMzBjXHViNzdjXHViYmY4XHVkMTMwIDNcdWFjMWMsIFx1YjQ1MCBcdWJjODhcdWM5ZjhcdWIyOTQgMlx1YWMxYywgXHVjMTM4IFx1YmM4OFx1YzlmOFx1YjI5NCBcdWQzMGNcdWI3N2NcdWJiZjhcdWQxMzBcdWFjMDAgXHVjNWM2XHVhY2UwLCBcdWIxMjQgXHViYzg4XHVjOWY4XHViMjk0IDRcdWFjMWNcdWM3NzRcdWIyZTQuIFx1Yzc3NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDAgXHViYTU0XHViYWE4XHViOWFjXHViOTdjIDEzXHViYzE0XHVjNzc0XHVkMmI4IFx1YzBhY1x1YzZhOVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMGM4IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YjI5NCBcdWJhNTRcdWJhYThcdWI5YWNcdWI5N2MgNFx1YmMxNFx1Yzc3NFx1ZDJiOCBcdWIyZThcdWM3MDRcdWI4NWMgXHVhYzAwXHVjODM4XHVjNjI4XHViMmU0LiBcdWM5ODksIFx1YmE4NVx1YjgzOVx1Yzc0MCBcdWJjMThcdWI0ZGNcdWMyZGMgNFx1Yjg1YyBcdWIwOThcdWIyMDRcdWM1YjRcdWM5YzBcdWIyOTQgXHVjNzA0XHVjZTU4XHVjNWQwXHVjMTFjIFx1YzJkY1x1Yzc5MVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuIChcdWJhNTRcdWJhYThcdWI5YWNcdWM3NTggXHVjY2FiIFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YWMwMCBcdWM4ZmNcdWMxOGMgMCkgXHViNTMwXHViNzdjXHVjMTFjLCBcdWMwYzhcdWI4NWNcdWM2YjQgXHViYTg1XHViODM5IE5PUChubyBvcGVyYXRpb24pXHViOTdjIFx1Y2Q5NFx1YWMwMFx1ZDU3NCBcdWJhYThcdWI0ZTAgXHViYTg1XHViODM5XHVjNzc0IFx1YzJkY1x1Yzc5MVx1ZDU1OFx1YjI5NCBcdWM3MDRcdWNlNThcdWI5N2MgNFx1Yjg1YyBcdWIwOThcdWIyMDRcdWM1YjRcdWM5YzBcdWIyOTQgXHVhY2YzXHVjNzNjXHViODVjIFx1YjlkZVx1Y2RiMFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YzcwNFx1Yzc1OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjMGM4IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzZhOVx1YzczY1x1Yjg1YyBcdWJjYzBcdWQ2NThcdWQ1NWMgXHViYTM4XHVjMmUwIFx1Y2Y1NFx1YjRkY1x1YjI5NCBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHViMmU0LjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzdkZTIyMTM2LWUwNDEtNDI4Yy05M2NjLTQzMGVmNzg4M2EzMVwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogNTg1cHg7IGhlaWdodDogMzlweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+XHViYTg1XHViODM5IEEsIEIsIEMsIERcdWM3NTggXHVjMmRjXHVjNzkxIFx1YzcwNFx1Y2U1OFx1YjI5NCAwLCA0LCA4LCAxMlx1Yjg1YyBcdWJhYThcdWI0NTAgNFx1Yjg1YyBcdWIwOThcdWIyMDRcdWM1YjQgXHViNWE4XHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MDQgXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNzU4IFx1YmEzOFx1YzJlMCBcdWNmNTRcdWI0ZGNcdWFjMDAgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVjMGM4IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzVkMFx1YzExYyBcdWMyZTRcdWQ1ODlcdWMyZGNcdWQwYTRcdWFlMzAgXHVjNzA0XHVkNTc0IFx1YzBiZFx1Yzc4NVx1ZDU3NFx1YzU3YyBcdWQ1NThcdWIyOTQgTk9QIFx1YWMxY1x1YzIxOFx1Yzc1OCBcdWNkNWNcdWMxOWZcdWFjMTJcdWM3NDQgXHVhZDZjXHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWM2MDhcdWM4MDQgXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNmE5IFx1YmEzOFx1YzJlMCBcdWNmNTRcdWI0ZGMgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQwIFx1Y2Q1Y1x1YjMwMCAyMDBcdWFlMDBcdWM3OTBcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQwIFx1ZDU2ZFx1YzBjMSBcdWJhODVcdWI4MzlcdWM3M2NcdWI4NWMgXHVjMmRjXHVjNzkxXHVkNTVjXHViMmU0LiAoXHVjY2FiIFx1YWUwMFx1Yzc5MFx1YWMwMCBcdWIzMDBcdWJiMzhcdWM3OTApIFx1ZDU1YyBcdWJhODVcdWI4MzlcdWM3NzQgXHViYTM4XHVjMmUwIFx1Y2Y1NFx1YjRkY1x1YzVkMFx1YzExYyBcdWM1ZWNcdWI3ZWMgXHViYzg4IFx1YjA5OFx1YzYyNFx1YjI5NCBcdWFjYmRcdWM2YjBcdWM1ZDAsIFx1ZDU2ZFx1YzBjMSBcdWFjMTlcdWM3NDAgXHVhYzFjXHVjMjE4XHVjNzU4IFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1Yjk3YyBcdWFjMTZcdWIyOTRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjMGJkXHVjNzg1XHVkNTc0XHVjNTdjXHVkNTU4XHViMjk0IE5PUCBcdWFjMWNcdWMyMThcdWM3NTggXHVjZDVjXHVjMTlmXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiIyOTI5IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiTk9QIiwiZGVzY3JpcHRpb24iOiI8cD5NaXJrbyBwdXJjaGFzZWQgYSBuZXcgbWljcm9wcm9jZXNzb3IuIFVuZm9ydHVuYXRlbHksIGhlIHNvb24gbGVhcm5lZCB0aGF0IG1hbnkgb2YgaGlzIHByb2dyYW1zIHRoYXQgaGUgd3JvdGUgZm9yIGhpcyBvbGQgcHJvY2Vzc29yIGRpZG4mIzM5O3Qgd29yayBvbiB0aGUgbmV3IHByb2Nlc3Nvci4mbmJzcDs8XC9wPlxyXG5cclxuPHA+RGVlcCBpbnNpZGUgdGhlIHRlY2huaWNhbCBkb2N1bWVudGF0aW9uIGZvciBib3RoIHByb2Nlc3NvcnMsIGhlIGZvdW5kIGFuIGV4cGxhbmF0aW9uLiBJbiBvcmRlciB0byB3b3JrIGZhc3RlciwgdGhlIG5ldyBwcm9jZXNzb3IgaW1wb3NlcyBjZXJ0YWluIGNvbnN0cmFpbnRzIG9uIHRoZSBtYWNoaW5lIGNvZGUgb2YgcHJvZ3JhbXMsIGNvbnN0cmFpbnRzIHRoYXQgbmV2ZXIgZXhpc3RlZCBvbiB0aGUgcHJldmlvdXMgbW9kZWwuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBtYWNoaW5lIGNvZGUgb2YgYSBwcm9jZXNzb3IgY29uc2lzdHMgb2YgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGV4ZWN1dGVkIHNlcXVlbnRpYWxseS4gRWFjaCBpbnN0cnVjdGlvbiB1c2VzIGEgYnl0ZSBvZiBtZW1vcnkuIEFsc28sIGluc3RydWN0aW9ucyBjYW4gaGF2ZSB6ZXJvIG9yIG1vcmUgcGFyYW1ldGVycywgZWFjaCBvZiB3aGljaCB1c2VzIGFuIGFkZGl0aW9uYWwgYnl0ZSBvZiBtZW1vcnkuIEluIG1hY2hpbmUgY29kZSwgcGFyYW1ldGVycyBpbW1lZGlhdGVseSBmb2xsb3cgYW4gaW5zdHJ1Y3Rpb24uJm5ic3A7PFwvcD5cclxuXHJcbjxwPldoZW4gZm9ybWF0dGVkIGFzIHRleHQsIG1hY2hpbmUgY29kZSBpbnN0cnVjdGlvbnMgYXJlIHVwcGVyY2FzZSBsZXR0ZXJzLCB3aGlsZSBwYXJhbWV0ZXJzIGFyZSBsb3dlcmNhc2UgbGV0dGVycy4gRm9yIGV4YW1wbGU6Jm5ic3A7PFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvZmU0ZWQ0NzQtYjZlMi00ZDNmLTk2ODQtMjg1YzQ0OWU2Y2Q1XC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cIndpZHRoOiA0NDlweDsgaGVpZ2h0OiA0MHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5UaGlzIHByb2dyYW0gY29uc2lzdHMgb2YgZm91ciBpbnN0cnVjdGlvbnM7IHRoZSBmaXJzdCB0YWtlcyB0aHJlZSBwYXJhbWV0ZXJzLCB0aGUgc2Vjb25kIHR3bywgdGhlIHRoaXJkIG5vbmUgYW5kIHRoZSBmb3VydGggdGFrZXMgZm91ciBwYXJhbWV0ZXJzLiBUaGUgcHJvZ3JhbSB1c2VzIDEzIGJ5dGVzIG9mIG1lbW9yeS4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIG5ldyBwcm9jZXNzb3IgbW9kZWwgZmV0Y2hlcyBtZW1vcnkgaW4gZm91ci1ieXRlIGNodW5rcyBzbyBlYWNoIGluc3RydWN0aW9uIG11c3Qgc3RhcnQgYXQgYSBtZW1vcnkgYWRkcmVzcyB0aGF0IGlzIGRpdmlzaWJsZSBieSBmb3VyICh0aGUgZmlyc3QgYnl0ZSBpbiBtZW1vcnkgaXMgYWRkcmVzcyAwKS4gVG8gYWNoaWV2ZSB0aGF0LCB3ZSBjYW4gaW5zZXJ0IE5PUCAobm8gb3BlcmF0aW9uKSBpbnN0cnVjdGlvbnMgaW50byB0aGUgb2xkIHByb2dyYW0sIGluc3RydWN0aW9ucyB0aGF0IGRvIG5vdGhpbmcgYW5kIGFyZSBub3QgbGltaXRlZCB0byBtZW1vcnkgbG9jYXRpb25zIGRpdmlzaWJsZSBieSBmb3VyLiBUaGUgYWJvdmUgcHJvZ3JhbSwgYWRhcHRlZCB0byBydW4gb24gdGhlIG5ldyBwcm9jZXNzb3IsIGNhbiBsb29rIGxpa2UgdGhpczombmJzcDs8XC9wPlxyXG5cclxuPHA+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC83ZGUyMjEzNi1lMDQxLTQyOGMtOTNjYy00MzBlZjc4ODNhMzFcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDU4NXB4OyBoZWlnaHQ6IDM5cHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoZSBpbnN0cnVjdGlvbnMgQSwgQiwgQyBhbmQgRCBhcmUgbm93IGF0IG1lbW9yeSBsb2NhdGlvbnMgMCwgNCwgOCBhbmQgMTIsIHdoaWNoIHNhdGlzZmllcyB0aGUgcHJvY2Vzc29yJiMzOTtzIGNvbnN0cmFpbnRzLiZuYnNwOzxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCBkZXRlcm1pbmVzIHRoZSBzbWFsbGVzdCBudW1iZXIgb2YgTk9QIGluc3RydWN0aW9ucyB0aGF0IG5lZWQgdG8gYmUgaW5zZXJ0ZWQgZm9yIHRoZSBnaXZlbiBwcm9ncmFtIHRvIHdvcmsgb24gdGhlIG5ldyBwcm9jZXNzb3IgbW9kZWwuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgY29udGFpbnMgdGhlIG1hY2hpbmUgY29kZSBvZiB0aGUgcHJvZ3JhbSB3cml0dGVuIGZvciB0aGUgb2xkIHByb2Nlc3NvciBtb2RlbC4gVGhlIHByb2dyYW0gd2lsbCBjb25zaXN0IG9mIGF0IG1vc3QgMjAwIEVuZ2xpc2ggbGV0dGVycy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VGhlIHByb2dyYW0gd2lsbCBhbHdheXMgc3RhcnQgaW4gYW4gaW5zdHJ1Y3Rpb24gaS5lLiB0aGUgZmlyc3QgbGV0dGVyIGluIHRoZSBtYWNoaW5lIGNvZGUgd2lsbCBiZSB1cHBlcmNhc2UuJm5ic3A7PFwvcD5cclxuXHJcbjxwPklmIGFuIGluc3RydWN0aW9uIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1hY2hpbmUgY29kZSwgaXQgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSBudW1iZXIgb2YgcGFyYW1ldGVycy4mbmJzcDs8XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5PdXRwdXQgdGhlIHNtYWxsZXN0IG51bWJlciBvZiBOT1AgaW5zdHJ1Y3Rpb25zIG5lZWRlZCB0byBhZGFwdCB0aGUgcHJvZ3JhbSBmb3IgdGhlIG5ldyBwcm9jZXNzb3IuJm5ic3A7PFwvcD5cclxuXHJcbjxwPiZuYnNwOzxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=