시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 71 30 20 52.632%

문제

안드로이드는 스마트폰을 잠글때 패턴을 이용한다. 보통 잠근 패턴은 3×3 그리드에 노드 9개로 이루어져 있다. 상현이는 보다 더 높은 보안을 위해 아래와 같은 잠금 패턴을 제공하는 앱을 만드려고 한다.

상현이가 만들 앱의 잠금 패턴의 크기는 2×2부터 m×m까지로 다양하며, 항상 인접한 노드만 연결할 수 있다. 잠금 패턴은 그래프로 나타낼 수 있다. 아래 그림은 2×2, 3×3, 4×4 잠금 패턴을 그래프로 나타낸 것이다. 꼭지점에 해당하는 정점은 총 3개와 연결되어 있고, 나머지 정점은 최대 8개와 연결될 수도 있다. 항상 아래 그림과 같이 인접한 점과만 연결할 수 있다.

잠금 패턴은 항상 스패닝 트리를 이루어야 한다. 스패닝 트리는 그래프 상의 간선의 집합으로, 닫힌 루프를 포함하지 않아야 한다. 또, 임의의 두 점 사이의 경로가 존재해야 하고, 모든 m2 = n개의 정점과 n-1개의 edge로 이루어져 있어야 한다. 잠금 패턴 상에서 스패닝 트리는 여러 가지 경우가 나올 수 있다.

그래프 G의 스패닝 트리의 개수를 구하기 위해 모든 정점에 번호 v1, ..., vn을 붙인다. 이제 행렬 T = [tij]를 아래와 같이 만들 수 있다.

  • i = j인 경우에는 vi와 연결된 간선의 개수
  • i ≠ j인 경우에 vi와 vj 사이에 간선이 있으면 -1, 없으면 0

스패닝 트리의 개수는 다음과 같이 구할 수 있다.

cofactor of aij = (-1)i+jMij 

여기서 Mij는 T에서 i행과 j열을 지워서 얻은 (n-1) × (n-1) 행렬의 행렬식(determinant)이다. T의 모든 cofactor는 같은 결과를 갖는다.

예를 들어, 2×2 패턴의 행렬 T는 다음과 같다.

\[T=\begin{pmatrix} 3 & -1 & -1 & -1 \\ -1 & 3 & -1 & -1 \\  -1&-1&3&-1 \\ -1&-1&-1&3  \end{pmatrix}\]

i=1, j=1로 두고 cofator를 구해보면 아래와 같다.

\[(-1)^{1+1}M_{11} =  \begin{vmatrix}  3& -1&-1 \\  -1&3&-1 \\ -1&-1&3  \end{vmatrix} = 16\]

따라서, 스패닝 트리의 개수는 16개임을 알 수 있다. 

두 번째 예제로 3×3 패턴의 행렬 T는 다음과 같다.

\[T = \begin{pmatrix}  3&-1&0&-1&-1&0&0&0&0 \\ -1&5&-1&-1&-1&-1&0&0&0 \\ 0&-1&3&0&-1&-1&0&0&0 \\ -1&-1&0&5&-1&0&-1&-1&0 \\ -1&-1&-1&-1&8&-1&-1&-1&-1 \\ 0 & -1&-1&0&-1&5&0&-1&-1 \\ 0&0&0&-1&-1&0&3&-1&0 \\ 0&0&0&-1&-1&-1&-1&5&-1 \\ 0&0&0&0&-1&-1&0&-1&3  \end{pmatrix}\]

T의 모든 cofactor는 같은 결과를 갖고, 이 답이 스패닝 트리의 개수가 된다.

m×m 패턴에서 만들 수 있는 스패닝 트리의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 N (1 ≤ N ≤ 5)가 주어진다. 다음 N개 줄에는 테스트케이스 한 줄에 하나씩 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 패턴의 크기 m이 주어진다. (2 ≤ m ≤ 6)

출력

각 테스트 케이스마다 m×m 패턴에서 만들 수 있는 스패닝 트리의 개수를 한 줄에 하나씩 출력한다.

예제 입력 1

1
2

예제 출력 1

16

힌트

m = 2인 경우 아래와 같이 16가지 경우가 있다.

