시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 29 5 4 50.000%

문제

  시작 곡선 변형 1 변형 2 변형 3 변형 4
H1
H2
H3
H4

힐베르트 곡선은 독일 수학자 다비드 힐베르트가 처음으로 묘사한 연속 프랙탈 공간 채움 곡선이다.

힐베르트 곡선은 가로줄과 세로줄로 이루어져 있는 곡선의 수열 H1, H2, H3, H4, ...을 이용해서 만들 수 있다. 각각의 곡선은 단위 정사각형 [0, 1] × [0, 1]위에 있다.

H1은 (¼, ¾), (¼, ¼), (¾, ¼), (¾, ¾)을 잇는 세 선분으로 이루어져 있다. Hn은 Hn-1을 이용해서 다음 4가지 과정을 통해서 재귀적으로 만들 수 있다.

1. Hn-1의 모든 좌표를 절반으로 줄인다.

2. 곡선을 (0, ½)을 기준으로 반시계 방향으로 돌린 곡선을 더한다.

3. x = ½를 기준으로 대칭시킨 곡선을 더한다.

4. m = ½n+1이라 하자. 각 곡선의 끝점 (½ - m, ½ - m) 와 (½ + m, ½ - m), (m, ½ - m) 와 (m, ½ + m), (1 - m, ½ - m) 와 (1 - m, ½ + m)을 잇는다.

수평선이 주어졌을 때, 곡선과 교차하는 점의 수를 구하는 프로그램을 작성하시오. 예를 들어, 입력 예제 첫번째와 두번째 그림은 다음과 같다.

그림 1 그림 2
H3과 수평선(2/8,7/8)-(7/8,7/8)은 3번 교차한다 H4과 수평선(0/16,1/16)-(16/16,1/16)은 16번 교차한다

Hn의 꼭지점 좌표는 항상 1/2n+1의 홀수 배수이다. 수평선의 끝점 좌표는 항상 1/2n의 배수이다. 따라서, 선분은 항상 Hn의 세로선과 교차한다.

입력

입력은 여러 개의 데이터로 이루어져 있다. 주어지는 데이터는 최대 100개이다. 각 데이터는 다음과 같은 Hn과 수평선(x1/2n, y/2n)-(x2/2n, y/2n)을 나타내는 4개의 수(n x1 x2 y)가 공백으로 구분되어져 있다. (0 < n < 31, x1 < x2) x1, x2, y는 항상 [0, 2n] 범위이다.

마지막 데이터의 다음 줄에는 0이 하나 주어진다.

출력

각 데이터에 대해서 Hn과 주어진 수평선과 교차하는 점의 개수를 출력한다.

예제 입력 1

3 2 7 7
4 0 16 1
30 1 1073741823 1
0

예제 출력 1

