시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 182 98 86 55.484%

문제

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

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

프로세서의 머신 코드는 명령을 실행할 순서대로 나열한 것이다. 각 명령은 메모리를 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

EaEbFabG

예제 출력 1

5
W3sicHJvYmxlbV9pZCI6IjI5MjkiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM4ODVcdWMyMThcdWIyOTQgXHVjMGM4IFx1YjljOFx1Yzc3NFx1ZDA2Y1x1Yjg1Y1x1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1Yjk3YyBcdWFkNmNcdWI5ZTRcdWQ1ODhcdWIyZTQuIFx1YzBjOCBcdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM1ZDAgXHVjNjA4XHVjODA0IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzVkMFx1YzExYyBcdWM3OTFcdWIzZDlcdWQ1NThcdWIzNTggXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1YzJlNFx1ZDU4OVx1YzJkY1x1ZDBhNFx1YjJjOCBcdWMyZTRcdWQ1ODlcdWM3NzQgXHViNDE4XHVjOWMwIFx1YzU0YVx1YzU1OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViYTg3IFx1Yzc3Y1x1YjNkOVx1YzU0OCBcdWI0NTAgXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNzU4IFx1YWUzMFx1YzIyMCBcdWJiMzhcdWMxMWNcdWI5N2MgXHVjMGI0XHVkM2I0XHViY2Y4IFx1YWNiMFx1YWNmYywgXHVhZGY4IFx1YWNiMFx1YWNmY1x1Yjk3YyBcdWM1NGNcdWFjOGMgXHViNDE4XHVjNWM4XHViMmU0LiBcdWMwYzggXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNzU4IFx1YzJlNFx1ZDU4OSBcdWMxOGRcdWIzYzRcdWI5N2MgXHVkNWE1XHVjMGMxXHVjMmRjXHVkMGE0XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExYyBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTggXHViYTM4XHVjMmUwIFx1Y2Y1NFx1YjRkY1x1YzVkMCBcdWM4MWNcdWQ1NWNcdWM3NzQgXHVjMGM4XHViODVjIFx1YzBkZFx1YWNiY1x1YjJlNC4gXHVjNjA4XHVjODA0IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzVkMFx1YzExY1x1YjI5NCBcdWM4MWNcdWQ1NWNcdWM3NzQgXHVjNWM2XHVjNWM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM3NTggXHViYTM4XHVjMmUwIFx1Y2Y1NFx1YjRkY1x1YjI5NCBcdWJhODVcdWI4MzlcdWM3NDQgXHVjMmU0XHVkNTg5XHVkNTYwIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWIwOThcdWM1ZjRcdWQ1NWMgXHVhYzgzXHVjNzc0XHViMmU0LiBcdWFjMDEgXHViYTg1XHViODM5XHVjNzQwIFx1YmE1NFx1YmFhOFx1YjlhY1x1Yjk3YyAxXHViYzE0XHVjNzc0XHVkMmI4IFx1YzBhY1x1YzZhOVx1ZDU1Y1x1YjJlNC4gXHViNjEwLCBcdWJhODVcdWI4MzlcdWM3NDAgMFx1YWMxYyBcdWI2MTBcdWIyOTQgXHVhZGY4IFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWQzMGNcdWI3N2NcdWJiZjhcdWQxMzBcdWI5N2MgXHVhYzAwXHVjOWM4IFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJhNzAsIFx1YWMwMSBcdWQzMGNcdWI3N2NcdWJiZjhcdWQxMzBcdWIzYzQgMVx1YmMxNFx1Yzc3NFx1ZDJiOFx1YzUyOSBcdWJhNTRcdWJhYThcdWI5YWNcdWI5N2MgXHVjYzI4XHVjOWMwXHVkNTVjXHViMmU0LiBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHVjNWQwXHVjMTFjIFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1YjI5NCBcdWJhODVcdWI4MzlcdWM3NTggXHViYzE0XHViODVjIFx1YjRhNFx1YzVkMCBcdWI1MzBcdWI3N2MgXHViMDk4XHVjNjI4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHViOTdjIFx1YmE4NVx1YjgzOVx1Yzc0MCBcdWIzMDBcdWJiMzhcdWM3OTAsIFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1YjI5NCBcdWMxOGNcdWJiMzhcdWM3OTBcdWI4NWMgXHViMDk4XHVkMGMwXHViMGJjIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvbWFjaGluZWNvZGUucG5nXCIgc3R5bGU9XCJoZWlnaHQ6NDZweDsgd2lkdGg6NDYxcHhcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjNzA0XHVjNzU4IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWJhODVcdWI4MzkgNFx1YWMxY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHViMmU0LiBcdWNjYWIgXHViYzg4XHVjOWY4IFx1YmE4NVx1YjgzOVx1Yzc0MCBcdWQzMGNcdWI3N2NcdWJiZjhcdWQxMzAgM1x1YWMxYywgXHViNDUwIFx1YmM4OFx1YzlmOFx1YjI5NCAyXHVhYzFjLCBcdWMxMzggXHViYzg4XHVjOWY4XHViMjk0IFx1ZDMwY1x1Yjc3Y1x1YmJmOFx1ZDEzMFx1YWMwMCBcdWM1YzZcdWFjZTAsIFx1YjEyNCBcdWJjODhcdWM5ZjhcdWIyOTQgNFx1YWMxY1x1Yzc3NFx1YjJlNC4gXHVjNzc0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWJhNTRcdWJhYThcdWI5YWNcdWI5N2MgMTNcdWJjMTRcdWM3NzRcdWQyYjggXHVjMGFjXHVjNmE5XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMwYzggXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHViMjk0IFx1YmE1NFx1YmFhOFx1YjlhY1x1Yjk3YyA0XHViYzE0XHVjNzc0XHVkMmI4IFx1YjJlOFx1YzcwNFx1Yjg1YyBcdWFjMDBcdWM4MzhcdWM2MjhcdWIyZTQuIFx1Yzk4OSwgXHViYTg1XHViODM5XHVjNzQwIFx1YmMxOFx1YjRkY1x1YzJkYyA0XHViODVjIFx1YjA5OFx1YjIwNFx1YzViNFx1YzljMFx1YjI5NCBcdWM3MDRcdWNlNThcdWM1ZDBcdWMxMWMgXHVjMmRjXHVjNzkxXHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gKFx1YmE1NFx1YmFhOFx1YjlhY1x1Yzc1OCBcdWNjYWIgXHViYzE0XHVjNzc0XHVkMmI4XHVhYzAwIFx1YzhmY1x1YzE4YyAwKSBcdWI1MzBcdWI3N2NcdWMxMWMsIFx1YzBjOFx1Yjg1Y1x1YzZiNCBcdWJhODVcdWI4MzkgTk9QKG5vIG9wZXJhdGlvbilcdWI5N2MgXHVjZDk0XHVhYzAwXHVkNTc0IFx1YmFhOFx1YjRlMCBcdWJhODVcdWI4MzlcdWM3NzQgXHVjMmRjXHVjNzkxXHVkNTU4XHViMjk0IFx1YzcwNFx1Y2U1OFx1Yjk3YyA0XHViODVjIFx1YjA5OFx1YjIwNFx1YzViNFx1YzljMFx1YjI5NCBcdWFjZjNcdWM3M2NcdWI4NWMgXHViOWRlXHVjZGIwXHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHVjNzA0XHVjNzU4IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWMwYzggXHVkNTA0XHViODVjXHVjMTM4XHVjMTFjXHVjNmE5XHVjNzNjXHViODVjIFx1YmNjMFx1ZDY1OFx1ZDU1YyBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHViMjk0IFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvbWFjaGluZWNvZGUyLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjQzcHg7IHdpZHRoOjU5M3B4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YmE4NVx1YjgzOSBBLCBCLCBDLCBEXHVjNzU4IFx1YzJkY1x1Yzc5MSBcdWM3MDRcdWNlNThcdWIyOTQgMCwgNCwgOCwgMTJcdWI4NWMgXHViYWE4XHViNDUwIDRcdWI4NWMgXHViMDk4XHViMjA0XHVjNWI0IFx1YjVhOFx1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjODA0IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1Yzc1OCBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1YzBjOCBcdWQ1MDRcdWI4NWNcdWMxMzhcdWMxMWNcdWM1ZDBcdWMxMWMgXHVjMmU0XHVkNTg5XHVjMmRjXHVkMGE0XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWMwYmRcdWM3ODVcdWQ1NzRcdWM1N2MgXHVkNTU4XHViMjk0IE5PUCBcdWFjMWNcdWMyMThcdWM3NTggXHVjZDVjXHVjMThjXHVhYzEyXHVjNzQ0IFx1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjNjA4XHVjODA0IFx1ZDUwNFx1Yjg1Y1x1YzEzOFx1YzExY1x1YzZhOSBcdWJhMzhcdWMyZTAgXHVjZjU0XHViNGRjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWNkNWNcdWIzMDAgMjAwXHVhZTAwXHVjNzkwXHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWQ1NmRcdWMwYzEgXHViYTg1XHViODM5XHVjNzNjXHViODVjIFx1YzJkY1x1Yzc5MVx1ZDU1Y1x1YjJlNC4gKFx1Y2NhYiBcdWFlMDBcdWM3OTBcdWFjMDAgXHViMzAwXHViYjM4XHVjNzkwKSBcdWQ1NWMgXHViYTg1XHViODM5XHVjNzc0IFx1YmEzOFx1YzJlMCBcdWNmNTRcdWI0ZGNcdWM1ZDBcdWMxMWMgXHVjNWVjXHViN2VjIFx1YmM4OCBcdWIwOThcdWM2MjRcdWIyOTQgXHVhY2JkXHVjNmIwXHVjNWQwLCBcdWQ1NmRcdWMwYzEgXHVhYzE5XHVjNzQwIFx1YWMxY1x1YzIxOFx1Yzc1OCBcdWQzMGNcdWI3N2NcdWJiZjhcdWQxMzBcdWI5N2MgXHVhYzE2XHViMjk0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YzBiZFx1Yzc4NVx1ZDU3NFx1YzU3Y1x1ZDU1OFx1YjI5NCBOT1AgXHVhYzFjXHVjMjE4XHVjNzU4IFx1Y2Q1Y1x1YzE4Y1x1YWMxMlx1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMjkyOSIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ik5PUCIsImRlc2NyaXB0aW9uIjoiPHA+TWlya28gcHVyY2hhc2VkIGEgbmV3IG1pY3JvcHJvY2Vzc29yLiBVbmZvcnR1bmF0ZWx5LCBoZSBzb29uIGxlYXJuZWQgdGhhdCBtYW55IG9mIGhpcyBwcm9ncmFtcyB0aGF0IGhlIHdyb3RlIGZvciBoaXMgb2xkIHByb2Nlc3NvciBkaWRuJiMzOTt0IHdvcmsgb24gdGhlIG5ldyBwcm9jZXNzb3IuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkRlZXAgaW5zaWRlIHRoZSB0ZWNobmljYWwgZG9jdW1lbnRhdGlvbiBmb3IgYm90aCBwcm9jZXNzb3JzLCBoZSBmb3VuZCBhbiBleHBsYW5hdGlvbi4gSW4gb3JkZXIgdG8gd29yayBmYXN0ZXIsIHRoZSBuZXcgcHJvY2Vzc29yIGltcG9zZXMgY2VydGFpbiBjb25zdHJhaW50cyBvbiB0aGUgbWFjaGluZSBjb2RlIG9mIHByb2dyYW1zLCBjb25zdHJhaW50cyB0aGF0IG5ldmVyIGV4aXN0ZWQgb24gdGhlIHByZXZpb3VzIG1vZGVsLiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGUgbWFjaGluZSBjb2RlIG9mIGEgcHJvY2Vzc29yIGNvbnNpc3RzIG9mIGluc3RydWN0aW9ucyB0aGF0IGFyZSBleGVjdXRlZCBzZXF1ZW50aWFsbHkuIEVhY2ggaW5zdHJ1Y3Rpb24gdXNlcyBhIGJ5dGUgb2YgbWVtb3J5LiBBbHNvLCBpbnN0cnVjdGlvbnMgY2FuIGhhdmUgemVybyBvciBtb3JlIHBhcmFtZXRlcnMsIGVhY2ggb2Ygd2hpY2ggdXNlcyBhbiBhZGRpdGlvbmFsIGJ5dGUgb2YgbWVtb3J5LiBJbiBtYWNoaW5lIGNvZGUsIHBhcmFtZXRlcnMgaW1tZWRpYXRlbHkgZm9sbG93IGFuIGluc3RydWN0aW9uLiZuYnNwOzxcL3A+XHJcblxyXG48cD5XaGVuIGZvcm1hdHRlZCBhcyB0ZXh0LCBtYWNoaW5lIGNvZGUgaW5zdHJ1Y3Rpb25zIGFyZSB1cHBlcmNhc2UgbGV0dGVycywgd2hpbGUgcGFyYW1ldGVycyBhcmUgbG93ZXJjYXNlIGxldHRlcnMuIEZvciBleGFtcGxlOiZuYnNwOzxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL21hY2hpbmVjb2RlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjQ2cHg7IHdpZHRoOjQ2MXB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoaXMgcHJvZ3JhbSBjb25zaXN0cyBvZiBmb3VyIGluc3RydWN0aW9uczsgdGhlIGZpcnN0IHRha2VzIHRocmVlIHBhcmFtZXRlcnMsIHRoZSBzZWNvbmQgdHdvLCB0aGUgdGhpcmQgbm9uZSBhbmQgdGhlIGZvdXJ0aCB0YWtlcyBmb3VyIHBhcmFtZXRlcnMuIFRoZSBwcm9ncmFtIHVzZXMgMTMgYnl0ZXMgb2YgbWVtb3J5LiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGUgbmV3IHByb2Nlc3NvciBtb2RlbCBmZXRjaGVzIG1lbW9yeSBpbiBmb3VyLWJ5dGUgY2h1bmtzIHNvIGVhY2ggaW5zdHJ1Y3Rpb24gbXVzdCBzdGFydCBhdCBhIG1lbW9yeSBhZGRyZXNzIHRoYXQgaXMgZGl2aXNpYmxlIGJ5IGZvdXIgKHRoZSBmaXJzdCBieXRlIGluIG1lbW9yeSBpcyBhZGRyZXNzIDApLiBUbyBhY2hpZXZlIHRoYXQsIHdlIGNhbiBpbnNlcnQgTk9QIChubyBvcGVyYXRpb24pIGluc3RydWN0aW9ucyBpbnRvIHRoZSBvbGQgcHJvZ3JhbSwgaW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90aGluZyBhbmQgYXJlIG5vdCBsaW1pdGVkIHRvIG1lbW9yeSBsb2NhdGlvbnMgZGl2aXNpYmxlIGJ5IGZvdXIuIFRoZSBhYm92ZSBwcm9ncmFtLCBhZGFwdGVkIHRvIHJ1biBvbiB0aGUgbmV3IHByb2Nlc3NvciwgY2FuIGxvb2sgbGlrZSB0aGlzOiZuYnNwOzxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL21hY2hpbmVjb2RlMi5wbmdcIiBzdHlsZT1cImhlaWdodDo0M3B4OyB3aWR0aDo1OTNweFwiIFwvPjxcL3A+XHJcblxyXG48cD5UaGUgaW5zdHJ1Y3Rpb25zIEEsIEIsIEMgYW5kIEQgYXJlIG5vdyBhdCBtZW1vcnkgbG9jYXRpb25zIDAsIDQsIDggYW5kIDEyLCB3aGljaCBzYXRpc2ZpZXMgdGhlIHByb2Nlc3NvciYjMzk7cyBjb25zdHJhaW50cy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+V3JpdGUgYSBwcm9ncmFtIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc21hbGxlc3QgbnVtYmVyIG9mIE5PUCBpbnN0cnVjdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGluc2VydGVkIGZvciB0aGUgZ2l2ZW4gcHJvZ3JhbSB0byB3b3JrIG9uIHRoZSBuZXcgcHJvY2Vzc29yIG1vZGVsLiZuYnNwOzxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGlucHV0IGNvbnRhaW5zIHRoZSBtYWNoaW5lIGNvZGUgb2YgdGhlIHByb2dyYW0gd3JpdHRlbiBmb3IgdGhlIG9sZCBwcm9jZXNzb3IgbW9kZWwuIFRoZSBwcm9ncmFtIHdpbGwgY29uc2lzdCBvZiBhdCBtb3N0IDIwMCBFbmdsaXNoIGxldHRlcnMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBwcm9ncmFtIHdpbGwgYWx3YXlzIHN0YXJ0IGluIGFuIGluc3RydWN0aW9uIGkuZS4gdGhlIGZpcnN0IGxldHRlciBpbiB0aGUgbWFjaGluZSBjb2RlIHdpbGwgYmUgdXBwZXJjYXNlLiZuYnNwOzxcL3A+XHJcblxyXG48cD5JZiBhbiBpbnN0cnVjdGlvbiBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBtYWNoaW5lIGNvZGUsIGl0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgbnVtYmVyIG9mIHBhcmFtZXRlcnMuJm5ic3A7PFwvcD5cclxuIiwib3V0cHV0IjoiPHA+T3V0cHV0IHRoZSBzbWFsbGVzdCBudW1iZXIgb2YgTk9QIGluc3RydWN0aW9ucyBuZWVkZWQgdG8gYWRhcHQgdGhlIHByb2dyYW0gZm9yIHRoZSBuZXcgcHJvY2Vzc29yLiZuYnNwOzxcL3A+XHJcblxyXG48cD4mbmJzcDs8XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=