W3sicHJvYmxlbV9pZCI6Ijk2MTQiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM3YTBcdWFlMDggXHVkMzI4XHVkMTM0XHVhY2ZjIFx1YzJhNFx1ZDMyOFx1YjJkZCBcdWQyYjhcdWI5YWMiLCJkZXNjcmlwdGlvbiI6IjxwPlx1YzU0OFx1YjRkY1x1Yjg1Y1x1Yzc3NFx1YjRkY1x1YjI5NCBcdWMyYTRcdWI5YzhcdWQyYjhcdWQzZjBcdWM3NDQgXHVjN2EwXHVhZTAwXHViNTRjIFx1ZDMyOFx1ZDEzNFx1Yzc0NCBcdWM3NzRcdWM2YTlcdWQ1NWNcdWIyZTQuIFx1YmNmNFx1ZDFiNSBcdWM3YTBcdWFkZmMgXHVkMzI4XHVkMTM0XHVjNzQwIDMmdGltZXM7MyBcdWFkZjhcdWI5YWNcdWI0ZGNcdWM1ZDAgXHViMTc4XHViNGRjIDlcdWFjMWNcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gXHVjMGMxXHVkNjA0XHVjNzc0XHViMjk0IFx1YmNmNFx1YjJlNCBcdWIzNTQgXHViMTkyXHVjNzQwIFx1YmNmNFx1YzU0OFx1Yzc0NCBcdWM3MDRcdWQ1NzQgXHVjNTQ0XHViNzk4XHVjNjQwIFx1YWMxOVx1Yzc0MCBcdWM3YTBcdWFlMDggXHVkMzI4XHVkMTM0XHVjNzQ0IFx1YzgxY1x1YWNmNVx1ZDU1OFx1YjI5NCBcdWM1NzFcdWM3NDQgXHViOWNjXHViNGRjXHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHVkNjA0XHVjNzc0XHVhYzAwIFx1YjljY1x1YjRlNCBcdWM1NzFcdWM3NTggXHVjN2EwXHVhZTA4IFx1ZDMyOFx1ZDEzNFx1Yzc1OCBcdWQwNmNcdWFlMzBcdWIyOTQgMiZ0aW1lczsyXHViZDgwXHVkMTMwIG0mdGltZXM7bVx1YWU0Y1x1YzljMFx1Yjg1YyBcdWIyZTRcdWM1OTFcdWQ1NThcdWJhNzAsIFx1ZDU2ZFx1YzBjMSBcdWM3NzhcdWM4MTFcdWQ1NWMgXHViMTc4XHViNGRjXHViOWNjIFx1YzVmMFx1YWNiMFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM3YTBcdWFlMDggXHVkMzI4XHVkMTM0XHVjNzQwIFx1YWRmOFx1Yjc5OFx1ZDUwNFx1Yjg1YyBcdWIwOThcdWQwYzBcdWIwYmMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNTQ0XHViNzk4IFx1YWRmOFx1YjliY1x1Yzc0MCAyJnRpbWVzOzIsIDMmdGltZXM7MywgNCZ0aW1lczs0IFx1YzdhMFx1YWUwOCBcdWQzMjhcdWQxMzRcdWM3NDQgXHVhZGY4XHViNzk4XHVkNTA0XHViODVjIFx1YjA5OFx1ZDBjMFx1YjBiOCBcdWFjODNcdWM3NzRcdWIyZTQuIFx1YWYyZFx1YzljMFx1YzgxMFx1YzVkMCBcdWQ1NzRcdWIyZjlcdWQ1NThcdWIyOTQgXHVjODE1XHVjODEwXHVjNzQwIFx1Y2QxZCAzXHVhYzFjXHVjNjQwIFx1YzVmMFx1YWNiMFx1YjQxOFx1YzViNCBcdWM3ODhcdWFjZTAsIFx1YjA5OFx1YmEzOFx1YzljMCBcdWM4MTVcdWM4MTBcdWM3NDAgXHVjZDVjXHViMzAwIDhcdWFjMWNcdWM2NDAgXHVjNWYwXHVhY2IwXHViNDIwIFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuIFx1ZDU2ZFx1YzBjMSBcdWM1NDRcdWI3OTggXHVhZGY4XHViOWJjXHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWM3NzhcdWM4MTFcdWQ1NWMgXHVjODEwXHVhY2ZjXHViOWNjIFx1YzVmMFx1YWNiMFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL3NlY3VyZXNwYW5uaW5nLnBuZ1wiIFwvPjxcL3A+XHJcblxyXG48cD5cdWM3YTBcdWFlMDggXHVkMzI4XHVkMTM0XHVjNzQwIFx1ZDU2ZFx1YzBjMSBcdWMyYTRcdWQzMjhcdWIyZGQgXHVkMmI4XHViOWFjXHViOTdjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YzJhNFx1ZDMyOFx1YjJkZCBcdWQyYjhcdWI5YWNcdWIyOTQgXHVhZGY4XHViNzk4XHVkNTA0IFx1YzBjMVx1Yzc1OCBcdWFjMDRcdWMxMjBcdWM3NTggXHVjOWQxXHVkNTY5XHVjNzNjXHViODVjLCBcdWIyZWJcdWQ3OGMgXHViOGU4XHVkNTA0XHViOTdjIFx1ZDNlY1x1ZDU2OFx1ZDU1OFx1YzljMCBcdWM1NGFcdWM1NDRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWI2MTAsIFx1Yzc4NFx1Yzc1OFx1Yzc1OCBcdWI0NTAgXHVjODEwIFx1YzBhY1x1Yzc3NFx1Yzc1OCBcdWFjYmRcdWI4NWNcdWFjMDAgXHVjODc0XHVjN2FjXHVkNTc0XHVjNTdjIFx1ZDU1OFx1YWNlMCwgXHViYWE4XHViNGUwIG08c3VwPjI8XC9zdXA+ID0gblx1YWMxY1x1Yzc1OCBcdWM4MTVcdWM4MTBcdWFjZmMgbi0xXHVhYzFjXHVjNzU4IGVkZ2VcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YzdhMFx1YWUwOCBcdWQzMjhcdWQxMzQgXHVjMGMxXHVjNWQwXHVjMTFjIFx1YzJhNFx1ZDMyOFx1YjJkZCBcdWQyYjhcdWI5YWNcdWIyOTQgXHVjNWVjXHViN2VjIFx1YWMwMFx1YzljMCBcdWFjYmRcdWM2YjBcdWFjMDAgXHViMDk4XHVjNjJjIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWRmOFx1Yjc5OFx1ZDUwNCBHXHVjNzU4IFx1YzJhNFx1ZDMyOFx1YjJkZCBcdWQyYjhcdWI5YWNcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1YWQ2Y1x1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQgXHViYWE4XHViNGUwIFx1YzgxNVx1YzgxMFx1YzVkMCBcdWJjODhcdWQ2MzggdjxzdWI+MTxcL3N1Yj4sIC4uLiwgdjxzdWI+bjxcL3N1Yj5cdWM3NDQgXHViZDk5XHVjNzc4XHViMmU0LiBcdWM3NzRcdWM4MWMgXHVkNTg5XHViODJjIFQgPSBbdDxzdWI+aWo8XC9zdWI+XVx1Yjk3YyBcdWM1NDRcdWI3OThcdWM2NDAgXHVhYzE5XHVjNzc0IFx1YjljY1x1YjRlNCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPmkgPSBqXHVjNzc4IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCB2PHN1Yj5pPFwvc3ViPlx1YzY0MCBcdWM1ZjBcdWFjYjBcdWI0MWMgXHVhYzA0XHVjMTIwXHVjNzU4IFx1YWMxY1x1YzIxODxcL2xpPlxyXG5cdDxsaT5pICZuZTsgalx1Yzc3OCBcdWFjYmRcdWM2YjBcdWM1ZDAgdjxzdWI+aTxcL3N1Yj5cdWM2NDAgdjxzdWI+ajxcL3N1Yj4gXHVjMGFjXHVjNzc0XHVjNWQwIFx1YWMwNFx1YzEyMFx1Yzc3NCBcdWM3ODhcdWM3M2NcdWJhNzQgLTEsIFx1YzVjNlx1YzczY1x1YmE3NCAwPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVjMmE0XHVkMzI4XHViMmRkIFx1ZDJiOFx1YjlhY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWFkNmNcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+Y29mYWN0b3Igb2YgYTxzdWI+aWo8XC9zdWI+ID0gKC0xKTxzdXA+aStqPFwvc3VwPk08c3ViPmlqPFwvc3ViPiZuYnNwOzxcL3A+XHJcblxyXG48cD5cdWM1ZWNcdWFlMzBcdWMxMWMgTTxzdWI+aWo8XC9zdWI+XHViMjk0IFRcdWM1ZDBcdWMxMWMgaVx1ZDU4OVx1YWNmYyBqXHVjNWY0XHVjNzQ0IFx1YzljMFx1YzZjY1x1YzExYyBcdWM1YmJcdWM3NDAgKG4tMSkgJnRpbWVzOyAobi0xKSBcdWQ1ODlcdWI4MmNcdWM3NTggXHVkNTg5XHViODJjXHVjMmRkKGRldGVybWluYW50KVx1Yzc3NFx1YjJlNC4gVFx1Yzc1OCBcdWJhYThcdWI0ZTAgY29mYWN0b3JcdWIyOTQgXHVhYzE5XHVjNzQwIFx1YWNiMFx1YWNmY1x1Yjk3YyBcdWFjMTZcdWIyOTRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIDImdGltZXM7MiBcdWQzMjhcdWQxMzRcdWM3NTggXHVkNTg5XHViODJjIFRcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHA+XFxbVD1cXGJlZ2lue3BtYXRyaXh9IDMgJmFtcDsgLTEgJmFtcDsgLTEgJmFtcDsgLTEgXFxcXCAtMSAmYW1wOyAzICZhbXA7IC0xICZhbXA7IC0xIFxcXFwgJm5ic3A7LTEmYW1wOy0xJmFtcDszJmFtcDstMSBcXFxcIC0xJmFtcDstMSZhbXA7LTEmYW1wOzMgJm5ic3A7XFxlbmR7cG1hdHJpeH1cXF08XC9wPlxyXG5cclxuPHA+aT0xLCBqPTFcdWI4NWMgXHViNDUwXHVhY2UwIGNvZmF0b3JcdWI5N2MgXHVhZDZjXHVkNTc0XHViY2Y0XHViYTc0IFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlxcWygtMSleezErMX1NX3sxMX0gPSAmbmJzcDtcXGJlZ2lue3ZtYXRyaXh9ICZuYnNwOzMmYW1wOyAtMSZhbXA7LTEgXFxcXCAmbmJzcDstMSZhbXA7MyZhbXA7LTEgXFxcXCAtMSZhbXA7LTEmYW1wOzMgJm5ic3A7XFxlbmR7dm1hdHJpeH0gPSAxNlxcXTxcL3A+XHJcblxyXG48cD5cdWI1MzBcdWI3N2NcdWMxMWMsIFx1YzJhNFx1ZDMyOFx1YjJkZCBcdWQyYjhcdWI5YWNcdWM3NTggXHVhYzFjXHVjMjE4XHViMjk0IDE2XHVhYzFjXHVjNzg0XHVjNzQ0IFx1YzU0YyBcdWMyMTggXHVjNzg4XHViMmU0LiZuYnNwOzxcL3A+XHJcblxyXG48cD5cdWI0NTAgXHViYzg4XHVjOWY4IFx1YzYwOFx1YzgxY1x1Yjg1YyAzJnRpbWVzOzMgXHVkMzI4XHVkMTM0XHVjNzU4IFx1ZDU4OVx1YjgyYyBUXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlxcW1QgPSBcXGJlZ2lue3BtYXRyaXh9ICZuYnNwOzMmYW1wOy0xJmFtcDswJmFtcDstMSZhbXA7LTEmYW1wOzAmYW1wOzAmYW1wOzAmYW1wOzAgXFxcXCAtMSZhbXA7NSZhbXA7LTEmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOzAmYW1wOzAmYW1wOzAgXFxcXCAwJmFtcDstMSZhbXA7MyZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDswJmFtcDswJmFtcDswIFxcXFwgLTEmYW1wOy0xJmFtcDswJmFtcDs1JmFtcDstMSZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDswIFxcXFwgLTEmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOzgmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOy0xIFxcXFwgMCAmYW1wOyAtMSZhbXA7LTEmYW1wOzAmYW1wOy0xJmFtcDs1JmFtcDswJmFtcDstMSZhbXA7LTEgXFxcXCAwJmFtcDswJmFtcDswJmFtcDstMSZhbXA7LTEmYW1wOzAmYW1wOzMmYW1wOy0xJmFtcDswIFxcXFwgMCZhbXA7MCZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOzUmYW1wOy0xIFxcXFwgMCZhbXA7MCZhbXA7MCZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDswJmFtcDstMSZhbXA7MyAmbmJzcDtcXGVuZHtwbWF0cml4fVxcXTxcL3A+XHJcblxyXG48cD5UXHVjNzU4IFx1YmFhOFx1YjRlMCBjb2ZhY3Rvclx1YjI5NCBcdWFjMTlcdWM3NDAgXHVhY2IwXHVhY2ZjXHViOTdjIFx1YWMxNlx1YWNlMCwgXHVjNzc0IFx1YjJmNVx1Yzc3NCBcdWMyYTRcdWQzMjhcdWIyZGQgXHVkMmI4XHViOWFjXHVjNzU4IFx1YWMxY1x1YzIxOFx1YWMwMCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPm0mdGltZXM7bSBcdWQzMjhcdWQxMzRcdWM1ZDBcdWMxMWMgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjMmE0XHVkMzI4XHViMmRkIFx1ZDJiOFx1YjlhY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVhZDZjXHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVhYzFjXHVjMjE4IE4gKDEgJmxlOyBOICZsZTsgNSlcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWIyZTRcdWM3NGMgTlx1YWMxYyBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVkMTRjXHVjMmE0XHVkMmI4XHVjZjAwXHVjNzc0XHVjMmE0IFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHVkNTU4XHViMDk4XHVjNTI5IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWIyOTQgXHVkNTVjIFx1YzkwNFx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHVhY2UwLCBcdWQzMjhcdWQxMzRcdWM3NTggXHVkMDZjXHVhZTMwIG1cdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoMiAmbGU7IG0gJmxlOyA2KTxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViOWM4XHViMmU0IG0mdGltZXM7bSBcdWQzMjhcdWQxMzRcdWM1ZDBcdWMxMWMgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjMmE0XHVkMzI4XHViMmRkIFx1ZDJiOFx1YjlhY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWI5N2MgXHVkNTVjIFx1YzkwNFx1YzVkMCBcdWQ1NThcdWIwOThcdWM1MjkgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiI8cD5tID0gMlx1Yzc3OCBcdWFjYmRcdWM2YjAgXHVjNTQ0XHViNzk4XHVjNjQwIFx1YWMxOVx1Yzc3NCAxNlx1YWMwMFx1YzljMCBcdWFjYmRcdWM2YjBcdWFjMDAgXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL3NlY3VyZXhtLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjM4OXB4OyB3aWR0aDo1MzNweFwiIFwvPjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiOTYxNCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlNwYW5uaW5nIFRyZWVzIGluIGEgU2VjdXJlIExvY2sgUGF0dGVybiIsImRlc2NyaXB0aW9uIjoiPHA+U2NyZWVuIGxvY2sgb24gYSBzbWFydCBwaG9uZSBjYW4gYmUgc2VjdXJlZCB3aXRoIHBhdHRlcm4uIFVubG9jayBwYXR0ZXJuIG1heSBoYXZlIDkgbm9kZXMgb24gdGhlIDMgeCAzIGdyaWQuIEluIHRoaXMgcHJvYmxlbSwgd2UgbW9kaWZ5IHRoaXMgYXJyYW5nZW1lbnQgc2xpZ2h0bHkgc3VjaCB0aGF0IHRoZSBncmlkIHNpemUgY2FuIGJlIHZhcmllZCBmcm9tIDIgeCAyIHRvIG0geCBtLCBhbmQgb25seSBhIGxpbWl0ZWQgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGJldHdlZW4gYWRqYWNlbnQgbm9kZXMgYXJlIHBlcm1pdHRlZC4gTGV0IGNhbGwgdGhpcyBhIG1vZGlmaWVkIG1lc2ggZ3JhcGggRyBhbmQgViBpcyBhIHNldCBvZiB2ZXJ0aWNlcyAobm9kZXMpIGFuZCBFIGlzIGEgc2V0IG9mIGVkZ2VzIChjb25uZWN0aW9ucykuIEV4YW1wbGVzIG9mIDIgeCAyLCAzIHggMyBhbmQgNCB4IDQgbW9kaWZpZWQgbWVzaCBncmFwaHMgYXJlIGdpdmVuIGluIHRoZSBmaWd1cmVzIGJlbG93LiBOb3RlIHRoYXQgdGhlIGNvcm5lciB2ZXJ0aWNlcyBoYXZlIDMgY29ubmVjdGlvbnMgYXQgbW9zdCwgd2hpbGUgdGhlIG1pZGRsZSB2ZXJ0aWNlcyBjYW4gaGF2ZSB1cCB0byA4IGNvbm5lY3Rpb25zLiBPbmx5IGEgY29ubmVjdGlvbiB0byBhZGphY2VudCB2ZXJ0aWNlcyBpcyBhbGxvd2VkLCBhIGNvbnN0cmFpbnQgb2YgdGhlIHByb2JsZW0uJm5ic3A7PFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvc2VjdXJlc3Bhbm5pbmcucG5nXCIgXC8+PFwvcD5cclxuXHJcbjxwPldlIGRlZmluZSBhIHNwYW5uaW5nIHRyZWUgaW4gb3VyIHByb2JsZW0gYXMgYSBjb2xsZWN0aW9uIG9mIGxpbmVzIGluIHRoZSBncmFwaCBmb3JtaW5nIG5vIGNsb3NlZCBsb29wcywgY29udGFpbmluZyBhIHBhdGggYmV0d2VlbiBhbnkgdHdvIHBvaW50cyBvZiB0aGUgZ3JhcGggY292ZXJpbmcgbTxzdXA+MjxcL3N1cD4gPSBuIHZlcnRpY2VzIGFuZCBuICZuZGFzaDsgMSBlZGdlcy4gU3Bhbm5pbmcgdHJlZXMgaW4gYSBncmFwaCBjYW4gaGF2ZSBtYW55IHNoYXBlcyBvciBwYXR0ZXJucy4mbmJzcDs8XC9wPlxyXG5cclxuPHA+VG8gY2FsY3VsYXRlIGEgbnVtYmVyIG9mIHNwYW5uaW5nIHRyZWVzIGluIEcsIGxldCBHIGJlIGEgZ3JhcGggd2l0aCB2ZXJ0aWNlcyBsYWJlbGVkIHY8c3ViPjE8XC9zdWI+LC4uLix2PHN1Yj5uPFwvc3ViPi4gV2UgZm9ybSBhbiBuIHggbiBtYXRyaXggdHJlZSBUID0gW3Q8c3ViPmlqPFwvc3ViPl0gYXMgZm9sbG93cy4mbmJzcDs8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5JZiBpID0gaiwgdGhlbiB0PHN1Yj5paTxcL3N1Yj4gaXMgdGhlIG51bWJlciBvZiBsaW5lcyB0byB2PHN1Yj5pPFwvc3ViPiBpbiB0aGUgZ3JhcGguJm5ic3A7PFwvbGk+XHJcblx0PGxpPklmIGkgJm5lOyBqLCB0aGVuIHQ8c3ViPmlqPFwvc3ViPiA9IDAgaWYgdGhlcmUgaXMgbm8gbGluZSBiZXR3ZWVuIHY8c3ViPmk8XC9zdWI+IGFuZCB2PHN1Yj5qPFwvc3ViPiBpbiBHLiZuYnNwOzxcL2xpPlxyXG5cdDxsaT5JZiBpICZuZTsgaiwgdGhlbiB0PHN1Yj5pajxcL3N1Yj4gPSAtMSBpZiB0aGVyZSBpcyBhIGxpbmUgYmV0d2VlbiB2PHN1Yj5pPFwvc3ViPiBhbmQgdjxzdWI+ajxcL3N1Yj4gaW4gRy4mbmJzcDs8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5UaGVuLCB0aGUgbnVtYmVyIG9mIHNwYW5uaW5nIHRyZWVzIGluIEcgaXMgZ2l2ZW4gYnkmbmJzcDs8XC9wPlxyXG5cclxuPHA+Y29mYWN0b3Igb2YgYTxzdWI+aWo8XC9zdWI+ID0gKC0xKTxzdXA+aStqPFwvc3VwPk08c3ViPmlqPFwvc3ViPiZuYnNwOzxcL3A+XHJcblxyXG48cD53aGVyZSBNPHN1Yj5pajxcL3N1Yj4gaXMgdGhlIGRldGVybWluYW50IG9mIHRoZSAobi0xKSB4IChuLTEpIG1hdHJpeCBvYnRhaW5lZCBieSBkZWxldGluZyByb3cgaSBhbmQgY29sdW1uIGogb2YgdGhlIG1hdHJpeCB0cmVlIFQuIEV2YWx1YXRlIGFueSBjb2ZhY3RvciBvZiBUIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkV4YW1wbGUgMTogQSBtYXRyaXggdHJlZSBUIG9mIDIgeCAyIG1vZGlmaWVkIG1lc2ggZ3JhcGggaXMmbmJzcDs8XC9wPlxyXG5cclxuPHA+XFxbVD1cXGJlZ2lue3BtYXRyaXh9IDMgJmFtcDsgLTEgJmFtcDsgLTEgJmFtcDsgLTEgXFxcXCAtMSAmYW1wOyAzICZhbXA7IC0xICZhbXA7IC0xIFxcXFwgJm5ic3A7LTEmYW1wOy0xJmFtcDszJmFtcDstMSBcXFxcIC0xJmFtcDstMSZhbXA7LTEmYW1wOzMgJm5ic3A7XFxlbmR7cG1hdHJpeH1cXF08XC9wPlxyXG5cclxuPHA+RXZhbHVhdGUgYW55IGNvZmFjdG9yIG9mIFQuIEZvciBleGFtcGxlLCBjb3ZlcmluZyB1cCByb3cgMSBhbmQgY29sdW1uIDEsIHdlIGhhdmUmbmJzcDs8XC9wPlxyXG5cclxuPHA+XFxbKC0xKV57MSsxfU1fezExfSA9ICZuYnNwO1xcYmVnaW57dm1hdHJpeH0gJm5ic3A7MyZhbXA7IC0xJmFtcDstMSBcXFxcICZuYnNwOy0xJmFtcDszJmFtcDstMSBcXFxcIC0xJmFtcDstMSZhbXA7MyAmbmJzcDtcXGVuZHt2bWF0cml4fSA9IDE2XFxdPFwvcD5cclxuXHJcbjxwPlRoZXJlZm9yZSwgYSBudW1iZXIgb2Ygc3Bhbm5pbmcgdHJlZSBpcyAxNi4mbmJzcDs8XC9wPlxyXG5cclxuPHA+RXhhbXBsZSAyOiBBIG1hdHJpeCB0cmVlIFQgb2YgMyB4IDMgbW9kaWZpZWQgbWVzaCBncmFwaCBpcyZuYnNwOzxcL3A+XHJcblxyXG48cD5cXFtUID0gXFxiZWdpbntwbWF0cml4fSAmbmJzcDszJmFtcDstMSZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDswJmFtcDswJmFtcDswJmFtcDswIFxcXFwgLTEmYW1wOzUmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOy0xJmFtcDswJmFtcDswJmFtcDswIFxcXFwgMCZhbXA7LTEmYW1wOzMmYW1wOzAmYW1wOy0xJmFtcDstMSZhbXA7MCZhbXA7MCZhbXA7MCBcXFxcIC0xJmFtcDstMSZhbXA7MCZhbXA7NSZhbXA7LTEmYW1wOzAmYW1wOy0xJmFtcDstMSZhbXA7MCBcXFxcIC0xJmFtcDstMSZhbXA7LTEmYW1wOy0xJmFtcDs4JmFtcDstMSZhbXA7LTEmYW1wOy0xJmFtcDstMSBcXFxcIDAgJmFtcDsgLTEmYW1wOy0xJmFtcDswJmFtcDstMSZhbXA7NSZhbXA7MCZhbXA7LTEmYW1wOy0xIFxcXFwgMCZhbXA7MCZhbXA7MCZhbXA7LTEmYW1wOy0xJmFtcDswJmFtcDszJmFtcDstMSZhbXA7MCBcXFxcIDAmYW1wOzAmYW1wOzAmYW1wOy0xJmFtcDstMSZhbXA7LTEmYW1wOy0xJmFtcDs1JmFtcDstMSBcXFxcIDAmYW1wOzAmYW1wOzAmYW1wOzAmYW1wOy0xJmFtcDstMSZhbXA7MCZhbXA7LTEmYW1wOzMgJm5ic3A7XFxlbmR7cG1hdHJpeH1cXF08XC9wPlxyXG5cclxuPHA+RXZhbHVhdGUgYW55IGNvZmFjdG9yIG9mIFQgd2lsbCB5aWVsZCB0aGUgc2FtZSB2YWx1ZSB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIHNwYW5uaW5nIHRyZWVzLiZuYnNwOzxcL3A+XHJcblxyXG48cD5IaW50OiBEZXRlcm1pbmFudCBjYWxjdWxhdGlvbiB1c2luZyBlbGVtZW50YXJ5IHJvdyBvcGVyYXRpb24gbWV0aG9kOiZuYnNwOzxcL3A+XHJcblxyXG48cD5UbyBjYWxjdWxhdGUgYSBkZXRlcm1pbmFudCB5b3UgbmVlZCB0byB0cmFuc2Zvcm0gYW4gb3JpZ2luYWwgbWF0cml4IGludG8gYW4gdXBwZXIgdHJpYW5ndWxhciBtYXRyaXggKGFsbCBlbGVtZW50cyBiZWxvdyBtYWluIGRpYWdvbmFsIGFyZSB6ZXJvKS4gUmVkdWNlIHRoZSBtYXRyaXggdG8gcm93IGVjaGVsb24gZm9ybSB1c2luZyBlbGVtZW50YXJ5IHJvdyBvcGVyYXRpb25zIHNvIHRoYXQgYWxsIHRoZSBlbGVtZW50cyBiZWxvdyBkaWFnb25hbCBhcmUgemVyby4gVGhlbiBtdWx0aXBseSB0aGUgbWFpbiBkaWFnb25hbCBlbGVtZW50cyBvZiBhIG1hdHJpeCB0byBnZXQgdGhlIGRldGVybWluYW50IHZhbHVlLiZuYnNwOzxcL3A+XHJcblxyXG48cD5Zb3VyIHRhc2sgaXMgdG8gd3JpdGUgYSBwcm9ncmFtIHRvIGZpbmQgdGhlIG51bWJlciBvZiBzcGFubmluZyB0cmVlcyBmb3IgYSBnaXZlbiBzaXplIG0geCBtIG9mIGEgbW9kaWZpZWQgbWVzaCBncmFwaC4mbmJzcDs8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG9mIHRoZSBpbnB1dCBjb250YWlucyBhbiBpbnRlZ2VyIE4gKDEgJmx0Oz0gTiAmbHQ7PSA1KSBkZW5vdGluZyB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMuIEFmdGVyIHRoYXQgTiB0ZXN0IGNhc2VzIGZvbGxvdy4gRWFjaCB0ZXN0IGNhc2UgY29udGFpbnMgYSBzaW5nbGUgaW50ZWdlciBtICgyICZsdDs9IG0gJmx0Oz0gNikgZGVub3RpbmcgYSBzaXplIG9mIGFuIG0geCBtIG1vZGlmaWVkIG1lc2ggZ3JhcGguJm5ic3A7PFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggdGVzdCBjYXNlLCB5b3VyIHByb2dyYW0gc2hvdWxkIG91dHB1dCB0aGUgbnVtYmVyIG9mIHNwYW5uaW5nIHRyZWVzLCB3aGljaCBpbmRpY2F0ZXMgaG93IG1hbnkgcGF0dGVybnMgb2Ygc3Bhbm5pbmcgdHJlZXMgdGhlcmUgYXJlIGZvciBhIGdpdmVuIG1vZGlmaWVkIG1lc2ggZ3JhcGguIFByaW50IG91dCBvbmUgbGluZSBwZXIgdGVzdCBjYXNlLCByZXNwZWN0aXZlbHkuJm5ic3A7PFwvcD5cclxuIiwiaGludCI6IjxwPkluIHRoZSBhYm92ZSBzYW1wbGUgaW5wdXQsIHRoZXJlIGlzIG9ubHkgMSB0ZXN0IGNhc2UgKE4gPSAxKS4gRm9yIGV4YW1wbGUsIGluIHRoZSBmaXJzdCB0ZXN0IGNhc2UgdGhlcmUgYXJlIDE2IGRpZmZlcmVudCBzcGFubmluZyB0cmVlcyBmb3IgbSA9IDIuIFRoZXNlIHNwYW5uaW5nIHRyZWVzIGFyZSBsaXN0ZWQgYmVsb3cuIE5vdGUgdGhhdCB5b3VyIHByb2dyYW0gaXMgTk9UIHJlcXVpcmVkIHRvIGRyYXcgYWxsIHBvc3NpYmxlIHBhdHRlcm5zLiZuYnNwOzxcL3A+XHJcblxyXG48cD48aW1nIGFsdD1cIlwiIHNyYz1cIlwvdXBsb2FkXC9pbWFnZXNcL3NlY3VyZXhtLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OjM4OXB4OyB3aWR0aDo1MzNweFwiIFwvPjxcL3A+XHJcbiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d