3
16
1073741822
W3sicHJvYmxlbV9pZCI6IjQ2NDUiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQ3OTBcdWJjYTBcdWI5NzRcdWQyYjggXHVhY2UxXHVjMTIwIiwiZGVzY3JpcHRpb24iOiI8dGFibGUgY2xhc3M9XCJ0YWJsZVwiIHN0eWxlPVwid2lkdGg6NjcwcHg7XCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdCZuYnNwOzxcL3RoPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ3aWR0aDoxMzBweDt0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuXHRcdFx0XHRcdWMyZGNcdWM3OTEgXHVhY2UxXHVjMTIwPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjEzMHB4O3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdFx1YmNjMFx1ZDYxNSAxPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjEzMHB4O3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdFx1YmNjMFx1ZDYxNSAyPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjEzMHB4O3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdFx1YmNjMFx1ZDYxNSAzPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjEzMHB4O3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdFx1YmNjMFx1ZDYxNSA0PFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGhlYWQ+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxyXG5cdFx0XHRcdEg8c3ViPjE8XC9zdWI+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gxLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMjEuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gyMi5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDIzLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMjQuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5cclxuXHRcdFx0XHRIPHN1Yj4yPFwvc3ViPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMi5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDMxLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMzIuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gzMy5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDM0LmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XCI+XHJcblx0XHRcdFx0SDxzdWI+MzxcL3N1Yj48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDMuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g0MS5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDQyLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNDMuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g0NC5naWZcIiBcLz48XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxyXG5cdFx0XHRcdEg8c3ViPjQ8XC9zdWI+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g0LmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNTEuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g1Mi5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDUzLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNTQuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5cclxuXHRcdWQ3OTBcdWJjYTBcdWI5NzRcdWQyYjggXHVhY2UxXHVjMTIwXHVjNzQwIFx1YjNjNVx1Yzc3YyBcdWMyMThcdWQ1NTlcdWM3OTAgXHViMmU0XHViZTQ0XHViNGRjIFx1ZDc5MFx1YmNhMFx1Yjk3NFx1ZDJiOFx1YWMwMCBcdWNjOThcdWM3NGNcdWM3M2NcdWI4NWMgXHViYjE4XHVjMGFjXHVkNTVjIFx1YzVmMFx1YzE4ZCBcdWQ1MDRcdWI3OTlcdWQwYzggXHVhY2Y1XHVhYzA0IFx1Y2M0NFx1YzZjMCBcdWFjZTFcdWMxMjBcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlxyXG5cdFx1ZDc5MFx1YmNhMFx1Yjk3NFx1ZDJiOCBcdWFjZTFcdWMxMjBcdWM3NDAgXHVhYzAwXHViODVjXHVjOTA0XHVhY2ZjIFx1YzEzOFx1Yjg1Y1x1YzkwNFx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHViMjk0IFx1YWNlMVx1YzEyMFx1Yzc1OCBcdWMyMThcdWM1ZjQgSDxzdWI+MTxcL3N1Yj4sIEg8c3ViPjI8XC9zdWI+LCBIPHN1Yj4zPFwvc3ViPiwgSDxzdWI+NDxcL3N1Yj4sIC4uLlx1Yzc0NCBcdWM3NzRcdWM2YTlcdWQ1NzRcdWMxMWMgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWFjZTFcdWMxMjBcdWM3NDAgXHViMmU4XHVjNzA0IFx1YzgxNVx1YzBhY1x1YWMwMVx1ZDYxNSBbMCwgMV0gJnRpbWVzOyBbMCwgMV1cdWM3MDRcdWM1ZDAgXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cclxuXHRIPHN1Yj4xPFwvc3ViPlx1Yzc0MCAoJmZyYWMxNDssICZmcmFjMzQ7KSwgKCZmcmFjMTQ7LCAmZnJhYzE0OyksICgmZnJhYzM0OywgJmZyYWMxNDspLCAoJmZyYWMzNDssICZmcmFjMzQ7KVx1Yzc0NCBcdWM3ODdcdWIyOTQgXHVjMTM4IFx1YzEyMFx1YmQ4NFx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHViMmU0LiBIPHN1Yj5uPFwvc3ViPlx1Yzc0MCBIPHN1Yj5uLTE8XC9zdWI+XHVjNzQ0IFx1Yzc3NFx1YzZhOVx1ZDU3NFx1YzExYyBcdWIyZTRcdWM3NGMgNFx1YWMwMFx1YzljMCBcdWFjZmNcdWM4MTVcdWM3NDQgXHVkMWI1XHVkNTc0XHVjMTFjIFx1YzdhY1x1YWRjMFx1YzgwMVx1YzczY1x1Yjg1YyBcdWI5Y2NcdWI0ZTQgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0MS4gSDxzdWI+bi0xPFwvc3ViPlx1Yzc1OCBcdWJhYThcdWI0ZTAgXHVjODhjXHVkNDVjXHViOTdjIFx1YzgwOFx1YmMxOFx1YzczY1x1Yjg1YyBcdWM5MDRcdWM3NzhcdWIyZTQuPFwvcD5cclxuPHA+XHJcblx0Mi4gXHVhY2UxXHVjMTIwXHVjNzQ0ICgwLCAmZnJhYzEyOylcdWM3NDQgXHVhZTMwXHVjOTAwXHVjNzNjXHViODVjIFx1YmMxOFx1YzJkY1x1YWNjNCBcdWJjMjlcdWQ1YTVcdWM3M2NcdWI4NWMgXHViM2NjXHViOWIwIFx1YWNlMVx1YzEyMFx1Yzc0NCBcdWIzNTRcdWQ1NWNcdWIyZTQuPFwvcD5cclxuPHA+XHJcblx0My4geCA9ICZmcmFjMTI7XHViOTdjIFx1YWUzMFx1YzkwMFx1YzczY1x1Yjg1YyBcdWIzMDBcdWNlNmRcdWMyZGNcdWQwYTggXHVhY2UxXHVjMTIwXHVjNzQ0IFx1YjM1NFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG48cD5cclxuXHQ0LiBtID0gJmZyYWMxMjs8c3VwPm4rMTxcL3N1cD5cdWM3NzRcdWI3N2MgXHVkNTU4XHVjNzkwLiBcdWFjMDEgXHVhY2UxXHVjMTIwXHVjNzU4IFx1YjA1ZFx1YzgxMCAoJmZyYWMxMjsgLSBtLCAmZnJhYzEyOyAtIG0pIFx1YzY0MCAoJmZyYWMxMjsgKyBtLCAmZnJhYzEyOyAtIG0pLCAobSwgJmZyYWMxMjsgLSBtKSBcdWM2NDAgKG0sICZmcmFjMTI7ICsgbSksICgxIC0gbSwgJmZyYWMxMjsgLSBtKSBcdWM2NDAgKDEgLSBtLCAmZnJhYzEyOyArIG0pXHVjNzQ0IFx1Yzc4N1x1YjI5NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0XHVjMjE4XHVkM2M5XHVjMTIwXHVjNzc0IFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1YWNlMVx1YzEyMFx1YWNmYyBcdWFkNTBcdWNjMjhcdWQ1NThcdWIyOTQgXHVjODEwXHVjNzU4IFx1YzIxOFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4gXHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCwgXHVjNzg1XHViODI1IFx1YzYwOFx1YzgxYyBcdWNjYWJcdWJjODhcdWM5ZjhcdWM2NDAgXHViNDUwXHViYzg4XHVjOWY4IFx1YWRmOFx1YjliY1x1Yzc0MCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiIHN0eWxlPVwid2lkdGg6NzAlO1wiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwid2lkdGg6MzUlO3RleHQtYWxpZ246Y2VudGVyO1wiPlxyXG5cdFx0XHRcdFx1YWRmOFx1YjliYyAxPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cIndpZHRoOjM1JTt0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuXHRcdFx0XHRcdWFkZjhcdWI5YmMgMjxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjtcIj5cclxuXHRcdFx0XHQ8aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gzbGluZS5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+XHJcblx0XHRcdFx0PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNGxpbmUuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+XHJcblx0XHRcdFx0SDxzdWI+MzxcL3N1Yj5cdWFjZmMgXHVjMjE4XHVkM2M5XHVjMTIwKDJcLzgsN1wvOCktKDdcLzgsN1wvOClcdWM3NDAgM1x1YmM4OCBcdWFkNTBcdWNjMjhcdWQ1NWNcdWIyZTQ8XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7XCI+XHJcblx0XHRcdFx0SDxzdWI+NDxcL3N1Yj5cdWFjZmMgXHVjMjE4XHVkM2M5XHVjMTIwKDBcLzE2LDFcLzE2KS0oMTZcLzE2LDFcLzE2KVx1Yzc0MCAxNlx1YmM4OCBcdWFkNTBcdWNjMjhcdWQ1NWNcdWIyZTQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlxyXG5cdEg8c3ViPm48XC9zdWI+XHVjNzU4IFx1YWYyZFx1YzljMFx1YzgxMCBcdWM4OGNcdWQ0NWNcdWIyOTQgXHVkNTZkXHVjMGMxIDFcLzI8c3VwPm4rMTxcL3N1cD5cdWM3NTggXHVkNjQwXHVjMjE4IFx1YmMzMFx1YzIxOFx1Yzc3NFx1YjJlNC4gXHVjMjE4XHVkM2M5XHVjMTIwXHVjNzU4IFx1YjA1ZFx1YzgxMCBcdWM4OGNcdWQ0NWNcdWIyOTQgXHVkNTZkXHVjMGMxIDFcLzI8c3VwPm48XC9zdXA+XHVjNzU4IFx1YmMzMFx1YzIxOFx1Yzc3NFx1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjLCBcdWMxMjBcdWJkODRcdWM3NDAgXHVkNTZkXHVjMGMxIEg8c3ViPm48XC9zdWI+XHVjNzU4IFx1YzEzOFx1Yjg1Y1x1YzEyMFx1YWNmYyBcdWFkNTBcdWNjMjhcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiJcclxuPHA+XHJcblx0XHVjNzg1XHViODI1XHVjNzQwIFx1YzVlY1x1YjdlYyBcdWFjMWNcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwXHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NCBcdWIzNzBcdWM3NzRcdWQxMzBcdWIyOTQgXHVjZDVjXHViMzAwIDEwMFx1YWMxY1x1Yzc3NFx1YjJlNC4gXHVhYzAxIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YjI5NCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHVjNzQwIEg8c3ViPm48XC9zdWI+XHVhY2ZjIFx1YzIxOFx1ZDNjOVx1YzEyMCh4PHN1Yj4xPFwvc3ViPlwvMjxzdXA+bjxcL3N1cD4sIHlcLzI8c3VwPm48XC9zdXA+KS0oeDxzdWI+MjxcL3N1Yj5cLzI8c3VwPm48XC9zdXA+LCB5XC8yPHN1cD5uPFwvc3VwPilcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI0XHViMjk0IDRcdWFjMWNcdWM3NTggXHVjMjE4KG4geDxzdWI+MTxcL3N1Yj4geDxzdWI+MjxcL3N1Yj4geSlcdWFjMDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjIFx1YWQ2Y1x1YmQ4NFx1YjQxOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuICgwICZsdDsgbiAmbHQ7IDMxLCB4PHN1Yj4xPFwvc3ViPiAmbHQ7IHg8c3ViPjI8XC9zdWI+KSB4PHN1Yj4xPFwvc3ViPiwgeDxzdWI+MjxcL3N1Yj4sIHlcdWIyOTQgXHVkNTZkXHVjMGMxIFswLCAyPHN1cD5uPFwvc3VwPl0gXHViYzk0XHVjNzA0XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cclxuXHRcdWI5YzhcdWM5YzBcdWI5YzkgXHViMzcwXHVjNzc0XHVkMTMwXHVjNzU4IFx1YjJlNFx1Yzc0YyBcdWM5MDRcdWM1ZDBcdWIyOTQgMFx1Yzc3NCBcdWQ1NThcdWIwOTggXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlxyXG5cdFx1YWMwMSBcdWIzNzBcdWM3NzRcdWQxMzBcdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjIEg8c3ViPm48XC9zdWI+XHVhY2ZjIFx1YzhmY1x1YzViNFx1YzljNCBcdWMyMThcdWQzYzlcdWMxMjBcdWFjZmMgXHVhZDUwXHVjYzI4XHVkNTU4XHViMjk0IFx1YzgxMFx1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6IjQ2NDUiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJIaWxiZXJ0IEN1cnZlIEludGVyc2VjdGlvbnMiLCJkZXNjcmlwdGlvbiI6Ijx0YWJsZSBjbGFzcz1cInRhYmxlXCIgc3R5bGU9XCJ3aWR0aDo2NzBweFwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjIwcHhcIj4mbmJzcDs8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEzMHB4XCI+U3RhcnRpbmcgY3VydmU8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEzMHB4XCI+VHJhbnNmb3JtYXRpb24gMTxcL3RoPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTMwcHhcIj5UcmFuc2Zvcm1hdGlvbiAyPFwvdGg+XHJcblx0XHRcdDx0aCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoxMzBweFwiPlRyYW5zZm9ybWF0aW9uIDM8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEzMHB4XCI+VHJhbnNmb3JtYXRpb24gNDxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRoZWFkPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246bWlkZGxlXCI+SDxzdWI+MTxcL3N1Yj48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDEuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gyMS5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDIyLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMjMuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gyNC5naWZcIiBcLz48XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGVcIj5IPHN1Yj4yPFwvc3ViPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMi5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDMxLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oMzIuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gzMy5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDM0LmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOm1pZGRsZVwiPkg8c3ViPjM8XC9zdWI+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2gzLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNDEuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g0Mi5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDQzLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNDQuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIHN0eWxlPVwidmVydGljYWwtYWxpZ246bWlkZGxlXCI+SDxzdWI+NDxcL3N1Yj48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDQuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g1MS5naWZcIiBcLz48XC90ZD5cclxuXHRcdFx0PHRkPjxpbWcgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvaDUyLmdpZlwiIFwvPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNTMuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZD48aW1nIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL2g1NC5naWZcIiBcLz48XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPkRhdmlkIEhpbGJlcnQgcHJvdmVkIHRoZSBleGlzdGVuY2Ugb2YgYSB2ZXJ5IGNvdW50ZXItaW50dWl0aXZlIGN1cnZlIHRoYXQgZmlsbHMgc3BhY2UuIFRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIEhpbGJlcnQgY3VydmUgaXMgYmFzZWQgb24gYSBzZXF1ZW5jZSBvZiBjdXJ2ZXMsIEg8c3ViPjE8XC9zdWI+LCBIPHN1Yj4yPFwvc3ViPiwgSDxzdWI+MzxcL3N1Yj4sIEg8c3ViPjQ8XC9zdWI+LCAuLi4gY29tcG9zZWQgb2YgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2VnbWVudHMuIEVhY2ggY3VydmUgbGllcyBpbiB0aGUgdW5pdCBzcXVhcmUgWzAsIDFdICZ0aW1lczsgWzAsIDFdLiBIPHN1Yj4xPFwvc3ViPiBjb250YWlucyBqdXN0IHRocmVlIHNlZ21lbnRzLCBjb25uZWN0aW5nIHRoZSBwb2ludHMgKCZmcmFjMTQ7LCAmZnJhYzM0OykgdG8gKCZmcmFjMTQ7LCAmZnJhYzE0OykgdG8gKCZmcmFjMzQ7LCAmZnJhYzE0OykgdG8gKCZmcmFjMzQ7LCAmZnJhYzM0OykuIEhuIGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgaW4gdGVybXMgb2YgSG4tMSwgZm9yIG4gPSAyLCAzLCAuLi4gYnkgZm91ciB0cmFuc2Zvcm1hdGlvbnM6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+SGFsdmUgYWxsIGNvb3JkaW5hdGVzIGluIEg8c3ViPm4tMTxcL3N1Yj4uPFwvbGk+XHJcblx0PGxpPkFkZCBhIGNvcHkgcm90YXRlZCA5MCBkZWdyZWVzIGNvdW50ZXJjbG9ja3dpc2UgYWJvdXQgdGhlIHBvaW50ICgwLCAmZnJhYzEyOykuPFwvbGk+XHJcblx0PGxpPkFkZCB0aGUgcmVmbGVjdGlvbiBhY3Jvc3MgdGhlIGxpbmUgeCA9ICZmcmFjMTI7LjxcL2xpPlxyXG5cdDxsaT5MZXQgbSA9ICZmcmFjMTI7PHN1cD5uKzE8XC9zdXA+LiBBZGQgc2VnbWVudHMgY29ubmVjdGluZyBlbmRwb2ludHMgKCZmcmFjMTI7IC0gbSwgJmZyYWMxMjsgLSBtKSB0byAoJmZyYWMxMjsgKyBtLCAmZnJhYzEyOyAtIG0pLCAobSwgJmZyYWMxMjsgLSBtKSB0byAobSwgJmZyYWMxMjsgKyBtKSwgYW5kICgxIC0gbSwgJmZyYWMxMjsgLSBtKSB0byAoMSAtIG0sICZmcmFjMTI7ICsgbSkuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+WW91ciBqb2IgaXMgdG8gY291bnQgdGhlIG51bWJlciBvZiBpbnRlcnNlY3Rpb25zIG9mIGhvcml6b250YWwgbGluZSBzZWdtZW50cyB3aXRoIHRoZXNlIGN1cnZlcy4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIEZpZ3VyZXMgMSBhbmQgMiwgd2hpY2ggaWxsdXN0cmF0ZSB0aGUgZmlyc3QgdHdvIGV4YW1wbGUgaW5wdXQgZGF0YSBzZXRzIGJlbG93LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiIHN0eWxlPVwid2lkdGg6NzAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MzUlXCI+RmlndXJlIDE8XC90aD5cclxuXHRcdFx0PHRoIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjM1JVwiPkZpZ3VyZSAyPFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oM2xpbmUuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHRcdDx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9oNGxpbmUuZ2lmXCIgXC8+PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj5TZWdtZW50IGZyb20gKDJcLzgsIDdcLzgpIHRvICg3XC84LCA3XC84KSBjcm9zc2luZyBIPHN1Yj4zPFwvc3ViPiB0aHJlZSB0aW1lcy48XC90ZD5cclxuXHRcdFx0PHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj5TZWdtZW50IGZyb20gKDBcLzE2LCAxXC8xNikgdG8gKDE2XC8xNiwgMVwvMTYpIGNyb3NzaW5nIEg8c3ViPjQ8XC9zdWI+IHNpeHRlZW4gdGltZXMuPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5UaGUgY29vcmRpbmF0ZXMgb2YgdmVydGljZXMgb2YgSG4gYXJlIG9kZCBtdWx0aXBsZXMgb2YgJmZyYWMxMjs8c3VwPm4rMTxcL3N1cD4uIFRoZSBjb29yZGluYXRlcyBvZiBob3Jpem9udGFsIHNlZ21lbnQgZW5kcG9pbnRzIHdpbGwgYWx3YXlzIGJlIG11bHRpcGxlcyBvZiAmZnJhYzEyOzxzdXA+bjxcL3N1cD4uIEhlbmNlIHRoZSBzcGVjaWZpZWQgaG9yaXpvbnRhbCBzZWdtZW50IGNhbiBvbmx5IGNyb3NzIHZlcnRpY2FsIHNlZ21lbnRzIGluIEg8c3ViPm48XC9zdWI+LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+SW5wdXQgY29uc2lzdHMgb2Ygb25lIHRvIDEwMCBkYXRhIHNldHMsIG9uZSBwZXIgbGluZSwgZm9sbG93ZWQgYnkgYSBmaW5hbCBsaW5lIGNvbnRhaW5pbmcgb25seSAwLiBFYWNoIGRhdGEgc2V0IGNvbnNpc3RzIG9mIGZvdXIgaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IGJsYW5rcyBpbiB0aGUgZm9ybTxcL3A+XHJcblxyXG48cHJlPlxyXG5uIHg8c3ViPjE8XC9zdWI+IHg8c3ViPjI8XC9zdWI+IHk8XC9wcmU+XHJcblxyXG48cD53aGljaCByZXByZXNlbnRzIEg8c3ViPm48XC9zdWI+IGFuZCB0aGUgc2VnbWVudCBmcm9tICh4PHN1Yj4xPFwvc3ViPlwvMjxzdXA+bjxcL3N1cD4sIHlcLzI8c3VwPm48XC9zdXA+KSB0byAoeDxzdWI+MjxcL3N1Yj5cLzI8c3VwPm48XC9zdXA+LCB5XC8yPHN1cD5uPFwvc3VwPiksIHdoZXJlIDAgJmx0OyBuICZsdDsgMzEsIHg8c3ViPjE8XC9zdWI+ICZsdDsgeDxzdWI+MjxcL3N1Yj4sIGFuZCBlYWNoIG9mIHg8c3ViPjE8XC9zdWI+LCB4PHN1Yj4yPFwvc3ViPiwgYW5kIHkgbGllIGluIHRoZSByYW5nZSAwIHRvIDI8c3VwPm48XC9zdXA+LCBpbmNsdXNpdmUuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+VGhlIG91dHB1dCBpcyBvbmUgaW50ZWdlciBwZXIgbGluZSBmb3IgZWFjaCBkYXRhIHNldDogdGhlIG51bWJlciBvZiBpbnRlcnNlY3Rpb25zIG9mIEg8c3ViPm48XC9zdWI+IHdpdGggdGhlIHNlZ21lbnQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkNhdXRpb246IEEgYnJ1dGUgZm9yY2Ugc29sdXRpb24gdGhhdCBjb21wdXRlcyBlYWNoIGludGVyc2VjdGlvbiBpbmRpdmlkdWFsbHkgd2lsbCBub3QgZmluaXNoIHdpdGhpbiB0aGUgb25lIG1pbnV0ZSB0aW1lIGxpbWl0LiBBcyB5b3UgY2FuIHNlZSBiZWxvdywgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgYmlsbGlvbiBpbnRlcnNlY3Rpb25zIGZvciBhbnkgZGF0YSBzZXQ8XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=