-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathREADME.html
More file actions
145 lines (113 loc) · 427 KB
/
README.html
File metadata and controls
145 lines (113 loc) · 427 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<meta name="author" content="Daniel Kaschek" />
<meta name="date" content="2015-09-29" />
<title>Automated C Code Generation for Use with the deSolve and bvpSolve Packages</title>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4wIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPSIiLnRyaW0sbD17fSxtPSIxLjExLjAiLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IG4uZm4uaW5pdChhLGIpfSxvPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyxwPS9eLW1zLS8scT0vLShbXGRhLXpdKS9naSxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07bi5mbj1uLnByb3RvdHlwZT17anF1ZXJ5Om0sY29uc3RydWN0b3I6bixzZWxlY3RvcjoiIixsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGQuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hPzA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06ZC5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9bi5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGIucHJldk9iamVjdD10aGlzLGIuY29udGV4dD10aGlzLmNvbnRleHQsYn0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBuLmVhY2godGhpcyxhLGIpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4ubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6Zixzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LG4uZXh0ZW5kPW4uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxuLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2k+aDtoKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW2hdKSlmb3IoZCBpbiBlKWE9Z1tkXSxjPWVbZF0sZyE9PWMmJihqJiZjJiYobi5pc1BsYWluT2JqZWN0KGMpfHwoYj1uLmlzQXJyYXkoYykpKT8oYj8oYj0hMSxmPWEmJm4uaXNBcnJheShhKT9hOltdKTpmPWEmJm4uaXNQbGFpbk9iamVjdChhKT9hOnt9LGdbZF09bi5leHRlbmQoaixmLGMpKTp2b2lkIDAhPT1jJiYoZ1tkXT1jKSk7cmV0dXJuIGd9LG4uZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhtK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29wOmZ1bmN0aW9uKCl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1uLnR5cGUoYSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5Ij09PW4udHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEtcGFyc2VGbG9hdChhKT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW4udHlwZShhKXx8YS5ub2RlVHlwZXx8bi5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYobC5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZuLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cyhhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTprJiYhay5jYWxsKCJcdWZlZmZceGEwIik/ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6ay5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9Ziksbi5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omx9KSxuLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHMoYSl7dmFyIGI9YS5sZW5ndGgsYz1uLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6MT09PWEubm9kZVR5cGUmJmI/ITA6ImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYmYi0xIGluIGF9dmFyIHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzPSJzaXp6bGUiKy1uZXcgRGF0ZSx0PWEuZG9jdW1lbnQsdT0wLHY9MCx3PWViKCkseD1lYigpLHk9ZWIoKSx6PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYoaj0hMCksMH0sQT0idW5kZWZpbmVkIixCPTE8PDMxLEM9e30uaGFzT3duUHJvcGVydHksRD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPUQuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmxlbmd0aDtjPmI7YisrKWlmKHRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE09TC5yZXBsYWNlKCJ3IiwidyMiKSxOPSJcXFsiK0srIiooIitMKyIpIitLKyIqKD86KFsqXiR8IX5dPz0pIitLKyIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitNKyIpfCl8KSIrSysiKlxcXSIsTz0iOigiK0wrIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiK04ucmVwbGFjZSgzLDgpKyIpKil8LiopXFwpfCkiLFA9bmV3IFJlZ0V4cCgiXiIrSysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0srIiosIitLKyIqIiksUj1uZXcgUmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9bmV3IFJlZ0V4cCgiPSIrSysiKihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVnRXhwKE8pLFU9bmV3IFJlZ0V4cCgiXiIrTSsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitMLnJlcGxhY2UoInciLCJ3KiIpKyIpIiksQVRUUjpuZXcgUmVnRXhwKCJeIitOKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTyksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89Lyd8XFwvZyxhYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwuKSIsImlnIiksYmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtHLmFwcGx5KEQ9SC5jYWxsKHQuY2hpbGROb2RlcyksdC5jaGlsZE5vZGVzKSxEW3QuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGNiKXtHPXthcHBseTpELmxlbmd0aD9mdW5jdGlvbihhLGIpe0YuYXBwbHkoYSxILmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBkYihhLGIsZCxlKXt2YXIgZixnLGgsaSxqLG0scCxxLHUsdjtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dCkhPT1sJiZrKGIpLGI9Ynx8bCxkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShpPWIubm9kZVR5cGUpJiY5IT09aSlyZXR1cm5bXTtpZihuJiYhZSl7aWYoZj1aLmV4ZWMoYSkpaWYoaD1mWzFdKXtpZig5PT09aSl7aWYoZz1iLmdldEVsZW1lbnRCeUlkKGgpLCFnfHwhZy5wYXJlbnROb2RlKXJldHVybiBkO2lmKGcuaWQ9PT1oKXJldHVybiBkLnB1c2goZyksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGc9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGgpKSYmcihiLGcpJiZnLmlkPT09aClyZXR1cm4gZC5wdXNoKGcpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaD1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaCkpLGR9aWYoYy5xc2EmJighb3x8IW8udGVzdChhKSkpe2lmKHE9cD1zLHU9Yix2PTk9PT1pJiZhLDE9PT1pJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bT1vYihhKSwocD1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/cT1wLnJlcGxhY2UoXywiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscSkscT0iW2lkPSciK3ErIiddICIsaj1tLmxlbmd0aDt3aGlsZShqLS0pbVtqXT1xK3BiKG1bal0pO3U9JC50ZXN0KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiLHY9bS5qb2luKCIsIil9aWYodil0cnl7cmV0dXJuIEcuYXBwbHkoZCx1LnF1ZXJ5U2VsZWN0b3JBbGwodikpLGR9Y2F0Y2godyl7fWZpbmFsbHl7cHx8Yi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4geGIoYS5yZXBsYWNlKFAsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGViKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBmYihhKXtyZXR1cm4gYVtzXT0hMCxhfWZ1bmN0aW9uIGdiKGEpe3ZhciBiPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEIpLSh+YS5zb3VyY2VJbmRleHx8Qik7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGpiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIGtiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBsYihhKXtyZXR1cm4gZmIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsZmIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBtYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1BJiZhfWM9ZGIuc3VwcG9ydD17fSxmPWRiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxrPWRiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dCxnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1sJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KGw9ZSxtPWUuZG9jdW1lbnRFbGVtZW50LG49IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe2soKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2soKX0pKSxjLmF0dHJpYnV0ZXM9Z2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1nYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmZ2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1nYihmdW5jdGlvbihhKXtyZXR1cm4gbS5hcHBlbmRDaGlsZChhKS5pZD1zLCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZShzKS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QSYmbil7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYixiYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGFiLGJiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUEmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09QT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUEmJm4/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scD1bXSxvPVtdLChjLnFzYT1ZLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihnYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCB0PScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLnF1ZXJ5U2VsZWN0b3JBbGwoIlt0Xj0nJ10iKS5sZW5ndGgmJm8ucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fG8ucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8by5wdXNoKCI6Y2hlY2tlZCIpfSksZ2IoZnVuY3Rpb24oYSl7dmFyIGI9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmby5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fG8ucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxvLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHE9bS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG0ubW96TWF0Y2hlc1NlbGVjdG9yfHxtLm9NYXRjaGVzU2VsZWN0b3J8fG0ubXNNYXRjaGVzU2VsZWN0b3IpKSYmZ2IoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1xLmNhbGwoYSwiZGl2IikscS5jYWxsKGEsIltzIT0nJ106eCIpLHAucHVzaCgiIT0iLE8pfSksbz1vLmxlbmd0aCYmbmV3IFJlZ0V4cChvLmpvaW4oInwiKSkscD1wLmxlbmd0aCYmbmV3IFJlZ0V4cChwLmpvaW4oInwiKSksYj1ZLnRlc3QobS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikscj1ifHxZLnRlc3QobS5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSx6PWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaj0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1lfHxhLm93bmVyRG9jdW1lbnQ9PT10JiZyKHQsYSk/LTE6Yj09PWV8fGIub3duZXJEb2N1bWVudD09PXQmJnIodCxiKT8xOmk/SS5jYWxsKGksYSktSS5jYWxsKGksYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGo9ITAsMDt2YXIgYyxkPTAsZj1hLnBhcmVudE5vZGUsZz1iLnBhcmVudE5vZGUsaD1bYV0saz1bYl07aWYoIWZ8fCFnKXJldHVybiBhPT09ZT8tMTpiPT09ZT8xOmY/LTE6Zz8xOmk/SS5jYWxsKGksYSktSS5jYWxsKGksYik6MDtpZihmPT09ZylyZXR1cm4gaWIoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlrLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWtbZF0pZCsrO3JldHVybiBkP2liKGhbZF0sa1tkXSk6aFtkXT09PXQ/LTE6a1tkXT09PXQ/MTowfSxlKTpsfSxkYi5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRiKGEsbnVsbCxudWxsLGIpfSxkYi5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PWwmJmsoYSksYj1iLnJlcGxhY2UoUywiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFufHxwJiZwLnRlc3QoYil8fG8mJm8udGVzdChiKSkpdHJ5e3ZhciBkPXEuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGRiKGIsbCxudWxsLFthXSkubGVuZ3RoPjB9LGRiLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1sJiZrKGEpLHIoYSxiKX0sZGIuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09bCYmayhhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhbik6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhbj9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGRiLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZGIudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYoaj0hYy5kZXRlY3REdXBsaWNhdGVzLGk9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoeiksail7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGk9bnVsbCxhfSxlPWRiLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1kYi5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpmYixtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoYWIsYmIpLGFbM109KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGFiLGJiKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZGIuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZGIuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNV0mJmFbMl07cmV0dXJuIFYuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdJiZ2b2lkIDAhPT1hWzRdP2FbMl09YVs0XTpjJiZULnRlc3QoYykmJihiPW9iKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYixiYikudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9d1thKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ3KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8dHlwZW9mIGEuZ2V0QXR0cmlidXRlIT09QSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZGIuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHQ9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmdCl7az1xW3NdfHwocVtzXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT11JiZqWzFdLG09alswXT09PXUmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3UsbixtXTticmVha319ZWxzZSBpZih0JiYoaj0oYltzXXx8KGJbc109e30pKVthXSkmJmpbMF09PT11KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJih0JiYoKGxbc118fChsW3NdPXt9KSlbYV09W3UsbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVtzXT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9mYihmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SS5jYWxsKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmZiKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1nKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFtzXT9mYihmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSwhYy5wb3AoKX19KSxoYXM6ZmIoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBkYihhLGIpLmxlbmd0aD4wfX0pLGNvbnRhaW5zOmZiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzpmYihmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoYWIsYmIpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1uP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW19LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bC5hY3RpdmVFbGVtZW50JiYoIWwuaGFzRm9jdXN8fGwuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBYLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0OmxiKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpsYihmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6bGIoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM/YytiOmNdfSksZXZlbjpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0OmxiKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6bGIoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPWpiKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPWtiKGIpO2Z1bmN0aW9uIG5iKCl7fW5iLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgbmI7ZnVuY3Rpb24gb2IoYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXhbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1RLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9Ui5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShQLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9VltnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2RiLmVycm9yKGEpOngoYSxpKS5zbGljZSgwKX1mdW5jdGlvbiBwYihhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHFiKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj12Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3UsZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbc118fChiW3NdPXt9KSwoaD1pW2RdKSYmaFswXT09PXUmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiByYihhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiBzYihhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHRiKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbc10mJihkPXRiKGQpKSxlJiYhZVtzXSYmKGU9dGIoZSxmKSksZmIoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8d2IoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6c2IocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXNiKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JLmNhbGwoZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXNiKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB1YihhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saT1nfHxkLnJlbGF0aXZlWyIgIl0saj1nPzE6MCxrPXFiKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saSwhMCksbD1xYihmdW5jdGlvbihhKXtyZXR1cm4gSS5jYWxsKGIsYSk+LTF9LGksITApLG09W2Z1bmN0aW9uKGEsYyxkKXtyZXR1cm4hZyYmKGR8fGMhPT1oKXx8KChiPWMpLm5vZGVUeXBlP2soYSxjLGQpOmwoYSxjLGQpKX1dO2Y+ajtqKyspaWYoYz1kLnJlbGF0aXZlW2Fbal0udHlwZV0pbT1bcWIocmIobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2pdLnR5cGVdLmFwcGx5KG51bGwsYVtqXS5tYXRjaGVzKSxjW3NdKXtmb3IoZT0rK2o7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHRiKGo+MSYmcmIobSksaj4xJiZwYihhLnNsaWNlKDAsai0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbai0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxlPmomJnViKGEuc2xpY2UoaixlKSksZj5lJiZ1YihhPWEuc2xpY2UoZSkpLGY+ZSYmcGIoYSkpfW0ucHVzaChjKX1yZXR1cm4gcmIobSl9ZnVuY3Rpb24gdmIoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxpLGosayl7dmFyIG0sbixvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1oLHY9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdz11Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD12Lmxlbmd0aDtmb3IoayYmKGg9ZyE9PWwmJmcpO3EhPT14JiZudWxsIT0obT12W3FdKTtxKyspe2lmKGUmJm0pe249MDt3aGlsZShvPWFbbisrXSlpZihvKG0sZyxpKSl7ai5wdXNoKG0pO2JyZWFrfWsmJih1PXcpfWMmJigobT0hbyYmbSkmJnAtLSxmJiZyLnB1c2gobSkpfWlmKHArPXEsYyYmcSE9PXApe249MDt3aGlsZShvPWJbbisrXSlvKHIscyxnLGkpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09RS5jYWxsKGopKTtzPXNiKHMpfUcuYXBwbHkoaixzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZkYi51bmlxdWVTb3J0KGopfXJldHVybiBrJiYodT13LGg9dCkscn07cmV0dXJuIGM/ZmIoZik6Zn1nPWRiLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj15W2ErIiAiXTtpZighZil7Ynx8KGI9b2IoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9dWIoYltjXSksZltzXT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9eShhLHZiKGUsZCkpfXJldHVybiBmfTtmdW5jdGlvbiB3YihhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWRiKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB4YihhLGIsZSxmKXt2YXIgaCxpLGosayxsLG09b2IoYSk7aWYoIWYmJjE9PT1tLmxlbmd0aCl7aWYoaT1tWzBdPW1bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJm4mJmQucmVsYXRpdmVbaVsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO2E9YS5zbGljZShpLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1oPVYubmVlZHNDb250ZXh0LnRlc3QoYSk/MDppLmxlbmd0aDt3aGlsZShoLS0pe2lmKGo9aVtoXSxkLnJlbGF0aXZlW2s9ai50eXBlXSlicmVhaztpZigobD1kLmZpbmRba10pJiYoZj1sKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSwkLnRlc3QoaVswXS50eXBlKSYmbWIoYi5wYXJlbnROb2RlKXx8YikpKXtpZihpLnNwbGljZShoLDEpLGE9Zi5sZW5ndGgmJnBiKGkpLCFhKXJldHVybiBHLmFwcGx5KGUsZiksZTticmVha319fXJldHVybiBnKGEsbSkoZixiLCFuLGUsJC50ZXN0KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiKSxlfXJldHVybiBjLnNvcnRTdGFibGU9cy5zcGxpdCgiIikuc29ydCh6KS5qb2luKCIiKT09PXMsYy5kZXRlY3REdXBsaWNhdGVzPSEhaixrKCksYy5zb3J0RGV0YWNoZWQ9Z2IoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihsLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGdiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGhiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmdiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGhiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGdiKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxoYihKLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxkYn0oYSk7bi5maW5kPXQsbi5leHByPXQuc2VsZWN0b3JzLG4uZXhwclsiOiJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlPXQudW5pcXVlU29ydCxuLnRleHQ9dC5nZXRUZXh0LG4uaXNYTUxEb2M9dC5pc1hNTCxuLmNvbnRhaW5zPXQuY29udGFpbnM7dmFyIHU9bi5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx2PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdz0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHgoYSxiLGMpe2lmKG4uaXNGdW5jdGlvbihiKSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYody50ZXN0KGIpKXJldHVybiBuLmZpbHRlcihiLGEsYyk7Yj1uLmZpbHRlcihiLGEpfXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbi5pbkFycmF5KGEsYik+PTAhPT1jfSl9bi5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bi5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTpuLmZpbmQubWF0Y2hlcyhhLG4uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG4uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbi5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bi51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXgodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnUudGVzdChhKT9uKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHksej1hLmRvY3VtZW50LEE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxCPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTpBLmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eSkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2Ygbj9iWzBdOmIsbi5tZXJnZSh0aGlzLG4ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eiwhMCkpLHYudGVzdChjWzFdKSYmbi5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbi5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD16LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHkuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXosdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpuLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB5LnJlYWR5P3kucmVhZHkoYSk6YShuKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxuLm1ha2VBcnJheShhLHRoaXMpKX07Qi5wcm90b3R5cGU9bi5mbix5PW4oeik7dmFyIEM9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sRD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtuLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW4oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG4uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1uKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobi5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXUudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP24oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm4uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9uLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP24uaW5BcnJheSh0aGlzWzBdLG4oYSkpOm4uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobi51bmlxdWUobi5tZXJnZSh0aGlzLmdldCgpLG4oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRShhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBFKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEUoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBuLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBuLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpuLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1uLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihEW2FdfHwoZT1uLnVuaXF1ZShlKSksQy50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBGPS9cUysvZyxHPXt9O2Z1bmN0aW9uIEgoYSl7dmFyIGI9R1thXT17fTtyZXR1cm4gbi5lYWNoKGEubWF0Y2goRil8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/R1thXXx8SChhKTpuLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXtuLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW4udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZuLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bi5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bi5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP24uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbi5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrOm4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbi5yZWFkeVdhaXQ6IW4uaXNSZWFkeSl7aWYoIXouYm9keSlyZXR1cm4gc2V0VGltZW91dChuLnJlYWR5KTtuLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW4ucmVhZHlXYWl0PjB8fChJLnJlc29sdmVXaXRoKHosW25dKSxuLmZuLnRyaWdnZXImJm4oeikudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5IikpfX19KTtmdW5jdGlvbiBKKCl7ei5hZGRFdmVudExpc3RlbmVyPyh6LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEssITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSywhMSkpOih6LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEspLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSykpfWZ1bmN0aW9uIEsoKXsoei5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09ei5yZWFkeVN0YXRlKSYmKEooKSxuLnJlYWR5KCkpfW4ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSSlpZihJPW4uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09ei5yZWFkeVN0YXRlKXNldFRpbWVvdXQobi5yZWFkeSk7ZWxzZSBpZih6LmFkZEV2ZW50TGlzdGVuZXIpei5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixLLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEssITEpO2Vsc2V7ei5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixLKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEspO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ6LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbi5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJLnByb21pc2UoYil9O3ZhciBMPSJ1bmRlZmluZWQiLE07Zm9yKE0gaW4gbihsKSlicmVhaztsLm93bkxhc3Q9IjAiIT09TSxsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbihmdW5jdGlvbigpe3ZhciBhLGIsYz16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07YyYmKGE9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4IixiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYy5hcHBlbmRDaGlsZChhKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09TCYmKGIuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsKGwuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09Yi5vZmZzZXRXaWR0aCkmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoYSksYT1iPW51bGwpfSksZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWwuZGVsZXRlRXhwYW5kbyl7bC5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2wuZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG4uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1uLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE49L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPPS8oW0EtWl0pL2c7ZnVuY3Rpb24gUChhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFEoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW4uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBSKGEsYixkLGUpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW4uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP24uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoO2lmKGsmJmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxuLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0b0pTT046bi5ub29wfSksKCJvYmplY3QiPT10eXBlb2YgYnx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoZT9qW2tdPW4uZXh0ZW5kKGpba10sYik6altrXS5kYXRhPW4uZXh0ZW5kKGpba10uZGF0YSxiKSksZz1qW2tdLGV8fChnLmRhdGF8fChnLmRhdGE9e30pLGc9Zy5kYXRhKSx2b2lkIDAhPT1kJiYoZ1tuLmNhbWVsQ2FzZShiKV09ZCksInN0cmluZyI9PXR5cGVvZiBiPyhmPWdbYl0sbnVsbD09ZiYmKGY9Z1tuLmNhbWVsQ2FzZShiKV0pKTpmPWcsZgp9fWZ1bmN0aW9uIFMoYSxiLGMpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP24uY2FjaGU6YSxoPWY/YVtuLmV4cGFuZG9dOm4uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bi5pc0FycmF5KGIpP2I9Yi5jb25jYXQobi5tYXAoYixuLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1uLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFRKGQpOiFuLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxRKGdbaF0pKSkmJihmP24uY2xlYW5EYXRhKFthXSwhMCk6bC5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bi5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP24uY2FjaGVbYVtuLmV4cGFuZG9dXTphW24uZXhwYW5kb10sISFhJiYhUShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFMoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBSKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIsITApfX0pLG4uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bi5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbi5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhPZigiZGF0YS0iKSYmKGQ9bi5jYW1lbENhc2UoZC5zbGljZSg1KSksUChmLGQsZVtkXSkpO24uX2RhdGEoZiwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gZX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSxiKX0pOmY/UChmLGEsbi5kYXRhKGYsYSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9bi5fZGF0YShhLGIpLGMmJighZHx8bi5pc0FycmF5KGMpP2Q9bi5fZGF0YShhLGIsbi5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIG4uX2RhdGEoYSxjKXx8bi5fZGF0YShhLGMse2VtcHR5Om4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe24uX3JlbW92ZURhdGEoYSxiKyJxdWV1ZSIpLG4uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP24ucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bi5xdWV1ZSh0aGlzLGEsYik7bi5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBdJiZuLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9bi5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1uLl9kYXRhKGZbZ10sYSsicXVldWVIb29rcyIpLGMmJmMuZW1wdHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNlKGIpfX0pO3ZhciBUPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFU9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxWPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1uLmNzcyhhLCJkaXNwbGF5Iil8fCFuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sVz1uLmFjY2Vzcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09bi50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpbi5hY2Nlc3MoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAsbi5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9YixiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKG4oYSksYyl9KSksYikpZm9yKDtpPmg7aCsrKWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNhbGwoYSk6aT9iKGFbMF0sYyk6Zn0sWD0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYz16LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7aWYoYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+IixsLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsbC50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsbC5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxsLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09ei5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxjLnR5cGU9ImNoZWNrYm94IixjLmNoZWNrZWQ9ITAsYS5hcHBlbmRDaGlsZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixsLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYS5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixsLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsbC5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7bC5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09bC5kZWxldGVFeHBhbmRvKXtsLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7bC5kZWxldGVFeHBhbmRvPSExfX1hPWI9Yz1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGIsYyxkPXouY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwobFtiKyJCdWJibGVzIl09YyBpbiBhKXx8KGQuc2V0QXR0cmlidXRlKGMsInQiKSxsW2IrIkJ1YmJsZXMiXT1kLmF0dHJpYnV0ZXNbY10uZXhwYW5kbz09PSExKTtkPW51bGx9KCk7dmFyIFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLFo9L15rZXkvLCQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLF89L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLGFiPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMH1mdW5jdGlvbiBjYigpe3JldHVybiExfWZ1bmN0aW9uIGRiKCl7dHJ5e3JldHVybiB6LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1uLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2Ygbj09PUx8fGEmJm4uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDpuLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEYpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9YWIuZXhlYyhiW2hdKXx8W10sbz1xPWZbMV0scD0oZlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihqPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZT9qLmRlbGVnYXRlVHlwZTpqLmJpbmRUeXBlKXx8byxqPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbD1uLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZuLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxpKSwobT1nW29dKXx8KG09Z1tvXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxqLnNldHVwJiZqLnNldHVwLmNhbGwoYSxkLHAsaykhPT0hMXx8KGEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobyxrLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbyxrKSkpLGouYWRkJiYoai5hZGQuY2FsbChhLGwpLGwuaGFuZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGwpOm0ucHVzaChsKSxuLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uaGFzRGF0YShhKSYmbi5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChGKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPWFiLmV4ZWMoYltqXSl8fFtdLG89cT1oWzFdLHA9KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxvKXtsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxtPWtbb118fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrcC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxpPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWc9bVtmXSwhZSYmcSE9PWcub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWcuZ3VpZHx8aCYmIWgudGVzdChnLm5hbWVzcGFjZSl8fGQmJmQhPT1nLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFnLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksZy5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxnKSk7aSYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEscCxyLmhhbmRsZSkhPT0hMXx8bi5yZW1vdmVFdmVudChhLG8sci5oYW5kbGUpLGRlbGV0ZSBrW29dKX1lbHNlIGZvcihvIGluIGspbi5ldmVudC5yZW1vdmUoYSxvK2Jbal0sYyxkLCEwKTtuLmlzRW1wdHlPYmplY3QoaykmJihkZWxldGUgci5oYW5kbGUsbi5fcmVtb3ZlRGF0YShhLCJldmVudHMiKSl9fSx0cmlnZ2VyOmZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmLGcsaCxpLGssbCxtLG89W2R8fHpdLHA9ai5jYWxsKGIsInR5cGUiKT9iLnR5cGU6YixxPWouY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGg9bD1kPWR8fHosMyE9PWQubm9kZVR5cGUmJjghPT1kLm5vZGVUeXBlJiYhXy50ZXN0KHArbi5ldmVudC50cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+PTAmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQoKSxxLnNvcnQoKSksZz1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsYj1iW24uZXhwYW5kb10/YjpuZXcgbi5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMsYi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5uYW1lc3BhY2VfcmU9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9bYl06bi5tYWtlQXJyYXkoYyxbYl0pLGs9bi5ldmVudC5zcGVjaWFsW3BdfHx7fSxlfHwhay50cmlnZ2VyfHxrLnRyaWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFrLm5vQnViYmxlJiYhbi5pc1dpbmRvdyhkKSl7Zm9yKGk9ay5kZWxlZ2F0ZVR5cGV8fHAsXy50ZXN0KGkrcCl8fChoPWgucGFyZW50Tm9kZSk7aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksbD1oO2w9PT0oZC5vd25lckRvY3VtZW50fHx6KSYmby5wdXNoKGwuZGVmYXVsdFZpZXd8fGwucGFyZW50V2luZG93fHxhKX1tPTA7d2hpbGUoKGg9b1ttKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9bT4xP2k6ay5iaW5kVHlwZXx8cCxmPShuLl9kYXRhKGgsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmbi5fZGF0YShoLCJoYW5kbGUiKSxmJiZmLmFwcGx5KGgsYyksZj1nJiZoW2ddLGYmJmYuYXBwbHkmJm4uYWNjZXB0RGF0YShoKSYmKGIucmVzdWx0PWYuYXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1wLCFlJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFrLl9kZWZhdWx0fHxrLl9kZWZhdWx0LmFwcGx5KG8ucG9wKCksYyk9PT0hMSkmJm4uYWNjZXB0RGF0YShkKSYmZyYmZFtwXSYmIW4uaXNXaW5kb3coZCkpe2w9ZFtnXSxsJiYoZFtnXT1udWxsKSxuLmV2ZW50LnRyaWdnZXJlZD1wO3RyeXtkW3BdKCl9Y2F0Y2gocil7fW4uZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxsJiYoZFtnXT1sKX1yZXR1cm4gYi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXthPW4uZXZlbnQuZml4KGEpO3ZhciBiLGMsZSxmLGcsaD1bXSxpPWQuY2FsbChhcmd1bWVudHMpLGo9KG4uX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sZz0wO3doaWxlKChlPWYuaGFuZGxlcnNbZysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hbWVzcGFjZV9yZXx8YS5uYW1lc3BhY2VfcmUudGVzdChlLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZSxhLmRhdGE9ZS5kYXRhLGM9KChuLmV2ZW50LnNwZWNpYWxbZS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGUuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWMmJihhLnJlc3VsdD1jKT09PSExJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9dGhpcztpPWkucGFyZW50Tm9kZXx8dGhpcylpZigxPT09aS5ub2RlVHlwZSYmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWEudHlwZSkpe2ZvcihlPVtdLGY9MDtoPmY7ZisrKWQ9YltmXSxjPWQuc2VsZWN0b3IrIiAiLHZvaWQgMD09PWVbY10mJihlW2NdPWQubmVlZHNDb250ZXh0P24oYyx0aGlzKS5pbmRleChpKT49MDpuLmZpbmQoYyx0aGlzLG51bGwsW2ldKS5sZW5ndGgpLGVbY10mJmUucHVzaChkKTtlLmxlbmd0aCYmZy5wdXNoKHtlbGVtOmksaGFuZGxlcnM6ZX0pfXJldHVybiBoPGIubGVuZ3RoJiZnLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhpcy5maXhIb29rc1tlXTtnfHwodGhpcy5maXhIb29rc1tlXT1nPSQudGVzdChlKT90aGlzLm1vdXNlSG9va3M6Wi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2JdLGFbY109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1mLnNyY0VsZW1lbnR8fHopLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUtleSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZGU6Yi5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbixnPWIuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGQ9YS50YXJnZXQub3duZXJEb2N1bWVudHx8eixlPWQuZG9jdW1lbnRFbGVtZW50LGM9ZC5ib2R5LGEucGFnZVg9Yi5jbGllbnRYKyhlJiZlLnNjcm9sbExlZnR8fGMmJmMuc2Nyb2xsTGVmdHx8MCktKGUmJmUuY2xpZW50TGVmdHx8YyYmYy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZSYmZS5zY3JvbGxUb3B8fGMmJmMuc2Nyb2xsVG9wfHwwKS0oZSYmZS5jbGllbnRUb3B8fGMmJmMuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmZyYmKGEucmVsYXRlZFRhcmdldD1nPT09YS50YXJnZXQ/Yi50b0VsZW1lbnQ6ZyksYS53aGljaHx8dm9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6MiZmPzM6NCZmPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT1kYigpJiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PWRiKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBuLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bi5leHRlbmQobmV3IG4uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP24uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bi5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD16LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09TCYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbi5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbi5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiYoYS5yZXR1cm5WYWx1ZT09PSExfHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCkpP2JiOmNiKTp0aGlzLnR5cGU9YSxiJiZuLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxuLm5vdygpLHZvaWQodGhpc1tuLmV4cGFuZG9dPSEwKSk6bmV3IG4uRXZlbnQoYSxiKX0sbi5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZlbnRlZDpjYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpjYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpjYixwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1iYixhJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWJiLGEmJihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YmIsdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG4uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7bi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbi5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksbC5zdWJtaXRCdWJibGVzfHwobi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBuLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9bi5ub2RlTmFtZShiLCJpbnB1dCIpfHxuLm5vZGVOYW1lKGIsImJ1dHRvbiIpP2IuZm9ybTp2b2lkIDA7YyYmIW4uX2RhdGEoYywic3VibWl0QnViYmxlcyIpJiYobi5ldmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxuLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmbi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBuLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG4uZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksbC5jaGFuZ2VCdWJibGVzfHwobi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gWS50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRoaXMudHlwZSkmJihuLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLG4uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSxuLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEpOnZvaWQgbi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7WS50ZXN0KGIubm9kZU5hbWUpJiYhbi5fZGF0YShiLCJjaGFuZ2VCdWJibGVzIikmJihuLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG4uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksbi5fZGF0YShiLCJjaGFuZ2VCdWJibGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4gdGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09Yi50eXBlJiYiY2hlY2tib3giIT09Yi50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGwuZm9jdXNpbkJ1YmJsZXN8fG4uZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihhKXtuLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsbi5ldmVudC5maXgoYSksITApfTtuLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9bi5fZGF0YShkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX2RhdGEoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYiktMTtlP24uX2RhdGEoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxuLl9yZW1vdmVEYXRhKGQsYikpfX19KSxuLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZiBpbiBhKXRoaXMub24oZixiLGMsYVtmXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIsYz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKTooZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWNiO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1lJiYoZz1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4oKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9bi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVPYmosbihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09PSExJiYoYz1jYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC5yZW1vdmUodGhpcyxhLGMsYil9KX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtyZXR1cm4gYz9uLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApOnZvaWQgMH19KTtmdW5jdGlvbiBlYihhKXt2YXIgYj1mYi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxlbWVudChiLnBvcCgpKTtyZXR1cm4gY312YXIgZmI9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLGdiPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csaGI9bmV3IFJlZ0V4cCgiPCg/OiIrZmIrIilbXFxzLz5dIiwiaSIpLGliPS9eXHMrLyxqYj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGtiPS88KFtcdzpdKykvLGxiPS88dGJvZHkvaSxtYj0vPHwmIz9cdys7LyxuYj0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLG9iPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHBiPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxxYj0vXnRydWVcLyguKikvLHJiPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxzYj17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6bC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LHRiPWViKHopLHViPXRiLmFwcGVuZENoaWxkKHouY3JlYXRlRWxlbWVudCgiZGl2IikpO3NiLm9wdGdyb3VwPXNiLm9wdGlvbixzYi50Ym9keT1zYi50Zm9vdD1zYi5jb2xncm91cD1zYi5jYXB0aW9uPXNiLnRoZWFkLHNiLnRoPXNiLnRkO2Z1bmN0aW9uIHZiKGEsYil7dmFyIGMsZCxlPTAsZj10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PUw/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPT1MP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG4ubm9kZU5hbWUoZCxiKT9mLnB1c2goZCk6bi5tZXJnZShmLHZiKGQsYikpO3JldHVybiB2b2lkIDA9PT1ifHxiJiZuLm5vZGVOYW1lKGEsYik/bi5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiB3YihhKXtYLnRlc3QoYS50eXBlKSYmKGEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkKX1mdW5jdGlvbiB4YihhLGIpe3JldHVybiBuLm5vZGVOYW1lKGEsInRhYmxlIikmJm4ubm9kZU5hbWUoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24geWIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PW4uZmluZC5hdHRyKGEsInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIHpiKGEpe3ZhciBiPXFiLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gQWIoYSxiKXtmb3IodmFyIGMsZD0wO251bGwhPShjPWFbZF0pO2QrKyluLl9kYXRhKGMsImdsb2JhbEV2YWwiLCFifHxuLl9kYXRhKGJbZF0sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gQmIoYSxiKXtpZigxPT09Yi5ub2RlVHlwZSYmbi5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZj1uLl9kYXRhKGEpLGc9bi5fZGF0YShiLGYpLGg9Zi5ldmVudHM7aWYoaCl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihjIGluIGgpZm9yKGQ9MCxlPWhbY10ubGVuZ3RoO2U+ZDtkKyspbi5ldmVudC5hZGQoYixjLGhbY11bZF0pfWcuZGF0YSYmKGcuZGF0YT1uLmV4dGVuZCh7fSxnLmRhdGEpKX19ZnVuY3Rpb24gQ2IoYSxiKXt2YXIgYyxkLGU7aWYoMT09PWIubm9kZVR5cGUpe2lmKGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCFsLm5vQ2xvbmVFdmVudCYmYltuLmV4cGFuZG9dKXtlPW4uX2RhdGEoYik7Zm9yKGQgaW4gZS5ldmVudHMpbi5yZW1vdmVFdmVudChiLGQsZS5oYW5kbGUpO2IucmVtb3ZlQXR0cmlidXRlKG4uZXhwYW5kbyl9InNjcmlwdCI9PT1jJiZiLnRleHQhPT1hLnRleHQ/KHliKGIpLnRleHQ9YS50ZXh0LHpiKGIpKToib2JqZWN0Ij09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MKSxsLmh0bWw1Q2xvbmUmJmEuaW5uZXJIVE1MJiYhbi50cmltKGIuaW5uZXJIVE1MKSYmKGIuaW5uZXJIVE1MPWEuaW5uZXJIVE1MKSk6ImlucHV0Ij09PWMmJlgudGVzdChhLnR5cGUpPyhiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQsYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpKToib3B0aW9uIj09PWM/Yi5kZWZhdWx0U2VsZWN0ZWQ9Yi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19bi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk9bi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYobC5odG1sNUNsb25lfHxuLmlzWE1MRG9jKGEpfHwhaGIudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2Y9YS5jbG9uZU5vZGUoITApOih1Yi5pbm5lckhUTUw9YS5vdXRlckhUTUwsdWIucmVtb3ZlQ2hpbGQoZj11Yi5maXJzdENoaWxkKSksIShsLm5vQ2xvbmVFdmVudCYmbC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGQ9dmIoZiksaD12YihhKSxnPTA7bnVsbCE9KGU9aFtnXSk7KytnKWRbZ10mJkNiKGUsZFtnXSk7aWYoYilpZihjKWZvcihoPWh8fHZiKGEpLGQ9ZHx8dmIoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylCYihlLGRbZ10pO2Vsc2UgQmIoYSxmKTtyZXR1cm4gZD12YihmLCJzY3JpcHQiKSxkLmxlbmd0aD4wJiZBYihkLCFpJiZ2YihhLCJzY3JpcHQiKSksZD1oPWU9bnVsbCxmfSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZSxmLGcsaCxpLGosayxtPWEubGVuZ3RoLG89ZWIoYikscD1bXSxxPTA7bT5xO3ErKylpZihmPWFbcV0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT1uLnR5cGUoZikpbi5tZXJnZShwLGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobWIudGVzdChmKSl7aD1ofHxvLmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGk9KGtiLmV4ZWMoZil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksaz1zYltpXXx8c2IuX2RlZmF1bHQsaC5pbm5lckhUTUw9a1sxXStmLnJlcGxhY2UoamIsIjwkMT48LyQyPiIpK2tbMl0sZT1rWzBdO3doaWxlKGUtLSloPWgubGFzdENoaWxkO2lmKCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGYpJiZwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShpYi5leGVjKGYpWzBdKSksIWwudGJvZHkpe2Y9InRhYmxlIiE9PWl8fGxiLnRlc3QoZik/Ijx0YWJsZT4iIT09a1sxXXx8bGIudGVzdChmKT8wOmg6aC5maXJzdENoaWxkLGU9ZiYmZi5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShlLS0pbi5ub2RlTmFtZShqPWYuY2hpbGROb2Rlc1tlXSwidGJvZHkiKSYmIWouY2hpbGROb2Rlcy5sZW5ndGgmJmYucmVtb3ZlQ2hpbGQoail9bi5tZXJnZShwLGguY2hpbGROb2RlcyksaC50ZXh0Q29udGVudD0iIjt3aGlsZShoLmZpcnN0Q2hpbGQpaC5yZW1vdmVDaGlsZChoLmZpcnN0Q2hpbGQpO2g9by5sYXN0Q2hpbGR9ZWxzZSBwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7aCYmby5yZW1vdmVDaGlsZChoKSxsLmFwcGVuZENoZWNrZWR8fG4uZ3JlcCh2YihwLCJpbnB1dCIpLHdiKSxxPTA7d2hpbGUoZj1wW3ErK10paWYoKCFkfHwtMT09PW4uaW5BcnJheShmLGQpKSYmKGc9bi5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksaD12YihvLmFwcGVuZENoaWxkKGYpLCJzY3JpcHQiKSxnJiZBYihoKSxjKSl7ZT0wO3doaWxlKGY9aFtlKytdKXBiLnRlc3QoZi50eXBlfHwiIikmJmMucHVzaChmKX1yZXR1cm4gaD1udWxsLG99LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlLGYsZyxoPTAsaT1uLmV4cGFuZG8saj1uLmNhY2hlLGs9bC5kZWxldGVFeHBhbmRvLG09bi5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8bi5hY2NlcHREYXRhKGQpKSYmKGY9ZFtpXSxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50cyltW2VdP24uZXZlbnQucmVtb3ZlKGQsZSk6bi5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pbZl0mJihkZWxldGUgaltmXSxrP2RlbGV0ZSBkW2ldOnR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZSE9PUw/ZC5yZW1vdmVBdHRyaWJ1dGUoaSk6ZFtpXT1udWxsLGMucHVzaChmKSl9fX0pLG4uZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/bi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8eikuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9eGIodGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj14Yih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPWE/bi5maWx0ZXIoYSx0aGlzKTp0aGlzLGU9MDtudWxsIT0oYz1kW2VdKTtlKyspYnx8MSE9PWMubm9kZVR5cGV8fG4uY2xlYW5EYXRhKHZiKGMpKSxjLnBhcmVudE5vZGUmJihiJiZuLmNvbnRhaW5zKGMub3duZXJEb2N1bWVudCxjKSYmQWIodmIoYywic2NyaXB0IikpLGMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZuLmNsZWFuRGF0YSh2YihhLCExKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMmJm4ubm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAsZD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09Yi5ub2RlVHlwZT9iLmlubmVySFRNTC5yZXBsYWNlKGdiLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fG5iLnRlc3QoYSl8fCFsLmh0bWxTZXJpYWxpemUmJmhiLnRlc3QoYSl8fCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGEpfHxzYlsoa2IuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pKXthPWEucmVwbGFjZShqYiwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYobi5jbGVhbkRhdGEodmIoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGIpe2E9dGhpcy5wYXJlbnROb2RlLG4uY2xlYW5EYXRhKHZiKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEubGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1lLmFwcGx5KFtdLGEpO3ZhciBjLGQsZixnLGgsaSxqPTAsaz10aGlzLmxlbmd0aCxtPXRoaXMsbz1rLTEscD1hWzBdLHE9bi5pc0Z1bmN0aW9uKHApO2lmKHF8fGs+MSYmInN0cmluZyI9PXR5cGVvZiBwJiYhbC5jaGVja0Nsb25lJiZvYi50ZXN0KHApKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9bS5lcShjKTtxJiYoYVswXT1wLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIpfSk7aWYoayYmKGk9bi5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGM9aS5maXJzdENoaWxkLDE9PT1pLmNoaWxkTm9kZXMubGVuZ3RoJiYoaT1jKSxjKSl7Zm9yKGc9bi5tYXAodmIoaSwic2NyaXB0IikseWIpLGY9Zy5sZW5ndGg7az5qO2orKylkPWksaiE9PW8mJihkPW4uY2xvbmUoZCwhMCwhMCksZiYmbi5tZXJnZShnLHZiKGQsInNjcmlwdCIpKSksYi5jYWxsKHRoaXNbal0sZCxqKTtpZihmKWZvcihoPWdbZy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxuLm1hcChnLHpiKSxqPTA7Zj5qO2orKylkPWdbal0scGIudGVzdChkLnR5cGV8fCIiKSYmIW4uX2RhdGEoZCwiZ2xvYmFsRXZhbCIpJiZuLmNvbnRhaW5zKGgsZCkmJihkLnNyYz9uLl9ldmFsVXJsJiZuLl9ldmFsVXJsKGQuc3JjKTpuLmdsb2JhbEV2YWwoKGQudGV4dHx8ZC50ZXh0Q29udGVudHx8ZC5pbm5lckhUTUx8fCIiKS5yZXBsYWNlKHJiLCIiKSkpO2k9Yz1udWxsfXJldHVybiB0aGlzfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZz1uKGEpLGg9Zy5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihnW2RdKVtiXShjKSxmLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBEYixFYj17fTtmdW5jdGlvbiBGYihiLGMpe3ZhciBkPW4oYy5jcmVhdGVFbGVtZW50KGIpKS5hcHBlbmRUbyhjLmJvZHkpLGU9YS5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZT9hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlKGRbMF0pLmRpc3BsYXk6bi5jc3MoZFswXSwiZGlzcGxheSIpO3JldHVybiBkLmRldGFjaCgpLGV9ZnVuY3Rpb24gR2IoYSl7dmFyIGI9eixjPUViW2FdO3JldHVybiBjfHwoYz1GYihhLGIpLCJub25lIiE9PWMmJmN8fChEYj0oRGJ8fG4oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9KERiWzBdLmNvbnRlbnRXaW5kb3d8fERiWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsYi53cml0ZSgpLGIuY2xvc2UoKSxjPUZiKGEsYiksRGIuZGV0YWNoKCkpLEViW2FdPWMpLGN9IWZ1bmN0aW9uKCl7dmFyIGEsYixjPXouY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowIjtjLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxhLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsbC5vcGFjaXR5PS9eMC41Ly50ZXN0KGEuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hdD0hIWEuc3R5bGUuY3NzRmxvYXQsYy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Yy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxhPWM9bnVsbCxsLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXt2YXIgYSxjLGUsZjtpZihudWxsPT1iKXtpZihhPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYSlyZXR1cm47Zj0iYm9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi05OTk5cHgiLGM9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYS5hcHBlbmRDaGlsZChjKS5hcHBlbmRDaGlsZChlKSxiPSExLHR5cGVvZiBlLnN0eWxlLnpvb20hPT1MJiYoZS5zdHlsZS5jc3NUZXh0PWQrIjt3aWR0aDoxcHg7cGFkZGluZzoxcHg7em9vbToxIixlLmlubmVySFRNTD0iPGRpdj48L2Rpdj4iLGUuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4IixiPTMhPT1lLm9mZnNldFdpZHRoKSxhLnJlbW92ZUNoaWxkKGMpLGE9Yz1lPW51bGx9cmV0dXJuIGJ9fSgpO3ZhciBIYj0vXm1hcmdpbi8sSWI9bmV3IFJlZ0V4cCgiXigiK1QrIikoPyFweClbYS16JV0rJCIsImkiKSxKYixLYixMYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhKYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sS2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bi5zdHlsZShhLGIpKSxJYi50ZXN0KGcpJiZIYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnouZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEpiPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sS2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSWIudGVzdChnKSYmIUxiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBNYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxpPSJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweCIsaj0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowIjtoLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixiPWguZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxiLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsbC5vcGFjaXR5PS9eMC41Ly50ZXN0KGIuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hdD0hIWIuc3R5bGUuY3NzRmxvYXQsaC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGguY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09aC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxiPWg9bnVsbCxuLmV4dGVuZChsLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtpZihudWxsIT1jKXJldHVybiBjO3ZhciBhLGIsZCxlPXouY3JlYXRlRWxlbWVudCgiZGl2IiksZj16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aWYoZilyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxlLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYS5zdHlsZS5jc3NUZXh0PWksZi5hcHBlbmRDaGlsZChhKS5hcHBlbmRDaGlsZChlKSxlLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsYj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGJbMF0uc3R5bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSIsZD0wPT09YlswXS5vZmZzZXRIZWlnaHQsYlswXS5zdHlsZS5kaXNwbGF5PSIiLGJbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYz1kJiYwPT09YlswXS5vZmZzZXRIZWlnaHQsZi5yZW1vdmVDaGlsZChhKSxlPWY9bnVsbCxjfSxib3hTaXppbmc6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZCYmaygpLGR9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmsoKSxlfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmsoKSxmfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIGIsYyxkLGU7aWYobnVsbD09ZyYmYS5nZXRDb21wdXRlZFN0eWxlKXtpZihiPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYilyZXR1cm47Yz16LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLnN0eWxlLmNzc1RleHQ9aSxiLmFwcGVuZENoaWxkKGMpLmFwcGVuZENoaWxkKGQpLGU9ZC5hcHBlbmRDaGlsZCh6LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxlLnN0eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PWosZS5zdHlsZS5tYXJnaW5SaWdodD1lLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGIucmVtb3ZlQ2hpbGQoYyl9cmV0dXJuIGd9fSk7ZnVuY3Rpb24gaygpe3ZhciBiLGMsaD16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aCYmKGI9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zdHlsZS5jc3NUZXh0PWksaC5hcHBlbmRDaGlsZChiKS5hcHBlbmRDaGlsZChjKSxjLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7dG9wOjElIixuLnN3YXAoaCxudWxsIT1oLnN0eWxlLnpvb20/e3pvb206MX06e30sZnVuY3Rpb24oKXtkPTQ9PT1jLm9mZnNldFdpZHRofSksZT0hMCxmPSExLGc9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYoZj0iMSUiIT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShjLG51bGwpfHx7fSkudG9wLGU9IjRweCI9PT0oYS5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoKSxoLnJlbW92ZUNoaWxkKGIpLGM9aD1udWxsKX19KCksbi5zd2FwPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTt2YXIgTmI9L2FscGhhXChbXildKlwpL2ksT2I9L29wYWNpdHlccyo9XHMqKFteKV0qKS8sUGI9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFFiPW5ldyBSZWdFeHAoIl4oIitUKyIpKC4qKSQiLCJpIiksUmI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIitUKyIpIiwiaSIpLFNiPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYj17bGV0dGVyU3BhY2luZzowLGZvbnRXZWlnaHQ6NDAwfSxVYj1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFZiKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1VYi5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VWJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gV2IoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bi5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlYoZCkmJihmW2ddPW4uX2RhdGEoZCwib2xkZGlzcGxheSIsR2IoZC5ub2RlTmFtZSkpKSk6ZltnXXx8KGU9VihkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZuLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFhiKGEsYixjKXt2YXIgZD1RYi5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFliKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1uLmNzcyhhLGMrVVtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW4uY3NzKGEsImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW4uY3NzKGEsImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWmIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUpiKGEpLGc9bC5ib3hTaXppbmcoKSYmImJvcmRlci1ib3giPT09bi5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUtiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSWIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihsLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWWIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW4uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9S2IoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6bC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1WYihpLGgpKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVJiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobi5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG4uY3NzTnVtYmVyW2hdfHwoYys9InB4IiksbC5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09IiIsaVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYik7cmV0dXJuIGI9bi5jc3NQcm9wc1toXXx8KG4uY3NzUHJvcHNbaF09VmIoYS5zdHlsZSxoKSksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9S2IoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gVGImJihmPVRiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG4uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz8wPT09YS5vZmZzZXRXaWR0aCYmUGIudGVzdChuLmNzcyhhLCJkaXNwbGF5IikpP24uc3dhcChhLFNiLGZ1bmN0aW9uKCl7cmV0dXJuIFpiKGEsYixkKX0pOlpiKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSmIoYSk7cmV0dXJuIFhiKGEsYyxkP1liKGEsYixkLGwuYm94U2l6aW5nKCkmJiJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLGwub3BhY2l0eXx8KG4uY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT8uMDEqcGFyc2VGbG9hdChSZWdFeHAuJDEpKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bGUsZT1uLmlzTnVtZXJpYyhiKT8iYWxwaGEob3BhY2l0eT0iKzEwMCpiKyIpIjoiIixmPWQmJmQuZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy56b29tPTEsKGI+PTF8fCIiPT09YikmJiIiPT09bi50cmltKGYucmVwbGFjZShOYiwiIikpJiZjLnJlbW92ZUF0dHJpYnV0ZSYmKGMucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwiIj09PWJ8fGQmJiFkLmZpbHRlcil8fChjLmZpbHRlcj1OYi50ZXN0KGYpP2YucmVwbGFjZShOYixlKTpmKyIgIitlKX19KSxuLmNzc0hvb2tzLm1hcmdpblJpZ2h0PU1iKGwucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihhLGIpe3JldHVybiBiP24uc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxLYixbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSksbi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVVtkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxIYi50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1YYil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPUpiKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uLnN0eWxlKGEsYixjKTpuLmNzcyhhLGIpCn0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gV2IodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gV2IodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Vih0aGlzKT9uKHRoaXMpLnNob3coKTpuKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uICRiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyAkYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW4uVHdlZW49JGIsJGIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPSRiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTokYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz0kYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTokYi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSwkYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9JGIucHJvdG90eXBlLCRiLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVsbD09YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2EucHJvcF0/KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVthLnByb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV18fG4uY3NzSG9va3NbYS5wcm9wXSk/bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0sJGIucHJvcEhvb2tzLnNjcm9sbFRvcD0kYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fSxuLmZ4PSRiLnByb3RvdHlwZS5pbml0LG4uZnguc3RlcD17fTt2YXIgX2IsYWMsYmM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNjPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIitUKyIpKFthLXolXSopJCIsImkiKSxkYz0vcXVldWVIb29rcyQvLGVjPVtqY10sZmM9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigpLGU9Y2MuZXhlYyhiKSxmPWUmJmVbM118fChuLmNzc051bWJlclthXT8iIjoicHgiKSxnPShuLmNzc051bWJlclthXXx8InB4IiE9PWYmJitkKSYmY2MuZXhlYyhuLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIwO2lmKGcmJmdbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41IixnLz1oLG4uc3R5bGUoYy5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgmJi0taSl9cmV0dXJuIGUmJihnPWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/ZysoZVsxXSsxKSplWzJdOitlWzJdKSxjfV19O2Z1bmN0aW9uIGdjKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtfYj12b2lkIDB9KSxfYj1uLm5vdygpfWZ1bmN0aW9uIGhjKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VVtlXSxkWyJtYXJnaW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxkfWZ1bmN0aW9uIGljKGEsYixjKXtmb3IodmFyIGQsZT0oZmNbYl18fFtdKS5jb25jYXQoZmNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gamMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hLnN0eWxlLHE9YS5ub2RlVHlwZSYmVihhKSxyPW4uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bi5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sbi5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1uLmNzcyhhLCJkaXNwbGF5Iiksaz1HYihhLm5vZGVOYW1lKSwibm9uZSI9PT1qJiYoaj1rKSwiaW5saW5lIj09PWomJiJub25lIj09PW4uY3NzKGEsImZsb2F0IikmJihsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09az9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixsLnNocmlua1dyYXBCbG9ja3MoKXx8bS5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLGJjLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1pZighbi5pc0VtcHR5T2JqZWN0KG8pKXtyPyJoaWRkZW4iaW4gciYmKHE9ci5oaWRkZW4pOnI9bi5fZGF0YShhLCJmeHNob3ciLHt9KSxmJiYoci5oaWRkZW49IXEpLHE/bihhKS5zaG93KCk6bS5kb25lKGZ1bmN0aW9uKCl7bihhKS5oaWRlKCl9KSxtLmRvbmUoZnVuY3Rpb24oKXt2YXIgYjtuLl9yZW1vdmVEYXRhKGEsImZ4c2hvdyIpO2ZvcihiIGluIG8pbi5zdHlsZShhLGIsb1tiXSl9KTtmb3IoZCBpbiBvKWc9aWMocT9yW2RdOjAsZCxtKSxkIGluIHJ8fChyW2RdPWcuc3RhcnQscSYmKGcuZW5kPWcuc3RhcnQsZy5zdGFydD0id2lkdGgiPT09ZHx8ImhlaWdodCI9PT1kPzE6MCkpfX1mdW5jdGlvbiBrYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPW4uY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sbi5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSksZz1uLmNzc0hvb2tzW2RdLGcmJiJleHBhbmQiaW4gZyl7Zj1nLmV4cGFuZChmKSxkZWxldGUgYVtkXTtmb3IoYyBpbiBmKWMgaW4gYXx8KGFbY109ZltjXSxiW2NdPWUpfWVsc2UgYltkXT1lfWZ1bmN0aW9uIGxjKGEsYixjKXt2YXIgZCxlLGY9MCxnPWVjLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPV9ifHxnYygpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6X2J8fGdjKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oYixjKXt2YXIgZD1uLlR3ZWVuKGEsai5vcHRzLGIsYyxqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXXx8ai5vcHRzLmVhc2luZyk7cmV0dXJuIGoudHdlZW5zLnB1c2goZCksZH0sc3RvcDpmdW5jdGlvbihiKXt2YXIgYz0wLGQ9Yj9qLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2Q+YztjKyspai50d2VlbnNbY10ucnVuKDEpO3JldHVybiBiP2gucmVzb2x2ZVdpdGgoYSxbaixiXSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihrYyhrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9ZWNbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBkO3JldHVybiBuLm1hcChrLGljLGopLG4uaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMoai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQobGMse3R3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEuc3BsaXQoIiAiKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5ndGg7ZT5kO2QrKyljPWFbZF0sZmNbY109ZmNbY118fFtdLGZjW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/ZWMudW5zaGlmdChhKTplYy5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PWQucXVldWV8fGQucXVldWU9PT0hMCkmJihkLnF1ZXVlPSJmeCIpLGQub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbigpe24uaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSYmbi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSl9LGR9LG4uZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKFYpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW4uaXNFbXB0eU9iamVjdChhKSxmPW4uc3BlZWQoYixjLGQpLGc9ZnVuY3Rpb24oKXt2YXIgYj1sYyh0aGlzLG4uZXh0ZW5kKHt9LGEpLGYpOyhlfHxuLl9kYXRhKHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9bi50aW1lcnMsZz1uLl9kYXRhKHRoaXMpO2lmKGUpZ1tlXSYmZ1tlXS5zdG9wJiZkKGdbZV0pO2Vsc2UgZm9yKGUgaW4gZylnW2VdJiZnW2VdLnN0b3AmJmRjLnRlc3QoZSkmJmQoZ1tlXSk7Zm9yKGU9Zi5sZW5ndGg7ZS0tOylmW2VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZmW2VdLnF1ZXVlIT09YXx8KGZbZV0uYW5pbS5zdG9wKGMpLGI9ITEsZi5zcGxpY2UoZSwxKSk7KGJ8fCFjKSYmbi5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGM9bi5fZGF0YSh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9bi50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLG4ucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2c+YjtiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksbi5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPW4uZm5bYl07bi5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGhjKGIsITApLGEsZCxlKX19KSxuLmVhY2goe3NsaWRlRG93bjpoYygic2hvdyIpLHNsaWRlVXA6aGMoImhpZGUiKSxzbGlkZVRvZ2dsZTpoYygidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksbi50aW1lcnM9W10sbi5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj1uLnRpbWVycyxjPTA7Zm9yKF9iPW4ubm93KCk7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEoKXx8YltjXSE9PWF8fGIuc3BsaWNlKGMtLSwxKTtiLmxlbmd0aHx8bi5meC5zdG9wKCksX2I9dm9pZCAwfSxuLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe24udGltZXJzLnB1c2goYSksYSgpP24uZnguc3RhcnQoKTpuLnRpbWVycy5wb3AoKX0sbi5meC5pbnRlcnZhbD0xMyxuLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7YWN8fChhYz1zZXRJbnRlcnZhbChuLmZ4LnRpY2ssbi5meC5pbnRlcnZhbCkpfSxuLmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGFjKSxhYz1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bi5meD9uLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxmdW5jdGlvbigpe3ZhciBhLGIsYyxkLGU9ei5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGUuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGE9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ei5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxkPWMuYXBwZW5kQ2hpbGQoei5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksYj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGEuc3R5bGUuY3NzVGV4dD0idG9wOjFweCIsbC5nZXRTZXRBdHRyaWJ1dGU9InQiIT09ZS5jbGFzc05hbWUsbC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxsLmhyZWZOb3JtYWxpemVkPSIvYSI9PT1hLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGwuY2hlY2tPbj0hIWIudmFsdWUsbC5vcHRTZWxlY3RlZD1kLnNlbGVjdGVkLGwuZW5jdHlwZT0hIXouY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsYy5kaXNhYmxlZD0hMCxsLm9wdERpc2FibGVkPSFkLmRpc2FibGVkLGI9ei5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLGwuaW5wdXQ9IiI9PT1iLmdldEF0dHJpYnV0ZSgidmFsdWUiKSxiLnZhbHVlPSJ0IixiLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksbC5yYWRpb1ZhbHVlPSJ0Ij09PWIudmFsdWUsYT1iPWM9ZD1lPW51bGx9KCk7dmFyIG1jPS9cci9nO24uZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1uLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOm4uaXNBcnJheShlKSYmKGU9bi5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9bi52YWxIb29rc1t0aGlzLnR5cGVdfHxuLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0dXJuIGI9bi52YWxIb29rc1tlLnR5cGVdfHxuLnZhbEhvb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShtYywiIik6bnVsbD09Yz8iIjpjKX19fSksbi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1uLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bi50ZXh0KGEpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChsLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZuLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bihjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW4ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxuLmluQXJyYXkobi52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bi52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uaXNBcnJheShiKT9hLmNoZWNrZWQ9bi5pbkFycmF5KG4oYSkudmFsKCksYik+PTA6dm9pZCAwfX0sbC5jaGVja09ufHwobi52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBuYyxvYyxwYz1uLmV4cHIuYXR0ckhhbmRsZSxxYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHJjPWwuZ2V0U2V0QXR0cmlidXRlLHNjPWwuaW5wdXQ7bi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVyh0aGlzLG4uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09TD9uLnByb3AoYSxiLGMpOigxPT09ZiYmbi5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bi5hdHRySG9va3NbYl18fChuLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP29jOm5jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBuLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRik7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1uLnByb3BGaXhbY118fGMsbi5leHByLm1hdGNoLmJvb2wudGVzdChjKT9zYyYmcmN8fCFxYy50ZXN0KGMpP2FbZF09ITE6YVtuLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm4uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHJjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWwucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm4ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksb2M9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9uLnJlbW92ZUF0dHIoYSxjKTpzYyYmcmN8fCFxYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFyYyYmbi5wcm9wRml4W2NdfHxjLGMpOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbi5lYWNoKG4uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9cGNbYl18fG4uZmluZC5hdHRyO3BjW2JdPXNjJiZyY3x8IXFjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPXBjW2JdLHBjW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxwY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSksc2MmJnJjfHwobi5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm5jJiZuYy5zZXQoYSxiLGMpfX0pLHJjfHwobmM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxwYy5pZD1wYy5uYW1lPXBjLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG4udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bmMuc2V0fSxuLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bmMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxuLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bi5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGwuc3R5bGV8fChuLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciB0Yz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx1Yz0vXig/OmF8YXJlYSkkL2k7bi5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVyh0aGlzLG4ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1uLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxuLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW4uaXNYTUxEb2MoYSksZiYmKGI9bi5wcm9wRml4W2JdfHxiLGU9bi5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6dGMudGVzdChhLm5vZGVOYW1lKXx8dWMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxsLmhyZWZOb3JtYWxpemVkfHxuLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXtuLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxsLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxuLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe24ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxsLmVuY3R5cGV8fChuLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdmM9L1tcdFxyXG5cZl0vZztuLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEYpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodmMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW4udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChGKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHZjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP24udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1uKHRoaXMpLGY9YS5tYXRjaChGKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09THx8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpuLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodmMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG4uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG4uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHdjPW4ubm93KCkseGM9L1w/Lyx5Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO24ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bi50cmltKGIrIiIpO3JldHVybiBlJiYhbi50cmltKGUucmVwbGFjZSh5YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTpuLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG4ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHpjLEFjLEJjPS8jLiokLyxDYz0vKFs/Jl0pXz1bXiZdKi8sRGM9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxFYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxGYz0vXig/OkdFVHxIRUFEKSQvLEdjPS9eXC9cLy8sSGM9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSWM9e30sSmM9e30sS2M9IiovIi5jb25jYXQoIioiKTt0cnl7QWM9bG9jYXRpb24uaHJlZn1jYXRjaChMYyl7QWM9ei5jcmVhdGVFbGVtZW50KCJhIiksQWMuaHJlZj0iIixBYz1BYy5ocmVmfXpjPUhjLmV4ZWMoQWMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIE1jKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTmMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBPYyhhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gUGMoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUWMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6QWMsdHlwZToiR0VUIixpc0xvY2FsOkVjLnRlc3QoemNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6S2MsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpuLnBhcnNlSlNPTiwidGV4dCB4bWwiOm4ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP09jKE9jKGEsbi5hamF4U2V0dGluZ3MpLGIpOk9jKG4uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOk1jKEljKSxhamF4VHJhbnNwb3J0Ok1jKEpjKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1uLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxtPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9uKGwpOm4uZXZlbnQsbz1uLkRlZmVycmVkKCkscD1uLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPURjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fEFjKSsiIikucmVwbGFjZShCYywiIikucmVwbGFjZShHYyx6Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1uLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUhjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09emNbMV0mJmNbMl09PT16Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oemNbM118fCgiaHR0cDoiPT09emNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1uLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTmMoSWMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW4uYWN0aXZlKysmJm4uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRmMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHhjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUNjLnRlc3QoZSk/ZS5yZXBsYWNlKENjLCIkMV89Iit3YysrKTplKyh4Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrd2MrKykpLGsuaWZNb2RpZmllZCYmKG4ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixuLmxhc3RNb2RpZmllZFtlXSksbi5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG4uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0tjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1OYyhKYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm0udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PVBjKGssdixjKSksdT1RYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobi5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG4uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZtLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbi5hY3RpdmV8fG4uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG4uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG4uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG4uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbi5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW4oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtuKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1uLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG4odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG4uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFsLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxuLmNzcyhhLCJkaXNwbGF5IikpfSxuLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFuLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBSYz0vJTIwL2csU2M9L1xbXF0kLyxUYz0vXHI/XG4vZyxVYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVmM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFdjKGEsYixjLGQpe3ZhciBlO2lmKG4uaXNBcnJheShiKSluLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFNjLnRlc3QoYSk/ZChhLGUpOldjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1uLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilXYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bi5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bi5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW4uaXNQbGFpbk9iamVjdChhKSluLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVdjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFJjLCIrIil9LG4uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW4ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP24ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW4odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZWYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVWMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVgudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1uKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bi5pc0FycmF5KGMpP24ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShUYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoVGMsIlxyXG4iKX19KS5nZXQoKX19KSxuLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmJGMoKXx8X2MoKX06JGM7dmFyIFhjPTAsWWM9e30sWmM9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZuKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFljKVljW2FdKHZvaWQgMCwhMCl9KSxsLmNvcnM9ISFaYyYmIndpdGhDcmVkZW50aWFscyJpbiBaYyxaYz1sLmFqYXg9ISFaYyxaYyYmbi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxsLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytYYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFljW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WWNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gX2MoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1uLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwoYSksYX19fSksbi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG4uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXouaGVhZHx8bigiaGVhZCIpWzBdfHx6LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9ei5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgYWQ9W10sYmQ9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9YWQucG9wKCl8fG4uZXhwYW5kbysiXyIrd2MrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGJkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYmQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGJkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh4Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssYWQucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHo7dmFyIGQ9di5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW4uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbihlKS5yZW1vdmUoKSxuLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgY2Q9bi5mbi5sb2FkO24uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZjZClyZXR1cm4gY2QuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9YS5zbGljZShoLGEubGVuZ3RoKSxhPWEuc2xpY2UoMCxoKSksbi5pc0Z1bmN0aW9uKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGY9IlBPU1QiKSxnLmxlbmd0aD4wJiZuLmFqYXgoe3VybDphLHR5cGU6ZixkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihhKXtlPWFyZ3VtZW50cyxnLmh0bWwoZD9uKCI8ZGl2PiIpLmFwcGVuZChuLnBhcnNlSFRNTChhKSkuZmluZChkKTphKX0pLmNvbXBsZXRlKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGMsZXx8W2EucmVzcG9uc2VUZXh0LGIsYV0pfSksdGhpc30sbi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ3JlcChuLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07dmFyIGRkPWEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Z1bmN0aW9uIGVkKGEpe3JldHVybiBuLmlzV2luZG93KGEpP2E6OT09PWEubm9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9bi5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1uLmNzcyhhLCJwb3NpdGlvbiIpLGw9bihhKSxtPXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY9bi5jc3MoYSwidG9wIiksaT1uLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT1rKSYmbi5pbkFycmF5KCJhdXRvIixbZixpXSk+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLG4uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXSxmPWUmJmUub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixlKT8odHlwZW9mIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09TCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1lZChmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09bi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksbi5ub2RlTmFtZShhWzBdLCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9bi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3Atbi5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8ZGQ7d2hpbGUoYSYmIW4ubm9kZU5hbWUoYSwiaHRtbCIpJiYic3RhdGljIj09PW4uY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8ZGR9KX19KSxuLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0vWS8udGVzdChiKTtuLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmPWVkKGEpO3JldHVybiB2b2lkIDA9PT1lP2Y/YiBpbiBmP2ZbYl06Zi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZF06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP24oZikuc2Nyb2xsTGVmdCgpOmUsYz9lOm4oZikuc2Nyb2xsVG9wKCkpOmFbZF09ZSl9LGEsZCxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pLG4uZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYl09TWIobC5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9S2IoYSxiKSxJYi50ZXN0KGMpP24oYSkucG9zaXRpb24oKVtiXSsicHgiOmMpOnZvaWQgMH0pfSksbi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxnPWN8fChkPT09ITB8fGU9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/bi5jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxuLmZuLmFuZFNlbGY9bi5mbi5hZGRCYWNrLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIGZkPWEualF1ZXJ5LGdkPWEuJDtyZXR1cm4gbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1uJiYoYS4kPWdkKSxiJiZhLmpRdWVyeT09PW4mJihhLmpRdWVyeT1mZCksbn0sdHlwZW9mIGI9PT1MJiYoYS5qUXVlcnk9YS4kPW4pLG59KTsK"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="data:application/x-javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjEgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovCmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgalF1ZXJ5KXRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkiKTsrZnVuY3Rpb24oYSl7dmFyIGI9YS5mbi5qcXVlcnkuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpO2lmKGJbMF08MiYmYlsxXTw5fHwxPT1iWzBdJiY5PT1iWzFdJiZiWzJdPDEpdGhyb3cgbmV3IEVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGpRdWVyeSB2ZXJzaW9uIDEuOS4xIG9yIGhpZ2hlciIpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvb3RzdHJhcCIpLGI9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O2Zvcih2YXIgYyBpbiBiKWlmKHZvaWQgMCE9PWEuc3R5bGVbY10pcmV0dXJue2VuZDpiW2NdfTtyZXR1cm4hMX1hLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGIpe3ZhciBjPSExLGQ9dGhpczthKHRoaXMpLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2M9ITB9KTt2YXIgZT1mdW5jdGlvbigpe2N8fGEoZCkudHJpZ2dlcihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpfTtyZXR1cm4gc2V0VGltZW91dChlLGIpLHRoaXN9LGEoZnVuY3Rpb24oKXthLnN1cHBvcnQudHJhbnNpdGlvbj1iKCksYS5zdXBwb3J0LnRyYW5zaXRpb24mJihhLmV2ZW50LnNwZWNpYWwuYnNUcmFuc2l0aW9uRW5kPXtiaW5kVHlwZTphLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZGVsZWdhdGVUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxoYW5kbGU6ZnVuY3Rpb24oYil7cmV0dXJuIGEoYi50YXJnZXQpLmlzKHRoaXMpP2IuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH19KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuYWxlcnQiKTtlfHxjLmRhdGEoImJzLmFsZXJ0IixlPW5ldyBkKHRoaXMpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0uY2FsbChjKX0pfXZhciBjPSdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxkPWZ1bmN0aW9uKGIpe2EoYikub24oImNsaWNrIixjLHRoaXMuY2xvc2UpfTtkLlZFUlNJT049IjMuMy4xIixkLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGQucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoKXtnLmRldGFjaCgpLnRyaWdnZXIoImNsb3NlZC5icy5hbGVydCIpLnJlbW92ZSgpfXZhciBlPWEodGhpcyksZj1lLmF0dHIoImRhdGEtdGFyZ2V0Iik7Znx8KGY9ZS5hdHRyKCJocmVmIiksZj1mJiZmLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpO3ZhciBnPWEoZik7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGcubGVuZ3RofHwoZz1lLmNsb3Nlc3QoIi5hbGVydCIpKSxnLnRyaWdnZXIoYj1hLkV2ZW50KCJjbG9zZS5icy5hbGVydCIpKSxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoZy5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZy5oYXNDbGFzcygiZmFkZSIpP2cub25lKCJic1RyYW5zaXRpb25FbmQiLGMpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTik6YygpKX07dmFyIGU9YS5mbi5hbGVydDthLmZuLmFsZXJ0PWIsYS5mbi5hbGVydC5Db25zdHJ1Y3Rvcj1kLGEuZm4uYWxlcnQubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmFsZXJ0PWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmFsZXJ0LmRhdGEtYXBpIixjLGQucHJvdG90eXBlLmNsb3NlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmJ1dHRvbiIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiO2V8fGQuZGF0YSgiYnMuYnV0dG9uIixlPW5ldyBjKHRoaXMsZikpLCJ0b2dnbGUiPT1iP2UudG9nZ2xlKCk6YiYmZS5zZXRTdGF0ZShiKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQpLHRoaXMuaXNMb2FkaW5nPSExfTtjLlZFUlNJT049IjMuMy4xIixjLkRFRkFVTFRTPXtsb2FkaW5nVGV4dDoibG9hZGluZy4uLiJ9LGMucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGIpe3ZhciBjPSJkaXNhYmxlZCIsZD10aGlzLiRlbGVtZW50LGU9ZC5pcygiaW5wdXQiKT8idmFsIjoiaHRtbCIsZj1kLmRhdGEoKTtiKz0iVGV4dCIsbnVsbD09Zi5yZXNldFRleHQmJmQuZGF0YSgicmVzZXRUZXh0IixkW2VdKCkpLHNldFRpbWVvdXQoYS5wcm94eShmdW5jdGlvbigpe2RbZV0obnVsbD09ZltiXT90aGlzLm9wdGlvbnNbYl06ZltiXSksImxvYWRpbmdUZXh0Ij09Yj8odGhpcy5pc0xvYWRpbmc9ITAsZC5hZGRDbGFzcyhjKS5hdHRyKGMsYykpOnRoaXMuaXNMb2FkaW5nJiYodGhpcy5pc0xvYWRpbmc9ITEsZC5yZW1vdmVDbGFzcyhjKS5yZW1vdmVBdHRyKGMpKX0sdGhpcyksMCl9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3ZhciBhPSEwLGI9dGhpcy4kZWxlbWVudC5jbG9zZXN0KCdbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXScpO2lmKGIubGVuZ3RoKXt2YXIgYz10aGlzLiRlbGVtZW50LmZpbmQoImlucHV0Iik7InJhZGlvIj09Yy5wcm9wKCJ0eXBlIikmJihjLnByb3AoImNoZWNrZWQiKSYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIik/YT0hMTpiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIikpLGEmJmMucHJvcCgiY2hlY2tlZCIsIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKS50cmlnZ2VyKCJjaGFuZ2UiKX1lbHNlIHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1wcmVzc2VkIiwhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikpO2EmJnRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLmJ1dHRvbjthLmZuLmJ1dHRvbj1iLGEuZm4uYnV0dG9uLkNvbnN0cnVjdG9yPWMsYS5mbi5idXR0b24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmJ1dHRvbj1kLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5idXR0b24uZGF0YS1hcGkiLCdbZGF0YS10b2dnbGVePSJidXR0b24iXScsZnVuY3Rpb24oYyl7dmFyIGQ9YShjLnRhcmdldCk7ZC5oYXNDbGFzcygiYnRuIil8fChkPWQuY2xvc2VzdCgiLmJ0biIpKSxiLmNhbGwoZCwidG9nZ2xlIiksYy5wcmV2ZW50RGVmYXVsdCgpfSkub24oImZvY3VzLmJzLmJ1dHRvbi5kYXRhLWFwaSBibHVyLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihiKXthKGIudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIikudG9nZ2xlQ2xhc3MoImZvY3VzIiwvXmZvY3VzKGluKT8kLy50ZXN0KGIudHlwZSkpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5jYXJvdXNlbCIpLGY9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxkLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGc9InN0cmluZyI9PXR5cGVvZiBiP2I6Zi5zbGlkZTtlfHxkLmRhdGEoImJzLmNhcm91c2VsIixlPW5ldyBjKHRoaXMsZikpLCJudW1iZXIiPT10eXBlb2YgYj9lLnRvKGIpOmc/ZVtnXSgpOmYuaW50ZXJ2YWwmJmUucGF1c2UoKS5jeWNsZSgpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy4kaW5kaWNhdG9ycz10aGlzLiRlbGVtZW50LmZpbmQoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIiksdGhpcy5vcHRpb25zPWMsdGhpcy5wYXVzZWQ9dGhpcy5zbGlkaW5nPXRoaXMuaW50ZXJ2YWw9dGhpcy4kYWN0aXZlPXRoaXMuJGl0ZW1zPW51bGwsdGhpcy5vcHRpb25zLmtleWJvYXJkJiZ0aGlzLiRlbGVtZW50Lm9uKCJrZXlkb3duLmJzLmNhcm91c2VsIixhLnByb3h5KHRoaXMua2V5ZG93bix0aGlzKSksImhvdmVyIj09dGhpcy5vcHRpb25zLnBhdXNlJiYhKCJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSYmdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlci5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLnBhdXNlLHRoaXMpKS5vbigibW91c2VsZWF2ZS5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmN5Y2xlLHRoaXMpKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTYwMCxjLkRFRkFVTFRTPXtpbnRlcnZhbDo1ZTMscGF1c2U6ImhvdmVyIix3cmFwOiEwLGtleWJvYXJkOiEwfSxjLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGEpe2lmKCEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGEudGFyZ2V0LnRhZ05hbWUpKXtzd2l0Y2goYS53aGljaCl7Y2FzZSAzNzp0aGlzLnByZXYoKTticmVhaztjYXNlIDM5OnRoaXMubmV4dCgpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWEucHJldmVudERlZmF1bHQoKX19LGMucHJvdG90eXBlLmN5Y2xlPWZ1bmN0aW9uKGIpe3JldHVybiBifHwodGhpcy5wYXVzZWQ9ITEpLHRoaXMuaW50ZXJ2YWwmJmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCksdGhpcy5vcHRpb25zLmludGVydmFsJiYhdGhpcy5wYXVzZWQmJih0aGlzLmludGVydmFsPXNldEludGVydmFsKGEucHJveHkodGhpcy5uZXh0LHRoaXMpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCkpLHRoaXN9LGMucHJvdG90eXBlLmdldEl0ZW1JbmRleD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kaXRlbXM9YS5wYXJlbnQoKS5jaGlsZHJlbigiLml0ZW0iKSx0aGlzLiRpdGVtcy5pbmRleChhfHx0aGlzLiRhY3RpdmUpfSxjLnByb3RvdHlwZS5nZXRJdGVtRm9yRGlyZWN0aW9uPWZ1bmN0aW9uKGEsYil7dmFyIGM9InByZXYiPT1hPy0xOjEsZD10aGlzLmdldEl0ZW1JbmRleChiKSxlPShkK2MpJXRoaXMuJGl0ZW1zLmxlbmd0aDtyZXR1cm4gdGhpcy4kaXRlbXMuZXEoZSl9LGMucHJvdG90eXBlLnRvPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz10aGlzLmdldEl0ZW1JbmRleCh0aGlzLiRhY3RpdmU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSk7cmV0dXJuIGE+dGhpcy4kaXRlbXMubGVuZ3RoLTF8fDA+YT92b2lkIDA6dGhpcy5zbGlkaW5nP3RoaXMuJGVsZW1lbnQub25lKCJzbGlkLmJzLmNhcm91c2VsIixmdW5jdGlvbigpe2IudG8oYSl9KTpjPT1hP3RoaXMucGF1c2UoKS5jeWNsZSgpOnRoaXMuc2xpZGUoYT5jPyJuZXh0IjoicHJldiIsdGhpcy4kaXRlbXMuZXEoYSkpfSxjLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSEwKSx0aGlzLiRlbGVtZW50LmZpbmQoIi5uZXh0LCAucHJldiIpLmxlbmd0aCYmYS5zdXBwb3J0LnRyYW5zaXRpb24mJih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSx0aGlzLmN5Y2xlKCEwKSksdGhpcy5pbnRlcnZhbD1jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXN9LGMucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zbGlkaW5nP3ZvaWQgMDp0aGlzLnNsaWRlKCJuZXh0Iil9LGMucHJvdG90eXBlLnByZXY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zbGlkaW5nP3ZvaWQgMDp0aGlzLnNsaWRlKCJwcmV2Iil9LGMucHJvdG90eXBlLnNsaWRlPWZ1bmN0aW9uKGIsZCl7dmFyIGU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSxmPWR8fHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbihiLGUpLGc9dGhpcy5pbnRlcnZhbCxoPSJuZXh0Ij09Yj8ibGVmdCI6InJpZ2h0IixpPSJuZXh0Ij09Yj8iZmlyc3QiOiJsYXN0IixqPXRoaXM7aWYoIWYubGVuZ3RoKXtpZighdGhpcy5vcHRpb25zLndyYXApcmV0dXJuO2Y9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbSIpW2ldKCl9aWYoZi5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuIHRoaXMuc2xpZGluZz0hMTt2YXIgaz1mWzBdLGw9YS5FdmVudCgic2xpZGUuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmssZGlyZWN0aW9uOmh9KTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIobCksIWwuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKHRoaXMuc2xpZGluZz0hMCxnJiZ0aGlzLnBhdXNlKCksdGhpcy4kaW5kaWNhdG9ycy5sZW5ndGgpe3RoaXMuJGluZGljYXRvcnMuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgbT1hKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleChmKV0pO20mJm0uYWRkQ2xhc3MoImFjdGl2ZSIpfXZhciBuPWEuRXZlbnQoInNsaWQuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmssZGlyZWN0aW9uOmh9KTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoInNsaWRlIik/KGYuYWRkQ2xhc3MoYiksZlswXS5vZmZzZXRXaWR0aCxlLmFkZENsYXNzKGgpLGYuYWRkQ2xhc3MoaCksZS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtmLnJlbW92ZUNsYXNzKFtiLGhdLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGUucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGhdLmpvaW4oIiAiKSksai5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtqLiRlbGVtZW50LnRyaWdnZXIobil9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKSk6KGUucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGYuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuc2xpZGluZz0hMSx0aGlzLiRlbGVtZW50LnRyaWdnZXIobikpLGcmJnRoaXMuY3ljbGUoKSx0aGlzfX07dmFyIGQ9YS5mbi5jYXJvdXNlbDthLmZuLmNhcm91c2VsPWIsYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3Rvcj1jLGEuZm4uY2Fyb3VzZWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNhcm91c2VsPWQsdGhpc307dmFyIGU9ZnVuY3Rpb24oYyl7dmFyIGQsZT1hKHRoaXMpLGY9YShlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWUuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKTtpZihmLmhhc0NsYXNzKCJjYXJvdXNlbCIpKXt2YXIgZz1hLmV4dGVuZCh7fSxmLmRhdGEoKSxlLmRhdGEoKSksaD1lLmF0dHIoImRhdGEtc2xpZGUtdG8iKTtoJiYoZy5pbnRlcnZhbD0hMSksYi5jYWxsKGYsZyksaCYmZi5kYXRhKCJicy5jYXJvdXNlbCIpLnRvKGgpLGMucHJldmVudERlZmF1bHQoKX19O2EoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSIsZSkub24oImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwiW2RhdGEtc2xpZGUtdG9dIixlKSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpO2IuY2FsbChjLGMuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjLGQ9Yi5hdHRyKCJkYXRhLXRhcmdldCIpfHwoYz1iLmF0dHIoImhyZWYiKSkmJmMucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKTtyZXR1cm4gYShkKX1mdW5jdGlvbiBjKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5jb2xsYXBzZSIpLGY9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpOyFlJiZmLnRvZ2dsZSYmInNob3ciPT1iJiYoZi50b2dnbGU9ITEpLGV8fGMuZGF0YSgiYnMuY29sbGFwc2UiLGU9bmV3IGQodGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgZD1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjKSx0aGlzLiR0cmlnZ2VyPWEodGhpcy5vcHRpb25zLnRyaWdnZXIpLmZpbHRlcignW2hyZWY9IiMnK2IuaWQrJyJdLCBbZGF0YS10YXJnZXQ9IiMnK2IuaWQrJyJdJyksdGhpcy50cmFuc2l0aW9uaW5nPW51bGwsdGhpcy5vcHRpb25zLnBhcmVudD90aGlzLiRwYXJlbnQ9dGhpcy5nZXRQYXJlbnQoKTp0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLiRlbGVtZW50LHRoaXMuJHRyaWdnZXIpLHRoaXMub3B0aW9ucy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9O2QuVkVSU0lPTj0iMy4zLjEiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0zNTAsZC5ERUZBVUxUUz17dG9nZ2xlOiEwLHRyaWdnZXI6J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXSd9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmZpbmQoIj4gLnBhbmVsIikuY2hpbGRyZW4oIi5pbiwgLmNvbGxhcHNpbmciKTtpZighKGUmJmUubGVuZ3RoJiYoYj1lLmRhdGEoImJzLmNvbGxhcHNlIiksYiYmYi50cmFuc2l0aW9uaW5nKSkpe3ZhciBmPWEuRXZlbnQoInNob3cuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoZiksIWYuaXNEZWZhdWx0UHJldmVudGVkKCkpe2UmJmUubGVuZ3RoJiYoYy5jYWxsKGUsImhpZGUiKSxifHxlLmRhdGEoImJzLmNvbGxhcHNlIixudWxsKSk7dmFyIGc9dGhpcy5kaW1lbnNpb24oKTt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzZSIpLmFkZENsYXNzKCJjb2xsYXBzaW5nIilbZ10oMCkuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMuJHRyaWdnZXIucmVtb3ZlQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCEwKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgaD1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UgaW4iKVtnXSgiIiksdGhpcy50cmFuc2l0aW9uaW5nPTAsdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJzaG93bi5icy5jb2xsYXBzZSIpfTtpZighYS5zdXBwb3J0LnRyYW5zaXRpb24pcmV0dXJuIGguY2FsbCh0aGlzKTt2YXIgaT1hLmNhbWVsQ2FzZShbInNjcm9sbCIsZ10uam9pbigiLSIpKTt0aGlzLiRlbGVtZW50Lm9uZSgiYnNUcmFuc2l0aW9uRW5kIixhLnByb3h5KGgsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTilbZ10odGhpcy4kZWxlbWVudFswXVtpXSl9fX19LGQucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXtpZighdGhpcy50cmFuc2l0aW9uaW5nJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYj1hLkV2ZW50KCJoaWRlLmJzLmNvbGxhcHNlIik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLCFiLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt2YXIgYz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnRbY10odGhpcy4kZWxlbWVudFtjXSgpKVswXS5vZmZzZXRIZWlnaHQsdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiY29sbGFwc2luZyIpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZSBpbiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLiR0cmlnZ2VyLmFkZENsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSksdGhpcy50cmFuc2l0aW9uaW5nPTE7dmFyIGU9ZnVuY3Rpb24oKXt0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIikudHJpZ2dlcigiaGlkZGVuLmJzLmNvbGxhcHNlIil9O3JldHVybiBhLnN1cHBvcnQudHJhbnNpdGlvbj92b2lkIHRoaXMuJGVsZW1lbnRbY10oMCkub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoZSx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTplLmNhbGwodGhpcyl9fX0sZC5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dGhpc1t0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpPyJoaWRlIjoic2hvdyJdKCl9LGQucHJvdG90eXBlLmdldFBhcmVudD1mdW5jdGlvbigpe3JldHVybiBhKHRoaXMub3B0aW9ucy5wYXJlbnQpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyt0aGlzLm9wdGlvbnMucGFyZW50KyciXScpLmVhY2goYS5wcm94eShmdW5jdGlvbihjLGQpe3ZhciBlPWEoZCk7dGhpcy5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoYihlKSxlKX0sdGhpcykpLmVuZCgpfSxkLnByb3RvdHlwZS5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmhhc0NsYXNzKCJpbiIpO2EuYXR0cigiYXJpYS1leHBhbmRlZCIsYyksYi50b2dnbGVDbGFzcygiY29sbGFwc2VkIiwhYykuYXR0cigiYXJpYS1leHBhbmRlZCIsYyl9O3ZhciBlPWEuZm4uY29sbGFwc2U7YS5mbi5jb2xsYXBzZT1jLGEuZm4uY29sbGFwc2UuQ29uc3RydWN0b3I9ZCxhLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jb2xsYXBzZT1lLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jb2xsYXBzZS5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXScsZnVuY3Rpb24oZCl7dmFyIGU9YSh0aGlzKTtlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fGQucHJldmVudERlZmF1bHQoKTt2YXIgZj1iKGUpLGc9Zi5kYXRhKCJicy5jb2xsYXBzZSIpLGg9Zz8idG9nZ2xlIjphLmV4dGVuZCh7fSxlLmRhdGEoKSx7dHJpZ2dlcjp0aGlzfSk7Yy5jYWxsKGYsaCl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7YiYmMz09PWIud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1jKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoZS50cmlnZ2VyKGI9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSl9KSl9ZnVuY3Rpb24gYyhiKXt2YXIgYz1iLmF0dHIoImRhdGEtdGFyZ2V0Iik7Y3x8KGM9Yi5hdHRyKCJocmVmIiksYz1jJiYvI1tBLVphLXpdLy50ZXN0KGMpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpO3ZhciBkPWMmJmEoYyk7cmV0dXJuIGQmJmQubGVuZ3RoP2Q6Yi5wYXJlbnQoKX1mdW5jdGlvbiBkKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGQ9Yy5kYXRhKCJicy5kcm9wZG93biIpO2R8fGMuZGF0YSgiYnMuZHJvcGRvd24iLGQ9bmV3IGcodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZFtiXS5jYWxsKGMpfSl9dmFyIGU9Ii5kcm9wZG93bi1iYWNrZHJvcCIsZj0nW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJyxnPWZ1bmN0aW9uKGIpe2EoYikub24oImNsaWNrLmJzLmRyb3Bkb3duIix0aGlzLnRvZ2dsZSl9O2cuVkVSU0lPTj0iMy4zLjEiLGcucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2lmKCFlLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXt2YXIgZj1jKGUpLGc9Zi5oYXNDbGFzcygib3BlbiIpO2lmKGIoKSwhZyl7Im9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJiFmLmNsb3Nlc3QoIi5uYXZiYXItbmF2IikubGVuZ3RoJiZhKCc8ZGl2IGNsYXNzPSJkcm9wZG93bi1iYWNrZHJvcCIvPicpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYik7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGIpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGIud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChiLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YyhkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWIud2hpY2h8fGcmJjI3PT1iLndoaWNoKXJldHVybiAyNz09Yi53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXZpZGVyKTp2aXNpYmxlIGEiLGk9ZS5maW5kKCdbcm9sZT0ibWVudSJdJytoKycsIFtyb2xlPSJsaXN0Ym94Il0nK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGIudGFyZ2V0KTszOD09Yi53aGljaCYmaj4wJiZqLS0sNDA9PWIud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYikub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsJ1tyb2xlPSJtZW51Il0nLGcucHJvdG90eXBlLmtleWRvd24pLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwnW3JvbGU9Imxpc3Rib3giXScsZy5wcm90b3R5cGUua2V5ZG93bil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIsZCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWEodGhpcyksZj1lLmRhdGEoImJzLm1vZGFsIiksZz1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGUuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYik7Znx8ZS5kYXRhKCJicy5tb2RhbCIsZj1uZXcgYyh0aGlzLGcpKSwic3RyaW5nIj09dHlwZW9mIGI/ZltiXShkKTpnLnNob3cmJmYuc2hvdyhkKX0pfXZhciBjPWZ1bmN0aW9uKGIsYyl7dGhpcy5vcHRpb25zPWMsdGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRiYWNrZHJvcD10aGlzLmlzU2hvd249bnVsbCx0aGlzLnNjcm9sbGJhcldpZHRoPTAsdGhpcy5vcHRpb25zLnJlbW90ZSYmdGhpcy4kZWxlbWVudC5maW5kKCIubW9kYWwtY29udGVudCIpLmxvYWQodGhpcy5vcHRpb25zLnJlbW90ZSxhLnByb3h5KGZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJsb2FkZWQuYnMubW9kYWwiKX0sdGhpcykpfTtjLlZFUlNJT049IjMuMy4xIixjLlRSQU5TSVRJT05fRFVSQVRJT049MzAwLGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsYy5ERUZBVUxUUz17YmFja2Ryb3A6ITAsa2V5Ym9hcmQ6ITAsc2hvdzohMH0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KGEpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT1hLkV2ZW50KCJzaG93LmJzLm1vZGFsIix7cmVsYXRlZFRhcmdldDpifSk7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpLHRoaXMuaXNTaG93bnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHRoaXMuaXNTaG93bj0hMCx0aGlzLmNoZWNrU2Nyb2xsYmFyKCksdGhpcy5zZXRTY3JvbGxiYXIoKSx0aGlzLiRib2R5LmFkZENsYXNzKCJtb2RhbC1vcGVuIiksdGhpcy5lc2NhcGUoKSx0aGlzLnJlc2l6ZSgpLHRoaXMuJGVsZW1lbnQub24oImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLCdbZGF0YS1kaXNtaXNzPSJtb2RhbCJdJyxhLnByb3h5KHRoaXMuaGlkZSx0aGlzKSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQub3B0aW9ucy5iYWNrZHJvcCYmZC5hZGp1c3RCYWNrZHJvcCgpLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLmF0dHIoImFyaWEtaGlkZGVuIiwhMSksZC5lbmZvcmNlRm9jdXMoKTt2YXIgZj1hLkV2ZW50KCJzaG93bi5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO2U/ZC4kZWxlbWVudC5maW5kKCIubW9kYWwtZGlhbG9nIikub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmQuJGVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKGYpfSkpfSxjLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGIpe2ImJmIucHJldmVudERlZmF1bHQoKSxiPWEuRXZlbnQoImhpZGUuYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksdGhpcy5pc1Nob3duJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKHRoaXMuaXNTaG93bj0hMSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksYShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIiksdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiaW4iKS5hdHRyKCJhcmlhLWhpZGRlbiIsITApLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eSh0aGlzLmhpZGVNb2RhbCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTp0aGlzLmhpZGVNb2RhbCgpKX0sYy5wcm90b3R5cGUuZW5mb3JjZUZvY3VzPWZ1bmN0aW9uKCl7YShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIikub24oImZvY3VzaW4uYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy4kZWxlbWVudFswXT09PWEudGFyZ2V0fHx0aGlzLiRlbGVtZW50LmhhcyhhLnRhcmdldCkubGVuZ3RofHx0aGlzLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIil9LHRoaXMpKX0sYy5wcm90b3R5cGUuZXNjYXBlPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMua2V5Ym9hcmQ/dGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpezI3PT1hLndoaWNoJiZ0aGlzLmhpZGUoKX0sdGhpcykpOnRoaXMuaXNTaG93bnx8dGhpcy4kZWxlbWVudC5vZmYoImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24/YSh3aW5kb3cpLm9uKCJyZXNpemUuYnMubW9kYWwiLGEucHJveHkodGhpcy5oYW5kbGVVcGRhdGUsdGhpcykpOmEod2luZG93KS5vZmYoInJlc2l6ZS5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuJGVsZW1lbnQuaGlkZSgpLHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKXthLiRib2R5LnJlbW92ZUNsYXNzKCJtb2RhbC1vcGVuIiksYS5yZXNldEFkanVzdG1lbnRzKCksYS5yZXNldFNjcm9sbGJhcigpLGEuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLm1vZGFsIil9KX0sYy5wcm90b3R5cGUucmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLiRiYWNrZHJvcCYmdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH0sYy5wcm90b3R5cGUuYmFja2Ryb3A9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBmPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZlO2lmKHRoaXMuJGJhY2tkcm9wPWEoJzxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wICcrZSsnIiAvPicpLnByZXBlbmRUbyh0aGlzLiRlbGVtZW50KS5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXthLnRhcmdldD09PWEuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/dGhpcy4kZWxlbWVudFswXS5mb2N1cy5jYWxsKHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMuaGlkZS5jYWxsKHRoaXMpKX0sdGhpcykpLGYmJnRoaXMuJGJhY2tkcm9wWzBdLm9mZnNldFdpZHRoLHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLCFiKXJldHVybjtmP3RoaXMuJGJhY2tkcm9wLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixiKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT04pOmIoKX1lbHNlIGlmKCF0aGlzLmlzU2hvd24mJnRoaXMuJGJhY2tkcm9wKXt0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKTt2YXIgZz1mdW5jdGlvbigpe2QucmVtb3ZlQmFja2Ryb3AoKSxiJiZiKCl9O2Euc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGcpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6ZygpfWVsc2UgYiYmYigpfSxjLnByb3RvdHlwZS5oYW5kbGVVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYmFja2Ryb3AmJnRoaXMuYWRqdXN0QmFja2Ryb3AoKSx0aGlzLmFkanVzdERpYWxvZygpfSxjLnByb3RvdHlwZS5hZGp1c3RCYWNrZHJvcD1mdW5jdGlvbigpe3RoaXMuJGJhY2tkcm9wLmNzcygiaGVpZ2h0IiwwKS5jc3MoImhlaWdodCIsdGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQpfSxjLnByb3RvdHlwZS5hZGp1c3REaWFsb2c9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50WzBdLnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDohdGhpcy5ib2R5SXNPdmVyZmxvd2luZyYmYT90aGlzLnNjcm9sbGJhcldpZHRoOiIiLHBhZGRpbmdSaWdodDp0aGlzLmJvZHlJc092ZXJmbG93aW5nJiYhYT90aGlzLnNjcm9sbGJhcldpZHRoOiIifSl9LGMucHJvdG90eXBlLnJlc2V0QWRqdXN0bWVudHM9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LmNzcyh7cGFkZGluZ0xlZnQ6IiIscGFkZGluZ1JpZ2h0OiIifSl9LGMucHJvdG90eXBlLmNoZWNrU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dGhpcy5ib2R5SXNPdmVyZmxvd2luZz1kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJnRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IixhK3RoaXMuc2Nyb2xsYmFyV2lkdGgpfSxjLnByb3RvdHlwZS5yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3RoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IiwiIil9LGMucHJvdG90eXBlLm1lYXN1cmVTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLHRoaXMuJGJvZHkuYXBwZW5kKGEpO3ZhciBiPWEub2Zmc2V0V2lkdGgtYS5jbGllbnRXaWR0aDtyZXR1cm4gdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChhKSxifTt2YXIgZD1hLmZuLm1vZGFsO2EuZm4ubW9kYWw9YixhLmZuLm1vZGFsLkNvbnN0cnVjdG9yPWMsYS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ubW9kYWw9ZCx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKGMpe3ZhciBkPWEodGhpcyksZT1kLmF0dHIoImhyZWYiKSxmPWEoZC5hdHRyKCJkYXRhLXRhcmdldCIpfHxlJiZlLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGc9Zi5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KGUpJiZlfSxmLmRhdGEoKSxkLmRhdGEoKSk7ZC5pcygiYSIpJiZjLnByZXZlbnREZWZhdWx0KCksZi5vbmUoInNob3cuYnMubW9kYWwiLGZ1bmN0aW9uKGEpe2EuaXNEZWZhdWx0UHJldmVudGVkKCl8fGYub25lKCJoaWRkZW4uYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC5pcygiOnZpc2libGUiKSYmZC50cmlnZ2VyKCJmb2N1cyIpfSl9KSxiLmNhbGwoZixnLHRoaXMpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50b29sdGlwIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmIsZz1mJiZmLnNlbGVjdG9yOyhlfHwiZGVzdHJveSIhPWIpJiYoZz8oZXx8ZC5kYXRhKCJicy50b29sdGlwIixlPXt9KSxlW2ddfHwoZVtnXT1uZXcgYyh0aGlzLGYpKSk6ZXx8ZC5kYXRhKCJicy50b29sdGlwIixlPW5ldyBjKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpKX0pfXZhciBjPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPXRoaXMub3B0aW9ucz10aGlzLmVuYWJsZWQ9dGhpcy50aW1lb3V0PXRoaXMuaG92ZXJTdGF0ZT10aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy4xIixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXt0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKHRoaXMub3B0aW9ucy52aWV3cG9ydC5zZWxlY3Rvcnx8dGhpcy5vcHRpb25zLnZpZXdwb3J0KTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGMmJmMuJHRpcCYmYy4kdGlwLmlzKCI6dmlzaWJsZSIpP3ZvaWQoYy5ob3ZlclN0YXRlPSJpbiIpOihjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9ImluIixjLm9wdGlvbnMuZGVsYXkmJmMub3B0aW9ucy5kZWxheS5zaG93P3ZvaWQoYy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsiaW4iPT1jLmhvdmVyU3RhdGUmJmMuc2hvdygpfSxjLm9wdGlvbnMuZGVsYXkuc2hvdykpOmMuc2hvdygpKX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt2YXIgYj1hLkV2ZW50KCJzaG93LmJzLiIrdGhpcy50eXBlKTtpZih0aGlzLmhhc0NvbnRlbnQoKSYmdGhpcy5lbmFibGVkKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoYik7dmFyIGQ9YS5jb250YWlucyh0aGlzLiRlbGVtZW50WzBdLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuJGVsZW1lbnRbMF0pO2lmKGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fCFkKXJldHVybjt2YXIgZT10aGlzLGY9dGhpcy50aXAoKSxnPXRoaXMuZ2V0VUlEKHRoaXMudHlwZSk7dGhpcy5zZXRDb250ZW50KCksZi5hdHRyKCJpZCIsZyksdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IixnKSx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uJiZmLmFkZENsYXNzKCJmYWRlIik7dmFyIGg9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQ/dGhpcy5vcHRpb25zLnBsYWNlbWVudC5jYWxsKHRoaXMsZlswXSx0aGlzLiRlbGVtZW50WzBdKTp0aGlzLm9wdGlvbnMucGxhY2VtZW50LGk9L1xzP2F1dG8/XHM/L2ksaj1pLnRlc3QoaCk7aiYmKGg9aC5yZXBsYWNlKGksIiIpfHwidG9wIiksZi5kZXRhY2goKS5jc3Moe3RvcDowLGxlZnQ6MCxkaXNwbGF5OiJibG9jayJ9KS5hZGRDbGFzcyhoKS5kYXRhKCJicy4iK3RoaXMudHlwZSx0aGlzKSx0aGlzLm9wdGlvbnMuY29udGFpbmVyP2YuYXBwZW5kVG8odGhpcy5vcHRpb25zLmNvbnRhaW5lcik6Zi5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTt2YXIgaz10aGlzLmdldFBvc2l0aW9uKCksbD1mWzBdLm9mZnNldFdpZHRoLG09ZlswXS5vZmZzZXRIZWlnaHQ7aWYoail7dmFyIG49aCxvPXRoaXMub3B0aW9ucy5jb250YWluZXI/YSh0aGlzLm9wdGlvbnMuY29udGFpbmVyKTp0aGlzLiRlbGVtZW50LnBhcmVudCgpLHA9dGhpcy5nZXRQb3NpdGlvbihvKTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPnAuYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPHAudG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5wLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPHAubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcT10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChxLGgpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscikuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpyKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wPWIudG9wK2csYi5sZWZ0PWIubGVmdCtoLGEub2Zmc2V0LnNldE9mZnNldChkWzBdLGEuZXh0ZW5kKHt1c2luZzpmdW5jdGlvbihhKXtkLmNzcyh7dG9wOk1hdGgucm91bmQoYS50b3ApLGxlZnQ6TWF0aC5yb3VuZChhLmxlZnQpfSl9fSxiKSwwKSxkLmFkZENsYXNzKCJpbiIpO3ZhciBpPWRbMF0ub2Zmc2V0V2lkdGgsaj1kWzBdLm9mZnNldEhlaWdodDsidG9wIj09YyYmaiE9ZiYmKGIudG9wPWIudG9wK2Ytaik7dmFyIGs9dGhpcy5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGEoYyxiLGksaik7ay5sZWZ0P2IubGVmdCs9ay5sZWZ0OmIudG9wKz1rLnRvcDt2YXIgbD0vdG9wfGJvdHRvbS8udGVzdChjKSxtPWw/MiprLmxlZnQtZStpOjIqay50b3AtZitqLG49bD8ib2Zmc2V0V2lkdGgiOiJvZmZzZXRIZWlnaHQiO2Qub2Zmc2V0KGIpLHRoaXMucmVwbGFjZUFycm93KG0sZFswXVtuXSxsKX0sYy5wcm90b3R5cGUucmVwbGFjZUFycm93PWZ1bmN0aW9uKGEsYixjKXt0aGlzLmFycm93KCkuY3NzKGM/ImxlZnQiOiJ0b3AiLDUwKigxLWEvYikrIiUiKS5jc3MoYz8idG9wIjoibGVmdCIsIiIpfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKTthLmZpbmQoIi50b29sdGlwLWlubmVyIilbdGhpcy5vcHRpb25zLmh0bWw/Imh0bWwiOiJ0ZXh0Il0oYiksYS5yZW1vdmVDbGFzcygiZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQiKX0sYy5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKCl7ImluIiE9ZS5ob3ZlclN0YXRlJiZmLmRldGFjaCgpLGUuJGVsZW1lbnQucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmliZWRieSIpLnRyaWdnZXIoImhpZGRlbi5icy4iK2UudHlwZSksYiYmYigpfXZhciBlPXRoaXMsZj10aGlzLnRpcCgpLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZCkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpkKCksdGhpcy5ob3ZlclN0YXRlPW51bGwsdGhpcyl9LGMucHJvdG90eXBlLmZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudDsoYS5hdHRyKCJ0aXRsZSIpfHwic3RyaW5nIiE9dHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpKSYmYS5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIixhLmF0dHIoInRpdGxlIil8fCIiKS5hdHRyKCJ0aXRsZSIsIiIpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKX0sYy5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oYil7Yj1ifHx0aGlzLiRlbGVtZW50O3ZhciBjPWJbMF0sZD0iQk9EWSI9PWMudGFnTmFtZSxlPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bnVsbD09ZS53aWR0aCYmKGU9YS5leHRlbmQoe30sZSx7d2lkdGg6ZS5yaWdodC1lLmxlZnQsaGVpZ2h0OmUuYm90dG9tLWUudG9wfSkpO3ZhciBmPWQ/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKSxnPXtzY3JvbGw6ZD9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDpiLnNjcm9sbFRvcCgpfSxoPWQ/e3dpZHRoOmEod2luZG93KS53aWR0aCgpLGhlaWdodDphKHdpbmRvdykuaGVpZ2h0KCl9Om51bGw7cmV0dXJuIGEuZXh0ZW5kKHt9LGUsZyxoLGYpfSxjLnByb3RvdHlwZS5nZXRDYWxjdWxhdGVkT2Zmc2V0PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiJib3R0b20iPT1hP3t0b3A6Yi50b3ArYi5oZWlnaHQsbGVmdDpiLmxlZnQrYi53aWR0aC8yLWMvMn06InRvcCI9PWE/e3RvcDpiLnRvcC1kLGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJsZWZ0Ij09YT97dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0LWN9Ont0b3A6Yi50b3ArYi5oZWlnaHQvMi1kLzIsbGVmdDpiLmxlZnQrYi53aWR0aH19LGMucHJvdG90eXBlLmdldFZpZXdwb3J0QWRqdXN0ZWREZWx0YT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT17dG9wOjAsbGVmdDowfTtpZighdGhpcy4kdmlld3BvcnQpcmV0dXJuIGU7dmFyIGY9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZ0aGlzLm9wdGlvbnMudmlld3BvcnQucGFkZGluZ3x8MCxnPXRoaXMuZ2V0UG9zaXRpb24odGhpcy4kdmlld3BvcnQpO2lmKC9yaWdodHxsZWZ0Ly50ZXN0KGEpKXt2YXIgaD1iLnRvcC1mLWcuc2Nyb2xsLGk9Yi50b3ArZi1nLnNjcm9sbCtkO2g8Zy50b3A/ZS50b3A9Zy50b3AtaDppPmcudG9wK2cuaGVpZ2h0JiYoZS50b3A9Zy50b3ArZy5oZWlnaHQtaSl9ZWxzZXt2YXIgaj1iLmxlZnQtZixrPWIubGVmdCtmK2M7ajxnLmxlZnQ/ZS5sZWZ0PWcubGVmdC1qOms+Zy53aWR0aCYmKGUubGVmdD1nLmxlZnQrZy53aWR0aC1rKX1yZXR1cm4gZX0sYy5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuJGVsZW1lbnQsYz10aGlzLm9wdGlvbnM7cmV0dXJuIGE9Yi5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYy50aXRsZT9jLnRpdGxlLmNhbGwoYlswXSk6Yy50aXRsZSl9LGMucHJvdG90eXBlLmdldFVJRD1mdW5jdGlvbihhKXtkbyBhKz1+figxZTYqTWF0aC5yYW5kb20oKSk7d2hpbGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpO3JldHVybiBhfSxjLnByb3RvdHlwZS50aXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGlwPXRoaXMuJHRpcHx8YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpfSxjLnByb3RvdHlwZS5hcnJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIudG9vbHRpcC1hcnJvdyIpfSxjLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITB9LGMucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITF9LGMucHJvdG90eXBlLnRvZ2dsZUVuYWJsZWQ9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9IXRoaXMuZW5hYmxlZH0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7YiYmKGM9YShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlKSxjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSksYy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKX0pfTt2YXIgZD1hLmZuLnRvb2x0aXA7YS5mbi50b29sdGlwPWIsYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yPWMsYS5mbi50b29sdGlwLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi50b29sdGlwPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5wb3BvdmVyIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmIsZz1mJiZmLnNlbGVjdG9yOyhlfHwiZGVzdHJveSIhPWIpJiYoZz8oZXx8ZC5kYXRhKCJicy5wb3BvdmVyIixlPXt9KSxlW2ddfHwoZVtnXT1uZXcgYyh0aGlzLGYpKSk6ZXx8ZC5kYXRhKCJicy5wb3BvdmVyIixlPW5ldyBjKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpKX0pfXZhciBjPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KCJwb3BvdmVyIixhLGIpfTtpZighYS5mbi50b29sdGlwKXRocm93IG5ldyBFcnJvcigiUG9wb3ZlciByZXF1aXJlcyB0b29sdGlwLmpzIik7Yy5WRVJTSU9OPSIzLjMuMSIsYy5ERUZBVUxUUz1hLmV4dGVuZCh7fSxhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IuREVGQVVMVFMse3BsYWNlbWVudDoicmlnaHQiLHRyaWdnZXI6ImNsaWNrIixjb250ZW50OiIiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJwb3BvdmVyIiByb2xlPSJ0b29sdGlwIj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+PGgzIGNsYXNzPSJwb3BvdmVyLXRpdGxlIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+J30pLGMucHJvdG90eXBlPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5wcm90b3R5cGUpLGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMsYy5wcm90b3R5cGUuZ2V0RGVmYXVsdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy5ERUZBVUxUU30sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCksYz10aGlzLmdldENvbnRlbnQoKTthLmZpbmQoIi5wb3BvdmVyLXRpdGxlIilbdGhpcy5vcHRpb25zLmh0bWw/Imh0bWwiOiJ0ZXh0Il0oYiksYS5maW5kKCIucG9wb3Zlci1jb250ZW50IikuY2hpbGRyZW4oKS5kZXRhY2goKS5lbmQoKVt0aGlzLm9wdGlvbnMuaHRtbD8ic3RyaW5nIj09dHlwZW9mIGM/Imh0bWwiOiJhcHBlbmQiOiJ0ZXh0Il0oYyksYS5yZW1vdmVDbGFzcygiZmFkZSB0b3AgYm90dG9tIGxlZnQgcmlnaHQgaW4iKSxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaHRtbCgpfHxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaGlkZSgpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5nZXRDb250ZW50KCl9LGMucHJvdG90eXBlLmdldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50LGI9dGhpcy5vcHRpb25zO3JldHVybiBhLmF0dHIoImRhdGEtY29udGVudCIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGIuY29udGVudD9iLmNvbnRlbnQuY2FsbChhWzBdKTpiLmNvbnRlbnQpfSxjLnByb3RvdHlwZS5hcnJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIuYXJyb3ciKX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRpcHx8KHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSkpLHRoaXMuJHRpcH07dmFyIGQ9YS5mbi5wb3BvdmVyO2EuZm4ucG9wb3Zlcj1iLGEuZm4ucG9wb3Zlci5Db25zdHJ1Y3Rvcj1jLGEuZm4ucG9wb3Zlci5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ucG9wb3Zlcj1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihjLGQpe3ZhciBlPWEucHJveHkodGhpcy5wcm9jZXNzLHRoaXMpO3RoaXMuJGJvZHk9YSgiYm9keSIpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKCJib2R5Iik/d2luZG93OmMpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxiLkRFRkFVTFRTLGQpLHRoaXMuc2VsZWN0b3I9KHRoaXMub3B0aW9ucy50YXJnZXR8fCIiKSsiIC5uYXYgbGkgPiBhIix0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5zY3JvbGxIZWlnaHQ9MCx0aGlzLiRzY3JvbGxFbGVtZW50Lm9uKCJzY3JvbGwuYnMuc2Nyb2xsc3B5IixlKSx0aGlzLnJlZnJlc2goKSx0aGlzLnByb2Nlc3MoKX1mdW5jdGlvbiBjKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5zY3JvbGxzcHkiKSxmPSJvYmplY3QiPT10eXBlb2YgYyYmYztlfHxkLmRhdGEoImJzLnNjcm9sbHNweSIsZT1uZXcgYih0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGMmJmVbY10oKX0pfWIuVkVSU0lPTj0iMy4zLjEiLGIuREVGQVVMVFM9e29mZnNldDoxMH0sYi5wcm90b3R5cGUuZ2V0U2Nyb2xsSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNjcm9sbEVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0fHxNYXRoLm1heCh0aGlzLiRib2R5WzBdLnNjcm9sbEhlaWdodCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KX0sYi5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciBiPSJvZmZzZXQiLGM9MDthLmlzV2luZG93KHRoaXMuJHNjcm9sbEVsZW1lbnRbMF0pfHwoYj0icG9zaXRpb24iLGM9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSksdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLnNjcm9sbEhlaWdodD10aGlzLmdldFNjcm9sbEhlaWdodCgpO3ZhciBkPXRoaXM7dGhpcy4kYm9keS5maW5kKHRoaXMuc2VsZWN0b3IpLm1hcChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoInRhcmdldCIpfHxkLmF0dHIoImhyZWYiKSxmPS9eIy4vLnRlc3QoZSkmJmEoZSk7cmV0dXJuIGYmJmYubGVuZ3RoJiZmLmlzKCI6dmlzaWJsZSIpJiZbW2ZbYl0oKS50b3ArYyxlXV18fG51bGx9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMF0tYlswXX0pLmVhY2goZnVuY3Rpb24oKXtkLm9mZnNldHMucHVzaCh0aGlzWzBdKSxkLnRhcmdldHMucHVzaCh0aGlzWzFdKX0pfSxiLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRzY3JvbGxFbGVtZW50LnNjcm9sbFRvcCgpK3RoaXMub3B0aW9ucy5vZmZzZXQsYz10aGlzLmdldFNjcm9sbEhlaWdodCgpLGQ9dGhpcy5vcHRpb25zLm9mZnNldCtjLXRoaXMuJHNjcm9sbEVsZW1lbnQuaGVpZ2h0KCksZT10aGlzLm9mZnNldHMsZj10aGlzLnRhcmdldHMsZz10aGlzLmFjdGl2ZVRhcmdldDtpZih0aGlzLnNjcm9sbEhlaWdodCE9YyYmdGhpcy5yZWZyZXNoKCksYj49ZClyZXR1cm4gZyE9KGE9ZltmLmxlbmd0aC0xXSkmJnRoaXMuYWN0aXZhdGUoYSk7aWYoZyYmYjxlWzBdKXJldHVybiB0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuY2xlYXIoKTtmb3IoYT1lLmxlbmd0aDthLS07KWchPWZbYV0mJmI+PWVbYV0mJighZVthKzFdfHxiPD1lW2ErMV0pJiZ0aGlzLmFjdGl2YXRlKGZbYV0pfSxiLnByb3RvdHlwZS5hY3RpdmF0ZT1mdW5jdGlvbihiKXt0aGlzLmFjdGl2ZVRhcmdldD1iLHRoaXMuY2xlYXIoKTt2YXIgYz10aGlzLnNlbGVjdG9yKydbZGF0YS10YXJnZXQ9IicrYisnIl0sJyt0aGlzLnNlbGVjdG9yKydbaHJlZj0iJytiKyciXScsZD1hKGMpLnBhcmVudHMoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpO2QucGFyZW50KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCYmKGQ9ZC5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSksZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pCn0pfX19LGMucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIsZCxlKXtmdW5jdGlvbiBmKCl7Zy5yZW1vdmVDbGFzcygiYWN0aXZlIikuZmluZCgiPiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIikuZW5kKCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJ0YWIiXScpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSxiLmFkZENsYXNzKCJhY3RpdmUiKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLGg/KGJbMF0ub2Zmc2V0V2lkdGgsYi5hZGRDbGFzcygiaW4iKSk6Yi5yZW1vdmVDbGFzcygiZmFkZSIpLGIucGFyZW50KCIuZHJvcGRvd24tbWVudSIpJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPXRoaXMudW5waW49dGhpcy5waW5uZWRPZmZzZXQ9bnVsbCx0aGlzLmNoZWNrUG9zaXRpb24oKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5SRVNFVD0iYWZmaXggYWZmaXgtdG9wIGFmZml4LWJvdHRvbSIsYy5ERUZBVUxUUz17b2Zmc2V0OjAsdGFyZ2V0OndpbmRvd30sYy5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGY9dGhpcy4kZWxlbWVudC5vZmZzZXQoKSxnPXRoaXMuJHRhcmdldC5oZWlnaHQoKTtpZihudWxsIT1jJiYidG9wIj09dGhpcy5hZmZpeGVkKXJldHVybiBjPmU/InRvcCI6ITE7aWYoImJvdHRvbSI9PXRoaXMuYWZmaXhlZClyZXR1cm4gbnVsbCE9Yz9lK3RoaXMudW5waW48PWYudG9wPyExOiJib3R0b20iOmEtZD49ZStnPyExOiJib3R0b20iO3ZhciBoPW51bGw9PXRoaXMuYWZmaXhlZCxpPWg/ZTpmLnRvcCxqPWg/ZzpiO3JldHVybiBudWxsIT1jJiZjPj1pPyJ0b3AiOm51bGwhPWQmJmkraj49YS1kPyJib3R0b20iOiExfSxjLnByb3RvdHlwZS5nZXRQaW5uZWRPZmZzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLnBpbm5lZE9mZnNldClyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcygiYWZmaXgiKTt2YXIgYT10aGlzLiR0YXJnZXQuc2Nyb2xsVG9wKCksYj10aGlzLiRlbGVtZW50Lm9mZnNldCgpO3JldHVybiB0aGlzLnBpbm5lZE9mZnNldD1iLnRvcC1hfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcD1mdW5jdGlvbigpe3NldFRpbWVvdXQoYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcyksMSl9LGMucHJvdG90eXBlLmNoZWNrUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLiRlbGVtZW50LmlzKCI6dmlzaWJsZSIpKXt2YXIgYj10aGlzLiRlbGVtZW50LmhlaWdodCgpLGQ9dGhpcy5vcHRpb25zLm9mZnNldCxlPWQudG9wLGY9ZC5ib3R0b20sZz1hKCJib2R5IikuaGVpZ2h0KCk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/x-javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/x-javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Ow=="></script>
<style type="text/css">
/*!
* Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
</style>
<style type="text/css">code{white-space: pre;}</style>
<link href="data:text/css;charset=utf-8,pre%20%2Eoperator%2C%0Apre%20%2Eparen%20%7B%0Acolor%3A%20rgb%28104%2C%20118%2C%20135%29%0A%7D%0Apre%20%2Eliteral%20%7B%0Acolor%3A%20%23990073%0A%7D%0Apre%20%2Enumber%20%7B%0Acolor%3A%20%23099%3B%0A%7D%0Apre%20%2Ecomment%20%7B%0Acolor%3A%20%23998%3B%0Afont%2Dstyle%3A%20italic%0A%7D%0Apre%20%2Ekeyword%20%7B%0Acolor%3A%20%23900%3B%0Afont%2Dweight%3A%20bold%0A%7D%0Apre%20%2Eidentifier%20%7B%0Acolor%3A%20rgb%280%2C%200%2C%200%29%3B%0A%7D%0Apre%20%2Estring%20%7B%0Acolor%3A%20%23d14%3B%0A%7D%0A" rel="stylesheet" type="text/css" />
<script src="data:application/x-javascript;base64,CnZhciBobGpzPW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIG0ocCl7cmV0dXJuIHAucmVwbGFjZSgvJi9nbSwiJmFtcDsiKS5yZXBsYWNlKC88L2dtLCImbHQ7Iil9ZnVuY3Rpb24gZihyLHEscCl7cmV0dXJuIFJlZ0V4cChxLCJtIisoci5jST8iaSI6IiIpKyhwPyJnIjoiIikpfWZ1bmN0aW9uIGIocil7Zm9yKHZhciBwPTA7cDxyLmNoaWxkTm9kZXMubGVuZ3RoO3ArKyl7dmFyIHE9ci5jaGlsZE5vZGVzW3BdO2lmKHEubm9kZU5hbWU9PSJDT0RFIil7cmV0dXJuIHF9aWYoIShxLm5vZGVUeXBlPT0zJiZxLm5vZGVWYWx1ZS5tYXRjaCgvXHMrLykpKXticmVha319fWZ1bmN0aW9uIGgodCxzKXt2YXIgcD0iIjtmb3IodmFyIHI9MDtyPHQuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3ZhciBxPXQuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWU7aWYocyl7cT1xLnJlcGxhY2UoL1xuL2csIiIpfXArPXF9ZWxzZXtpZih0LmNoaWxkTm9kZXNbcl0ubm9kZU5hbWU9PSJCUiIpe3ArPSJcbiJ9ZWxzZXtwKz1oKHQuY2hpbGROb2Rlc1tyXSl9fX1pZigvTVNJRSBbNjc4XS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7cD1wLnJlcGxhY2UoL1xyL2csIlxuIil9cmV0dXJuIHB9ZnVuY3Rpb24gYShzKXt2YXIgcj1zLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7cj1yLmNvbmNhdChzLnBhcmVudE5vZGUuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk7Zm9yKHZhciBxPTA7cTxyLmxlbmd0aDtxKyspe3ZhciBwPXJbcV0ucmVwbGFjZSgvXmxhbmd1YWdlLS8sIiIpO2lmKGVbcF0pe3JldHVybiBwfX19ZnVuY3Rpb24gYyhxKXt2YXIgcD1bXTsoZnVuY3Rpb24ocyx0KXtmb3IodmFyIHI9MDtyPHMuY2hpbGROb2Rlcy5sZW5ndGg7cisrKXtpZihzLmNoaWxkTm9kZXNbcl0ubm9kZVR5cGU9PTMpe3QrPXMuY2hpbGROb2Rlc1tyXS5ub2RlVmFsdWUubGVuZ3RofWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVOYW1lPT0iQlIiKXt0Kz0xfWVsc2V7aWYocy5jaGlsZE5vZGVzW3JdLm5vZGVUeXBlPT0xKXtwLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OnQsbm9kZTpzLmNoaWxkTm9kZXNbcl19KTt0PWFyZ3VtZW50cy5jYWxsZWUocy5jaGlsZE5vZGVzW3JdLHQpO3AucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDp0LG5vZGU6cy5jaGlsZE5vZGVzW3JdfSl9fX19cmV0dXJuIHR9KShxLDApO3JldHVybiBwfWZ1bmN0aW9uIGsoeSx3LHgpe3ZhciBxPTA7dmFyIHo9IiI7dmFyIHM9W107ZnVuY3Rpb24gdSgpe2lmKHkubGVuZ3RoJiZ3Lmxlbmd0aCl7aWYoeVswXS5vZmZzZXQhPXdbMF0ub2Zmc2V0KXtyZXR1cm4oeVswXS5vZmZzZXQ8d1swXS5vZmZzZXQpP3k6d31lbHNle3JldHVybiB3WzBdLmV2ZW50PT0ic3RhcnQiP3k6d319ZWxzZXtyZXR1cm4geS5sZW5ndGg/eTp3fX1mdW5jdGlvbiB0KEQpe3ZhciBBPSI8IitELm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBCPTA7QjxELmF0dHJpYnV0ZXMubGVuZ3RoO0IrKyl7dmFyIEM9RC5hdHRyaWJ1dGVzW0JdO0ErPSIgIitDLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoQy52YWx1ZSE9PXVuZGVmaW5lZCYmQy52YWx1ZSE9PWZhbHNlJiZDLnZhbHVlIT09bnVsbCl7QSs9Jz0iJyttKEMudmFsdWUpKyciJ319cmV0dXJuIEErIj4ifXdoaWxlKHkubGVuZ3RofHx3Lmxlbmd0aCl7dmFyIHY9dSgpLnNwbGljZSgwLDEpWzBdO3orPW0oeC5zdWJzdHIocSx2Lm9mZnNldC1xKSk7cT12Lm9mZnNldDtpZih2LmV2ZW50PT0ic3RhcnQiKXt6Kz10KHYubm9kZSk7cy5wdXNoKHYubm9kZSl9ZWxzZXtpZih2LmV2ZW50PT0ic3RvcCIpe3ZhciBwLHI9cy5sZW5ndGg7ZG97ci0tO3A9c1tyXTt6Kz0oIjwvIitwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkrIj4iKX13aGlsZShwIT12Lm5vZGUpO3Muc3BsaWNlKHIsMSk7d2hpbGUocjxzLmxlbmd0aCl7eis9dChzW3JdKTtyKyt9fX19cmV0dXJuIHorbSh4LnN1YnN0cihxKSl9ZnVuY3Rpb24gaigpe2Z1bmN0aW9uIHEoeCx5LHYpe2lmKHguY29tcGlsZWQpe3JldHVybn12YXIgdTt2YXIgcz1bXTtpZih4Lmspe3gubFI9Zih5LHgubHx8aGxqcy5JUix0cnVlKTtmb3IodmFyIHcgaW4geC5rKXtpZigheC5rLmhhc093blByb3BlcnR5KHcpKXtjb250aW51ZX1pZih4Lmtbd10gaW5zdGFuY2VvZiBPYmplY3Qpe3U9eC5rW3ddfWVsc2V7dT14Lms7dz0ia2V5d29yZCJ9Zm9yKHZhciByIGluIHUpe2lmKCF1Lmhhc093blByb3BlcnR5KHIpKXtjb250aW51ZX14Lmtbcl09W3csdVtyXV07cy5wdXNoKHIpfX19aWYoIXYpe2lmKHguYldLKXt4LmI9IlxcYigiK3Muam9pbigifCIpKyIpXFxzIn14LmJSPWYoeSx4LmI/eC5iOiJcXEJ8XFxiIik7aWYoIXguZSYmIXguZVcpe3guZT0iXFxCfFxcYiJ9aWYoeC5lKXt4LmVSPWYoeSx4LmUpfX1pZih4Lmkpe3guaVI9Zih5LHguaSl9aWYoeC5yPT09dW5kZWZpbmVkKXt4LnI9MX1pZigheC5jKXt4LmM9W119eC5jb21waWxlZD10cnVlO2Zvcih2YXIgdD0wO3Q8eC5jLmxlbmd0aDt0Kyspe2lmKHguY1t0XT09InNlbGYiKXt4LmNbdF09eH1xKHguY1t0XSx5LGZhbHNlKX1pZih4LnN0YXJ0cyl7cSh4LnN0YXJ0cyx5LGZhbHNlKX19Zm9yKHZhciBwIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHApKXtjb250aW51ZX1xKGVbcF0uZE0sZVtwXSx0cnVlKX19ZnVuY3Rpb24gZChCLEMpe2lmKCFqLmNhbGxlZCl7aigpO2ouY2FsbGVkPXRydWV9ZnVuY3Rpb24gcShyLE0pe2Zvcih2YXIgTD0wO0w8TS5jLmxlbmd0aDtMKyspe2lmKChNLmNbTF0uYlIuZXhlYyhyKXx8W251bGxdKVswXT09cil7cmV0dXJuIE0uY1tMXX19fWZ1bmN0aW9uIHYoTCxyKXtpZihEW0xdLmUmJkRbTF0uZVIudGVzdChyKSl7cmV0dXJuIDF9aWYoRFtMXS5lVyl7dmFyIE09dihMLTEscik7cmV0dXJuIE0/TSsxOjB9cmV0dXJuIDB9ZnVuY3Rpb24gdyhyLEwpe3JldHVybiBMLmkmJkwuaVIudGVzdChyKX1mdW5jdGlvbiBLKE4sTyl7dmFyIE09W107Zm9yKHZhciBMPTA7TDxOLmMubGVuZ3RoO0wrKyl7TS5wdXNoKE4uY1tMXS5iKX12YXIgcj1ELmxlbmd0aC0xO2Rve2lmKERbcl0uZSl7TS5wdXNoKERbcl0uZSl9ci0tfXdoaWxlKERbcisxXS5lVyk7aWYoTi5pKXtNLnB1c2goTi5pKX1yZXR1cm4gZihPLE0uam9pbigifCIpLHRydWUpfWZ1bmN0aW9uIHAoTSxMKXt2YXIgTj1EW0QubGVuZ3RoLTFdO2lmKCFOLnQpe04udD1LKE4sRSl9Ti50Lmxhc3RJbmRleD1MO3ZhciByPU4udC5leGVjKE0pO3JldHVybiByP1tNLnN1YnN0cihMLHIuaW5kZXgtTCksclswXSxmYWxzZV06W00uc3Vic3RyKEwpLCIiLHRydWVdfWZ1bmN0aW9uIHooTixyKXt2YXIgTD1FLmNJP3JbMF0udG9Mb3dlckNhc2UoKTpyWzBdO3ZhciBNPU4ua1tMXTtpZihNJiZNIGluc3RhbmNlb2YgQXJyYXkpe3JldHVybiBNfXJldHVybiBmYWxzZX1mdW5jdGlvbiBGKEwsUCl7TD1tKEwpO2lmKCFQLmspe3JldHVybiBMfXZhciByPSIiO3ZhciBPPTA7UC5sUi5sYXN0SW5kZXg9MDt2YXIgTT1QLmxSLmV4ZWMoTCk7d2hpbGUoTSl7cis9TC5zdWJzdHIoTyxNLmluZGV4LU8pO3ZhciBOPXooUCxNKTtpZihOKXt4Kz1OWzFdO3IrPSc8c3BhbiBjbGFzcz0iJytOWzBdKyciPicrTVswXSsiPC9zcGFuPiJ9ZWxzZXtyKz1NWzBdfU89UC5sUi5sYXN0SW5kZXg7TT1QLmxSLmV4ZWMoTCl9cmV0dXJuIHIrTC5zdWJzdHIoTyxMLmxlbmd0aC1PKX1mdW5jdGlvbiBKKEwsTSl7aWYoTS5zTCYmZVtNLnNMXSl7dmFyIHI9ZChNLnNMLEwpO3grPXIua2V5d29yZF9jb3VudDtyZXR1cm4gci52YWx1ZX1lbHNle3JldHVybiBGKEwsTSl9fWZ1bmN0aW9uIEkoTSxyKXt2YXIgTD1NLmNOPyc8c3BhbiBjbGFzcz0iJytNLmNOKyciPic6IiI7aWYoTS5yQil7eSs9TDtNLmJ1ZmZlcj0iIn1lbHNle2lmKE0uZUIpe3krPW0ocikrTDtNLmJ1ZmZlcj0iIn1lbHNle3krPUw7TS5idWZmZXI9cn19RC5wdXNoKE0pO0ErPU0ucn1mdW5jdGlvbiBHKE4sTSxRKXt2YXIgUj1EW0QubGVuZ3RoLTFdO2lmKFEpe3krPUooUi5idWZmZXIrTixSKTtyZXR1cm4gZmFsc2V9dmFyIFA9cShNLFIpO2lmKFApe3krPUooUi5idWZmZXIrTixSKTtJKFAsTSk7cmV0dXJuIFAuckJ9dmFyIEw9dihELmxlbmd0aC0xLE0pO2lmKEwpe3ZhciBPPVIuY04/Ijwvc3Bhbj4iOiIiO2lmKFIuckUpe3krPUooUi5idWZmZXIrTixSKStPfWVsc2V7aWYoUi5lRSl7eSs9SihSLmJ1ZmZlcitOLFIpK08rbShNKX1lbHNle3krPUooUi5idWZmZXIrTitNLFIpK099fXdoaWxlKEw+MSl7Tz1EW0QubGVuZ3RoLTJdLmNOPyI8L3NwYW4+IjoiIjt5Kz1PO0wtLTtELmxlbmd0aC0tfXZhciByPURbRC5sZW5ndGgtMV07RC5sZW5ndGgtLTtEW0QubGVuZ3RoLTFdLmJ1ZmZlcj0iIjtpZihyLnN0YXJ0cyl7SShyLnN0YXJ0cywiIil9cmV0dXJuIFIuckV9aWYodyhNLFIpKXt0aHJvdyJJbGxlZ2FsIn19dmFyIEU9ZVtCXTt2YXIgRD1bRS5kTV07dmFyIEE9MDt2YXIgeD0wO3ZhciB5PSIiO3RyeXt2YXIgcyx1PTA7RS5kTS5idWZmZXI9IiI7ZG97cz1wKEMsdSk7dmFyIHQ9RyhzWzBdLHNbMV0sc1syXSk7dSs9c1swXS5sZW5ndGg7aWYoIXQpe3UrPXNbMV0ubGVuZ3RofX13aGlsZSghc1syXSk7aWYoRC5sZW5ndGg+MSl7dGhyb3ciSWxsZWdhbCJ9cmV0dXJue3I6QSxrZXl3b3JkX2NvdW50OngsdmFsdWU6eX19Y2F0Y2goSCl7aWYoSD09IklsbGVnYWwiKXtyZXR1cm57cjowLGtleXdvcmRfY291bnQ6MCx2YWx1ZTptKEMpfX1lbHNle3Rocm93IEh9fX1mdW5jdGlvbiBnKHQpe3ZhciBwPXtrZXl3b3JkX2NvdW50OjAscjowLHZhbHVlOm0odCl9O3ZhciByPXA7Zm9yKHZhciBxIGluIGUpe2lmKCFlLmhhc093blByb3BlcnR5KHEpKXtjb250aW51ZX12YXIgcz1kKHEsdCk7cy5sYW5ndWFnZT1xO2lmKHMua2V5d29yZF9jb3VudCtzLnI+ci5rZXl3b3JkX2NvdW50K3Iucil7cj1zfWlmKHMua2V5d29yZF9jb3VudCtzLnI+cC5rZXl3b3JkX2NvdW50K3Aucil7cj1wO3A9c319aWYoci5sYW5ndWFnZSl7cC5zZWNvbmRfYmVzdD1yfXJldHVybiBwfWZ1bmN0aW9uIGkocixxLHApe2lmKHEpe3I9ci5yZXBsYWNlKC9eKCg8W14+XSs+fFx0KSspL2dtLGZ1bmN0aW9uKHQsdyx2LHUpe3JldHVybiB3LnJlcGxhY2UoL1x0L2cscSl9KX1pZihwKXtyPXIucmVwbGFjZSgvXG4vZywiPGJyPiIpfXJldHVybiByfWZ1bmN0aW9uIG4odCx3LHIpe3ZhciB4PWgodCxyKTt2YXIgdj1hKHQpO3ZhciB5LHM7aWYodil7eT1kKHYseCl9ZWxzZXtyZXR1cm59dmFyIHE9Yyh0KTtpZihxLmxlbmd0aCl7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKTtzLmlubmVySFRNTD15LnZhbHVlO3kudmFsdWU9ayhxLGMocykseCl9eS52YWx1ZT1pKHkudmFsdWUsdyxyKTt2YXIgdT10LmNsYXNzTmFtZTtpZighdS5tYXRjaCgiKFxcc3xeKShsYW5ndWFnZS0pPyIrdisiKFxcc3wkKSIpKXt1PXU/KHUrIiAiK3YpOnZ9aWYoL01TSUUgWzY3OF0vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnQudGFnTmFtZT09IkNPREUiJiZ0LnBhcmVudE5vZGUudGFnTmFtZT09IlBSRSIpe3M9dC5wYXJlbnROb2RlO3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuaW5uZXJIVE1MPSI8cHJlPjxjb2RlPiIreS52YWx1ZSsiPC9jb2RlPjwvcHJlPiI7dD1wLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDtwLmZpcnN0Q2hpbGQuY049cy5jTjtzLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHAuZmlyc3RDaGlsZCxzKX1lbHNle3QuaW5uZXJIVE1MPXkudmFsdWV9dC5jbGFzc05hbWU9dTt0LnJlc3VsdD17bGFuZ3VhZ2U6dixrdzp5LmtleXdvcmRfY291bnQscmU6eS5yfTtpZih5LnNlY29uZF9iZXN0KXt0LnNlY29uZF9iZXN0PXtsYW5ndWFnZTp5LnNlY29uZF9iZXN0Lmxhbmd1YWdlLGt3Onkuc2Vjb25kX2Jlc3Qua2V5d29yZF9jb3VudCxyZTp5LnNlY29uZF9iZXN0LnJ9fX1mdW5jdGlvbiBvKCl7aWYoby5jYWxsZWQpe3JldHVybn1vLmNhbGxlZD10cnVlO3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKTtmb3IodmFyIHA9MDtwPHIubGVuZ3RoO3ArKyl7dmFyIHE9YihyW3BdKTtpZihxKXtuKHEsaGxqcy50YWJSZXBsYWNlKX19fWZ1bmN0aW9uIGwoKXtpZih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLG8sZmFsc2UpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvLGZhbHNlKX1lbHNle2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCJvbmxvYWQiLG8pfWVsc2V7d2luZG93Lm9ubG9hZD1vfX19dmFyIGU9e307dGhpcy5MQU5HVUFHRVM9ZTt0aGlzLmhpZ2hsaWdodD1kO3RoaXMuaGlnaGxpZ2h0QXV0bz1nO3RoaXMuZml4TWFya3VwPWk7dGhpcy5oaWdobGlnaHRCbG9jaz1uO3RoaXMuaW5pdEhpZ2hsaWdodGluZz1vO3RoaXMuaW5pdEhpZ2hsaWdodGluZ09uTG9hZD1sO3RoaXMuSVI9IlthLXpBLVpdW2EtekEtWjAtOV9dKiI7dGhpcy5VSVI9IlthLXpBLVpfXVthLXpBLVowLTlfXSoiO3RoaXMuTlI9IlxcYlxcZCsoXFwuXFxkKyk/Ijt0aGlzLkNOUj0iXFxiKDBbeFhdW2EtZkEtRjAtOV0rfChcXGQrKFxcLlxcZCopP3xcXC5cXGQrKShbZUVdWy0rXT9cXGQrKT8pIjt0aGlzLkJOUj0iXFxiKDBiWzAxXSspIjt0aGlzLlJTUj0iIXwhPXwhPT18JXwlPXwmfCYmfCY9fFxcKnxcXCo9fFxcK3xcXCs9fCx8XFwufC18LT18L3wvPXw6fDt8PHw8PHw8PD18PD18PXw9PXw9PT18Pnw+PXw+Pnw+Pj18Pj4+fD4+Pj18XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+Ijt0aGlzLkVSPSIoPyFbXFxzXFxTXSkiO3RoaXMuQkU9e2I6IlxcXFwuIixyOjB9O3RoaXMuQVNNPXtjTjoic3RyaW5nIixiOiInIixlOiInIixpOiJcXG4iLGM6W3RoaXMuQkVdLHI6MH07dGhpcy5RU009e2NOOiJzdHJpbmciLGI6JyInLGU6JyInLGk6IlxcbiIsYzpbdGhpcy5CRV0scjowfTt0aGlzLkNMQ009e2NOOiJjb21tZW50IixiOiIvLyIsZToiJCJ9O3RoaXMuQ0JMQ0xNPXtjTjoiY29tbWVudCIsYjoiL1xcKiIsZToiXFwqLyJ9O3RoaXMuSENNPXtjTjoiY29tbWVudCIsYjoiIyIsZToiJCJ9O3RoaXMuTk09e2NOOiJudW1iZXIiLGI6dGhpcy5OUixyOjB9O3RoaXMuQ05NPXtjTjoibnVtYmVyIixiOnRoaXMuQ05SLHI6MH07dGhpcy5CTk09e2NOOiJudW1iZXIiLGI6dGhpcy5CTlIscjowfTt0aGlzLmluaGVyaXQ9ZnVuY3Rpb24ocixzKXt2YXIgcD17fTtmb3IodmFyIHEgaW4gcil7cFtxXT1yW3FdfWlmKHMpe2Zvcih2YXIgcSBpbiBzKXtwW3FdPXNbcV19fXJldHVybiBwfX0oKTtobGpzLkxBTkdVQUdFUy5jcHA9ZnVuY3Rpb24oKXt2YXIgYT17a2V5d29yZDp7ImZhbHNlIjoxLCJpbnQiOjEsImZsb2F0IjoxLCJ3aGlsZSI6MSwicHJpdmF0ZSI6MSwiY2hhciI6MSwiY2F0Y2giOjEsImV4cG9ydCI6MSx2aXJ0dWFsOjEsb3BlcmF0b3I6MixzaXplb2Y6MixkeW5hbWljX2Nhc3Q6Mix0eXBlZGVmOjIsY29uc3RfY2FzdDoyLCJjb25zdCI6MSxzdHJ1Y3Q6MSwiZm9yIjoxLHN0YXRpY19jYXN0OjIsdW5pb246MSxuYW1lc3BhY2U6MSx1bnNpZ25lZDoxLCJsb25nIjoxLCJ0aHJvdyI6MSwidm9sYXRpbGUiOjIsInN0YXRpYyI6MSwicHJvdGVjdGVkIjoxLGJvb2w6MSx0ZW1wbGF0ZToxLG11dGFibGU6MSwiaWYiOjEsInB1YmxpYyI6MSxmcmllbmQ6MiwiZG8iOjEsInJldHVybiI6MSwiZ290byI6MSxhdXRvOjEsInZvaWQiOjIsImVudW0iOjEsImVsc2UiOjEsImJyZWFrIjoxLCJuZXciOjEsZXh0ZXJuOjEsdXNpbmc6MSwidHJ1ZSI6MSwiY2xhc3MiOjEsYXNtOjEsImNhc2UiOjEsdHlwZWlkOjEsInNob3J0IjoxLHJlaW50ZXJwcmV0X2Nhc3Q6MiwiZGVmYXVsdCI6MSwiZG91YmxlIjoxLHJlZ2lzdGVyOjEsZXhwbGljaXQ6MSxzaWduZWQ6MSx0eXBlbmFtZToxLCJ0cnkiOjEsInRoaXMiOjEsInN3aXRjaCI6MSwiY29udGludWUiOjEsd2NoYXJfdDoxLGlubGluZToxLCJkZWxldGUiOjEsYWxpZ25vZjoxLGNoYXIxNl90OjEsY2hhcjMyX3Q6MSxjb25zdGV4cHI6MSxkZWNsdHlwZToxLG5vZXhjZXB0OjEsbnVsbHB0cjoxLHN0YXRpY19hc3NlcnQ6MSx0aHJlYWRfbG9jYWw6MSxyZXN0cmljdDoxLF9Cb29sOjEsY29tcGxleDoxfSxidWlsdF9pbjp7c3RkOjEsc3RyaW5nOjEsY2luOjEsY291dDoxLGNlcnI6MSxjbG9nOjEsc3RyaW5nc3RyZWFtOjEsaXN0cmluZ3N0cmVhbToxLG9zdHJpbmdzdHJlYW06MSxhdXRvX3B0cjoxLGRlcXVlOjEsbGlzdDoxLHF1ZXVlOjEsc3RhY2s6MSx2ZWN0b3I6MSxtYXA6MSxzZXQ6MSxiaXRzZXQ6MSxtdWx0aXNldDoxLG11bHRpbWFwOjEsdW5vcmRlcmVkX3NldDoxLHVub3JkZXJlZF9tYXA6MSx1bm9yZGVyZWRfbXVsdGlzZXQ6MSx1bm9yZGVyZWRfbXVsdGltYXA6MSxhcnJheToxLHNoYXJlZF9wdHI6MX19O3JldHVybntkTTp7azphLGk6IjwvIixjOltobGpzLkNMQ00saGxqcy5DQkxDTE0saGxqcy5RU00se2NOOiJzdHJpbmciLGI6IidcXFxcPy4iLGU6IiciLGk6Ii4ifSx7Y046Im51bWJlciIsYjoiXFxiKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKHV8VXxsfEx8dWx8VUx8ZnxGKSJ9LGhsanMuQ05NLHtjTjoicHJlcHJvY2Vzc29yIixiOiIjIixlOiIkIn0se2NOOiJzdGxfY29udGFpbmVyIixiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YSxyOjEwLGM6WyJzZWxmIl19XX19fSgpO2hsanMuTEFOR1VBR0VTLnI9e2RNOntjOltobGpzLkhDTSx7Y046Im51bWJlciIsYjoiXFxiMFt4WF1bMC05YS1mQS1GXStbTGldP1xcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjB9LHtjTjoibnVtYmVyIixiOiJcXGJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCtcXC4oPyFcXGQpKD86aVxcYik/IixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJudW1iZXIiLGI6IlxcYlxcZCsoPzpcXC5cXGQqKT8oPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k/XFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJrZXl3b3JkIixiOiIoPzp0cnlDYXRjaHxsaWJyYXJ5fHNldEdlbmVyaWN8c2V0R3JvdXBHZW5lcmljKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcLiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImtleXdvcmQiLGI6IlxcLlxcLlxcZCsoPyFbXFx3Ll0pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MTB9LHtjTjoia2V5d29yZCIsYjoiXFxiKD86ZnVuY3Rpb24pIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJrZXl3b3JkIixiOiIoPzppZnxpbnxicmVha3xuZXh0fHJlcGVhdHxlbHNlfGZvcnxyZXR1cm58c3dpdGNofHdoaWxlfHRyeXxzdG9wfHdhcm5pbmd8cmVxdWlyZXxhdHRhY2h8ZGV0YWNofHNvdXJjZXxzZXRNZXRob2R8c2V0Q2xhc3MpXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJsaXRlcmFsIixiOiIoPzpOQXxOQV9pbnRlZ2VyX3xOQV9yZWFsX3xOQV9jaGFyYWN0ZXJffE5BX2NvbXBsZXhfKVxcYiIsZTpobGpzLklNTUVESUFURV9SRSxyOjEwfSx7Y046ImxpdGVyYWwiLGI6Iig/Ok5VTEx8VFJVRXxGQUxTRXxUfEZ8SW5mfE5hTilcXGIiLGU6aGxqcy5JTU1FRElBVEVfUkUscjoxfSx7Y046ImlkZW50aWZpZXIiLGI6IlthLXpBLVouXVthLXpBLVowLTkuX10qXFxiIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MH0se2NOOiJvcGVyYXRvciIsYjoiPFxcLSg/IVxccypcXGQpIixlOmhsanMuSU1NRURJQVRFX1JFLHI6Mn0se2NOOiJvcGVyYXRvciIsYjoiXFwtPnw8XFwtIixlOmhsanMuSU1NRURJQVRFX1JFLHI6MX0se2NOOiJvcGVyYXRvciIsYjoiJSV8fiIsZTpobGpzLklNTUVESUFURV9SRX0se2NOOiJvcGVyYXRvciIsYjoiPj18PD18PT18IT18XFx8XFx8fCYmfD18XFwrfFxcLXxcXCp8L3xcXF58Pnw8fCF8JnxcXHx8XFwkfDoiLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfSx7Y046Im9wZXJhdG9yIixiOiIlIixlOiIlIixpOiJcXG4iLHI6MX0se2NOOiJpZGVudGlmaWVyIixiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixiOiciJyxlOiciJyxjOltobGpzLkJFXSxyOjB9LHtjTjoic3RyaW5nIixiOiInIixlOiInIixjOltobGpzLkJFXSxyOjB9LHtjTjoicGFyZW4iLGI6IltbKHtcXF0pfV0iLGU6aGxqcy5JTU1FRElBVEVfUkUscjowfV19fTsKaGxqcy5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkKCk7Cgo="></script>
<style type="text/css">
pre:not([class]) {
background-color: white;
}
</style>
<script type="text/javascript">
if (window.hljs && document.readyState && document.readyState === "complete") {
window.setTimeout(function() {
hljs.initHighlighting();
}, 0);
}
</script>
</head>
<body>
<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
height: auto;
}
</style>
<div class="container-fluid main-container">
<div id="header">
<h1 class="title">Automated C Code Generation for Use with the ‘deSolve’ and ‘bvpSolve’ Packages</h1>
<h4 class="author"><em>Daniel Kaschek</em></h4>
<h4 class="date"><em>September 29, 2015</em></h4>
</div>
<p>cOde generates all necessary C functions allowing the user to work with the compiled-code interface of ode() and bvptwp(). The implementation supports “forcings” and “events”. The package also provides functions to symbolically compute Jacobians, sensitivity equations and adjoint sensitivities being the basis for sensitivity analysis.</p>
<div id="first-example-exponential-decay" class="section level2">
<h2>First example: exponential decay</h2>
<p><span class="math display">\[A \stackrel{k1}{\rightarrow} B \stackrel{k2}{\rightarrow} \emptyset\]</span></p>
<pre class="r"><code>library(cOde)
library(deSolve)
# Define ODE as character vector
f <- c(
A = "-k1*A",
B = "k1*A - k2*B"
)
# Auto-generate C code and compile it
func <- funC(f)
# Integrate (compiled) ODE by wrapper function odeC
times <- 0:100
yini <- c(A = 1, B = 0)
parms <- c(k1 = 2e-1, k2 = 1e-1)
out <- odeC(y = yini, times = times, func = func, parms = parms)
# Plot the result
with(as.data.frame(out), matplot(x = time, y = cbind(A, B), type = "l", lty = 1))</code></pre>
<p><img src="data:image/png;base64,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" title alt width="480" /></p>
</div>
<div id="second-example-sensitivity-equations" class="section level2">
<h2>Second example: sensitivity equations</h2>
<p>Given the ODE <span class="math inline">\(\dot x = f(x, p)\)</span>, generate the sensitivity equations and integrate the together with the original ODE.</p>
<pre class="r"><code># Compute sensitivity equations of f
f.sens <- sensitivitiesSymb(f)
# Auto-generate C code of the combined ODE system and compile it.
func <- funC(c(f, f.sens))
# Solve the ODE by lsodes()
yini <- c(yini, attr(f.sens, "yini"))
out <- odeC(y = yini, times = times, func = func, parms = parms, method = "lsodes")
# Plot the result (plot shows the sensitivities of B)
with(as.data.frame(out), matplot(x = time, y = cbind(B.k1, B.k2, B.A, B.B), type = "l", lty = 1))</code></pre>
<p><img src="data:image/png;base64,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zgLfrFkzSWfPnu3Zs+fdHn5utVp79ux59uzZW+NdWfBfj03au3fv3ca0atWqYcOGkqZMmbJjx44MSgZX0LKlJH33nekcgINcvar27fXnn+rcWS++aDoNAAAA0sTOAt+/f//MmTNLioqKaty48a0F5Lds27atUaNG8+bNkxQQEPCiy/+AWK1aNdsXw4cPT0lJSXWMxWKZPn16YGBgSkpK9+7d2c3OizRvLh8frVune045AdxG377au1dlymj6dNNRAAAAkFZ2FviiRYv+5z//sX29du3amjVrhoSENGjQoEuXLg0aNAgJCalVq9a6vx67NWnSJNefQl+wYME6depIWrNmTdeuXU+dOpXqsOLFi3/wwQeSfv755/bt21++fDlDU8KUvHlVtaoSE3mYHDzBhAn68ktlz64FC5Q9u+k0AAAASCv79xwODw/PnDnziy++aFsGf/LkyZMnT942JleuXJMnT3766afTlTGjfPDBB/Xr109OTp41a9b8+fMfe+yxRx55pE+fPraN9G/p37//8uXLV6xYsXr16nLlyvXr1+/ChQvOyPP1119HRkbaceChQ4ckxcXFOTqRd2vZUtu3a9kytW5tOgqQDtHRGjxYFosiI/Xww6bTAAAA4D5Y7raCPY3OnDkzbdq0xYsX//TTT7dmnvv7+z/66KPt2rXr0aPHrbXlbmHmzJm9e/e+cePGrVe+/PLLZ5555rZhiYmJTz/99IIFC257PZ3/Mm/TuXPnuXPn2n141apVY2JiHJjH2+3cqapVFRKiY8f015aHgJs5e1ZVqujUKQ0apNGjTacBAACw37PPPjtr1qxU+5oHS+9Tf/Pnz//ee++99957165dO3/+fFxcXI4cOYKDg13/uXGp6tq1a+XKlT/44IPFixcnJCTcbVjmzJmjoqJGjhz58ccfO++RcjNmzOjTp09ycvL9Hti3b99Dhw4VKlTIGam816OPqmBBnTihn39W+fKm0wD3LylJYWE6dUr162vECNNpAAAAcN/SW+BvCQwMDAkJcdSnGVShQoU5c+YkJib++OOPJ0+erFSpUqrDfH19hw4d+vrrr8+fP3/btm1Hjx496uiHhGfLlq1BgwZ2HJidRa3OYLGoWTNFRuq77yjwcEtvvqkNG5Q/v2bPViaHffMHAABAhuFnuNRlzpy5Zs2aaRnWpUuXLl26ZEAkmNey5c0C/8YbpqMA92nxYo0bJz8/RUWpYEHTaQAAAGCPdBX4EydOrF27dvfu3devX//XwZMmTUrPuQDzmjSRv7+io3XxovLkMZ0GSLODB/Xcc7JaNWaM6tQxnQYAAAB2sr/AR0VF9ezZ82qaH4vtAQU+MTHx0qVLkvLnz286C0zInl116mjNGi1fLjd5tgKg+Hh17Kg//1Tnznr5ZdNpAAAAYD87nwN/+PDhLl26pL29e4Z169YVKFCgQIECpoPAnBYtJOn7703nANKsXz/t2aNSpfTJJ6ajAAAAIF3svAM/YsSIpKQkSdWrV/+///u/cuXKBQQEODQY4JJattSrr2rZMiUny9fXdBrg38yYoc8/V9asWrBAOXKYTgMAAIB0sbPA79ixQ1Lx4sU3bNhAdYcXKV1aJUro8GFt365atUynAe5pz56bc+anTNEjj5hOAwAAgPSycwr9kSNHJPXu3Zv2Dq9jm0X/3XemcwD3dOWKOnVSfLyef17PPWc6DQAAABzAzgKfJUsWSQ899JBDwwDuoGVLiQIP12a1qnt37d+vihX10Uem0wAAAMAx7CzwpUuXlrRv3z6HhgHcQb16yp5du3fr5EnTUYC7GD9e33yjXLm0YIECA02nAQAAgGPYWeC7du0qacmSJTdu3HBoHsDlZc6shg1ltbIXPVzUf/+rN9+UxaLISBUrZjoNAAAAHMbOAt+9e/f69ev/+OOPAwcOTElJcWwml1W0aNHBgwcPHjzYdBCYZlsGv2yZ6RzAPKZcuAAAIABJREFUHS5eVFiYrl/X66+rXTvTaQAAAOBIdhZ4Pz+/b7755oknnpg0aVL16tWXLFly9uxZq9Xq2HCupnTp0qNGjRo1apTpIDCtVStZLFq1SomJpqMAf5OSoi5ddOyYatXS8OGm0wAAAMDB7HyMXKtWrST5+Pj4+fnt3LmzTZs2krJly5YzZ867HXKSBcPwGAULqkIF7d6tjRvVpInpNMBfhg3T8uXKl0/z5snPz3QaAAAAOJidBf671Lbgvnr16tWrV9OXB3ATLVtq92599x0FHq5i7VoNGyYfH82apUKFTKcBAACA49lZ4B977DHH5gDcTMuW+uADLVmiCRNMRwGkM2fUpYuSkzVsGL9UAgAA8FR2FvjNmzc7NgfgZmrUUHCwjh7VgQMqXdp0Gni3pCSFhurMGTVrpiFDTKcBAACAs9i5iR3g7Xx91ayZJKW2nATIUG+9pc2bFRKiL7+UD9/VAQAAPBY/6gH2at5c4mFyMG3ZMo0Zo0yZ9NVXCg42nQYAAABOlKYp9BcvXvzpp59sX9evX9+JcQA30qyZMmXSxo26fFl3f/4C4EQnTqhrV1mtGjlSjz9uOg0AAACcK00Ffvv27c1tNxsl28PeCxcufL9n4jFy8DR58qhGDW3ZorVr1a6d6TTwPjdu6KmndP68WrbUq6+aTgMAAACns3MTu1OnTjk2B+CWWrbUli367jsKPAwYPFhbtigkRDNnymIxnQYAAABOx2PkgHRo2VJDhmjZMlmtNChkqKVLNWGC/Pw0Z46CgkynAQAAQEZIU4Fv2LBhbGzs31/hMXKAJFWooIce0rFj+vFHPfqo6TTwGsePq1s3Wa0aM0a1a5tOAwAAgAySpl3o/f39g//i7ECAm+FhcshgN26oc2dduKDWrfXSS6bTAAAAIOPwGDkgfVq2lCjwyECvvqroaD30kD7/nIUbAAAAXsXONfB/d+LEiZUrV8bExMTGxsbHx+fOnbtIkSK1a9du3LhxQEBA+j8fcGmNGyswUDExOntWDzxgOg083bffatIkZc6sb75Rnjym0wAAACBDpavAnzlz5pVXXomKikpJSbnz3eDg4IEDB7722mt+fn7pOQvg0gIDVa+eli/Xd9+pRw/TaeDRDh/Wc8/JatW4capSxXQaAAAAZDT7p9Dv37+/QoUKc+bMSbW9Szp//vyQIUPq1av3559/2n0WwA20by9J8+ebzgGPlpiosDBdvqzQUPXrZzoNAAAADLCzwCckJLRs2dK2Nb3FYnnqqafmz5+/a9eus2fPxsTEfPXVVy1atLCNjI6ODgsLs1qtDosMuJp27ZQpk1av1sWLpqPAcw0YoB9+UMmSmjHDdBQAAACYYWeBj4iIOHr0qKSCBQvu3r37q6++6tChQ8WKFfPly1e1atWnnnrqu+++27RpU65cuSQtX7588eLFjkwNuJTgYDVsqBs3tGiR6SjwUHPmaNo0BQQoKko5cphOAwAAADPsLPDffPONJH9//wULFpQvXz7VMY8//vjXX39tsVgkzZw50+6IgBsIDZWkefNM54AnOnxYffpI0vjxqlTJdBoAAAAYY2eB37t3r6QGDRrUqFHjHsOaNWtWvXp1STExMfadCHAP7drJz09r1ujCBdNR4FkSEtSpk/78U5066fnnTacBAACASXYW+MuXL0u6d3u3qV27tiTbannAYwUFqUEDZtHD8V5+WT/+qBIlFBFhOgoAAAAMs7PABwcHS0pMTPzXkbYxQUFB9p0IcBvMoofDRUVp+nSWvgMAAMDGzgJfq1YtSZs3b773MKvVahtTiXWb8HgdOsjfX2vWiPkmcIhDh9S7tyRNmKDKlU2nAQAAgHl2Fvi+fftK2rJly+eff36PYZMnT/7pp58k9ezZ074TAW4jd241aKCkJH37rekocH8JCQoLu7n03baDHQAAALyenQW+UaNGr7/+uqTw8PAPP/zw6tWrtw24cuXKBx98MGDAAEmhoaHt27dPZ1DADTCLHo7y0kssfQcAAMBtMqVl0IwZM+58sWTJklWqVNm5c+fgwYM//PDDxo0bFytWrECBAmfOnDly5MiqVasuXrwoqUmTJsOHDz927FiRIkUcGx1wOe3bq2/fm7Po8+Y1nQZua+5cRUSw9B0AAAC3SVOB721bh3l3Fy5cmDt3bqpvrVq1qnTp0pKsVuv9hgPcjG0W/YoVWrxYvXqZTgP3dOiQwsMlaeJElr4DAADg7+ycQg8gdcyiR3rceup7WNjNGg8AAAD8JU134FetWuXsHICHsM2iX7uWWfSwR//+2rVLJUtq+nTTUQAAAOBy0lTgGzdu7OwcgIfInVsNG2r5cmbR477NnasZMxQQoLlzWfoOAACAOzlmCn1SUtJtrxw5coRF7/BSzKKHHQ4cuPkbn//8h6XvAAAASFW6CvyVK1c+/PDDJ554wrZN3d+VKFGiaNGi/fv3P3fuXHpOAbifJ5+Un5/WrtX586ajwE1cu6bQUF29qi5d9G+bhgIAAMBr2V/g9+3b98gjjwwePHjlypVxcXF3Djh27NikSZMqVaq0d+/edCQE3E2ePGrcWElJWrjQdBS4iRdf1J49KlVKU6eajgIAAADXZWeBT05O7tSp04kTJyRlypSpdu3atw3o27dvgQIFJP3+++/t2rWLj49PZ1DAnTCLHmn39deKjLz51Pfs2U2nAQAAgOuys8B/8cUXP//8s6R69eodP358wYIFtw2YPHnykSNHunbtKunQoUMzZ85MZ1DAnbRrJ39/rVsnlpDg3g4eVJ8+kjR1qipWNJ0GAAAALs3OAj9v3jxJQUFBixYtst1pv1NgYOD06dOLFSsmafXq1XZHBNxPrlxq1EhJSVq82HQUuLC4OLVrpytX9PTT6tbNdBoAAAC4OjsL/KFDhyR16NAhV65c9xjm7+/fpk0bSfv377fvRIC7YhY9/lW/fvrlFz3yiCIiTEcBAACAG7CzwB8/flzSgw8++K8j8+fPL+no0aP2nQhwV7ZZ9GvXMoseqYuM1MyZyppVUVHKksV0GgAAALgBOwt8zpw5JR08ePBfR9ruvWdnZyZ4m1y51LixkpO1aJHpKHA9P/+s/v0lacoUlS1rOg0AAADcg50FvmzZspI2btyYkJBwj2EJCQkbNmyQdOeD4gHPxyx6pCouTp06KT5evXrpuedMpwEAAIDbsLPAd+jQQdJvv/3Wu3dvq9Wa6hir1frSSy/9+uuvkmwr4QHv8uST7EWPVLzwgvbtU7lymjjRdBQAAAC4EzsLfO/evYsUKSJp1qxZ1atXnz9//t+f9H79+vVVq1bVrVs3IiJCUr58+Z5//nlHpAXcCrPocafp0/Xll8qWjaXvAAAAuF92FviAgIBFixbZVsLv2LEjNDQ0a9as+fLlq1ixYkhISEBAQNOmTTdv3izJ399/7ty5rIGHl2IWPf5uzx4NGCBJU6fq4YdNpwEAAICbsbPAS6pYseL27dtr1Khx65XY2Niffvrp5MmTtybVFy9efP369fXr109nSsBdtW0rf3+tX6/YWNNRYNqff6pDB127pj599MwzptMAAADA/dhf4CWVKlUqOjp6zZo14eHh5cqVs92Qz5IlS9GiRTt37jxnzpx9+/bVqlXLQVEBN5Q7t5o0UVKSFiwwHQWm9eqlQ4dUubImTDAdBQAAAG4pUzqPt1gsDRs2bNiwoe2PVqvVYrGkOxXgQcLC9N13mjlTffqYjgJzJk7UvHnKmVNRUQoIMJ0GAAAAbildd+DvRHsHbtexo3LnVnS0du82HQWG/Pe/GjRIFos+/VQlSphOAwAAAHfl4AIP4HaBgXrqKUn67DPTUWDCxYvq3FnXr2vgQHXoYDoNAAAA3BgFHnA+2+T5L79UQoLpKMhYKSnq0kW//aaaNfXBB6bTAAAAwL1R4AHnq1BBVavq4kW2svM6w4Zp+XLlzav58+XvbzoNAAAA3BsFHsgQvXpJ0owZpnMgA61dq2HD5OOjL79UoUKm0wAAAMDtUeCBDNGli7Jn1/r1OnTIdBRkiDNn1KWLkpP17rt64gnTaQAAAOAJKPBAhsiWTaGhslr16aemo8D5kpLUqZPOnFGjRnrrLdNpAAAA4CEo8EBG6d1bkj7/XDdumI4CJxs8WJs2qXBhzZkjX1/TaQAAAOAhKPBARqlZUxUr6uxZLVliOgqc6dtvNX68/Pw0Z46Cg02nAQAAgOegwAMZqEcPSYqIMJ0DTnP4sJ57TlarxozRY4+ZTgMAAACPQoEHMtBzzylLFq1cqWPHTEeBEyQkKCxMly+rbVu99JLpNAAAAPA0FHggA+XKpXbtlJKiyEjTUeAE/frphx9UqpS++EIWi+k0AAAA8DQUeCBj2bayi4xUcrLpKHCoiAhFRipLFs2bpxw5TKcBAACAB6LAAxmrXj2VKaOTJ7V8uekocJzt29W/vyRNmaIKFUynAQAAgGeiwAMZrnt3SZoxw3QOOMiFCwoLU2KiXnpJXbuaTgMAAACPRYEHMlyPHsqcWUuX6vRp01GQbsnJevpp/fabatXSmDGm0wAAAMCTUeCBDBccrFatlJSkmTNNR0G6vfmmVq7UAw9o3jz5+5tOAwAAAE9GgQdMsG1lFxGhlBTTUZAOixdr7Fj5+SkqSoUKmU4DAAAAD0eBB0xo0kRFiujXX7VunekosNfBg+raVVarxo5V3bqm0wAAAMDzUeABE3x81KOHJEVEmI4Cu1y9qnbtdPmynnpKL71kOg0AAAC8AgUeMKRHD/n6auFCxcaajoL7ZLWqRw/98ovKl+dXMAAAAMgwFHjAkEKF1Ly5rl/Xl1+ajoL7NGaM5s1TrlxasEBZs5pOAwAAAG9BgQfM6dVLkqZPl9VqOgrSbN06vfWWLBZFRqpECdNpAAAA4EUo8IA5LVuqYEEdOKAtW0xHQdqcOKGwMCUl6e231a6d6TQAAADwLhR4wJxMmdS9uyRNn246CtIgIUEdOyo2Vs2a6d13TacBAACA16HAA0b17ClfX82dq+PHTUfBvwkP1/btKl5cs2fLh2+eAAAAyGj8DAoYVbSowsJ0/brGjjUdBfc0Zoy+/FLZsmnhQuXJYzoNAAAAvBEFHjBt6FD5+CgiQr//bjoK7mLlSr355s2N68qXN50GAAAAXooCD5j28MNq00YJCZo40XQUpObAAYWFKTlZ77+v0FDTaQAAAOC9KPCAC3jnHVksmjRJ58+bjoJ/+vNPtW+vP/5Q+/Z66y3TaQAAAODVKPCAC6hcWU2aKC5OkyebjoK/SUnR00/rl19UsaK++EIWi+lAAAAA8GoUeMA12O7u/uc/unLFdBT8ZfBgffedgoK0YIGyZjWdBgAAAN6OAg+4hrp1VaeOLl7UtGmmo0CSNGuWxo6Vn5/mz1exYqbTAAAAABR4wHUMGSJJ48bp2jXTUbzeDz+oTx9J+vhj1a9vOAwAAAAgiQIPuJBmzVStms6e1aefmo7i3c6cUdu2io9X3743azwAAADgAijwgCt5801J+vBDXb9uOoq3SkhQu3Y6eVKPP67x402nAQAAAP6HAg+4kief1COP6MQJzZplOoq3ev55bdumIkW0cKH8/U2nAQAAAP6HAg+4Eovl5kr4UaOUnGw6jfcZMUIzZypbNi1erOBg02kAAACAf6DAAy4mLEwlSujQIUVFmY7iZWbP1ttvy9dXs2erQgXTaQAAAIDbUeABF+Prq0GDJGn4cKWkmE7jNTZtUs+eslr10Udq08Z0GgAAACAVFHjA9XTrpoce0i+/aMkS01G8w/79evJJJSbqlVf00kum0wAAAACpo8ADrsfPTwMHStKIEaajeIHz59W6tS5eVKtWGjPGdBoAAADgrijwgEsKD1eBAoqJ0apVpqN4tGvX1KaNDh9W1aqaM0e+vqYDAQAAAHdFgQdcUkDAzbnc3IR3npQUPfOMoqNVtKiWLlXWrKYDAQAAAPdCgQdcVd++yp1bGzZo82bTUTzUwIFasEB58uj77/XAA6bTAAAAAP+CAg+4qhw51L+/xE145/jPfzRxojJn1sKFKl3adBoAAADg31HgARf20kvKnl3Ll2vlStNRPMvixRo4UBaLIiNVt67pNAAAAECaUODv2/Xr148ePXrkyJH4+HjTWeDpgoI0dKgk9eunhATTaTzFzp3q0kXJyRo+XE8/bToNAAAAkFYU+NvFxcUtWbJk7NixI0eOnDdv3t9b+t69e9u1axcQEFC8ePESJUrkyJGjQYMGy5Yts1qtBgPDw73yisqV0+HDGj3adBSPcOSIWrZUXJx69dKQIabTAAAAAPchk+kArmXatGlDhgy5dOnSrVfy5s0bFRVVv379vXv31q1b9+LFi7feSk5OXr9+/fr163v16jV16tRMmfiXCSfw89PUqapbV6NG6emnVbKk6UDu7ORJNWmis2fVtKmmTDGdBgAAALg/3IH/n1GjRr3wwgt/b++SYmNjW7Zs+dtvv/Xt29fW3rNmzVqzZs1atWrlyJHDNmbGjBnvvPOOgcTwEo8/rm7dlJCgfv1MR3FnsbF64gn9+qtq1ND8+fLzMx0IAAAAuD8U+JsOHDgw1LbYWHrsscfee++9KVOmvPzyy4GBgfHx8aGhoRs3bpQ0YMCA8+fPR0dHb9269dKlS5988omtxo8ePfro0aMm/wLwbGPGKDhYq1YpKsp0FPd0+bKaN9cvv6h8eS1bpuzZTQcCAAAA7hsF/qaIiIjk5GRJw4YN27Rp07vvvvvCCy9MmDBhw4YNknbs2CGpWbNm48ePDwgIsB3i4+MTHh4eGRkpKSUlZfr06ebiw9MFBWnkSEl6+WVdvmw6jbuJj1fr1tq5UyVLauVK5cljOhAAAABgDwr8TT/99JOkihUrvvnmmxaL5dbr1apVq1Onju3rgQMH3nlg+/btq1atKmnt2rUZkhTeqmdP1a6tM2f07rumo7iV69fVoYM2bVJIiFatUv78pgMBAAAAdqLA33Tw4EFJDRo08PX1ve2tBg0a2L4oXbr0nQdaLJZHH31UElPo4VwWiz75RH5+mjRJP/xgOo2bSE7WM89o+XLly6dVq/TQQ6YDAQAAAPajwN906tQpSflTuzsXFBRk+6JQoUKpHluwYEFJl5nYDGcrV079+ys5WX36KDnZdBqXZ7UqPFzz5ilXLq1YodR+AQcAAAC4EQr8TdmzZ5f066+/3vlW/vz5g4KCgoKC7rw5b3Ps2LFbnwA417Bheugh7dihiAjTUVyb1aq+fRUZqRw5tHKlKlUyHQgAAABILwr8TWXKlJG0atWqa9eu3fZWp06dzp8/f/78+VQPTE5O3rZtm6SiRYs6OySgLFk0bpwkvfGGfv/ddBoX9uabmjZNgYFavFjVqplOAwAAADgABf6m5s2bSzp69Gj//v3j4+PTfuCkSZP27dsnqW7dus4KB/xdhw5q1UqXL2vwYNNRXNWwYRo9Wn5+mjdP9eubTgMAAAA4RibTAVzF888/P27cuMuXL3/66afff/99p06dSpYsGRoamjdv3lTH37hxY//+/ePGjZs5c6YkHx+fPn36ODZSXFxcTExMUlLS/R545coVxyaBy5k4UWvWaNYsde+uvzZZxE0ffqh33pGvr2bPVsuWptMAAAAADkOBvylv3rxz5sxp165dQkLC6dOnJ0yYIKls2bL1U7t9t2bNmhYtWly/fv3WK++9955tEr4D9ezZc+7cuXYffvr0aQeGgWspVkxvvaWhQ9Wvn3btkr+/6UAuY+hQjRghHx9FRCg01HQaAAAAwJEo8P/TrFmzbdu2DRo0aOXKlfceee3atVvtPUuWLMOHDx8wYIDD87Ru3frChQt2HLhnz56zZ89WqVLF4ZHgQl5/XbNna98+jR2rIUNMp3EBVqsGDtSECfL11YwZ6tbNdCAAAADAwSjw/1CxYsUVK1acPn16y5YtJ0+eLFKkSKrDfH19ixQpUqZMmSZNmjzzzDP58uVzRpguXbp06dLFjgMHDhw4fvz4UqVKOTwSXIi/vyZPVqNGGjFC7dvL0RNA3ExSknr00JdfKiBAUVFq3dp0IAAAAMDxKPCpKFiwYOg9J982b9481QfOARmqQQN166bPPlPbttq2Tblzmw5kSGKiwsK0eLGyZ9fixWwKAAAAAE/FLvSAO5s8WdWq6eBBdeqk+9/v0BPExalNGy1erNy5tWIF7R0AAAAejAJ/HxITE8+cOXPmzBnTQYC/BAZq0SIVKqTVq/XKK6bTZLg//lDTplq5Uvnza/161aplOhAAAADgRBT4+7Bu3boCBQoUKFDAdBDgbwoW1OLFypJFkyZp6lTTaTLQ2bOqX19bt+qhh7RxoypUMB0IAAAAcC4KPOD+qlTR55/LYtHLL2vNGtNpMsSxY6pTR7t3q0wZbd6skiVNBwIAAACcjgIPeITQUA0erBs31KmTDh82ncbJ9u3T44/r0CFVqaJNm1S4sOlAAAAAQEagwAOeYsQItW2rixfVpo0uXzadxmmWLlXt2jp5UnXrau1aBQebDgQAAABkEAo84Cl8fDRrlipU0L59euopJSebDuRoKSl67z21bas//lCHDlq+XDlymM4EAAAAZBwKPOBBsmXTt98qXz59/70GDTKdxqH+/FMdO+r//k8Wi959V1FRCgw0nQkAAADIUBR4wLM89JAWLlTmzProI02fbjqNg+zfr5o1tXChgoK0bJnee08+fO8CAACA18lkOoA7KVq06ODBg02nAP5N7dr65BN166YXX1SpUqpf33Sg9Jk7Vz17Ki5OlSppwQIVLWo6EAAAAGAGBf4+lC5detSoUaZTAGnQtav27NG4cerUSVu2uOtT1pKS9OabGjdOVquefVaffMK0eQAAAHgzpqECHmr0aLVoodhY1ayp1atNp7l/sbF64gmNHatMmfTxx/riC9o7AAAAvBwFHvBQvr6aO1dt2ujiRTVvrvHjTQe6Hzt2qGpVrV2r/Pm1dq1efNF0IAAAAMA8CjzgubJl08KFevttJSdr4EB17aqEBNOZ/k1cnAYNUu3aOn5ctWtr5049/rjpTAAAAIBLoMADHs3HR++/r3nzlC2bvvhC9erp1CnTme5u0SKVLasxY5SSogEDtG6dChY0nQkAAABwFRR4wAt06KCtW1WsmLZvV+XK2rDBdKA7nDypjh3Vrp2OH1flytqyRePHy9/fdCwAAADAhVDgAe9QvrxiYtS4sWJj1bSpZswwHegvN25o4kQ9/LC++Ua5cmnCBMXEqEYN07EAAAAAl0OBB7xGnjxavlyDB+v6dfXurT59dOOG4UgbN6pyZQ0YoKtX1aqV9uzRyy/L19dwKgAAAMAlUeABb+Lrq1Gj9PnnCgjQ9Olq0kRnz5pJcuaMnnlG9etr716VKaO1a7VkiQoXNhMGAAAAcAcUeMD7dO2q9etVsKA2bFDx4nrxRR05knFn/+knvfiiSpfW7NkKDNSIEdq9Ww0aZFwAAAAAwD1R4AGvVKOGduxQ27aKj9fkySpVSh07KjraiWeMj9dnn6lWLVWsqMmT9eefatNGP/+sIUPYrA4AAABICwo84K0KFNCiRTp4UC+9pMyZ9c03ql1bVavqiy+UlOTIE+3frzfe0IMPqkcPbdumHDkUHq4ff9TixSpa1JEnAgAAADwaBR7wbiVKaOJE/fab3n1XwcHauVNdu6p0aU2cqLi4dH1yYqLmzVOTJnr4YY0erQsXVKWKPvlEp0/rk09UqZKD/gIAAACAt8hkOgAAF5Avn957T4MG6bPPNGGCDh/WgAEaNkwdOqhECRUtqqJFVayYcue+6yckJ+vYMR08qH37dOCADh7UDz/o8mVJyplTzzyj8HBVqJBhfyEAAADA81DgAfwlSxb166cXXtCiRRo3Tlu3avr0fwzIletmmbf9kz37za5u+9/ExNs/sEYN9emjsDBlyZJhfwkAAADAU1HgAfyTj4/at1f79oqJUXS0fv31f//88Yd+/FE//pj6gSEhKlVKpUurTBmVLq2HH1ZISMZGBwAAADwZBR7AXVSrpmrV/vFKbOw/+nxcnIoXV5kyN3t7tmyGggIAAABegQIPIM3y5lXevKpe3XQOAAAAwBuxCz0AAAAAAG6AAg8AAAAAgBugwAMAAAAA4AYo8AAAAAAAuAEKPAAAAAAAboACDwAAAACAG6DAAwAAAADgBijwAAAAAAC4AQo8AAAAAABugAIPAAAAAIAboMADAAAAAOAGKPAAAAAAALgBCjwAAAAAAG6AAg8AAAAAgBugwAMAAAAA4AYo8AAAAAAAuAEKPAAAAAAAboACDwAAAACAG6DAAwAAAADgBjKZDgBnGTFixKRJkzL4pJcuXfrjjz98fX0tFksGnxreIyUlJSUlhcsMTpWcnCzJ19fXdBB4LKvVmpyc7OPj4+PD3RQ4C5cZMkBKSorVan3ggQcCAwMz+NTnzp3L4DO6Agq8BypSpIikCxcuXLhwwUiApKQkI+eFV+EyQwZISUkxHQEeLjk52fbbIsB5uMyQAX7//Xcj57VYLLbu4z0sVqvVdAY43rFjx4x8p37rrbfmzJnz6quvtm7dOuPPDi8RHh5+8ODBTz75pHTp0qazwGPVr19f0vr16w3ngOc6cOBAnz59SpUqNX36dNNZ4LGWLFkybty4Vq1avfbaa6azwGONHTt26dKlI0aM6Ny5c8afPTAwsECBAhl/XoO4A++ZHnroISPnzZEjh6RSpUrVq1fPSAB4g+zZs0uqUqVKlSpVTGeBh+NbGZwnW7ZskrJnz85lBuc5cOCApIIFC3KZwXm++uorScHBwcWKFTOdxSuwHgYAAAAAADdAgQcAAAAAwA1Q4AEAAAAAcAMUeAAAAAAA3AAFHgAAAAAAN0CBBwAAAADADVDgAQAAAABwAxR4AAAAAADcAAUeAAAAAAA3QIEHAAAAAMANUOABAAAAAHADFHgAAAAAANwABR4AAAAAADdAgQcAAACHu/hvAAAYKUlEQVQAwA1Q4AEAAAAAcAMUeAAAAAAA3EAm0wHgUXLkyCEpZ86cpoPAk+XMmdNisdguNsBJ+D4GZ8uRI4fFYuFKg1PZLjD+iwmn4uf/DGaxWq2mM8BzXLlyZePGjc2aNfP19TWdBR7r5MmTR48erVu3rukg8GR79uyRVL58edNB4Mk2btxYrFixwoULmw4Cj5WcnLx8+fK6detmz57ddBZ4LH7+z2AUeAAAAAAA3ABr4AEAAAAAcAMUeAAAAAAA3AAFHgAAAAAAN0CBBwAAAADADVDgAQAAAABwAxR4AAAAAADcAAUeAAAAAAA3QIEHAAAAAMANUOABAAAAAHADFHgAAAAAANwABR4AAAAAADdAgQcAAAAAwA1Q4AEAAAAAcAMUeAAAAAAA3AAFHgAAAAAAN0CBBwAAAADADVDgAQAAAABwAxR4AAAAAADcAAUeAAAAAAA3QIEHAAAAAMANUOABAAAAAHADFHgAAAAAANwABR4AAAAAADdAgQcAAAAAwA1Q4OEAO3fu7N27d4kSJQIDA4OCgqpVqzZ69Og//vjDdC64pbNnzy5duvSzzz779NNPly1bdvHixX89hCsQ6WG1WufNmzdr1qzTp0/fYxiXGe5LYmLizJkzmzZtGhISEhgY+Mgjj4SFhW3evPneR3GZIe1SUlKWLl0aGhoaEhKSOXPmnDlzVqxY8bXXXjt69Oi9D+Qywz0sXbp01qxZcXFx/zrSvguJy88BrED6jBgxwscnld8EPfjggzt27DCdDu5k8+bN9erVu+1CslgsrVq12rVr192O4gpEOo0fP952zXz//fd3G8Nlhvty8ODBypUrp/pzV/fu3W/cuJHqUVxmSLtz5841bNgw1WvMz8/vo48+utuBXGa4h7Nnz/r6+ko6ceLEvUfadyFx+TmExWq1pvp/fiAtpk2b9sILL9i+bt68efXq1a9cubJgwYLffvtN0gMPPLBjx47ChQubjAg38cUXX/To0SM5OTnVd/39/SMjI7t06XLb61yBSKcdO3bUrl37xo0bkr7//vtmzZrdOYbLDPfl7Nmz1apVO3HihKQiRYq0bds2Z86ce/bsWbx4cUpKiqShQ4cOGzbstqO4zJB2169fr1279s6dOyX5+/u3bt36/9u78+CqyoMPwO8FJBCCQiiLorIjUaS0LiNIR6rIIhR1rNQK7bCkgrjUulQ71qGO1daqLUXAaqk4dWm1UBahilWE0oACikRFZFFrcEBEZSlCxOR+f5xvzpdJQsy95AsefZ6/Xs55T3JgfiT3d8+57ykoKNi1a9fy5cujjSGE6dOnx4mKiRk1++1vf3vdddeFEEpKSmpIQnZBEr86c7jfQSDBtm3b1rRp0xBCo0aNnnzyyXh7aWnpxRdfHAXs0ksvPYxnSFIUFxc3btw4yszZZ5+9ePHi7du3b926deHChX369Im2N2rUaPny5RWPkkAO0c6dOzt37hz/Qqz2CryYkalhw4ZFwbjyyisrXmxfuXJlXl5eCCGVSq1Zs6biIWJGRuL7hrp06bJhw4Z4e3l5+f333x/tysvL++CDDyoeJWbUrLi4ODc3N0pCDVfgswuS+NUhBZ7s3XTTTdH/t5/97GeVdu3Zsyd6C61BgwabN28+LKdHgnzve9+LsjRy5MiysrKKu8rKykaPHh3tPeOMMyrukkAORXl5+YgRIyq+o11tgRczMlJUVBQF5txzz6300yydTv/hD3+I9t58880Vt4sZGfnmN78ZBWbJkiVV98Y/2WbMmFFxu5hRVXl5+bvvvvvUU0+NGzeuSZMm8S/EGgp8dkESvzpkETuylE6nZ82aFY3Hjh1baW9eXt4ll1wSQigvL58/f359nxyJUlpaOm/evBBCkyZN7rzzzkofjmrQoMG9997bpk2bEMILL7wQ3WcVJJBD9sc//vGJJ54IIRQUFBxsjpiRqfj653XXXVf1o56XXnpp165dO3To8Morr8QbxYyMpNPpdevWhRByc3P79etXdcKgQYOiQTQtPkrMqGro0KHHH3/8kCFD/vSnP+3fv/9z52cXJPGrWwo8WXrrrbc2bdoUQigoKOjatWvVCd/5zneiwdNPP12vZ0bSrFmzJvqdceaZZ7Zv377qhLy8vDPPPDMaxy9HJJBD8eqrr/74xz8OIRQWFg4fPvxg08SMjHz22WcLFiwIIbRr1+6cc86pOqF58+YbN2585513omkRMSNT6XQ6hHDEEUdUux5YfBd0xWVlxIxqffrppxnNzy5I4le3FHiy9Nprr0WDgQMHVjuhb9++0a+Q119/vf5OiwTasmVLNDjppJMONqddu3bR4LPPPosGEkjW9u7dO2LEiP379xcUFEyePLmGmWJGRtatWxc9+XLYsGGNGjWq5VFiRkZSqVT37t1DCLt27Xr11VerTli2bFk0OOGEE+KNYka1Zs+e/UEF3/72t2uen12QxK9uKfBkacOGDdHgmGOOqXZCo0aNotuet2zZ8sknn9TfmZE0vXv3fvjhhx9++OHx48cfbM6aNWuiQY8ePaKBBJK1K6+8cv369U2aNHn88cebNWtWw0wxIyNvvPFGNDj++OOjweuvv/7oo49OmTLlkUceWb9+fbq6R/+IGZm66qqrokFhYeHHH39ccdc///nP6HMcLVu2/P73vx9vFzOqddRRR32tgnhF4YPJLkjiV7dq+/YwVPLBBx9Eg/z8/IPNyc/Pjz6xvH379o4dO9bLeZE8Xbt2rfZ+qtiSJUteeOGFaGaXLl2ijRJIdh5++OGHHnoohDB58uSTTz655sliRkY2btwYDdq1a7dy5cqJEyfGz/SKfP3rX//Nb35T6RqUmJGpwsLCV155Zfr06atWrerevfvo0aMLCgp2795dVFQUfdI4Ly9v/vz5LVq0iA8RM+pEdkESv7qlwJOlvXv3RoMa/iu2atWq0mTI1Ouvvx4/X+SWW25p2LBhNJZAsvDmm29GD6G9+OKLL7vsss+dL2ZkZOfOndFg7dq1V1xxxYEDBypNWLt27aBBg373u99dc8018UYxI1OpVGrq1Km9evWaMGHCjh077r777op7u3XrtmjRok6dOlXcKGbUieyCJH51yy30ZGnfvn3RoHnz5gebE+9yMwxZOHDgwOTJk0899dQdO3aEEMaMGTNq1Kh4rwSSqf37948YMWLv3r0dO3Z84IEHUqnU5x4iZmQkft05bdq0AwcO9OnTZ8GCBSUlJR9++OGSJUvi5RKvvfbaxYsXx0eJGVlYtGjRnXfeWe2ujRs3/vznP3///fcrbhQz6kR2QRK/uqXAk6X4WZH//e9/DzZn9+7d0SAnJ6c+zokvi3Q6/eSTT5588sk/+clPogXqx4wZ88ADD1RcblcCydS1115bXFzcqFGjv/zlLxXvLK2BmJGRius5jx8//t///vfQoUOPPfbY/Pz8s846a+7cuTfccEMIIZ1O33jjjfFMMSNTjz322NChQ99+++0mTZrcfPPNq1at2rVr17vvvvuPf/yjf//+0YT+/ftv27YtPkTMqBPZBUn86pYCT5bilZ+iFXerFe/Ky8urj3PiS2Hz5s3nnnvu8OHD33zzzRBCu3bt5s6d++CDD1Za0lkCycisWbPuu+++EMLtt99+xhln1PIoMSMj8eO7jjvuuHvuuafSI75SqdSkSZOiZ2qsXr36rbfeiraLGRkpKSkZPXp0eXl506ZNV61a9ctf/vLUU0898sgjjzvuuCFDhixevPj6668PIaxfv37ChAnxUWJGncguSOJXtxR4stS6detoUMN/xXhl1Bo+8QKxsrKyKVOm9OrV67nnngsh5OXlTZo0acOGDeeff37VyRJI7e3atauwsDCEMHDgwOilbS2JGRmJX3cOGDCg2gccNGvWrF+/ftH45ZdfjgZiRkbuvffeaHmFSZMm9ezZs9LeVCp1++23Rwu+zps3L15YUcyoE9kFSfzqlkXsyFL0DNIQQqUPWcXKy8ujNSfbtm1by7tV+SorLS294IILnn766RBCgwYNJk6ceMstt0TPFKmWBFJ7e/bs2bVrVwjhmWeeiddBrGrIkCHRYOTIkY888kgQMzLUuXPnaBAnp6pu3bpFg/iFrJiRkeLi4mhw9tlnVzuhcePG3/rWtzZv3hxCePXVV6PIiRl1IrsgiV/dUuDJUvymb8WVeCpavXp19EGXqm8PQyVlZWUjR46M2vtJJ500c+bM0047reZDJJB6IGZk5MQTT4wG77333sHmfPjhh9EgfpEqZmQkfthBDe9xt23bNhrEVzXFjDqRXZDEr24p8GSpS5cunTt3fuutt9asWfPee++1b9++0oSFCxdGg/iiFhzMr3/969mzZ4cQBgwY8Pe//72GRUpjEkjtHXnkkZMmTTrY3meffbaoqCiEMHLkyK5du4YQevXqFe0SMzJyyimnNGvWbO/evStXrkyn09U+6SC+c76goCAaiBkZOeaYY6JBcXFxhw4dqp2zdu3aaBDHScyoE9kFSfzqWBqy9dOf/jRK0V133VVp14EDB6ILEQ0aNNi8efNhOT2SYv/+/dG1gvbt2+/cubP2B0ogdSJeD/ypp56qulfMyMiIESOiwMyaNavq3vnz50d7O3XqVF5eHm8XM2pv2rRpUVoGDBhQVlZWdcLatWujdbxzcnJ2794dbxczPtegQYOikJSUlBxsTnZBEr86pMCTva1btzZt2jSE0Lx587Vr18bby8vL4xfEP/zhDw/jGZIIjz76aJSWX/3qVxkdKIHUiZoLvJiRkfgCe35+/rx58yrueuaZZ+J7nmfMmFFxl5hRezt37oyXBJswYULFip5Op1988cV4nYWrr7664i4x43PVpsBnFyTxq0OpdDodIFv33XffxIkTQwh5eXmXX375Kaecsnv37scffzxaRbx9+/arVq06+uijD/dp8oV21VVXTZ06NYTQs2fPVq1a1Tx5xowZ0U3OEQnk0N1000133nlnCOGpp54aPHhw1QliRkZuuOGGu+++OxqfeeaZp59+esOGDV966aXnn38+2njRRRc98cQTlR4yJ2bU3sKFC88///yysrIQQtu2bc8555xu3bp99NFHr732WhyzXr16/etf/zrqqKMqHihm1Gzw4MGLFi0KIZSUlBx77LEHm5ZdkMSvzhzudxBIvNtuu63Sq5BIly5diouLD/fZkQDnnXde7X9krVmzptLhEsghqvkKfETMqL2ysrKrrrrqYD/Exo8fX1paWu2BYkbtPf300/FKdVUNGzZs+/bt1R4oZtSgNlfgI9kFSfzqhAJPHVi1atXYsWM7deqUk5PTsmXL00477a677qp0TxccTI8ePQ72EqSqqgU+LYEcmtoU+LSYkaGioqKxY8d27tw5Nzc3Nze3e/fu48ePf+mll2o+SsyovT179kybNm3w4MHt2rU74ogj8vLyTjjhhHHjxi1durTiCgtViRkHU/sCn842SOJ36NxCDwAAAAlQzT0MAAAAwBeNAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACSAAg8AAAAJoMADAABAAijwAAAAkAAKPAAAACRAo8N9AgDAF8Wnn366ePHiaHz66afn5+cf3vMBACpKpdPpw30OAEC92rRp0yOPPBJCuOCCC3r37h1v37FjR+vWraPx888/379//8NyegBAtVyBB4CvnE2bNt16660hhI4dO1Ys8ADAF5nPwAMAAEACuAIPAPyvr33taz5bBwBfWK7AAwAAQAIo8ADwFXL99denUqkhQ4ZEfxwzZkwqlUqlUu+88060pV+/fqlU6thjj6141IABA1Kp1LBhw0II77///o033tijR4/c3NyWLVv27dt35syZ8XX7hQsXDhs2rG3btjk5Od26dfvud7/72muv1XA+y5YtKyws7Nq1a7NmzfLz80855ZQrr7xy3bp1df4XB4AvAbfQAwC1tWrVquHDh2/bti364759+1asWLFixYoXX3xx+vTpEydOvP/+++PJmzZt2rRp09y5cxcsWDB48OBKX+qTTz4ZN27cX//614pbPv7445dffnnatGlXXHHF5MmTGzXyQgUA/o/HyAHAV8j27ds/+uijZcuWXXbZZSGEO+6448ILLwwhdOnS5Ygjjggh9OvXr6ioqH379lu2bImPGjBgwHPPPderV6+tW7fu2LFj1KhR/fv3Ly0t/dvf/vb8889Hc/r06bNixYoWLVoUFhZ+4xvf2LJly9SpU0tKSkIIHTp02Lx5c8OGDeMvWFZWNnDgwOiZ8zk5OYMHD+7Zs+f+/ftfeumlJUuWRHPOP//8OXPmpFKp+vmXAYAvPm9sA8BXSJs2bdq0aRPfMH/00Uf36NGjlscWFxc3btz4mWeeGTBgQLRlwoQJl1xyyRNPPBFCWLFiRY8ePRYtWnT88cdHewsLCwsKCrZv3/6f//znnXfe6dKlS/yl7rnnnqi99+nT589//nPXrl3jXUuXLv3BD35QUlIyb968xx57bOTIkYf6dwaALwufgQcAauumm26K23sIIZVKXX/99fEfH3zwwbi9hxDy8/PHjRsXjTds2BBv37dv31133RVCaNu27dy5cyu29xDCWWedNWvWrOjm+dtuu+3/5+8BAImkwAMAtTV69OhKW7p16xYNTjzxxD59+lTa271792hQWloab3zuued27NgRQrj66qvbtGlT9bucfvrp0Wfm33zzza1bt9bNqQNA8rmFHgColdzc3I4dO1ba2KRJk2hw0kknVT0k3ltRUVFRNOjQocP69eur/V4dOnSIBmvXrj366KOzOl8A+LJR4AGAWmnatGkNS8rl5ubW8utEK9uFEEaNGvW5k3fv3l3LLwsAX3puoQcA6tXOnTtrP3nXrl3/f2cCAMniCjwAUK+aNWsWDTZs2BB/hB4A+FyuwAMA9apt27bR4I033ji8ZwIAyaLAAwD16owzzogGy5cvP9ichx566Be/+MXtt99eXl5eX+cFAF90CjwAUK8GDRrUtGnTEMKUKVPefffdqhM2bdpUWFh46623rl69ukEDr1UA4H/5pQgAX13bt2+v/2/aqlWrH/3oRyGEffv2XXjhhZWeJPfee+8NHz68rKwshFBYWFj/pwcAX1gWsQOAr5z4kW8zZ87Mz89v0qTJ8OHDjzzyyHo7gTvuuOPZZ59dt27dyy+/3Lt37/POO69nz545OTnr1q2bPXt2aWlpCOGaa64ZOnRovZ0SAHzxKfAA8JXTq1evFi1a7Ny5c/369dHF8Lfffrs+C3yzZs2WLFly0UUXLVu2rLS0dM6cOXPmzIn3NmzY8Iorrrjnnnvq7XwAIBHcQg8AXzktWrRYsGBBv379mjdvnpeX171798aNG9fzObRu3Xrp0qVz584dMWLEcccdl5OT07p16759+15++eXr16///e9/79PvAFBJKp1OH+5zAAAAAD6H97YBAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgARR4AAAASAAFHgAAABJAgQcAAIAEUOABAAAgAf4Hg0VwvDQGeEYAAAAASUVORK5CYII=" title alt width="672" /></p>
</div>
</div>
<script>
// add bootstrap table styles to pandoc tables
$(document).ready(function () {
$('tr.header').parent('thead').parent('table').addClass('table table-condensed');
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>