docks_theme_api 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (237) hide show
  1. checksums.yaml +15 -0
  2. data/.babelrc +4 -0
  3. data/.editorconfig +8 -0
  4. data/.eslintrc +115 -0
  5. data/.gitignore +24 -0
  6. data/.rubocop.yml +20 -0
  7. data/.travis.yml +16 -0
  8. data/Gemfile +4 -0
  9. data/README.md +5 -0
  10. data/Rakefile +3 -0
  11. data/assets/images/icons.svg +63 -0
  12. data/assets/scripts/coffeescript/pattern_library_helpers.coffee +8 -0
  13. data/assets/scripts/javascript/pattern_library_helpers.js +11 -0
  14. data/assets/scripts/pattern_library.js +10380 -0
  15. data/assets/scripts/pattern_library_demo.js +0 -0
  16. data/assets/styles/less/pattern-library-helpers.less +103 -0
  17. data/assets/styles/pattern-library-demo.css +1882 -0
  18. data/assets/styles/pattern-library.css +1882 -0
  19. data/assets/styles/sass/pattern-library-helpers.sass +90 -0
  20. data/assets/styles/scss/pattern-library-helpers.scss +99 -0
  21. data/assets/styles/stylus/pattern-library-helpers.styl +90 -0
  22. data/assets/templates/erb/demo.erb +26 -0
  23. data/assets/templates/erb/layouts/demo.erb +17 -0
  24. data/assets/templates/erb/layouts/pattern.erb +76 -0
  25. data/assets/templates/erb/partials/sidebar.erb +124 -0
  26. data/assets/templates/erb/partials/symbols/class.erb +1 -0
  27. data/assets/templates/erb/partials/symbols/demo.erb +40 -0
  28. data/assets/templates/erb/partials/symbols/factory.erb +70 -0
  29. data/assets/templates/erb/partials/symbols/function.erb +103 -0
  30. data/assets/templates/erb/partials/symbols/mixin.erb +62 -0
  31. data/assets/templates/erb/partials/symbols/variable.erb +59 -0
  32. data/assets/templates/erb/pattern.erb +102 -0
  33. data/assets/templates/haml/demo.haml +14 -0
  34. data/assets/templates/haml/layouts/demo.haml +6 -0
  35. data/assets/templates/haml/layouts/pattern.haml +38 -0
  36. data/assets/templates/haml/partials/sidebar.haml +68 -0
  37. data/assets/templates/haml/partials/symbols/class.haml +1 -0
  38. data/assets/templates/haml/partials/symbols/demo.haml +23 -0
  39. data/assets/templates/haml/partials/symbols/factory.haml +38 -0
  40. data/assets/templates/haml/partials/symbols/function.haml +54 -0
  41. data/assets/templates/haml/partials/symbols/mixin.haml +31 -0
  42. data/assets/templates/haml/partials/symbols/variable.haml +22 -0
  43. data/assets/templates/haml/pattern.haml +54 -0
  44. data/assets/templates/slim/demo.slim +24 -0
  45. data/assets/templates/slim/layouts/demo.slim +5 -0
  46. data/assets/templates/slim/layouts/pattern.slim +48 -0
  47. data/assets/templates/slim/partials/sidebar.slim +112 -0
  48. data/assets/templates/slim/partials/symbols/class.slim +1 -0
  49. data/assets/templates/slim/partials/symbols/demo.slim +30 -0
  50. data/assets/templates/slim/partials/symbols/factory.slim +57 -0
  51. data/assets/templates/slim/partials/symbols/function.slim +81 -0
  52. data/assets/templates/slim/partials/symbols/mixin.slim +45 -0
  53. data/assets/templates/slim/partials/symbols/variable.slim +35 -0
  54. data/assets/templates/slim/pattern.slim +63 -0
  55. data/docks_config.rb +32 -0
  56. data/docks_theme_api.gemspec +37 -0
  57. data/gulpfile.js +88 -0
  58. data/karma.conf.js +6 -0
  59. data/lib/docks_theme_api/components/base_component.rb +99 -0
  60. data/lib/docks_theme_api/components/code_block_component.rb +10 -0
  61. data/lib/docks_theme_api/components/popover_component.rb +15 -0
  62. data/lib/docks_theme_api/components/table_component.rb +34 -0
  63. data/lib/docks_theme_api/components/tablist_component.rb +11 -0
  64. data/lib/docks_theme_api/components.rb +21 -0
  65. data/lib/docks_theme_api/helpers/ui_helper.rb +69 -0
  66. data/lib/docks_theme_api/theme.rb +21 -0
  67. data/lib/docks_theme_api.rb +1 -0
  68. data/package.json +60 -0
  69. data/source/behaviors/filterable/filterable.coffee +353 -0
  70. data/source/behaviors/filterable/filterable.js +0 -0
  71. data/source/behaviors/filterable/filterable.scss +34 -0
  72. data/source/behaviors/filterable/package.json +3 -0
  73. data/source/behaviors/index.js +0 -0
  74. data/source/components/avatar/avatar.erb +20 -0
  75. data/source/components/avatar/avatar.js +142 -0
  76. data/source/components/avatar/avatar.scss +200 -0
  77. data/source/components/avatar/avatar_container.erb +13 -0
  78. data/source/components/avatar/package.json +3 -0
  79. data/source/components/avatar/spec/avatar_spec.js +81 -0
  80. data/source/components/badge/badge.scss +158 -0
  81. data/source/components/button/button.scss +213 -0
  82. data/source/components/card/card.scss +32 -0
  83. data/source/components/code_block/code-block.scss +353 -0
  84. data/source/components/code_block/code_block.erb +95 -0
  85. data/source/components/code_block/code_block.js +444 -0
  86. data/source/components/code_block/package.json +3 -0
  87. data/source/components/code_block/spec/code_block_spec.js +10 -0
  88. data/source/components/demo/demo.js +244 -0
  89. data/source/components/demo/demo.scss +90 -0
  90. data/source/components/demo/package.json +3 -0
  91. data/source/components/exploded/exploded.erb +25 -0
  92. data/source/components/exploded/exploded.js +694 -0
  93. data/source/components/exploded/exploded.scss +166 -0
  94. data/source/components/exploded/package.json +3 -0
  95. data/source/components/field/field.js +24 -0
  96. data/source/components/field/field.scss +101 -0
  97. data/source/components/field/package.json +3 -0
  98. data/source/components/header/header.scss +33 -0
  99. data/source/components/iframe/iframe.erb +12 -0
  100. data/source/components/iframe/iframe.js +381 -0
  101. data/source/components/iframe/package.json +3 -0
  102. data/source/components/index.js +37 -0
  103. data/source/components/inline_group/inline-group.scss +14 -0
  104. data/source/components/internal_link/internal_link.js +49 -0
  105. data/source/components/internal_link/package.json +3 -0
  106. data/source/components/list/list.scss +230 -0
  107. data/source/components/modal/modal.coffee +84 -0
  108. data/source/components/modal/modal.erb +19 -0
  109. data/source/components/modal/modal.js +0 -0
  110. data/source/components/modal/modal.scss +57 -0
  111. data/source/components/modal/package.json +3 -0
  112. data/source/components/notice/notice.scss +48 -0
  113. data/source/components/popover/package.json +3 -0
  114. data/source/components/popover/popover.coffee +562 -0
  115. data/source/components/popover/popover.erb +21 -0
  116. data/source/components/popover/popover.js +0 -0
  117. data/source/components/popover/popover.scss +139 -0
  118. data/source/components/range/range.scss +78 -0
  119. data/source/components/resizable/package.json +3 -0
  120. data/source/components/resizable/resizable.erb +30 -0
  121. data/source/components/resizable/resizable.js +250 -0
  122. data/source/components/resizable/resizable.scss +245 -0
  123. data/source/components/resizable/size_buttons.js +249 -0
  124. data/source/components/scroll_container/package.json +3 -0
  125. data/source/components/scroll_container/scroll-container.scss +4 -0
  126. data/source/components/scroll_container/scroll_container.js +24 -0
  127. data/source/components/section/section.scss +99 -0
  128. data/source/components/select/package.json +3 -0
  129. data/source/components/select/select.erb +21 -0
  130. data/source/components/select/select.js +35 -0
  131. data/source/components/select/select.scss +163 -0
  132. data/source/components/table/package.json +3 -0
  133. data/source/components/table/table.erb +16 -0
  134. data/source/components/table/table.js +351 -0
  135. data/source/components/table/table.scss +236 -0
  136. data/source/components/tablist/package.json +3 -0
  137. data/source/components/tablist/tablist.erb +13 -0
  138. data/source/components/tablist/tablist.js +246 -0
  139. data/source/components/tablist/tablist.scss +191 -0
  140. data/source/components/tablist/tablist_panel.erb +14 -0
  141. data/source/components/tablist/tablist_tab.erb +20 -0
  142. data/source/components/toggle/package.json +3 -0
  143. data/source/components/toggle/toggle.erb +11 -0
  144. data/source/components/toggle/toggle.js +211 -0
  145. data/source/components/toggle/toggle_container.erb +30 -0
  146. data/source/components/vertical_spacer/vertical-spacer.scss +3 -0
  147. data/source/components/vertical_stack/vertical-stack.scss +19 -0
  148. data/source/components/xray/package.json +3 -0
  149. data/source/components/xray/xray.erb +50 -0
  150. data/source/components/xray/xray.js +123 -0
  151. data/source/components/xray/xray.scss +79 -0
  152. data/source/foundation/app/app.js +15 -0
  153. data/source/foundation/app/package.json +3 -0
  154. data/source/pattern-library-demo.scss +13 -0
  155. data/source/pattern-library.scss +13 -0
  156. data/source/pattern_library.js +8 -0
  157. data/source/pattern_library_demo.js +8 -0
  158. data/source/structures/index.js +11 -0
  159. data/source/structures/sidebar/package.json +3 -0
  160. data/source/structures/sidebar/sidebar.js +69 -0
  161. data/source/structures/sidebar/sidebar.scss +79 -0
  162. data/source/utilities/builder/builder.js +138 -0
  163. data/source/utilities/builder/package.json +3 -0
  164. data/source/utilities/client/client.js +7 -0
  165. data/source/utilities/client/package.json +3 -0
  166. data/source/utilities/colors/colors.scss +112 -0
  167. data/source/utilities/defaults/defaults.scss +38 -0
  168. data/source/utilities/dom_cache/dom_cache.js +24 -0
  169. data/source/utilities/dom_cache/package.json +3 -0
  170. data/source/utilities/events/events.js +25 -0
  171. data/source/utilities/events/package.json +3 -0
  172. data/source/utilities/font_sizes/font-sizes.scss +85 -0
  173. data/source/utilities/foundation/a11y.scss +10 -0
  174. data/source/utilities/foundation/base.scss +29 -0
  175. data/source/utilities/foundation/icon.scss +114 -0
  176. data/source/utilities/foundation/layout.scss +67 -0
  177. data/source/utilities/foundation/page.scss +39 -0
  178. data/source/utilities/foundation/type.scss +208 -0
  179. data/source/utilities/functions/functions.scss +127 -0
  180. data/source/utilities/keycodes/keycodes.js +23 -0
  181. data/source/utilities/keycodes/package.json +3 -0
  182. data/source/utilities/markup/markup.js +90 -0
  183. data/source/utilities/markup/package.json +3 -0
  184. data/source/utilities/media/media.scss +172 -0
  185. data/source/utilities/mixins/mixins.scss +89 -0
  186. data/source/utilities/naming_convention/naming_convention.js +3 -0
  187. data/source/utilities/naming_convention/package.json +3 -0
  188. data/source/utilities/numbers/numbers.js +14 -0
  189. data/source/utilities/numbers/package.json +3 -0
  190. data/source/utilities/painting/package.json +3 -0
  191. data/source/utilities/painting/painting.js +7 -0
  192. data/source/utilities/pattern/package.json +3 -0
  193. data/source/utilities/pattern/pattern.js +50 -0
  194. data/source/utilities/query_string/package.json +3 -0
  195. data/source/utilities/query_string/query_string.js +24 -0
  196. data/source/utilities/template/package.json +3 -0
  197. data/source/utilities/template/template.js +10 -0
  198. data/source/utilities/text_range/package.json +3 -0
  199. data/source/utilities/text_range/text_range.js +30 -0
  200. data/source/utilities/ui_events/package.json +3 -0
  201. data/source/utilities/ui_events/ui_events.js +85 -0
  202. data/source/utilities/variables/variables.scss +18 -0
  203. data/source/utilities/z_indexes/z-indexes.scss +88 -0
  204. data/source/vendor/array_includes.js +28 -0
  205. data/source/vendor/highlight.js +1142 -0
  206. data/source/vendor/index.js +1 -0
  207. data/source/vendor/matrix.js +399 -0
  208. data/source/vendor/query_string.js +66 -0
  209. data/spec/assets/.eslintrc +9 -0
  210. data/spec/assets/spec_fixture.js +33 -0
  211. data/spec/assets/spec_helper.js +19 -0
  212. data/spec/lib/components/base_component_spec.rb +156 -0
  213. data/spec/lib/components_spec.rb +30 -0
  214. data/spec/lib/helpers/ui_helper_spec.rb +62 -0
  215. data/spec/lib/theme_spec.rb +25 -0
  216. data/spec/spec_helper.rb +15 -0
  217. data/tasks/gulp/.eslintrc +6 -0
  218. data/tasks/gulp/browser_sync.js +8 -0
  219. data/tasks/gulp/code_quality/scripts.js +10 -0
  220. data/tasks/gulp/config/index.js +116 -0
  221. data/tasks/gulp/minify/scripts.js +13 -0
  222. data/tasks/gulp/minify/styles.js +13 -0
  223. data/tasks/gulp/pattern_library/index.js +5 -0
  224. data/tasks/gulp/pattern_library/scripts.js +10 -0
  225. data/tasks/gulp/pattern_library/styles.js +10 -0
  226. data/tasks/gulp/scripts.js +8 -0
  227. data/tasks/gulp/spec/scripts.js +11 -0
  228. data/tasks/gulp/styles.js +17 -0
  229. data/tasks/gulp/utilities/babel/relative_require.js +22 -0
  230. data/tasks/gulp/utilities/babel/spec_helper.js +20 -0
  231. data/tasks/gulp/utilities/browserify_bundler.js +22 -0
  232. data/tasks/gulp/utilities/handle_errors.js +13 -0
  233. data/tasks/gulp/watch.js +9 -0
  234. data/tasks/rake/rspec.rake +7 -0
  235. data/tasks/rake/rubocop.rake +8 -0
  236. data/tasks/rake/templates.rake +50 -0
  237. metadata +470 -0
@@ -0,0 +1,1882 @@
1
+ @media screen and (max-width: 24.9375rem) {
2
+ .media__helpers--hide-before-small {
3
+ display: none; } }
4
+
5
+ @media screen and (min-width: 25.0625rem) {
6
+ .media__helpers--hide-after-small {
7
+ display: none; } }
8
+
9
+ .media__helpers--show-after-small {
10
+ display: none; }
11
+ @media screen and (min-width: 25.0625rem) {
12
+ .media__helpers--show-after-small {
13
+ display: block; } }
14
+
15
+ @media screen and (max-width: 37.4375rem) {
16
+ .media__helpers--hide-before-medium {
17
+ display: none; } }
18
+
19
+ @media screen and (min-width: 37.5625rem) {
20
+ .media__helpers--hide-after-medium {
21
+ display: none; } }
22
+
23
+ .media__helpers--show-after-medium {
24
+ display: none; }
25
+ @media screen and (min-width: 37.5625rem) {
26
+ .media__helpers--show-after-medium {
27
+ display: block; } }
28
+
29
+ @media screen and (max-width: 49.9375rem) {
30
+ .media__helpers--hide-before-large {
31
+ display: none; } }
32
+
33
+ @media screen and (min-width: 50.0625rem) {
34
+ .media__helpers--hide-after-large {
35
+ display: none; } }
36
+
37
+ .media__helpers--show-after-large {
38
+ display: none; }
39
+ @media screen and (min-width: 50.0625rem) {
40
+ .media__helpers--show-after-large {
41
+ display: block; } }
42
+
43
+ .helper--visually-hidden {
44
+ border: 0;
45
+ clip: rect(0 0 0 0);
46
+ height: 1px;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ padding: 0;
50
+ position: absolute;
51
+ width: 1px; }
52
+
53
+ html {
54
+ box-sizing: border-box; }
55
+
56
+ *,
57
+ *:before,
58
+ *:after {
59
+ box-sizing: inherit; }
60
+
61
+ body {
62
+ margin: 0;
63
+ padding: 0;
64
+ background-color: white;
65
+ min-height: 100vh; }
66
+
67
+ table {
68
+ border-collapse: collapse;
69
+ border-spacing: 0; }
70
+
71
+ .icon {
72
+ display: inline-block;
73
+ stroke-width: 2; }
74
+
75
+ .icon--medium {
76
+ height: 1.5rem;
77
+ width: 1.5rem; }
78
+
79
+ .icon--large {
80
+ height: 1.75rem;
81
+ width: 1.75rem; }
82
+
83
+ .icon--action {
84
+ height: 1.65rem;
85
+ width: 1.65rem; }
86
+
87
+ .icon--hamburger {
88
+ height: 1.65rem;
89
+ width: 2rem;
90
+ position: relative;
91
+ cursor: pointer;
92
+ opacity: 0.6;
93
+ top: 0.2em;
94
+ -webkit-transition: opacity 0.2s ease;
95
+ transition: opacity 0.2s ease; }
96
+ .icon--hamburger:hover {
97
+ opacity: 1; }
98
+ .icon--hamburger:before,
99
+ .icon--hamburger:after {
100
+ content: "";
101
+ display: block;
102
+ position: absolute;
103
+ height: 4px;
104
+ width: 100%;
105
+ border-radius: 2px;
106
+ background: #6e6f7a; }
107
+ .icon--hamburger:before {
108
+ top: 0; }
109
+ .icon--hamburger:after {
110
+ bottom: 0; }
111
+
112
+ .icon--hamburger__slice {
113
+ height: 4px;
114
+ width: 100%;
115
+ border-radius: 2px;
116
+ background: #6e6f7a;
117
+ position: absolute;
118
+ top: 50%;
119
+ left: 0;
120
+ margin-top: -2px; }
121
+
122
+ .icon--gray-darker {
123
+ fill: #9c9da5;
124
+ stroke: #9c9da5; }
125
+
126
+ .icon--close {
127
+ position: relative;
128
+ opacity: 0.6;
129
+ -webkit-transition: opacity 0.2s ease;
130
+ transition: opacity 0.2s ease;
131
+ cursor: pointer; }
132
+ .icon--close:hover {
133
+ opacity: 1; }
134
+ .icon--close:before,
135
+ .icon--close:after {
136
+ content: "";
137
+ display: block;
138
+ position: absolute;
139
+ height: 4px;
140
+ width: 140%;
141
+ border-radius: 2px;
142
+ background: #6e6f7a;
143
+ top: 50%;
144
+ left: 50%;
145
+ margin-left: -70%;
146
+ margin-top: -2px; }
147
+ .icon--close:before {
148
+ -webkit-transform: rotate(45deg);
149
+ transform: rotate(45deg); }
150
+ .icon--close:after {
151
+ -webkit-transform: rotate(-45deg);
152
+ transform: rotate(-45deg); }
153
+
154
+ .icon--disclosure {
155
+ height: 0.5rem;
156
+ width: 0.5rem;
157
+ -webkit-transform: rotate(45deg) translateY(-50%);
158
+ transform: rotate(45deg) translateY(-50%);
159
+ border-right: 2px solid #6e6f7a;
160
+ border-bottom: 2px solid #6e6f7a;
161
+ margin-left: 0.25rem; }
162
+
163
+ .grid {
164
+ display: -webkit-box;
165
+ display: -webkit-flex;
166
+ display: -ms-flexbox;
167
+ display: flex; }
168
+
169
+ .grid--vertically-centered {
170
+ -webkit-box-align: center;
171
+ -webkit-align-items: center;
172
+ -ms-flex-align: center;
173
+ align-items: center; }
174
+
175
+ .grid--align-right {
176
+ -webkit-box-pack: end;
177
+ -webkit-justify-content: flex-end;
178
+ -ms-flex-pack: end;
179
+ justify-content: flex-end; }
180
+
181
+ .grid--outside-spacing {
182
+ margin: 1rem 0;
183
+ padding: 0 1rem; }
184
+
185
+ .grid--space-between {
186
+ -webkit-box-pack: justify;
187
+ -webkit-justify-content: space-between;
188
+ -ms-flex-pack: justify;
189
+ justify-content: space-between; }
190
+ .grid--space-between > .grid__item {
191
+ -webkit-box-flex: 0;
192
+ -webkit-flex: 0 1 auto;
193
+ -ms-flex: 0 1 auto;
194
+ flex: 0 1 auto; }
195
+
196
+ .grid__item {
197
+ padding: 0 0.5rem;
198
+ -webkit-box-flex: 1;
199
+ -webkit-flex: 1 1 0%;
200
+ -ms-flex: 1 1 0%;
201
+ flex: 1 1 0%;
202
+ display: -webkit-box;
203
+ display: -webkit-flex;
204
+ display: -ms-flexbox;
205
+ display: flex;
206
+ -webkit-box-align: center;
207
+ -webkit-align-items: center;
208
+ -ms-flex-align: center;
209
+ align-items: center; }
210
+ .grid__item:first-child {
211
+ padding-left: 0; }
212
+ .grid__item:last-child {
213
+ padding-right: 0; }
214
+
215
+ .grid__item--no-flex {
216
+ -webkit-box-flex: 0;
217
+ -webkit-flex: 0 0 auto;
218
+ -ms-flex: 0 0 auto;
219
+ flex: 0 0 auto; }
220
+
221
+ .grid__item--half {
222
+ -webkit-box-flex: 0;
223
+ -webkit-flex: 0 0 50%;
224
+ -ms-flex: 0 0 50%;
225
+ flex: 0 0 50%; }
226
+
227
+ .content {
228
+ padding: 0 1rem;
229
+ margin: 1rem 0; }
230
+
231
+ .content--extra-vertical-spacing {
232
+ margin: 3rem 0; }
233
+
234
+ body {
235
+ background-color: #e3e4e6; }
236
+
237
+ .page {
238
+ height: 100vh;
239
+ max-height: 100vh;
240
+ display: -webkit-box;
241
+ display: -webkit-flex;
242
+ display: -ms-flexbox;
243
+ display: flex; }
244
+
245
+ .page__content,
246
+ .page__sidebar {
247
+ position: relative; }
248
+
249
+ .page__content {
250
+ width: 100%;
251
+ max-width: 100%;
252
+ display: -webkit-box;
253
+ display: -webkit-flex;
254
+ display: -ms-flexbox;
255
+ display: flex;
256
+ -webkit-box-flex: 1;
257
+ -webkit-flex: 1 1 0px;
258
+ -ms-flex: 1 1 0px;
259
+ flex: 1 1 0px;
260
+ z-index: 10;
261
+ background: white; }
262
+ .page__content > * {
263
+ -webkit-box-flex: 0;
264
+ -webkit-flex: 0 0 100%;
265
+ -ms-flex: 0 0 100%;
266
+ flex: 0 0 100%; }
267
+
268
+ .page__sidebar {
269
+ z-index: 20;
270
+ -webkit-box-flex: 0;
271
+ -webkit-flex: 0 0 auto;
272
+ -ms-flex: 0 0 auto;
273
+ flex: 0 0 auto; }
274
+
275
+ body {
276
+ -webkit-text-size-adjust: 100%;
277
+ -ms-text-size-adjust: 100%;
278
+ text-size-adjust: 100%;
279
+ color: #33363a;
280
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
281
+
282
+ button,
283
+ input {
284
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
285
+
286
+ h1, h2, h3, h4, h5, h6, p, .type {
287
+ margin: 0;
288
+ font-size: inherit; }
289
+
290
+ .type--heading-1 {
291
+ font-weight: 400;
292
+ line-height: 1;
293
+ color: #6e6f7a;
294
+ font-size: 2.25rem; }
295
+
296
+ .type--heading-2 {
297
+ font-weight: 400;
298
+ color: #6e6f7a;
299
+ font-size: 1.875rem; }
300
+
301
+ .type--heading-3 {
302
+ font-weight: 400;
303
+ line-height: 1;
304
+ color: #6e6f7a;
305
+ font-size: 1.5rem; }
306
+
307
+ .type--heading-4 {
308
+ margin: 1rem auto 0.5rem;
309
+ font-weight: 600;
310
+ text-transform: uppercase;
311
+ color: #d1d3d7;
312
+ font-size: 0.875rem; }
313
+
314
+ .type--heading-5 {
315
+ margin: 1rem auto 0.5rem;
316
+ font-weight: 400;
317
+ color: #6e6f7a;
318
+ font-size: 1.25rem; }
319
+ .type--heading-4 + .type--heading-5 {
320
+ margin-top: 0.5rem; }
321
+ .type--paragraph + .type--heading-5,
322
+ .user-type + .type--heading-5 {
323
+ margin-top: 1.5rem; }
324
+
325
+ .type--heading-bordered {
326
+ padding-bottom: 1rem;
327
+ margin-bottom: 1.3rem;
328
+ border-bottom: 2px solid #e3e4e6; }
329
+ .type--heading-bordered + .section {
330
+ margin-top: -1rem; }
331
+
332
+ .type--paragraph {
333
+ font-size: 1.25rem;
334
+ line-height: 1.3;
335
+ font-weight: 300;
336
+ color: #1e1e1f; }
337
+ .type--paragraph + p {
338
+ margin-top: 0.75rem; }
339
+ .type--paragraph > a {
340
+ display: inline-block;
341
+ text-decoration: none;
342
+ color: #627990;
343
+ font-weight: normal; }
344
+ .type--paragraph > a > span {
345
+ border-bottom: 2px solid #8cc2fb; }
346
+ .type--paragraph > a > code {
347
+ color: #627990;
348
+ background-color: #e6ecf4;
349
+ border-color: rgba(98, 121, 144, 0.15); }
350
+ .type--paragraph code {
351
+ font-family: Consolas, monospace;
352
+ display: inline-block;
353
+ padding: 0.05em 0.25em;
354
+ font-size: 0.8em;
355
+ background-color: #f2f2f3;
356
+ color: #6e6f7a;
357
+ border: 1px solid #e3e4e6;
358
+ border-radius: 4px; }
359
+
360
+ .type--paragraph-small {
361
+ font-size: 1.125rem; }
362
+
363
+ .type-container h1 {
364
+ font-weight: 400;
365
+ line-height: 1;
366
+ color: #6e6f7a;
367
+ font-size: 2.25rem; }
368
+
369
+ .type-container h2 {
370
+ font-weight: 400;
371
+ color: #6e6f7a;
372
+ font-size: 1.875rem; }
373
+
374
+ .type-container h3 {
375
+ font-weight: 400;
376
+ line-height: 1;
377
+ color: #6e6f7a;
378
+ font-size: 1.5rem; }
379
+
380
+ .type-container h4 {
381
+ margin: 1rem auto 0.5rem;
382
+ font-weight: 600;
383
+ text-transform: uppercase;
384
+ color: #d1d3d7;
385
+ font-size: 0.875rem; }
386
+
387
+ .type-container h5 {
388
+ margin: 1rem auto 0.5rem;
389
+ font-weight: 400;
390
+ color: #6e6f7a;
391
+ font-size: 1.25rem; }
392
+
393
+ .type-container p {
394
+ font-size: 1.25rem;
395
+ line-height: 1.3;
396
+ font-weight: 300;
397
+ color: #1e1e1f; }
398
+ .type-container p + p {
399
+ margin-top: 0.75rem; }
400
+ .type-container p > a {
401
+ display: inline-block;
402
+ text-decoration: none;
403
+ color: #627990;
404
+ font-weight: normal; }
405
+ .type-container p > a > span {
406
+ border-bottom: 2px solid #8cc2fb; }
407
+ .type-container p > a > code {
408
+ color: #627990;
409
+ background-color: #e6ecf4;
410
+ border-color: rgba(98, 121, 144, 0.15); }
411
+ .type-container p code {
412
+ font-family: Consolas, monospace;
413
+ display: inline-block;
414
+ padding: 0.05em 0.25em;
415
+ font-size: 0.8em;
416
+ background-color: #f2f2f3;
417
+ color: #6e6f7a;
418
+ border: 1px solid #e3e4e6;
419
+ border-radius: 4px; }
420
+
421
+ .type-container--small p {
422
+ font-size: 1.125rem; }
423
+
424
+ .type--display {
425
+ font-size: 1.3rem;
426
+ margin-top: 0;
427
+ font-weight: 500;
428
+ line-height: 1; }
429
+
430
+ .type--margin-bottom {
431
+ margin-bottom: 1rem; }
432
+
433
+ .type--subdued {
434
+ color: #d1d3d7; }
435
+
436
+ .type--code {
437
+ font-family: Consolas, monospace;
438
+ font-size: 0.95em;
439
+ word-wrap: break-word; }
440
+
441
+ ::-moz-selection {
442
+ background: #b7d6f6; }
443
+
444
+ ::selection {
445
+ background: #b7d6f6; }
446
+
447
+ .avatar {
448
+ z-index: 10;
449
+ position: relative;
450
+ -webkit-box-flex: 0;
451
+ -webkit-flex: 0 0 auto;
452
+ -ms-flex: 0 0 auto;
453
+ flex: 0 0 auto;
454
+ display: inline-block;
455
+ background-color: #f1f1f1;
456
+ border-radius: 4px;
457
+ overflow: hidden;
458
+ font-size: 1.25rem; }
459
+
460
+ .avatar__initials {
461
+ z-index: 10;
462
+ position: absolute;
463
+ top: 50%;
464
+ left: 0;
465
+ width: 100%;
466
+ -webkit-transform: translateY(-50%);
467
+ transform: translateY(-50%);
468
+ color: #cfcfcf;
469
+ font-size: 1em;
470
+ line-height: 1;
471
+ text-align: center;
472
+ text-transform: uppercase; }
473
+
474
+ .avatar__image {
475
+ z-index: 20;
476
+ position: relative;
477
+ height: 3rem;
478
+ width: 3rem;
479
+ opacity: 0;
480
+ -webkit-transition: opacity 0.3s ease;
481
+ transition: opacity 0.3s ease;
482
+ background-size: cover;
483
+ background-position: center center;
484
+ background-repeat: no-repeat;
485
+ overflow: hidden; }
486
+
487
+ .avatar__image--is-visible {
488
+ opacity: 1; }
489
+
490
+ .avatar__container {
491
+ display: -webkit-inline-box;
492
+ display: -webkit-inline-flex;
493
+ display: -ms-inline-flexbox;
494
+ display: inline-flex;
495
+ -webkit-flex-wrap: wrap;
496
+ -ms-flex-wrap: wrap;
497
+ flex-wrap: wrap;
498
+ overflow: hidden;
499
+ margin-right: -0.5rem !important;
500
+ margin-bottom: -0.5rem !important;
501
+ max-width: 10.5rem; }
502
+ .avatar__container > .avatar {
503
+ margin-right: 0.5rem;
504
+ margin-bottom: 0.5rem; }
505
+
506
+ .avatar__container--large {
507
+ max-width: 14rem; }
508
+
509
+ .badge {
510
+ position: relative;
511
+ -webkit-box-flex: 0;
512
+ -webkit-flex: 0 0 auto;
513
+ -ms-flex: 0 0 auto;
514
+ flex: 0 0 auto;
515
+ display: inline-block;
516
+ padding: 0.15em 0.5em 0.25em;
517
+ border-radius: 4px;
518
+ background-color: #f2f2f3;
519
+ font-size: 0.75em;
520
+ line-height: 1.3;
521
+ vertical-align: middle;
522
+ color: #9c9da5; }
523
+
524
+ .badge--warning {
525
+ background-color: #fdf7af;
526
+ color: #857e32; }
527
+
528
+ .badge--new {
529
+ background-color: #b7d6f6;
530
+ color: #627990; }
531
+
532
+ .badge--secret {
533
+ background-color: #6e6f7a;
534
+ color: #e3e4e6; }
535
+
536
+ .badge--code {
537
+ padding-bottom: 0;
538
+ padding-top: 0.2em; }
539
+
540
+ .badge--standalone {
541
+ font-size: 1rem; }
542
+
543
+ .badge__container {
544
+ display: -webkit-inline-box;
545
+ display: -webkit-inline-flex;
546
+ display: -ms-inline-flexbox;
547
+ display: inline-flex;
548
+ -webkit-flex-wrap: wrap;
549
+ -ms-flex-wrap: wrap;
550
+ flex-wrap: wrap;
551
+ overflow: hidden;
552
+ margin-right: -0.5rem !important;
553
+ margin-bottom: -0.5rem !important; }
554
+ .badge__container > .badge {
555
+ margin-right: 0.5rem;
556
+ margin-bottom: 0.5rem; }
557
+
558
+ .docks-button {
559
+ display: -webkit-inline-box;
560
+ display: -webkit-inline-flex;
561
+ display: -ms-inline-flexbox;
562
+ display: inline-flex;
563
+ -webkit-box-align: center;
564
+ -webkit-align-items: center;
565
+ -ms-flex-align: center;
566
+ align-items: center;
567
+ -webkit-box-pack: center;
568
+ -webkit-justify-content: center;
569
+ -ms-flex-pack: center;
570
+ justify-content: center;
571
+ padding: 0 0.75rem;
572
+ border-radius: 4px;
573
+ background-color: #f2f2f3;
574
+ border: none;
575
+ cursor: pointer;
576
+ opacity: 1;
577
+ -webkit-transition: opacity 0.3s ease;
578
+ transition: opacity 0.3s ease;
579
+ font-size: 1.125rem;
580
+ line-height: 2.125rem;
581
+ color: #9c9da5;
582
+ vertical-align: middle;
583
+ text-decoration: none;
584
+ white-space: nowrap; }
585
+ .docks-button:focus,
586
+ .docks-button:active {
587
+ background-color: #e3e4e6;
588
+ outline: none; }
589
+ .docks-button > *:first-child {
590
+ margin-right: 0.5rem; }
591
+
592
+ .docks-button--dark {
593
+ background-color: #d1d3d7;
594
+ color: #6e6f7a; }
595
+ .docks-button--dark:focus,
596
+ .docks-button--dark:active {
597
+ background-color: #d1d3d7;
598
+ color: #6e6f7a; }
599
+
600
+ .docks-button--is-disabled {
601
+ opacity: 0.3; }
602
+
603
+ .docks-button__container {
604
+ display: -webkit-inline-box;
605
+ display: -webkit-inline-flex;
606
+ display: -ms-inline-flexbox;
607
+ display: inline-flex;
608
+ -webkit-flex-wrap: wrap;
609
+ -ms-flex-wrap: wrap;
610
+ flex-wrap: wrap;
611
+ margin-right: -0.5rem !important;
612
+ margin-bottom: -0.5rem !important; }
613
+ .docks-button__container:after {
614
+ content: "";
615
+ display: table; }
616
+ .docks-button__container > * {
617
+ -webkit-box-flex: 0;
618
+ -webkit-flex: 0 0 auto;
619
+ -ms-flex: 0 0 auto;
620
+ flex: 0 0 auto;
621
+ margin-right: 0.5rem;
622
+ margin-bottom: 0.5rem; }
623
+
624
+ .docks-button__container--fill-width {
625
+ display: -webkit-box;
626
+ display: -webkit-flex;
627
+ display: -ms-flexbox;
628
+ display: flex;
629
+ -webkit-flex-wrap: wrap;
630
+ -ms-flex-wrap: wrap;
631
+ flex-wrap: wrap;
632
+ -webkit-box-align: start;
633
+ -webkit-align-items: flex-start;
634
+ -ms-flex-align: start;
635
+ align-items: flex-start; }
636
+ .docks-button__container--fill-width .docks-button,
637
+ .docks-button__container--fill-width > *:not(.docks-button) {
638
+ display: -webkit-box;
639
+ display: -webkit-flex;
640
+ display: -ms-flexbox;
641
+ display: flex;
642
+ -webkit-box-flex: 1;
643
+ -webkit-flex: 1 0 0%;
644
+ -ms-flex: 1 0 0%;
645
+ flex: 1 0 0%;
646
+ min-width: -webkit-min-content;
647
+ min-width: -moz-min-content;
648
+ min-width: min-content; }
649
+
650
+ .docks-button__segmented-container {
651
+ display: -webkit-inline-box;
652
+ display: -webkit-inline-flex;
653
+ display: -ms-inline-flexbox;
654
+ display: inline-flex; }
655
+ .docks-button__segmented-container > .docks-button {
656
+ border-radius: 0; }
657
+ .docks-button__segmented-container > .docks-button:not(:first-child) {
658
+ border-left: none; }
659
+ .docks-button__segmented-container > .docks-button:first-child {
660
+ border-radius: 4px 0 0 4px; }
661
+ .docks-button__segmented-container > .docks-button:last-child {
662
+ border-radius: 0 4px 4px 0; }
663
+
664
+ .card {
665
+ background-color: white;
666
+ border-radius: 4px;
667
+ overflow: hidden; }
668
+
669
+ .code-block {
670
+ margin: 1rem 0;
671
+ overflow: hidden;
672
+ background: #f2f2f3;
673
+ border-radius: 4px; }
674
+ .code-block .docks-button {
675
+ display: none; }
676
+
677
+ .code-block--condensed {
678
+ margin-top: 0.5rem; }
679
+ .code-block--condensed .code-block__code {
680
+ padding-bottom: 0.5rem;
681
+ font-size: 0.875rem; }
682
+ .code-block--condensed:not(.code-block--with-header) .code-block__code {
683
+ padding-top: 0.5rem; }
684
+
685
+ .code-block--full-width {
686
+ margin-right: 0;
687
+ margin-left: 0;
688
+ border-radius: 0; }
689
+ .content .code-block--full-width {
690
+ margin-left: -1rem;
691
+ margin-right: -1rem; }
692
+
693
+ .code-block--is-hidden:not(.code-block--with-demo) .code-block__toggler {
694
+ background-color: #f2f2f3; }
695
+
696
+ .code-block--is-hidden .code-block__content {
697
+ height: 0; }
698
+
699
+ .code-block__actions {
700
+ display: -webkit-box;
701
+ display: -webkit-flex;
702
+ display: -ms-flexbox;
703
+ display: flex;
704
+ -webkit-box-align: center;
705
+ -webkit-align-items: center;
706
+ -ms-flex-align: center;
707
+ align-items: center; }
708
+
709
+ .code-block__header {
710
+ display: -webkit-box;
711
+ display: -webkit-flex;
712
+ display: -ms-flexbox;
713
+ display: flex;
714
+ -webkit-box-pack: justify;
715
+ -webkit-justify-content: space-between;
716
+ -ms-flex-pack: justify;
717
+ justify-content: space-between;
718
+ -webkit-box-align: center;
719
+ -webkit-align-items: center;
720
+ -ms-flex-align: center;
721
+ align-items: center;
722
+ padding: 0.5rem 1rem;
723
+ -webkit-box-flex: 0 !important;
724
+ -webkit-flex: 0 0 auto !important;
725
+ -ms-flex: 0 0 auto !important;
726
+ flex: 0 0 auto !important;
727
+ background: #f2f2f3; }
728
+ .code-block__header .select,
729
+ .code-block__header .tablist {
730
+ -webkit-transition: -webkit-transform 0.2s ease;
731
+ transition: transform 0.2s ease; }
732
+ .code-block__header .tablist {
733
+ padding: 0; }
734
+
735
+ .code-block__code-container {
736
+ overflow: auto;
737
+ max-height: 100%; }
738
+
739
+ .code-block__toggler {
740
+ background-color: #e3e4e6;
741
+ width: 100%;
742
+ border: none;
743
+ display: -webkit-box;
744
+ display: -webkit-flex;
745
+ display: -ms-flexbox;
746
+ display: flex;
747
+ -webkit-box-align: center;
748
+ -webkit-align-items: center;
749
+ -ms-flex-align: center;
750
+ align-items: center;
751
+ -webkit-box-pack: center;
752
+ -webkit-justify-content: center;
753
+ -ms-flex-pack: center;
754
+ justify-content: center;
755
+ font-size: 1.125rem;
756
+ padding: 0.5rem 0;
757
+ color: #9c9da5;
758
+ -webkit-transition: background-color 0.2s ease;
759
+ transition: background-color 0.2s ease; }
760
+ .code-block__toggler:focus,
761
+ .code-block__toggler:active {
762
+ background-color: #e3e4e6;
763
+ outline: none; }
764
+ .code-block__toggler > .icon {
765
+ margin-right: 0.5rem;
766
+ opacity: 0.5; }
767
+
768
+ .code-block__content {
769
+ overflow: hidden;
770
+ -webkit-transition: height 0.3s ease;
771
+ transition: height 0.3s ease;
772
+ max-height: 15rem; }
773
+
774
+ .code-block__code {
775
+ margin: 0;
776
+ display: inline-block;
777
+ padding: 0.5rem 1rem 1rem;
778
+ font-size: 1rem;
779
+ line-height: 1.3; }
780
+ .code-block__code:focus {
781
+ outline: none; }
782
+ .code-block:not(.code-block--with-header):not(.code-block--condensed):not(.code-block--with-demo) .code-block__code {
783
+ padding-top: 1rem; }
784
+ .code-block--with-demo:not(.code-block--with-header) .code-block__code {
785
+ padding-top: 0; }
786
+ .code-block__code > code {
787
+ font-family: Consolas, monospace;
788
+ padding: 0;
789
+ background-color: transparent;
790
+ font-size: inherit !important;
791
+ border: none; }
792
+
793
+ .hljs-value,
794
+ .hljs-string,
795
+ .hljs-preprocessor {
796
+ color: #4196df; }
797
+
798
+ .hljs-symbol {
799
+ color: #1a5cab; }
800
+
801
+ .hljs-at_rule,
802
+ .hljs-attribute,
803
+ .hljs-keyword {
804
+ color: #4a4a4a; }
805
+
806
+ .hljs-comment {
807
+ color: rgba(177, 177, 177, 0.5);
808
+ font-style: italic; }
809
+
810
+ .hljs-tag,
811
+ .hljs-variable {
812
+ color: #b1b1b1; }
813
+
814
+ .code-block--with-demo .code-block__content {
815
+ padding-top: 0; }
816
+ .code-block--with-demo .code-block__content > .code-block__header {
817
+ padding-top: 0; }
818
+
819
+ .code-block__demo {
820
+ padding: 1rem; }
821
+
822
+ .code-block__demo__content {
823
+ display: none; }
824
+
825
+ .code-block__iframe {
826
+ height: 10em;
827
+ background-color: white;
828
+ border: none;
829
+ width: 100%;
830
+ margin: 0;
831
+ border-radius: 4px; }
832
+
833
+ .demo {
834
+ background-color: white;
835
+ min-height: 10rem; }
836
+
837
+ .demo__section {
838
+ position: relative;
839
+ box-sizing: border-box;
840
+ overflow: hidden;
841
+ background-color: white; }
842
+ .demo__section ~ .demo__section {
843
+ border-top: 1px solid #f1f1f1; }
844
+
845
+ .demo__header {
846
+ box-sizing: border-box;
847
+ margin-right: -0.5rem;
848
+ padding: 0.5rem 1rem 0;
849
+ text-align: right; }
850
+
851
+ .exploded--is-being-initialized .exploded__pane {
852
+ -webkit-transition: -webkit-transform 0.25s ease;
853
+ transition: transform 0.25s ease; }
854
+
855
+ .exploded__source,
856
+ .exploded__structure {
857
+ padding: 1rem 2rem; }
858
+
859
+ .exploded__structure {
860
+ position: relative;
861
+ -webkit-perspective: 2000px;
862
+ perspective: 2000px;
863
+ -webkit-transform-style: preserve-3d;
864
+ transform-style: preserve-3d;
865
+ cursor: pointer; }
866
+
867
+ .exploded__structure__content {
868
+ position: relative;
869
+ z-index: 0;
870
+ margin: 0 auto; }
871
+
872
+ .exploded__control-container {
873
+ display: -webkit-box;
874
+ display: -webkit-flex;
875
+ display: -ms-flexbox;
876
+ display: flex;
877
+ -webkit-box-align: end;
878
+ -webkit-align-items: flex-end;
879
+ -ms-flex-align: end;
880
+ align-items: flex-end;
881
+ margin: 3rem -1rem 0; }
882
+
883
+ .exploded__control {
884
+ -webkit-box-flex: 1;
885
+ -webkit-flex: 1 1 0;
886
+ -ms-flex: 1 1 0;
887
+ flex: 1 1 0;
888
+ margin-left: 1rem; }
889
+ .exploded__control:first-child {
890
+ margin-left: 0; }
891
+
892
+ .exploded__pane {
893
+ position: absolute;
894
+ box-sizing: content-box;
895
+ border-radius: 4px;
896
+ background-color: rgba(156, 157, 165, 0.6);
897
+ border: 1px solid rgba(227, 228, 230, 0.5);
898
+ -webkit-transition: background 0.3s ease;
899
+ transition: background 0.3s ease; }
900
+ .exploded__pane:hover {
901
+ background-color: #b7d6f6; }
902
+
903
+ .exploded__pane--is-selected, .exploded__pane--is-selected:hover {
904
+ background: #8cc2fb;
905
+ opacity: 1; }
906
+
907
+ .field {
908
+ border-radius: 4px;
909
+ background-color: #d1d3d7;
910
+ display: -webkit-box;
911
+ display: -webkit-flex;
912
+ display: -ms-flexbox;
913
+ display: flex;
914
+ -webkit-box-align: center;
915
+ -webkit-align-items: center;
916
+ -ms-flex-align: center;
917
+ align-items: center;
918
+ max-width: 100%;
919
+ padding: 0 0.5rem; }
920
+
921
+ .field--switch {
922
+ padding: 0;
923
+ background-color: transparent;
924
+ position: relative; }
925
+ .field--switch > .label {
926
+ margin: 0;
927
+ padding-left: 2.25rem;
928
+ position: relative;
929
+ line-height: 1.5rem;
930
+ color: #6e6f7a; }
931
+ .field--switch > .label:after {
932
+ content: '';
933
+ display: block;
934
+ height: 1.05rem;
935
+ width: 0.45rem;
936
+ position: absolute;
937
+ top: 0.75rem;
938
+ left: 0.75rem;
939
+ border-bottom: 2px solid #627990;
940
+ border-right: 2px solid #627990;
941
+ -webkit-transform: translate(-50%, -60%) rotate(45deg);
942
+ transform: translate(-50%, -60%) rotate(45deg);
943
+ display: none; }
944
+ .field--switch > .label:before {
945
+ content: '';
946
+ display: block;
947
+ height: 1.5rem;
948
+ width: 1.5rem;
949
+ background: #e3e4e6;
950
+ position: absolute;
951
+ top: 0;
952
+ left: 0;
953
+ border-radius: 4px; }
954
+ .field--switch > .field__switch:checked + .label:before {
955
+ background: #b7d6f6; }
956
+ .field--switch > .field__switch:checked + .label:after {
957
+ display: block; }
958
+ .field--switch > .field__switch {
959
+ position: absolute;
960
+ top: 0;
961
+ left: 0;
962
+ opacity: 0.1; }
963
+ .field--switch + .field--switch {
964
+ margin-top: 1rem; }
965
+
966
+ .field__icon {
967
+ -webkit-box-flex: 0;
968
+ -webkit-flex: 0 0 auto;
969
+ -ms-flex: 0 0 auto;
970
+ flex: 0 0 auto;
971
+ font-size: 0; }
972
+ .field__icon > .icon {
973
+ fill: #9c9da5;
974
+ stroke: #9c9da5; }
975
+
976
+ .field__input {
977
+ -webkit-box-flex: 1;
978
+ -webkit-flex: 1 1 auto;
979
+ -ms-flex: 1 1 auto;
980
+ flex: 1 1 auto;
981
+ margin: 0;
982
+ padding: 0;
983
+ background: transparent;
984
+ border: none;
985
+ line-height: 2.125rem;
986
+ font-size: 1.1rem;
987
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
988
+ .field__input::-webkit-input-placeholder {
989
+ color: rgba(156, 157, 165, 0.5); }
990
+ .field__input::-moz-placeholder {
991
+ color: rgba(156, 157, 165, 0.5); }
992
+ .field__input:-ms-input-placeholder {
993
+ color: rgba(156, 157, 165, 0.5); }
994
+ .field__input::placeholder {
995
+ color: rgba(156, 157, 165, 0.5); }
996
+ .field__input:focus {
997
+ outline: none; }
998
+
999
+ .page-header {
1000
+ background-color: #e3e4e6;
1001
+ padding: 1rem;
1002
+ padding-bottom: 1rem;
1003
+ min-height: 4.125rem; }
1004
+ .page-header .type--heading-1 {
1005
+ margin: -0.5em 0; }
1006
+
1007
+ .inline-group {
1008
+ display: -webkit-inline-box;
1009
+ display: -webkit-inline-flex;
1010
+ display: -ms-inline-flexbox;
1011
+ display: inline-flex;
1012
+ -webkit-flex-wrap: wrap;
1013
+ -ms-flex-wrap: wrap;
1014
+ flex-wrap: wrap;
1015
+ -webkit-box-align: center;
1016
+ -webkit-align-items: center;
1017
+ -ms-flex-align: center;
1018
+ align-items: center;
1019
+ margin-right: -0.5rem;
1020
+ margin-bottom: -0.5rem; }
1021
+
1022
+ .inline-group__item {
1023
+ margin-right: 0.5rem;
1024
+ margin-bottom: 0.5rem; }
1025
+
1026
+ .list {
1027
+ padding: 0;
1028
+ margin: 1rem 0 2rem;
1029
+ list-style: none; }
1030
+ .list .type--heading {
1031
+ padding-left: 1rem;
1032
+ padding-right: 1rem; }
1033
+ .popover .list {
1034
+ margin-bottom: 1rem; }
1035
+
1036
+ .list__item {
1037
+ display: block;
1038
+ padding: 0.25rem 1rem;
1039
+ cursor: pointer;
1040
+ text-decoration: none;
1041
+ color: #6e6f7a;
1042
+ white-space: nowrap;
1043
+ text-overflow: ellipsis;
1044
+ overflow: hidden; }
1045
+ .list__item:hover,
1046
+ .list__item:focus {
1047
+ outline: none;
1048
+ background: #f2f2f3; }
1049
+ .list__item:active {
1050
+ background-color: #b7d6f6;
1051
+ color: #627990; }
1052
+
1053
+ .list__item--is-active,
1054
+ .list__item--is-active:hover,
1055
+ .list__item--is-active:focus {
1056
+ background-color: #b7d6f6;
1057
+ color: #627990; }
1058
+
1059
+ .list__item--indented {
1060
+ padding-left: calc(1rem + 2ch);
1061
+ position: relative; }
1062
+ .list__item--indented:before {
1063
+ content: "";
1064
+ display: block;
1065
+ position: absolute;
1066
+ left: calc(1rem + 1ch);
1067
+ top: 0;
1068
+ height: 100%;
1069
+ width: 2px;
1070
+ background: rgba(30, 30, 31, 0.07); }
1071
+ .list__item--indented:last-child:before {
1072
+ height: 85%; }
1073
+ .list__item:not(.list__item--indented) + .list__item--indented:before {
1074
+ top: 15%;
1075
+ height: 85%; }
1076
+
1077
+ .link-list {
1078
+ padding: 0;
1079
+ margin: 0;
1080
+ list-style: none;
1081
+ display: -webkit-box;
1082
+ display: -webkit-flex;
1083
+ display: -ms-flexbox;
1084
+ display: flex;
1085
+ -webkit-flex-wrap: wrap;
1086
+ -ms-flex-wrap: wrap;
1087
+ flex-wrap: wrap; }
1088
+ .link-list > li {
1089
+ position: relative;
1090
+ -webkit-box-flex: 0;
1091
+ -webkit-flex: 0 0 auto;
1092
+ -ms-flex: 0 0 auto;
1093
+ flex: 0 0 auto; }
1094
+ .link-list > li:after {
1095
+ content: "";
1096
+ position: absolute;
1097
+ top: 10%;
1098
+ right: -1px;
1099
+ -webkit-transform: rotate(15deg);
1100
+ transform: rotate(15deg);
1101
+ display: block;
1102
+ height: 80%;
1103
+ border-right: 2px solid rgba(110, 111, 122, 0.1); }
1104
+ .link-list > li:last-child:after {
1105
+ display: none;
1106
+ margin-right: 0; }
1107
+
1108
+ .link-list__item {
1109
+ position: relative;
1110
+ display: block;
1111
+ cursor: pointer;
1112
+ padding: 0.25rem 0.5rem;
1113
+ -webkit-appearance: none;
1114
+ -moz-appearance: none;
1115
+ background: none;
1116
+ border: none;
1117
+ opacity: 0.6;
1118
+ font-size: 1em;
1119
+ line-height: 1;
1120
+ color: #9c9da5;
1121
+ -webkit-transition: opacity 0.25s ease;
1122
+ transition: opacity 0.25s ease; }
1123
+ .link-list__item:hover,
1124
+ .link-list__item:focus {
1125
+ opacity: 1;
1126
+ outline: none; }
1127
+
1128
+ .unstyled-list {
1129
+ margin: 0;
1130
+ padding: 0;
1131
+ list-style: none; }
1132
+ .unstyled-list > li {
1133
+ margin: 2rem 0; }
1134
+ .unstyled-list > li:first-child {
1135
+ margin-top: 0; }
1136
+
1137
+ .details-sheet {
1138
+ max-width: 90%;
1139
+ position: fixed;
1140
+ top: 50%;
1141
+ left: 50%;
1142
+ -webkit-transform: translate(-50%, -50%);
1143
+ transform: translate(-50%, -50%);
1144
+ background-color: white;
1145
+ border-radius: 0.4rem;
1146
+ box-shadow: 0 0 10px rgba(30, 30, 31, 0.3);
1147
+ z-index: 20;
1148
+ display: none; }
1149
+
1150
+ .details-sheet--is-active {
1151
+ display: block; }
1152
+
1153
+ .details-sheet__overlay {
1154
+ background: rgba(30, 30, 31, 0.9);
1155
+ position: absolute;
1156
+ top: 0;
1157
+ bottom: 0;
1158
+ right: 0;
1159
+ left: 0;
1160
+ z-index: 19;
1161
+ display: none; }
1162
+
1163
+ .details-sheet__overlay--is-active {
1164
+ display: block; }
1165
+
1166
+ .details-sheet__section {
1167
+ padding: 1rem; }
1168
+ .details-sheet__section + .details-sheet__section {
1169
+ border-top: 1px solid; }
1170
+
1171
+ .details-sheet__name {
1172
+ display: inline-block;
1173
+ padding: 0.1rem 0.25em;
1174
+ border-radius: 0.25em;
1175
+ color: #37393c;
1176
+ font-size: 1.2em;
1177
+ font-family: Consolas, monospace;
1178
+ margin: 0; }
1179
+
1180
+ .details-sheet__subtitle {
1181
+ margin: 0 0 0.5rem;
1182
+ font-size: 0.6rem;
1183
+ text-transform: uppercase;
1184
+ color: #37393c;
1185
+ opacity: 0.3;
1186
+ font-weight: 600; }
1187
+
1188
+ .notice {
1189
+ background-color: #fdf7af;
1190
+ width: -webkit-fit-content;
1191
+ width: -moz-fit-content;
1192
+ width: fit-content;
1193
+ color: #857e32;
1194
+ padding: 1rem;
1195
+ border-radius: 4px;
1196
+ font-size: 1.125rem;
1197
+ position: relative; }
1198
+ .notice .type, .notice p, .notice code {
1199
+ color: inherit;
1200
+ font-size: inherit; }
1201
+ .notice .type--heading {
1202
+ font-weight: 400; }
1203
+
1204
+ .notice--new {
1205
+ background-color: #b7d6f6;
1206
+ color: #627990; }
1207
+
1208
+ /*============================================================================
1209
+ Next Popover
1210
+ ==============================================================================*/
1211
+ .popover__container {
1212
+ position: relative;
1213
+ display: -webkit-inline-box;
1214
+ display: -webkit-inline-flex;
1215
+ display: -ms-inline-flexbox;
1216
+ display: inline-flex;
1217
+ z-index: 20; }
1218
+ .popover__container > *:focus {
1219
+ outline: 0; }
1220
+
1221
+ .popover__container--contains-active-popover {
1222
+ z-index: 40; }
1223
+
1224
+ .popover__container--is-deactivating {
1225
+ z-index: 30; }
1226
+
1227
+ .popover__container--full-width {
1228
+ display: -webkit-box;
1229
+ display: -webkit-flex;
1230
+ display: -ms-flexbox;
1231
+ display: flex; }
1232
+
1233
+ .popover {
1234
+ position: absolute;
1235
+ left: 0;
1236
+ top: 100%;
1237
+ -webkit-transform: scale(0);
1238
+ transform: scale(0);
1239
+ display: inline-block;
1240
+ max-width: 100%;
1241
+ margin: 0.8125rem 1rem;
1242
+ background-color: white;
1243
+ border-radius: 4px;
1244
+ opacity: 0;
1245
+ box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16);
1246
+ -webkit-transition: -webkit-transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease;
1247
+ transition: transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease; }
1248
+
1249
+ .popover--is-active {
1250
+ -webkit-transform: scale(1);
1251
+ transform: scale(1);
1252
+ opacity: 1; }
1253
+
1254
+ .popover--is-positioned-above {
1255
+ top: auto;
1256
+ bottom: 100%; }
1257
+ .popover--is-positioned-above .popover__tooltip {
1258
+ top: 100%; }
1259
+ .popover--is-positioned-above .popover__tooltip:after {
1260
+ top: -0.3125rem; }
1261
+
1262
+ .popover__tooltip {
1263
+ position: absolute;
1264
+ left: 50%;
1265
+ top: -1.25rem;
1266
+ width: 1.25rem;
1267
+ height: 1.25rem;
1268
+ margin-left: -0.625rem;
1269
+ overflow: hidden; }
1270
+ .popover__tooltip:after {
1271
+ content: "";
1272
+ position: absolute;
1273
+ top: 0.9375rem;
1274
+ left: 50%;
1275
+ -webkit-transform: rotate(45deg);
1276
+ transform: rotate(45deg);
1277
+ margin-left: -0.3125rem;
1278
+ display: block;
1279
+ height: 0.625rem;
1280
+ width: 0.625rem;
1281
+ background-color: white;
1282
+ box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16); }
1283
+
1284
+ .popover__content-wrapper {
1285
+ display: -webkit-box;
1286
+ display: -webkit-flex;
1287
+ display: -ms-flexbox;
1288
+ display: flex;
1289
+ max-width: 25rem;
1290
+ max-height: 50rem;
1291
+ border-radius: 4px;
1292
+ overflow: hidden; }
1293
+
1294
+ .popover__content {
1295
+ -webkit-box-flex: 0;
1296
+ -webkit-flex: 0 0 auto;
1297
+ -ms-flex: 0 0 auto;
1298
+ flex: 0 0 auto;
1299
+ display: -webkit-inline-box;
1300
+ display: -webkit-inline-flex;
1301
+ display: -ms-inline-flexbox;
1302
+ display: inline-flex;
1303
+ -webkit-box-orient: vertical;
1304
+ -webkit-box-direction: normal;
1305
+ -webkit-flex-direction: column;
1306
+ -ms-flex-direction: column;
1307
+ flex-direction: column;
1308
+ max-height: 100%;
1309
+ min-width: 9.375rem; }
1310
+ .popover__content > *:first-child {
1311
+ margin-top: 0; }
1312
+ .popover__content > *:last-child {
1313
+ margin-bottom: 0; }
1314
+
1315
+ .popover__pane {
1316
+ -webkit-box-flex: 0;
1317
+ -webkit-flex: 0 1 auto;
1318
+ -ms-flex: 0 1 auto;
1319
+ flex: 0 1 auto;
1320
+ overflow: auto;
1321
+ -webkit-overflow-scrolling: touch;
1322
+ max-width: 100%; }
1323
+
1324
+ .range {
1325
+ width: 100%;
1326
+ margin: 0;
1327
+ -webkit-appearance: none;
1328
+ -moz-appearance: none;
1329
+ appearance: none;
1330
+ background-color: transparent; }
1331
+ .range:focus {
1332
+ outline: none; }
1333
+
1334
+ .range::-webkit-slider-runnable-track {
1335
+ width: 100%;
1336
+ height: 2.625rem;
1337
+ cursor: pointer;
1338
+ background-color: #d1d3d7;
1339
+ border-radius: 1.3125rem;
1340
+ padding: 0.2625rem; }
1341
+
1342
+ .range:focus::-webkit-slider-runnable-track {
1343
+ outline: none; }
1344
+
1345
+ .range::-moz-range-track {
1346
+ width: 100%;
1347
+ height: 2.625rem;
1348
+ cursor: pointer;
1349
+ background-color: #d1d3d7;
1350
+ border-radius: 1.3125rem;
1351
+ padding: 0.2625rem; }
1352
+
1353
+ .range::-ms-track {
1354
+ width: 100%;
1355
+ height: 2.625rem;
1356
+ cursor: pointer;
1357
+ background-color: #d1d3d7;
1358
+ border-radius: 1.3125rem;
1359
+ padding: 0.2625rem; }
1360
+
1361
+ .range::-webkit-slider-thumb {
1362
+ height: 2.1rem;
1363
+ width: 2.1rem;
1364
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1365
+ border-radius: 1.05rem;
1366
+ background: #f2f2f3;
1367
+ cursor: pointer;
1368
+ -webkit-appearance: none;
1369
+ appearance: none; }
1370
+
1371
+ .range::-moz-range-thumb {
1372
+ height: 2.1rem;
1373
+ width: 2.1rem;
1374
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1375
+ border-radius: 1.05rem;
1376
+ background: #f2f2f3;
1377
+ cursor: pointer;
1378
+ -webkit-appearance: none;
1379
+ -moz-appearance: none;
1380
+ appearance: none; }
1381
+
1382
+ .range::-ms-thumb {
1383
+ height: 2.1rem;
1384
+ width: 2.1rem;
1385
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1386
+ border-radius: 1.05rem;
1387
+ background: #f2f2f3;
1388
+ cursor: pointer;
1389
+ -webkit-appearance: none;
1390
+ appearance: none; }
1391
+
1392
+ .resizable {
1393
+ position: relative;
1394
+ margin: 0 auto;
1395
+ width: 100%;
1396
+ min-width: 19.25rem;
1397
+ border-radius: 4px;
1398
+ line-height: 0; }
1399
+ .resizable > .card {
1400
+ position: relative;
1401
+ padding-right: 1.25rem; }
1402
+ .resizable .iframe {
1403
+ width: 100%;
1404
+ min-height: 10rem;
1405
+ -webkit-transition: height 0.3s ease;
1406
+ transition: height 0.3s ease;
1407
+ overflow: hidden; }
1408
+
1409
+ .resizable--is-transitioning-width {
1410
+ -webkit-transition: width 0.3s ease;
1411
+ transition: width 0.3s ease; }
1412
+
1413
+ .resizable__handle {
1414
+ position: absolute;
1415
+ top: 0;
1416
+ right: 0;
1417
+ width: 1.25rem;
1418
+ height: 100%;
1419
+ cursor: col-resize;
1420
+ background: #d1d3d7;
1421
+ border-radius: 0 4px 4px 0; }
1422
+ .resizable__handle:hover,
1423
+ .resizable__handle:focus {
1424
+ outline: none; }
1425
+ .resizable__handle:after {
1426
+ content: "";
1427
+ position: absolute;
1428
+ top: 50%;
1429
+ left: 50%;
1430
+ display: block;
1431
+ height: 2rem;
1432
+ width: 0.4375rem;
1433
+ margin-top: -1rem;
1434
+ margin-left: -0.21875rem;
1435
+ border-right: 1px solid #9c9da5;
1436
+ border-left: 1px solid #9c9da5; }
1437
+
1438
+ .resizable__actions {
1439
+ display: -webkit-box;
1440
+ display: -webkit-flex;
1441
+ display: -ms-flexbox;
1442
+ display: flex;
1443
+ -webkit-box-pack: justify;
1444
+ -webkit-justify-content: space-between;
1445
+ -ms-flex-pack: justify;
1446
+ justify-content: space-between;
1447
+ -webkit-box-align: end;
1448
+ -webkit-align-items: flex-end;
1449
+ -ms-flex-align: end;
1450
+ align-items: flex-end;
1451
+ margin-bottom: 0.5rem; }
1452
+
1453
+ .resizable__width-indicator {
1454
+ color: #b1b1b1;
1455
+ font: 300 1rem/1 Consolas, monospace;
1456
+ opacity: 0.4;
1457
+ -webkit-transition: opacity 0.3s ease;
1458
+ transition: opacity 0.3s ease; }
1459
+
1460
+ .resizable__width-indicator--is-visible {
1461
+ opacity: 1; }
1462
+
1463
+ .resizable__size-buttons {
1464
+ display: -webkit-box;
1465
+ display: -webkit-flex;
1466
+ display: -ms-flexbox;
1467
+ display: flex; }
1468
+
1469
+ .resizable__size-button {
1470
+ position: relative;
1471
+ margin-left: 0.5rem;
1472
+ cursor: pointer;
1473
+ opacity: 0.5;
1474
+ -webkit-transition: opacity 0.3s ease;
1475
+ transition: opacity 0.3s ease; }
1476
+ .resizable__size-button > .icon {
1477
+ height: 1.8rem;
1478
+ width: 1.8rem;
1479
+ fill: #e3e4e6;
1480
+ stroke: #e3e4e6;
1481
+ -webkit-transition: fill 0.3s ease;
1482
+ transition: fill 0.3s ease; }
1483
+ .resizable__size-button:hover,
1484
+ .resizable__size-button:focus,
1485
+ .resizable__size-button:active,
1486
+ .resizable__size-button.resizable__size-button--is-active {
1487
+ outline: none; }
1488
+ .resizable__size-button:hover,
1489
+ .resizable__size-button:focus {
1490
+ opacity: 0.8; }
1491
+ .resizable__size-button.resizable__size-button--is-active,
1492
+ .resizable__size-button:active {
1493
+ opacity: 1; }
1494
+ .resizable__size-button.resizable__size-button--is-active > .icon,
1495
+ .resizable__size-button:active > .icon {
1496
+ fill: #4196df;
1497
+ stroke: #4196df; }
1498
+
1499
+ .resizable__size-button--is-hidden {
1500
+ display: none; }
1501
+
1502
+ .scroll-container {
1503
+ overflow: hidden; }
1504
+
1505
+ .section {
1506
+ margin: 2rem 0;
1507
+ padding: 1rem 0; }
1508
+ .section > *:first-child,
1509
+ .section > *:first-child > *:first-child {
1510
+ margin-top: 0; }
1511
+ .section > *:last-child,
1512
+ .section > *:last-child > *:last-child {
1513
+ margin-bottom: 0; }
1514
+
1515
+ .section--small {
1516
+ border: none;
1517
+ padding: 0;
1518
+ margin: 1rem 0; }
1519
+
1520
+ .section--subdued {
1521
+ background: #f1f1f1;
1522
+ overflow: hidden; }
1523
+ .section--subdued.section--small {
1524
+ padding: 1rem 0;
1525
+ margin: 0; }
1526
+
1527
+ .section__container > .section:first-child {
1528
+ margin-top: 2rem; }
1529
+
1530
+ .section__container > .section:last-child {
1531
+ margin-bottom: 2rem; }
1532
+
1533
+ .section__container > .section--small:first-child {
1534
+ margin-top: 1rem; }
1535
+
1536
+ .section__container > .section--small:last-child {
1537
+ margin-bottom: 1rem; }
1538
+
1539
+ .select {
1540
+ position: relative;
1541
+ display: inline-block;
1542
+ border-radius: 4px;
1543
+ background-color: #e3e4e6; }
1544
+ .select:after {
1545
+ content: "";
1546
+ position: absolute;
1547
+ right: 0.75rem;
1548
+ top: 50%;
1549
+ -webkit-transform: rotate(45deg);
1550
+ transform: rotate(45deg);
1551
+ display: block;
1552
+ height: 0.63281rem;
1553
+ width: 0.63281rem;
1554
+ margin-top: -0.47461rem;
1555
+ border: solid rgba(156, 157, 165, 0.5);
1556
+ border-width: 0 2px 2px 0;
1557
+ pointer-events: none; }
1558
+ .select + .docks-button {
1559
+ margin-left: 0.5rem; }
1560
+
1561
+ .select--is-focused {
1562
+ border-color: #4196df; }
1563
+
1564
+ .select--code > .select__input {
1565
+ font-family: Consolas, monospace; }
1566
+
1567
+ .select__input {
1568
+ -webkit-appearance: none;
1569
+ -moz-appearance: none;
1570
+ box-sizing: border-box;
1571
+ display: block;
1572
+ width: 100%;
1573
+ max-width: none;
1574
+ height: auto;
1575
+ padding: 0 2.13281rem 0 0.75rem;
1576
+ background: transparent;
1577
+ border: none;
1578
+ font-size: 1.0125rem;
1579
+ line-height: 2.125rem;
1580
+ font-family: inherit;
1581
+ color: #9c9da5; }
1582
+ .select__input:focus {
1583
+ outline: none;
1584
+ border: none; }
1585
+ .select__input > option {
1586
+ color: #33363a; }
1587
+
1588
+ _:-ms-input-placeholder, :root .select__input::-ms-expand {
1589
+ display: none; }
1590
+
1591
+ _:-ms-input-placeholder, :root .select__input:focus::-ms-value {
1592
+ background: transparent; }
1593
+
1594
+ @supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) {
1595
+ _::-moz-progress-bar,
1596
+ body:last-child .select__input__wrapper {
1597
+ overflow: hidden; }
1598
+ _::-moz-progress-bar,
1599
+ body:last-child .select__input {
1600
+ width: calc(100% + 30px); } }
1601
+
1602
+ .select__input:-moz-focusring {
1603
+ color: transparent;
1604
+ text-shadow: 0 0 0 black; }
1605
+
1606
+ .table {
1607
+ width: 100%;
1608
+ min-width: 31.25rem;
1609
+ border-collapse: separate;
1610
+ border-spacing: 0; }
1611
+
1612
+ .table__container {
1613
+ margin: 1rem auto; }
1614
+
1615
+ .table__container--is-overflowing .table__cell:first-child {
1616
+ position: absolute;
1617
+ z-index: 20;
1618
+ left: 0;
1619
+ height: 100%;
1620
+ box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0);
1621
+ -webkit-transition: box-shadow 0.2s ease;
1622
+ transition: box-shadow 0.2s ease; }
1623
+
1624
+ .table__container--is-overflowing .table__actions {
1625
+ -webkit-transform: translateY(0);
1626
+ transform: translateY(0);
1627
+ max-height: 3rem;
1628
+ padding-bottom: 0.5rem; }
1629
+
1630
+ .table__scroller {
1631
+ max-width: 100%;
1632
+ overflow-x: auto;
1633
+ overflow-y: hidden;
1634
+ -webkit-overflow-scrolling: touch; }
1635
+
1636
+ .table__scroller--is-scrolled .table__cell:first-child {
1637
+ box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0.1); }
1638
+
1639
+ .table__backdrop {
1640
+ position: relative;
1641
+ z-index: 30;
1642
+ max-width: 100%;
1643
+ clear: both;
1644
+ overflow: hidden;
1645
+ border: 1px solid #f1f1f1;
1646
+ border-radius: 8px; }
1647
+
1648
+ .table__actions {
1649
+ -webkit-transform: translateY(140%);
1650
+ transform: translateY(140%);
1651
+ max-height: 0;
1652
+ float: right;
1653
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease;
1654
+ transition: transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease; }
1655
+
1656
+ .table__header {
1657
+ font-weight: 400;
1658
+ padding: 0;
1659
+ text-align: left; }
1660
+
1661
+ .table__body > .table__row:nth-child(odd) > .table__cell {
1662
+ background-color: #f8f8f8; }
1663
+
1664
+ .table__row {
1665
+ overflow: hidden; }
1666
+
1667
+ .table__cell {
1668
+ position: relative;
1669
+ z-index: 10;
1670
+ vertical-align: top;
1671
+ padding: 0.5rem;
1672
+ background-color: white; }
1673
+
1674
+ .table__cell--centered {
1675
+ text-align: center; }
1676
+
1677
+ .tablist {
1678
+ margin: 0;
1679
+ padding: 0;
1680
+ display: -webkit-box;
1681
+ display: -webkit-flex;
1682
+ display: -ms-flexbox;
1683
+ display: flex;
1684
+ -webkit-box-pack: center;
1685
+ -webkit-justify-content: center;
1686
+ -ms-flex-pack: center;
1687
+ justify-content: center;
1688
+ padding: 0.5rem;
1689
+ margin-right: -0.5rem;
1690
+ list-style: none; }
1691
+
1692
+ .tablist--large {
1693
+ margin: 2rem 0; }
1694
+ .tablist--large > .tablist__tab {
1695
+ font-size: 1.5rem;
1696
+ line-height: 1;
1697
+ padding: 1rem 2.5rem 1.2rem;
1698
+ border: none !important;
1699
+ opacity: 1 !important; }
1700
+ .tablist--large > .tablist__tab--is-active {
1701
+ background-color: #f2f2f3; }
1702
+
1703
+ .tablist__tab {
1704
+ display: inline-block;
1705
+ padding: 0 0.75rem;
1706
+ opacity: 0.3;
1707
+ overflow: hidden;
1708
+ border: 1px solid transparent;
1709
+ border-radius: 4px;
1710
+ -webkit-transition: opacity 0.3s ease, border-color 0.3s ease;
1711
+ transition: opacity 0.3s ease, border-color 0.3s ease;
1712
+ font-size: 1.125rem;
1713
+ line-height: 2.125rem;
1714
+ color: #9c9da5;
1715
+ text-align: center;
1716
+ text-decoration: none;
1717
+ white-space: nowrap;
1718
+ text-overflow: ellipsis; }
1719
+ .tablist__tab:focus,
1720
+ .tablist__tab:hover {
1721
+ outline: none;
1722
+ opacity: 0.5; }
1723
+ .tablist__tab > .icon {
1724
+ height: 2rem;
1725
+ width: 2rem;
1726
+ fill: #d1d3d7;
1727
+ stroke: #d1d3d7;
1728
+ stroke-width: 3px; }
1729
+
1730
+ .tablist__tab--is-active, .tablist__tab--is-active:hover, .tablist__tab--is-active:focus {
1731
+ border-color: #9c9da5;
1732
+ opacity: 1; }
1733
+
1734
+ .tablist__tab__text {
1735
+ display: block; }
1736
+
1737
+ .tablist__panel {
1738
+ display: none; }
1739
+
1740
+ .tablist__panel--is-active {
1741
+ display: block; }
1742
+
1743
+ .vertical-spacer {
1744
+ margin: 0.5rem 0; }
1745
+
1746
+ .vertical-stack {
1747
+ display: -webkit-box;
1748
+ display: -webkit-flex;
1749
+ display: -ms-flexbox;
1750
+ display: flex;
1751
+ -webkit-box-orient: vertical;
1752
+ -webkit-box-direction: normal;
1753
+ -webkit-flex-direction: column;
1754
+ -ms-flex-direction: column;
1755
+ flex-direction: column;
1756
+ -webkit-align-self: stretch;
1757
+ -ms-flex-item-align: stretch;
1758
+ align-self: stretch;
1759
+ width: 100%; }
1760
+
1761
+ .vertical-stack__item {
1762
+ -webkit-box-flex: 1;
1763
+ -webkit-flex: 1 1 0px;
1764
+ -ms-flex: 1 1 0px;
1765
+ flex: 1 1 0px;
1766
+ max-width: 100%;
1767
+ overflow-x: hidden;
1768
+ overflow-y: auto;
1769
+ -webkit-overflow-scrolling: touch; }
1770
+
1771
+ .vertical-stack__item--fixed {
1772
+ -webkit-box-flex: 0;
1773
+ -webkit-flex: 0 0 auto;
1774
+ -ms-flex: 0 0 auto;
1775
+ flex: 0 0 auto;
1776
+ overflow: visible; }
1777
+
1778
+ body {
1779
+ position: relative; }
1780
+ body.x-ray__helpers--x-ray-is-active {
1781
+ overflow: hidden; }
1782
+
1783
+ .x-ray {
1784
+ background: white;
1785
+ position: absolute;
1786
+ top: 0;
1787
+ bottom: 0;
1788
+ left: 0;
1789
+ right: 0;
1790
+ z-index: -1;
1791
+ overflow-x: hidden;
1792
+ overflow-y: auto;
1793
+ opacity: 0;
1794
+ -webkit-transition: opacity 0.3s ease;
1795
+ transition: opacity 0.3s ease;
1796
+ min-height: 100%; }
1797
+ .x-ray .page-header {
1798
+ -webkit-box-flex: 0;
1799
+ -webkit-flex: 0 0 auto;
1800
+ -ms-flex: 0 0 auto;
1801
+ flex: 0 0 auto; }
1802
+
1803
+ .x-ray--is-active {
1804
+ opacity: 1;
1805
+ z-index: 1200; }
1806
+
1807
+ .x-ray__content {
1808
+ padding-bottom: 3rem; }
1809
+
1810
+ .x-ray__list {
1811
+ padding: 1rem;
1812
+ background-color: #f2f2f3; }
1813
+
1814
+ .x-ray__closer {
1815
+ background: transparent;
1816
+ border: none;
1817
+ padding: 0;
1818
+ -webkit-appearance: none;
1819
+ -moz-appearance: none;
1820
+ appearance: none; }
1821
+
1822
+ .x-ray__diagram {
1823
+ padding: 1rem 0 0;
1824
+ background: #e3e4e6; }
1825
+
1826
+ .x-ray__details {
1827
+ display: none; }
1828
+
1829
+ .x-ray__details--is-visible {
1830
+ display: block; }
1831
+
1832
+ .x-ray__details__tagname {
1833
+ display: inline-block;
1834
+ font-size: 0.75em;
1835
+ background-color: #f2f2f3;
1836
+ padding: 0.3em 0.4em 0.2em;
1837
+ border-radius: 4px;
1838
+ line-height: 1;
1839
+ color: #9c9da5;
1840
+ margin-right: 0.25rem; }
1841
+
1842
+ .x-ray__details__description {
1843
+ margin-bottom: 2rem; }
1844
+
1845
+ .sidebar {
1846
+ position: absolute;
1847
+ left: 0;
1848
+ top: 0;
1849
+ -webkit-transform: translate3d(-100%, 0, 0);
1850
+ transform: translate3d(-100%, 0, 0);
1851
+ -webkit-transition: -webkit-transform 0.2s ease;
1852
+ transition: transform 0.2s ease;
1853
+ max-width: 15rem;
1854
+ display: -webkit-box;
1855
+ display: -webkit-flex;
1856
+ display: -ms-flexbox;
1857
+ display: flex;
1858
+ height: 100vh;
1859
+ background-color: white;
1860
+ box-shadow: 0 0 4px rgba(30, 30, 31, 0.3); }
1861
+ @media screen and (min-width: 40.0625rem) {
1862
+ .sidebar {
1863
+ position: static;
1864
+ -webkit-transform: translate3d(0, 0, 0);
1865
+ transform: translate3d(0, 0, 0); } }
1866
+
1867
+ .sidebar--is-active {
1868
+ -webkit-transform: translate3d(0, 0, 0);
1869
+ transform: translate3d(0, 0, 0); }
1870
+
1871
+ .sidebar__toggler {
1872
+ background: transparent;
1873
+ padding: 0;
1874
+ margin: 0;
1875
+ -webkit-appearance: none;
1876
+ -moz-appearance: none;
1877
+ appearance: none;
1878
+ border: none; }
1879
+ .sidebar__toggler:focus {
1880
+ outline: none; }
1881
+
1882
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxpdGllcy9tZWRpYS9tZWRpYS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYTExeS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYmFzZS5zY3NzIiwidXRpbGl0aWVzL2NvbG9ycy9jb2xvcnMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL2ljb24uc2NzcyIsInV0aWxpdGllcy9mdW5jdGlvbnMvZnVuY3Rpb25zLnNjc3MiLCJ1dGlsaXRpZXMvZm91bmRhdGlvbi9sYXlvdXQuc2NzcyIsInV0aWxpdGllcy9kZWZhdWx0cy9kZWZhdWx0cy5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vcGFnZS5zY3NzIiwidXRpbGl0aWVzL3pfaW5kZXhlcy96LWluZGV4ZXMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL3R5cGUuc2NzcyIsInV0aWxpdGllcy9mb250X3NpemVzL2ZvbnQtc2l6ZXMuc2NzcyIsImNvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5zY3NzIiwiY29tcG9uZW50cy9iYWRnZS9iYWRnZS5zY3NzIiwiY29tcG9uZW50cy9idXR0b24vYnV0dG9uLnNjc3MiLCJjb21wb25lbnRzL2NhcmQvY2FyZC5zY3NzIiwiY29tcG9uZW50cy9jb2RlX2Jsb2NrL2NvZGUtYmxvY2suc2NzcyIsImNvbXBvbmVudHMvZGVtby9kZW1vLnNjc3MiLCJjb21wb25lbnRzL2V4cGxvZGVkL2V4cGxvZGVkLnNjc3MiLCJjb21wb25lbnRzL2ZpZWxkL2ZpZWxkLnNjc3MiLCJjb21wb25lbnRzL2hlYWRlci9oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvaW5saW5lX2dyb3VwL2lubGluZS1ncm91cC5zY3NzIiwiY29tcG9uZW50cy9saXN0L2xpc3Quc2NzcyIsInV0aWxpdGllcy9taXhpbnMvbWl4aW5zLnNjc3MiLCJjb21wb25lbnRzL21vZGFsL21vZGFsLnNjc3MiLCJjb21wb25lbnRzL25vdGljZS9ub3RpY2Uuc2NzcyIsImNvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLnNjc3MiLCJjb21wb25lbnRzL3JhbmdlL3JhbmdlLnNjc3MiLCJjb21wb25lbnRzL3Jlc2l6YWJsZS9yZXNpemFibGUuc2NzcyIsImNvbXBvbmVudHMvc2Nyb2xsX2NvbnRhaW5lci9zY3JvbGwtY29udGFpbmVyLnNjc3MiLCJjb21wb25lbnRzL3NlY3Rpb24vc2VjdGlvbi5zY3NzIiwiY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnNjc3MiLCJjb21wb25lbnRzL3RhYmxlL3RhYmxlLnNjc3MiLCJjb21wb25lbnRzL3RhYmxpc3QvdGFibGlzdC5zY3NzIiwiY29tcG9uZW50cy92ZXJ0aWNhbF9zcGFjZXIvdmVydGljYWwtc3BhY2VyLnNjc3MiLCJjb21wb25lbnRzL3ZlcnRpY2FsX3N0YWNrL3ZlcnRpY2FsLXN0YWNrLnNjc3MiLCJjb21wb25lbnRzL3hyYXkveHJheS5zY3NzIiwic3RydWN0dXJlcy9zaWRlYmFyL3NpZGViYXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RkU7RUFzRXlDO0lBRWIsY0FBYyxFQUR4QyxFQUFBOztBQS9FRjtFQWlGQztJQUcwQixjQUFjLEVBRHZDLEVBQUE7O0FBRUQ7RUFHQyxjQUFjLEVBRGQ7RUF2RkY7SUFxRkM7TUFLMEIsZUFBZSxFQUh4QyxFQUFBOztBQS9FRjtFQXNFeUM7SUFFYixjQUFjLEVBRHhDLEVBQUE7O0FBL0VGO0VBaUZDO0lBRzBCLGNBQWMsRUFEdkMsRUFBQTs7QUFFRDtFQUdDLGNBQWMsRUFEZDtFQXZGRjtJQXFGQztNQUswQixlQUFlLEVBSHhDLEVBQUE7O0FBL0VGO0VBc0V5QztJQUViLGNBQWMsRUFEeEMsRUFBQTs7QUEvRUY7RUFpRkM7SUFHMEIsY0FBYyxFQUR2QyxFQUFBOztBQUVEO0VBR0MsY0FBYyxFQURkO0VBdkZGO0lBcUZDO01BSzBCLGVBQWUsRUFIeEMsRUFBQTs7QUN0S0o7RUFDRSxVQUFVO0VBQ1Ysb0JBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixXQUFXO0VB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akI7RUFDRSxlQUFlLEVBRFk7O0FBSTdCO0VBQ0Usc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQiwwQmpDaERZO0VpQ2lEWiwyQkFBMEI7RTdCakMxQixtQkFma0I7RTZCa0RsQixlQUFlO0VBQ2YsZWpDakRhO0VpQ2tEYixzQkFBc0IsRUFSRTs7QUFXMUI7RUFDRSxvQkFBaUIsRUFEVzs7QUNsRDlCO0VBRUUsbUJBQW1CO0VBQ25CLFFBQVE7RUFBRSxPQUFPO0VBQ2pCLDRDQUE4QjtFQUM5QixvQ0FBc0I7RUFDdEIsZ0RBQStCO1VBQS9CLGdDQUErQjtFQUMvQixpQkFBaUI7RUFHakIscUJBQWM7RUFBZCxzQkFBYztFQUFkLHFCQUFjO0VBQWQsY0FBYztFQUNkLGNBQWM7RUFHZCx3QmxDeEJrQjtFSW9CbEIsMENKVVUsRWtDcEJGO0VyQ3FEUjtJcUNyREY7TUFrQkksaUJBQWlCO01BQ2pCLHdDQUFzQjtjQUF0QixnQ0FBc0IsRUFuQmhCLEVBQUE7O0FBMkJWO0VBQ0Usd0NBQXNCO1VBQXRCLGdDQUFzQixFQURIOztBQVdyQjtFQUNFLHdCQUF3QjtFQUN4QixXQUFXO0VBQ1gsVUFBVTtFQUNWLHlCQUFpQjtLQUFqQixzQkFBaUI7VUFBakIsaUJBQWlCO0VBQ2pCLGFBQWEsRUFMSTtFQU9oQjtJQUNDLGNBQWMsRUFEUCIsImZpbGUiOiJwYXR0ZXJuLWxpYnJhcnktZGVtby5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgX19fX18gICAgICAgICAgICAgICAgICBfX19cbi8vICAgICAgIC9fXy9cXCAgICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFwgICAgIF9fXyAgICAgICAgLyAgL1xcXG4vLyAgICAgIHwgIHw6OlxcICAgICAgLyAgLzovXyAgICAvICAvOi9cXDpcXCAgIC8gIC9cXCAgICAgIC8gIC86OlxcXG4vLyAgICAgIHwgIHw6fDpcXCAgICAvICAvOi8gL1xcICAvICAvOi8gIFxcOlxcIC8gIC86LyAgICAgLyAgLzovXFw6XFxcbi8vICAgIF9ffF9ffDp8XFw6XFwgIC8gIC86LyAvOi9fL19fLzovIFxcX19cXDovX18vOjpcXCAgICAvICAvOi9+Lzo6XFxcbi8vICAgL19fLzo6Ojp8IFxcOlxcL19fLzovIC86LyAvXFwgIFxcOlxcIC8gIC86fF9fXFwvXFw6XFxfXy9fXy86LyAvOi9cXDpcXFxuLy8gICBcXCAgXFw6XFx+flxcX19cXC9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcICAvOi8gICBcXCAgXFw6XFwvXFwgIFxcOlxcLzovX19cXC9cbi8vICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gICAgIFxcX19cXDo6L1xcICBcXDo6L1xuLy8gICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOjovICAgICAgL19fLzovICBcXCAgXFw6XFxcbi8vICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICAgXFxfX1xcLyAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC9cblxuXG5cbiRCUkVBS1BPSU5UUzogKFxuICBzbWFsbDogMjVyZW0sXG4gIG1lZGl1bTogMzcuNXJlbSxcbiAgbGFyZ2U6IDUwcmVtXG4pO1xuXG4kQlJFQUtQT0lOVF9JTkNSRU1FTlRTOiAoXG4gIHJlbTogMC4wNjI1cmVtLFxuICBlbTogMC4wNjI1ZW0sXG4gIHB4OiAxcHgsXG4gIHZ3OiAxdndcbik7XG5cblxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC12YWx1ZS1mb3IoJGJyZWFrcG9pbnQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGJyZWFrcG9pbnQpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1jbGVhbi12YWx1ZSgkcG9pbnQpIHtcbiAgQGlmIHR5cGUtb2YoJHBvaW50KSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gJHBvaW50O1xuICB9XG5cbiAgQHJldHVybiBicmVha3BvaW50LXZhbHVlLWZvcigkcG9pbnQpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmNyZW1lbnQtZm9yKCR2YWx1ZSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRfSU5DUkVNRU5UUywgdW5pdCgkdmFsdWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkdmFsdWUsICRkZWZhdWx0KSB7XG4gICRpbmNsdXNpdml0eTogbnVsbDtcbiAgQGlmIGxlbmd0aCgkdmFsdWUpID4gMSB7ICRpbmNsdXNpdml0eTogbnRoKCR2YWx1ZSwgMik7IH1cblxuICBAaWYgJGluY2x1c2l2aXR5IHtcbiAgICBAcmV0dXJuICRpbmNsdXNpdml0eSA9PSBpbmNsdXNpdmU7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJGRlZmF1bHQ7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYWRqdXN0ZWQtZm9yLWluY2x1c2l2aXR5KCR2YWx1ZSwgJG1pbi1vci1tYXgsICRpbmNsdXNpdmU6IGZhbHNlKSB7XG4gICR2YWx1ZTogYnJlYWtwb2ludC1jbGVhbi12YWx1ZSgkdmFsdWUpO1xuXG4gIEBpZiBub3QgJGluY2x1c2l2ZSB7XG4gICAgQGlmICRtaW4tb3ItbWF4ID09IG1pbiB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSArIGJyZWFrcG9pbnQtaW5jcmVtZW50LWZvcigkdmFsdWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgLSBicmVha3BvaW50LWluY3JlbWVudC1mb3IoJHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIFwiKCN7JG1pbi1vci1tYXh9LXdpZHRoOiAjeyR2YWx1ZX0pXCI7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXJldGluaXplLW1lZGlhLXF1ZXJ5KCRtZWRpYS1xdWVyeSkge1xuICBAcmV0dXJuIFwiI3skbWVkaWEtcXVlcnl9IGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXJlc29sdXRpb246IDE5MmRwaSlcIjtcbn1cblxuXG5cblxuXG5AbWl4aW4gYnJlYWtwb2ludC1hZnRlcigkcG9pbnQpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgI3ticmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkcG9pbnQsIG1pbil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYWZ0ZXIoJHBvaW50KSB7IEBpbmNsdWRlIGJyZWFrcG9pbnQtYWZ0ZXIoJHBvaW50KSB7IEBjb250ZW50OyB9IH1cblxuQG1peGluIGJyZWFrcG9pbnQtYmVmb3JlKCRwb2ludCkge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQtYWRqdXN0ZWQtZm9yLWluY2x1c2l2aXR5KCRwb2ludCwgbWF4KX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBiZWZvcmUoJHBvaW50KSB7IEBpbmNsdWRlIGJyZWFrcG9pbnQtYmVmb3JlKCRwb2ludCkgeyBAY29udGVudDsgfSB9XG5cbkBtaXhpbiBicmVha3BvaW50KCRhZnRlcjogbnVsbCwgJGJlZm9yZTogbnVsbCwgJGZyb206IG51bGwsICR0bzogbnVsbCwgJHVudGlsOiBudWxsLCAkcmV0aW5hOiBmYWxzZSkge1xuICAkbWluLXdpZHRoOiBudWxsO1xuICAkbWF4LXdpZHRoOiBudWxsO1xuICAkbWluLWluY2x1c2l2ZTogbnVsbDtcbiAgJG1heC1pbmNsdXNpdmU6IG51bGw7XG5cbiAgLy8gJGFmdGVyIGRlZmF1bHRzIHRvIGV4Y2x1c2l2ZVxuICBAaWYgJGFmdGVyIHtcbiAgICAkbWluLXdpZHRoOiBudGgoJGFmdGVyLCAxKTtcbiAgICAkbWluLWluY2x1c2l2ZTogYnJlYWtwb2ludC1kZWZhdWx0LWluY2x1c2l2aXR5KCRhZnRlciwgZmFsc2UpO1xuICB9XG5cbiAgLy8gJGZyb20gZGVmYXVsdHMgdG8gaW5jbHVzaXZlXG4gIEBpZiAkZnJvbSB7XG4gICAgJG1pbi13aWR0aDogbnRoKCRmcm9tLCAxKTtcbiAgICAkbWluLWluY2x1c2l2ZTogYnJlYWtwb2ludC1kZWZhdWx0LWluY2x1c2l2aXR5KCRmcm9tLCB0cnVlKTtcbiAgfVxuXG4gIC8vICRiZWZvcmUgZGVmYXVsdHMgdG8gZXhjbHVzaXZlXG4gIEBpZiAkYmVmb3JlIHtcbiAgICAkbWF4LXdpZHRoOiBudGgoJGJlZm9yZSwgMSk7XG4gICAgJG1heC1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkYmVmb3JlLCBmYWxzZSk7XG4gIH1cblxuICAvLyAkdG8gZGVmYXVsdHMgdG8gaW5jbHVzaXZlXG4gIEBpZiAkdG8ge1xuICAgICRtYXgtd2lkdGg6IG50aCgkdG8sIDEpO1xuICAgICRtYXgtaW5jbHVzaXZlOiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJHRvLCB0cnVlKTtcbiAgfVxuXG4gIC8vICR1bnRpbCBkZWZhdWx0cyB0byBleGNsdXNpdmVcbiAgQGlmICR1bnRpbCB7XG4gICAgJG1heC13aWR0aDogbnRoKCR1bnRpbCwgMSk7XG4gICAgJG1heC1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkdW50aWwsIGZhbHNlKTtcbiAgfVxuXG4gIEBpZiAkbWF4LXdpZHRoIHsgJG1heC13aWR0aDogYnJlYWtwb2ludC1hZGp1c3RlZC1mb3ItaW5jbHVzaXZpdHkoJG1heC13aWR0aCwgbWF4LCAkbWF4LWluY2x1c2l2ZSk7IH1cbiAgQGlmICRtaW4td2lkdGggeyAkbWluLXdpZHRoOiBicmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkbWluLXdpZHRoLCBtaW4sICRtaW4taW5jbHVzaXZlKTsgfVxuXG4gICRtZWRpYS1xdWVyeTogXCJzY3JlZW5cIjtcbiAgQGlmICRtaW4td2lkdGggeyAkbWVkaWEtcXVlcnk6ICRtZWRpYS1xdWVyeSArIFwiIGFuZCAjeyRtaW4td2lkdGh9XCI7IH1cbiAgQGlmICRtYXgtd2lkdGggeyAkbWVkaWEtcXVlcnk6ICRtZWRpYS1xdWVyeSArIFwiIGFuZCAjeyRtYXgtd2lkdGh9XCI7IH1cbiAgQGlmICRyZXRpbmEgeyAkbWVkaWEtcXVlcnk6IGJyZWFrcG9pbnQtcmV0aW5pemUtbWVkaWEtcXVlcnkoJG1lZGlhLXF1ZXJ5KTsgfVxuXG4gIEBtZWRpYSAjeyRtZWRpYS1xdWVyeX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cblxuXG5AbWl4aW4gcHJpbnQoKSB7XG4gIEBtZWRpYSBwcmludCB7IEBjb250ZW50OyB9XG59XG5cblxuXG5AbWl4aW4gcmV0aW5hKCkge1xuICBAbWVkaWEgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSB7IEBjb250ZW50OyB9XG59XG5cblxuXG5AZWFjaCAkYnJlYWtwb2ludCwgJHdpZHRoIGluICRCUkVBS1BPSU5UUyB7XG4gIC5tZWRpYV9faGVscGVycy0taGlkZS1iZWZvcmUtI3skYnJlYWtwb2ludH0ge1xuICAgIEBpbmNsdWRlIGJlZm9yZSgkd2lkdGgpIHsgZGlzcGxheTogbm9uZTsgfVxuICB9XG5cbiAgLm1lZGlhX19oZWxwZXJzLS1oaWRlLWFmdGVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICBAaW5jbHVkZSBhZnRlcigkd2lkdGgpIHsgZGlzcGxheTogbm9uZTsgfVxuICB9XG5cbiAgLm1lZGlhX19oZWxwZXJzLS1zaG93LWFmdGVyLSN7JGJyZWFrcG9pbnR9IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYWZ0ZXIoJHdpZHRoKSB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cbiIsIi5oZWxwZXItLXZpc3VhbGx5LWhpZGRlbiB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuIiwiLy8gICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICBfX19fXyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAvICAvOjpcXCAgICAgIC8gIC86L18gICAgICAvICAvOi9fXG4vLyAgICAgLyAgLzovXFw6XFwgICAvICAvOi9cXDpcXCAgICAvICAvOi8gL1xcICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86L34vOjpcXCAvICAvOi9+Lzo6XFwgIC8gIC86LyAvOjpcXCAgLyAgLzovIC86L19cbi8vICAgL19fLzovIC86L1xcOi9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi8gL1xcXG4vLyAgIFxcICBcXDpcXC86L34vOnwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcLzovIC86L1xuLy8gICAgXFwgIFxcOjovIC86LyBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgXFwgIFxcOlxcICAgICAgIFxcX19cXC8gLzovICAgIFxcICBcXDpcXC86L1xuLy8gICAgICBcXCAgXFw6Oi8gICAgIFxcICBcXDpcXCAgICAgICAgL19fLzovICAgICAgXFwgIFxcOjovXG4vLyAgICAgICBcXF9fXFwvICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuaHRtbCB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKixcbio6YmVmb3JlLFxuKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbiIsIi8vKlxuLy8gQHBhdHRlcm4gQ29sb3JzXG4vLyBAZ3JvdXAgSGVscGVyXG4vL1xuLy8gVGhpcyBzdHlsZXNoZWV0IHByb3ZpZGVzIGEgY2VudHJhbGl6ZWQgbG9jYXRpb24gdG8gbWFuYWdlIGNvbG9ycy4gQ29sb3JzXG4vLyBzaG91bGQgKipuZXZlcioqIGJlIGRlY2xhcmVkIGluIENTUyBkaXJlY3RseTsgaW5zdGVhZCwgYWRkIHRoZSBjb2xvciB0byB0aGVcbi8vIGAkQ09MT1JTYCBtYXAgKGZvbGxvd2luZyB0aGUgXCJjb2xvci1tb2RpZmllclwiIG5hbWluZyBjb252ZW50aW9uKSBhbmRcbi8vIHRoZW4gaW5jbHVkZSBpdCBhcyByZXF1aXJlZCB1c2luZyB0aGUgYGNvbG9yKClgIGZ1bmN0aW9uIGRlc2NyaWJlZCBiZWxvdy5cbi8vXG4vLyBUaGUgY29sb3IgY29tcG9uZW50IGFsc28gcHJvdmlkZXMgc29tZSB1dGlsaXR5IG1ldGhvZHMgdG8gZGFya2VuIChgc2hhZGUoKWApXG4vLyBhbmQgbGlnaHRlbiAoYHRpbnQoKWApIGNvbG9ycyDigJTCoHVzZSB0aGVzZSBvbmx5IGZvciBvbmUtb2ZmcyB0aGF0IGFyZSBkZWVtZWRcbi8vIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBGb3IgdmFyaWF0aW9ucyB0aGF0IGFyZSB1c2VkIGluIG11bHRpcGxlIHBsYWNlcywgYWRkXG4vLyBhIG5ldyB2YXJpYXRpb24gdG8gdGhlIGAkQ09MT1JTYCBtYXAuXG5cblxuJFVJX0NPTE9SUzogKFxuICB3aGl0ZTogKCBiYXNlOiByZ2IoMjU1LCAyNTUsIDI1NSkgKSxcbiAgYmxhY2s6ICggYmFzZTogcmdiKDMwLCAzMCwgMzEpICksXG5cbiAgZ3JheTogKFxuICAgIGxpZ2h0OiByZ2IoMjQyLCAyNDIsIDI0MyksXG4gICAgYmFzZTogcmdiKDIyNywgMjI4LCAyMzApLFxuICAgIGRhcms6IHJnYigyMDksIDIxMSwgMjE1KSxcbiAgICBkYXJrZXI6IHJnYigxNTYsIDE1NywgMTY1KSxcbiAgICBkYXJrZXN0OiByZ2IoMTEwLCAxMTEsIDEyMilcbiAgKSxcblxuICB5ZWxsb3c6IChcbiAgICBiYXNlOiByZ2IoMjUzLCAyNDcsIDE3NSksXG4gICAgZGFyazogcmdiKDEzMywgMTI2LCA1MClcbiAgKSxcblxuICBibHVlOiAoXG4gICAgYmFzZTogcmdiKDE4MywgMjE0LCAyNDYpLFxuICAgIGRhcms6IHJnYigxNDAsIDE5NCwgMjUxKSxcbiAgICBkYXJrZXI6IHJnYig5OCwgMTIxLCAxNDQpXG4gIClcbik7XG5cbkBmdW5jdGlvbiB1aS1jb2xvcigkY29sb3IsICRzaGFkZTogYmFzZSkge1xuICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkVUlfQ09MT1JTLCAkY29sb3IpLCAkc2hhZGUpO1xufVxuXG5cbiRDT0xPUlM6IChcbiAgd2hpdGU6IHJnYigyNTUsIDI1NSwgMjU1KSxcbiAgYmxhY2s6IHJnYigzMCwgMzAsIDMxKSxcblxuICBibHVlLWxpZ2h0OiByZ2IoMTM1LCAxOTQsIDIzNSksXG4gIGJsdWU6IHJnYig2NSwgMTUwLCAyMjMpLFxuICBibHVlLWRhcms6IHJnYig0MCwgMTM0LCAyMTQpLFxuICBibHVlLWRhcmtlcjogcmdiKDI2LCA5MiwgMTcxKSxcblxuICB5ZWxsb3c6IHJnYigyNTIsIDI0NiwgMTYxKSxcbiAgeWVsbG93LWRhcms6IHJnYigxMzksIDEzNCwgNzIpLFxuXG4gIHNsYXRlLWxpZ2h0OiByZ2IoNTUsIDU3LCA2MCksXG4gIHNsYXRlOiByZ2IoNTEsIDU0LCA1OCksXG5cbiAgZ3JheS1saWdodGVyOiByZ2IoMjQ4LCAyNDgsIDI0OCksXG4gIGdyYXktbGlnaHQ6IHJnYigyNDEsIDI0MSwgMjQxKSxcbiAgZ3JheTogcmdiKDIwNywgMjA3LCAyMDcpLFxuICBncmF5LWRhcms6IHJnYigxNzcsIDE3NywgMTc3KSxcbiAgZ3JheS1kYXJrZXI6IHJnYig3NCwgNzQsIDc0KVxuKTtcblxuXG4vLypcbi8vIFJldHVybnMgdGhlIGNvbG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIGlkZW50aWZpZXIuXG4vL1xuLy8gQGF1dGhvciBDaHJpcyBTYXV2ZSAoZ2l0aHViOiBsZW1vbm1hZGUpXG4vL1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRjb2xvciAtIFRoZSBjb2xvciAob3Igb3RoZXIgaWRlbnRpZmllciB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcyB0byBhIGNvbG9yKSB0byBzZWFyY2ggZm9yIGluIHRoZVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbCBgJENPTE9SU2AgbWFwLlxuLy9cbi8vIEBleGFtcGxlIHNjc3Ncbi8vIC5mb28ge1xuLy8gICBiYWNrZ3JvdW5kOiBjb2xvcihyZWQpOyAvLyA9PiBiYWNrZ3JvdW5kOiByZ2IoMjQ1LCA3OSwgODQpO1xuLy8gfVxuLy9cbi8vIEByZXR1cm5zIHtDb2xvcn1cblxuQGZ1bmN0aW9uIGNvbG9yKCRjb2xvcikge1xuICBAcmV0dXJuIG1hcC1nZXQoJENPTE9SUywgJGNvbG9yKTtcbn1cblxuXG4vLypcbi8vIFNsaWdodGx5IGxpZ2h0ZW4gYSBjb2xvci5cbi8vXG4vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBUaGUgY29sb3IgdG8gdGludC5cbi8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIFBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gdGhlIHJldHVybmVkIGNvbG9yLlxuLy9cbi8vIEByZXR1cm5zIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgkY29sb3IsIGNvbG9yKHdoaXRlKSwgJHBlcmNlbnRhZ2UpO1xufVxuXG5cbi8vKlxuLy8gU2xpZ2h0bHkgZGFya2VuIGEgY29sb3IuXG4vL1xuLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGNvbG9yIHRvIHNoYWRlLlxuLy8gQHBhcmFtIHtOdW1iZXJ9ICRwZXJjZW50YWdlIC0gUGVyY2VudGFnZSBvZiBgJGNvbG9yYCBpbiB0aGUgcmV0dXJuZWQgY29sb3IuXG4vL1xuLy8gQHJldHVybnMge0NvbG9yfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCgkY29sb3IsIGNvbG9yKGJsYWNrKSwgJHBlcmNlbnRhZ2UpO1xufVxuIiwiQG1peGluIGljb24tLXJlY29sb3IoJGNvbG9yLCAkdmFyaWFudDogYmFzZSkge1xuICBmaWxsOiB1aS1jb2xvcigkY29sb3IsICR2YXJpYW50KTtcbiAgc3Ryb2tlOiB1aS1jb2xvcigkY29sb3IsICR2YXJpYW50KTtcbn1cblxuXG4uaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgc3Ryb2tlLXdpZHRoOiAyO1xufVxuXG4kaWNvbi0tc2l6ZS1tZWRpdW06IHJlbSgyNCk7XG4kaWNvbi0tc2l6ZS1sYXJnZTogcmVtKDI4KTtcblxuLmljb24tLW1lZGl1bSB7XG4gIGhlaWdodDogJGljb24tLXNpemUtbWVkaXVtO1xuICB3aWR0aDogJGljb24tLXNpemUtbWVkaXVtO1xufVxuXG4uaWNvbi0tbGFyZ2Uge1xuICBoZWlnaHQ6ICRpY29uLS1zaXplLWxhcmdlO1xuICB3aWR0aDogJGljb24tLXNpemUtbGFyZ2U7XG59XG5cblxuJGljb24tYWN0aW9uLS1zaXplOiAxLjY1cmVtO1xuXG4uaWNvbi0tYWN0aW9uIHtcbiAgaGVpZ2h0OiAkaWNvbi1hY3Rpb24tLXNpemU7XG4gIHdpZHRoOiAkaWNvbi1hY3Rpb24tLXNpemU7XG59XG5cbiRpY29uLWhhbWJ1cmdlci0td2lkdGg6IDJyZW07XG4kaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodDogNHB4O1xuXG4uaWNvbi0taGFtYnVyZ2VyIHtcbiAgaGVpZ2h0OiAkaWNvbi1hY3Rpb24tLXNpemU7XG4gIHdpZHRoOiAkaWNvbi1oYW1idXJnZXItLXdpZHRoO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogMC42O1xuICB0b3A6IDAuMmVtO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogKCRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0IC8gMik7XG4gICAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIH1cblxuICAmOmJlZm9yZSB7IHRvcDogMDsgfVxuICAmOmFmdGVyIHsgYm90dG9tOiAwOyB9XG59XG5cbi5pY29uLS1oYW1idXJnZXJfX3NsaWNlIHtcbiAgaGVpZ2h0OiAkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6ICgkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodCAvIDIpO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTsgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogKC0wLjUgKiAkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodCk7XG59XG5cbi5pY29uLS1ncmF5LWRhcmtlciB7XG4gIEBpbmNsdWRlIGljb24tLXJlY29sb3IoZ3JheSwgZGFya2VyKTtcbn1cblxuLmljb24tLWNsb3NlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvcGFjaXR5OiAwLjY7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6ICRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0O1xuICAgIHdpZHRoOiAxNDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICgkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodCAvIDIpO1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLTcwJTtcbiAgICBtYXJnaW4tdG9wOiAoJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQgLyAtMik7XG4gIH1cblxuICAmOmJlZm9yZSB7IHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfVxuICAmOmFmdGVyIHsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfVxufVxuXG4uaWNvbi0tZGlzY2xvc3VyZSB7XG4gIGhlaWdodDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgd2lkdGg6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC01MCUpO1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICBtYXJnaW4tbGVmdDogcXVhcnRlcihkZWZhdWx0KHNwYWNpbmcpKTtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAvX18vXFwgICAgICAgIC9fXy9cXCAgICAgICAgLyAgL1xcICAgICAgICAvICAvXFxcbi8vICAgICAgLyAgLzovXyAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwgICAgICAvICAvOi8gICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAvXFwgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAgIC8gIC86LyAgICAgICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi8gLzovX18gIFxcICBcXDpcXCAgX19fX19cXF9fXFw6XFwgIC8gIC86LyAgX19fICAvICAvOi8gLzo6XFxcbi8vICAgL19fLzovIC86L19fL1xcICBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXC9fXy86LyAgLyAgL1xcL19fLzovIC86L1xcOlxcXG4vLyAgIFxcICBcXDpcXC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9cXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcLzovfi86L1xuLy8gICAgXFwgIFxcOjovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn4gIFxcICBcXDpcXCAgLzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwvOi8gICAgXFxfX1xcLyAvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgICAvX18vOi9cbi8vICAgICAgIFxcX19cXC8gICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gRnVuY3Rpb25zXG4vLyBAZ3JvdXAgSGVscGVyXG4vLyBAYXV0aG9yIENocmlzIFNhdXZlIChnaXRodWI6IGxlbW9ubWFkZSlcbi8vXG4vLyBGdW5jdGlvbnMgc2ltcGx5IHJldHVybiBhIHZhbHVlOiB0aGV5IGRvbid0IGFjdHVhbGx5IGFkZCBhIGFueSBzdHlsZXMgdG9cbi8vIHRoZSBjb21waWxlZCBzdHlsZXNoZWV0LiBVc2UgdGhlc2UgdG8gcHJvdmlkZSBzb2x1dGlvbnMgdG8gY29tbW9uIGNhbGN1bGF0aW9uc1xuLy8gb3IgU2FzcyBvcGVyYXRpb25zLlxuXG5cblxuLy8qXG4vLyBSZW1vdmVzIHRoZSB1bml0cyBmcm9tIGEgbnVtYmVyLlxuLy9cbi8vIEBkZXByZWNhdGVkIDIuMS4wXG4vLyBAcHJpdmF0ZVxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBUaGUgbnVtYmVyICh1c3VhbGx5IGEgbWVhc3VyZW1lbnQpIHRoYXQgeW91IHdvdWxkXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSB0byByZW1vdmUgdW5pdHMgZnJvbS5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG4vL1xuLy8gQGV4YW1wbGVcbi8vICRmb286IHN0cmlwLXVuaXRzKDRyZW0pOyAvLyA9PiA0XG4vLyAkYmFyOiBzdHJpcC11bml0cygzMCUpOyAvLyA9PiAzMFxuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbHVlKSB7XG4gIEByZXR1cm4gKCR2YWx1ZSAvICgkdmFsdWUqMCArIDEpKTtcbn1cblxuLy8qXG4vLyBDb252ZXJ0cyB0aGUgcGFzc2VkIHZhbHVlIChhc3N1bWVkIHRvIGJlIGluIHBpeGVscykgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYHJlbWBcbi8vIHZhbHVlLiBUaGlzIGNvbnZlcnNpb24gYXNzdW1lcyBhIGJhc2UgZm9udCBzaXplIG9mIGAxNnB4YC5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVGhlIHBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuXG5AZnVuY3Rpb24gcmVtKCR2YWx1ZSkge1xuICBAcmV0dXJuIChzdHJpcC11bml0cygkdmFsdWUpIC8gMTYgKiAxcmVtKTtcbn1cblxuLy8qXG4vLyBIYWx2ZXMgYSBnaXZlbiBtZWFzdXJlbWVudC5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJG1lYXN1cmVtZW50IC0gVGhlIG1lYXN1cmVtZW50IHRvIGhhbHZlLlxuLy8gQHJldHVybnMge051bWJlcn1cbi8vIEBhbGlhcyBoYWxmXG4vL1xuLy8gQGV4YW1wbGVcbi8vICRmb286IGhhbHZlKDRyZW0pOyAvLyA9PiAycmVtXG4vLyAkYmFyOiBoYWxmKDM2KTsgLy8gPT4gMThcblxuQGZ1bmN0aW9uIGhhbHZlKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgLyAyKTtcbn1cblxuQGZ1bmN0aW9uIGhhbGYoJG1lYXN1cmVtZW50KSB7XG4gIEByZXR1cm4gaGFsdmUoJG1lYXN1cmVtZW50KTtcbn1cblxuLy8qXG4vLyBRdWFydGVycyBhIGdpdmVuIG1lYXN1cmVtZW50LlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkbWVhc3VyZW1lbnQgLSBUaGUgbWVhc3VyZW1lbnQgdG8gcXVhcnRlci5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG4vL1xuLy8gQGV4YW1wbGVcbi8vICRmb286IHF1YXJ0ZXIoNHJlbSk7IC8vID0+IDFyZW1cblxuQGZ1bmN0aW9uIHF1YXJ0ZXIoJG1lYXN1cmVtZW50KSB7XG4gIEByZXR1cm4gKCRtZWFzdXJlbWVudCAvIDQpO1xufVxuXG4vLypcbi8vIERvdWJsZXMgYSBnaXZlbiBtZWFzdXJlbWVudC5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJG1lYXN1cmVtZW50IC0gVGhlIG1lYXN1cmVtZW50IHRvIGRvdWJsZS5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG4vL1xuLy8gQGV4YW1wbGVcbi8vICRmb286IGRvdWJsZSg0cmVtKTsgLy8gPT4gOHJlbVxuXG5AZnVuY3Rpb24gZG91YmxlKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgKiAyKTtcbn1cblxuLy8qXG4vLyBOZWdhdGVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBuZWdhdGUuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBuZWdhdGl2ZSg0cmVtKTsgLy8gPT4gLTRyZW1cbi8vICRiYXI6IG5lZ2F0aXZlKC00cmVtKTsgLy8gPT4gNHJlbVxuXG5AZnVuY3Rpb24gbmVnYXRpdmUoJG1lYXN1cmVtZW50KSB7XG4gIEByZXR1cm4gKCRtZWFzdXJlbWVudCAqIC0xKTtcbn1cblxuLy8qXG4vLyBNdWx0aXBsZXMgYSBnaXZlbiBtZWFzdXJlbWVudCBieSB0aGUgcHJvdmlkZWQgZmFjdG9yLiBVc2UgdGhpcyBpbiB0aG9zZVxuLy8gKHJhcmUpIGluc3RhbmNlcyB3aGVyZSB5b3UgbmVlZCBhIGZhY3RvciB0aGF0IGlzIG5vdCBgMmAsIGAwLjVgLCBgMC4yNWAsIG9yXG4vLyBgLTFgIChpbiB3aGljaCBjYXNlLCB1c2UgdGhlIHJlbGV2YW50IG11bHRpcGxpY2F0aW9uIGZ1bmN0aW9uIGRpcmVjdGx5KS5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJG1lYXN1cmVtZW50IC0gVGhlIG1lYXN1cmVtZW50IHRvIG11bHRpcGxlLlxuLy8gQHBhcmFtIHtOdW1iZXJ9ICRmYWN0b3IgICAgICAtIFRoZSBtdWx0aXBsaWNhdGlvbiBmYWN0b3IuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBtdWx0aXBseSg0cmVtLCAzKTsgLy8gPT4gMTJyZW1cbi8vICRiYXI6IG11bHRpcGx5KDRyZW0sIDIpOyAvLyA9PiA4cmVtIEJVVCBkb24ndCBkbyB0aGlzIOKAlMKgdXNlIGRvdWJsZSg0cmVtKSBpbnN0ZWFkXG5cbkBmdW5jdGlvbiBtdWx0aXBseSgkbWVhc3VyZW1lbnQsICRmYWN0b3IpIHtcbiAgQHJldHVybiAoJG1lYXN1cmVtZW50ICogJGZhY3Rvcik7XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIC9fXy9cXCAgICAgICAgX19fXG4vLyAgICAgICAgICAgICAgICAgIC8gIC86OlxcICAgICAgL19fL3wgIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgIC8gIC9cXFxuLy8gICAgX19fICAgICBfX18gIC8gIC86L1xcOlxcICAgIHwgIHw6fCAvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgLyAgLzovXG4vLyAgIC9fXy9cXCAgIC8gIC9cXC8gIC86L34vOjpcXCAgIHwgIHw6fC8gIC86LyAgXFw6XFwgIF9fXyAgXFwgIFxcOlxcICAvICAvOi9cbi8vICAgXFwgIFxcOlxcIC8gIC86L19fLzovIC86L1xcOlxcX198X198Oi9fXy86LyBcXF9fXFw6XFwvX18vXFwgIFxcX19cXDpcXC8gIC86OlxcXG4vLyAgICBcXCAgXFw6XFwgIC86L1xcICBcXDpcXC86L19fXFwvX18vOjo6OlxcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwgLyAgLzovX18vOi9cXDpcXFxuLy8gICAgIFxcICBcXDpcXC86LyAgXFwgIFxcOjovICAgICAgIH5cXH5+XFw6XFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgLzovXFxfX1xcLyAgXFw6XFxcbi8vICAgICAgXFwgIFxcOjovICAgIFxcICBcXDpcXCAgICAgICAgIFxcICBcXDpcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcLzovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgXFwgIFxcOlxcICAgICAgICAgXFxfX1xcL1xcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgICAgXFxfX1xcL1xuLy8gICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLmdyaWQge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4uZ3JpZC0tdmVydGljYWxseS1jZW50ZXJlZCB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5ncmlkLS1hbGlnbi1yaWdodCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5ncmlkLS1vdXRzaWRlLXNwYWNpbmcge1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMDtcbiAgcGFkZGluZzogMCBkZWZhdWx0KHNwYWNpbmcpO1xufVxuXG4uZ3JpZC0tc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICA+IC5ncmlkX19pdGVtIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxufVxuXG4uZ3JpZF9faXRlbSB7XG4gIHBhZGRpbmc6IDAgKGRlZmF1bHQoc3BhY2luZykgLyAyKTtcbiAgZmxleDogMSAxIDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICY6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy1yaWdodDogMDsgfVxufVxuXG4uZ3JpZF9faXRlbS0tbm8tZmxleCB7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uZ3JpZF9faXRlbS0taGFsZiB7XG4gIGZsZXg6IDAgMCA1MCU7XG59XG5cblxuXG5cblxuLmNvbnRlbnQge1xuICBwYWRkaW5nOiAwIGRlZmF1bHQoc3BhY2luZyk7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSAwO1xufVxuXG4uY29udGVudC0tZXh0cmEtdmVydGljYWwtc3BhY2luZyB7XG4gIG1hcmdpbjogbXVsdGlwbHkoZGVmYXVsdChzcGFjaW5nKSwgMykgMDtcbn1cbiIsIi8vICAgIF9fXyAgX19fIF9fXyBfICBfICAgXyBfICBfX19fXyBfX19cbi8vICAgfCAgIFxcfCBfX3wgX18vX1xcfCB8IHwgfCB8fF8gICBfLyBfX3xcbi8vICAgfCB8KSB8IF98fCBfLyBfIFxcIHxffCB8IHxfX3wgfCBcXF9fIFxcXG4vLyAgIHxfX18vfF9fX3xfL18vIFxcX1xcX19fL3xfX19ffF98IHxfX18vXG4vL1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vL1xuLy8gVGhpcyBzdHlsZXNoZWV0IGRlY2FscmVzIGRlZmF1bHQgdmFsdWVzIGZvciBjb21tb24gdmlzdWFsIGVsZW1lbnRzLiBVc2UgdGhpc1xuLy8gbWFwIGluIHBsYWNlIG9mIGRlY2xhcmluZyB2YXJpYWJsZXMsIHdoaWNoIGNvdWxkIGJlIHNsaWdodGx5IGhhcmRlciB0byByZW1lbWJlclxuLy8gdGhlIG5hbWUgb2YgYW5kIHByZXNlbnQgbW9yZSBvZiBhIHJpc2sgb2YgbmFtaW5nIGNvbmZsaWN0cy4gVG8gYWRkIGEgZGVmYXVsdCxcbi8vIGFkZCBhIGRlc2NyaXB0aXZlIGtleSBuYW1lIHRvIHRoZSBtYXAgdGhhdCByZWZlcmVuY2VzIGEgbWFwIHRoYXQgaGFzIGFuIGBpb3NgXG4vLyBhbmQgYW4gYGFuZHJvaWRgIGtleS4gVGhlbiwgcmV0cmlldmUgdGhlIHZhbHVlIHVzaW5nIGBkZWZhdWx0KCRwcm9wZXJ0eSwgJHBsYXRmb3JtKWAsXG4vLyB3aGVyZSBwbGF0Zm9ybSBkZWZhdWx0cyB0byBpT1MuIElmIHRoZSBwcm9wZXJ0eSB5b3UgYXJlIGFkZGluZyBpcyBhbHNvIGEgdmFsaWRcbi8vIENTUyBwcm9wZXJ0eSAoaS5lLiwgZGVmYXVsdCBib3JkZXJzIG9yIGJvcmRlciByYWRpaSksIHlvdSBjYW4gZGlyZWN0bHkgaW5jbHVkZVxuLy8gdGhhdCBkZWNsYXJhdGlvbiBpbiBDU1MgdXNpbmcgdGhlIG1peGluIHZlcnNpb24gb2YgYGRlZmF1bHQoKWAuXG5cblxuXG4kREVGQVVMVFM6IChcbiAgc3BhY2luZzogMXJlbSxcbiAgYm9yZGVyLXJhZGl1czogNHB4LFxuICBsaW5lLWhlaWdodDogMS4zLFxuICBjb250cm9sLXNpemU6IHJlbSgzNCksXG4gIGNvbnRyb2wtc2l6ZS0tbGFyZ2U6IHJlbSg0MiksXG4gIGNvbnRyb2wtcGFkZGluZzogMC43NXJlbSxcbiAgYm94LXNoYWRvdzogMCAwIDRweCByZ2JhKGNvbG9yKGJsYWNrKSwgMC4zKVxuKTtcblxuXG5cbkBmdW5jdGlvbiBkZWZhdWx0KCRwcm9wZXJ0eSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJERFRkFVTFRTLCAkcHJvcGVydHkpO1xufVxuXG5AbWl4aW4gZGVmYXVsdCgkcHJvcGVydHkpIHtcbiAgI3skcHJvcGVydHl9OiBkZWZhdWx0KCRwcm9wZXJ0eSk7XG59XG4iLCIkY29udGV4dDogei1pbmRleC1zdGFja2luZy1jb250ZXh0KGdsb2JhbCxcbiAgKFxuICAgIGNvbnRlbnQ6IDEwLFxuICAgIHNpZGViYXI6IDIwXG4gIClcbik7XG5cbmJvZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcbn1cblxuLnBhZ2Uge1xuICBoZWlnaHQ6IDEwMHZoO1xuICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLnBhZ2VfX2NvbnRlbnQsXG4ucGFnZV9fc2lkZWJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnBhZ2VfX2NvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgMHB4O1xuICBAaW5jbHVkZSB6LWluZGV4KGNvbnRlbnQsIGdsb2JhbCk7XG4gIGJhY2tncm91bmQ6IGNvbG9yKHdoaXRlKTtcblxuICA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICB9XG59XG5cbi5wYWdlX19zaWRlYmFyIHtcbiAgQGluY2x1ZGUgei1pbmRleChzaWRlYmFyLCBnbG9iYWwpO1xuICBmbGV4OiAwIDAgYXV0bztcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICBfX19fXyAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICBfX18gICAgICAgICAvX18vXFwgICAgICAgLyAgLzo6XFwgICAgICAgLyAgL1xcICAgICAgICAvX18vfFxuLy8gICAgICAvICAvOjp8ICAgICAvICAvXFwgICAgICAgIFxcICBcXDpcXCAgICAgLyAgLzovXFw6XFwgICAgIC8gIC86L18gICAgICB8ICB8Onxcbi8vICAgICAvICAvOi86fCAgICAvICAvOi8gICAgICAgICBcXCAgXFw6XFwgICAvICAvOi8gIFxcOlxcICAgLyAgLzovIC9cXCAgICAgfCAgfDp8XG4vLyAgICAvICAvOi98OnxfXyAvX18vOjpcXCAgICAgX19fX19cXF9fXFw6XFwgL19fLzovIFxcX19cXDp8IC8gIC86LyAvOi9fICBfX3xfX3w6fFxuLy8gICAvX18vOi8gfDp8IC9cXFxcX19cXC9cXDpcXF9fIC9fXy86Ojo6Ojo6OlxcXFwgIFxcOlxcIC8gIC86Ly9fXy86LyAvOi8gL1xcL19fLzo6OjpcXF9fX19cbi8vICAgXFxfX1xcLyAgfDp8LzovICAgXFwgIFxcOlxcL1xcXFwgIFxcOlxcfn5cXH5+XFwvIFxcICBcXDpcXCAgLzovIFxcICBcXDpcXC86LyAvOi8gICB+XFx+flxcOjo6Oi9cbi8vICAgICAgIHwgIHw6LzovICAgICBcXF9fXFw6Oi8gXFwgIFxcOlxcICB+fn4gICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6Oi8gLzovICAgICB8fn58Onx+flxuLy8gICAgICAgfCAgfDo6LyAgICAgIC9fXy86LyAgIFxcICBcXDpcXCAgICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwvOi8gICAgICB8ICB8Onxcbi8vICAgICAgIHwgIHw6LyAgICAgICBcXF9fXFwvICAgICBcXCAgXFw6XFwgICAgICAgIFxcX19cXC8gICAgICAgXFwgIFxcOjovICAgICAgIHwgIHw6fFxuLy8gICAgICAgfF9ffC8gICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIHxfX3wvXG4vL1xuLy8qXG4vLyBAcGF0dGVybiBaLUluZGV4XG4vLyBAdGFnbGluZSBTdGFjayBpdCB1cCFcbi8vIEBncm91cCBIZWxwZXJcbi8vXG4vLyBgei1pbmRleGAgaXMgbWFuYWdlZCBpbiB0aGlzIGNlbnRyYWxpemVkIHN0eWxlc2hlZXQgdG8gY3JlYXRlIGEgbWFuYWdlYWJsZVxuLy8gYW5kIHNlbGYtZG9jdW1lbnRpbmcgc3lzdGVtLiBUaGUgcHJvY2VzcyB0byBhZGQgei1pbmRleGVzIGlzIGFzIGZvbGxvd3M6XG4vL1xuLy8gMS4gRm9yIGVhY2ggc3RhY2tpbmcgY29udGV4dCAoYSBzZXQgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHlvdSB3b3VsZCBsaWtlXG4vLyAgICB0byBtYWludGFpbiB0aGUgc3RhY2tpbmcgb3JkZXIpLCBjcmVhdGUgYSBuZXcgbWFwIHdpdGggYSBkZXNjcmlwdGl2ZVxuLy8gICAgdmFyaWFibGUgbmFtZS5cbi8vXG4vLyAyLiBBZGQgZW50cmllcyB0byB0aGUgbWFwIGZvciBlYWNoIGVsZW1lbnQgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBjb250cm9sIHRoZVxuLy8gICAgc3RhY2tpbmcgY29udGV4dCBvZi4gVGhlIGRlbHRhIGJldHdlZW4gZWxlbWVudHMgc2hvdWxkIG5vdCBtYXR0ZXIsIG9ubHlcbi8vICAgIHRoZSBudW1lcmljIG9yZGVyLiBFbGVtZW50cyB3aXRoIGhpZ2hlciBudW1iZXJzIHdpbGwgc3RhY2sgb24gdG9wIG9mXG4vLyAgICBlbGVtZW50cyB3aXRoIGxvd2VyIHotaW5kZXhlcy5cbi8vXG4vLyAzLiBgQGluY2x1ZGUgei1pbmRleGAgaW4geW91ciBzdHlsZXNoZWV0IHdpdGggdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCB5b3UgYXJlXG4vLyAgICBzZXR0aW5nIHotaW5kZXggZm9yIGFuZCB0aGUgbWFwIG5hbWUgZGVmaW5lZCBpbiBzdGVwIDEuXG4vL1xuLy8gNC4gUHJvZml0LlxuXG5cblxuJFpfSU5ERVhFUzogKFxuICBnbG9iYWw6IChcbiAgICBjb250ZW50OiAxMCxcbiAgICBzaWRlYmFyOiAyMFxuICApLFxuXG4gIHBhZ2U6IChcbiAgICBhdmF0YXI6IDEwLFxuICAgIHBvcG92ZXItcmVzdGluZzogMjAsXG4gICAgcG9wb3Zlci1kZWFjdGl2YXRpbmc6IDMwLFxuICAgIHBvcG92ZXItYWN0aXZlOiA0MFxuICApLFxuXG4gIGF2YXRhcjogKFxuICAgIGluaXRpYWxzOiAxMCxcbiAgICBpbWFnZTogMjBcbiAgKSxcblxuICB0YWJsZTogKFxuICAgIGNlbGw6IDEwLFxuICAgIGNlbGwtcGVyc2lzdGFudDogMjAsXG4gICAgYmFja2Ryb3A6IDMwXG4gIClcbik7XG5cblxuXG4vLypcbi8vIFRoaXMgbWl4aW4gY3JlYXRlcyBhIHotaW5kZXggZGVjbGFyYXRpb24gYmFzZWQgb24gdGhlIGVsZW1lbnQgYW5kIGNvbnRleHRcbi8vIHBhc3NlZCBpbi4gVGhlIG1peGluIHdpbGwgYXR0ZW1wdCB0byByZXRyaWV2ZSB0aGUgYCRjb250ZXh0YCBhcyBhIGtleSBmcm9tXG4vLyB0aGUgZ2xvYmFsIGAkWi1JTkRFWEVTYCBtYXAsIGFuZCB3aWxsIHRoZW4gdHJ5IHRvIHJldHJpZXZlIHRoZSBgJGVsZW1lbnRgXG4vLyBmcm9tIHRoYXQgbWFwLiBJZiB0aGlzIGlzIHN1Y2Nlc3NmdWwsIHRoZSB6LWluZGV4IGRlY2xhcmF0aW9uIGlzIGluY2x1ZGVkLlxuLy9cbi8vIEBwYXJhbSB7U3RyaW5nfSAkZWxlbWVudCAtIFRoZSBlbGVtZW50IHdpdGhpbiB0aGUgc3RhY2tpbmcgY29udGV4dCB5b3UgYXJlXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpbmcgdGhlIHJ1bGUgZm9yLlxuLy8gQHBhcmFtIHtTdHJpbmd9ICRjb250ZXh0IC0gVGhlIHN0YWNraW5nIGNvbnRleHQgeW91IHdhbnQgdG8gc2VhcmNoIGluIGZvclxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCRlbGVtZW50YC5cblxuQG1peGluIHotaW5kZXgoJGVsZW1lbnQsICRjb250ZXh0KSB7XG4gICRpbmRleDogbWFwLWdldChtYXAtZ2V0KCRaX0lOREVYRVMsICRjb250ZXh0KSwgJGVsZW1lbnQpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIHotaW5kZXg6ICRpbmRleDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gei1pbmRleC1zdGFja2luZy1jb250ZXh0KCRuYW1lLCAkc3RhY2stb3JkZXIpIHtcbiAgJG5ldy1zdGFjay1vcmRlcjogKCAkbmFtZTogJHN0YWNrLW9yZGVyICk7XG4gICRaX0lOREVYRVM6IG1hcC1tZXJnZSgkWl9JTkRFWEVTLCAkbmV3LXN0YWNrLW9yZGVyKTtcblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIF9fXyAgICAvICAvXFxcbi8vICAgICAgLyAgLzovXyAgLyAgLzo6XFwgICAgICAgXFwgIFxcOlxcICAgICAgLyAgL1xcICAvICAvOi9fXG4vLyAgICAgLyAgLzovIC9cXC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXCAgICAvICAvOi8gLyAgLzovIC9cXFxuLy8gICAgLyAgLzovIC86LyAgLzovICBcXDpcXCAgX19fX19cXF9fXFw6XFwgIC8gIC86LyAvICAvOi8gLzo6XFxcbi8vICAgL19fLzovIC86L19fLzovIFxcX19cXDpcXC9fXy86Ojo6Ojo6OlxcLyAgLzo6XFwvX18vOi8gLzovXFw6XFxcbi8vICAgXFwgIFxcOlxcLzovXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXH5+XFx+flxcL19fLzovXFw6XFwgIFxcOlxcLzovfi86L1xuLy8gICAgXFwgIFxcOjovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn5cXF9fXFwvICBcXDpcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXCAgICAgICAgIFxcICBcXDpcXF9fXFwvIC86L1xuLy8gICAgICBcXCAgXFw6XFwgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFwgICAgICAgICBcXF9fXFwvIC9fXy86L1xuLy8gICAgICAgXFxfX1xcLyAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgXFxfX1xcL1xuXG5AbWl4aW4gdHlwZS0tZGVmYXVsdC1mb250LWZhbWlseSB7XG4gIGZvbnQtZmFtaWx5OiBTb3VyY2UgU2FucyBQcm8sIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG5AbWl4aW4gdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5IHtcbiAgZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2U7XG59XG5cbmJvZHkge1xuICB0ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICBjb2xvcjogY29sb3Ioc2xhdGUpO1xuICBAaW5jbHVkZSB0eXBlLS1kZWZhdWx0LWZvbnQtZmFtaWx5O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIEBpbmNsdWRlIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHk7XG59XG5cblxuXG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIC50eXBlIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTEge1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy0xKTtcbn1cblxuQG1peGluIHR5cGUtLWhlYWRpbmctMiB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctMik7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTMge1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy0zKTtcbn1cblxuQG1peGluIHR5cGUtLWhlYWRpbmctNCB7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSBhdXRvIGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctNCk7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTUge1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgYXV0byBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTUpO1xufVxuXG5AbWl4aW4gdHlwZS0tcGFyYWdyYXBoIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKHBhcmFncmFwaCk7XG4gIEBpbmNsdWRlIGRlZmF1bHQobGluZS1oZWlnaHQpO1xuICBmb250LXdlaWdodDogMzAwO1xuICBjb2xvcjogdWktY29sb3IoYmxhY2spO1xuXG4gICsgcCB7XG4gICAgbWFyZ2luLXRvcDogKDAuNzUgKiBkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxuXG4gID4gYSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgPiBzcGFuIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB1aS1jb2xvcihibHVlLCBkYXJrKTtcbiAgICB9XG5cbiAgICA+IGNvZGUge1xuICAgICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgodWktY29sb3IoZ3JheSwgbGlnaHQpLCB1aS1jb2xvcihibHVlKSwgODAlKTtcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh1aS1jb2xvcihibHVlLCBkYXJrZXIpLCAwLjE1KTtcbiAgICB9XG4gIH1cblxuICBjb2RlIHtcbiAgICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDAuMDVlbSAwLjI1ZW07XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gICAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHVpLWNvbG9yKGdyYXkpO1xuICAgIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIHR5cGUtLXBhcmFncmFwaC1zbWFsbCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShwYXJhZ3JhcGgtc21hbGwpO1xufVxuXG5AbWl4aW4gdHlwZS0tYWZ0ZXItcGFyYWdyYXBoIHtcbiAgLnR5cGUtLXBhcmFncmFwaCArICYsXG4gIC51c2VyLXR5cGUgKyAmIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cblxuLnR5cGUtLWhlYWRpbmctMSB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMTsgfVxuLnR5cGUtLWhlYWRpbmctMiB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMjsgfVxuLnR5cGUtLWhlYWRpbmctMyB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMzsgfVxuLnR5cGUtLWhlYWRpbmctNCB7XG4gIEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNDtcbn1cblxuLnR5cGUtLWhlYWRpbmctNSB7XG4gIEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNTtcblxuICAudHlwZS0taGVhZGluZy00ICsgJiB7XG4gICAgbWFyZ2luLXRvcDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHR5cGUtLWFmdGVyLXBhcmFncmFwaCB7XG4gICAgbWFyZ2luLXRvcDogKDEuNSAqIGRlZmF1bHQoc3BhY2luZykpO1xuICB9XG59XG5cbi50eXBlLS1oZWFkaW5nLWJvcmRlcmVkIHtcbiAgcGFkZGluZy1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7XG4gIG1hcmdpbi1ib3R0b206IG11bHRpcGx5KGRlZmF1bHQoc3BhY2luZyksIDEuMyk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB1aS1jb2xvcihncmF5KTtcblxuICArIC5zZWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiBuZWdhdGl2ZShkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4udHlwZS0tcGFyYWdyYXBoIHsgQGluY2x1ZGUgdHlwZS0tcGFyYWdyYXBoOyB9XG4udHlwZS0tcGFyYWdyYXBoLXNtYWxsIHsgQGluY2x1ZGUgdHlwZS0tcGFyYWdyYXBoLXNtYWxsOyB9XG5cbi50eXBlLWNvbnRhaW5lciB7XG4gIGgxIHsgQGluY2x1ZGUgdHlwZS0taGVhZGluZy0xOyB9XG4gIGgyIHsgQGluY2x1ZGUgdHlwZS0taGVhZGluZy0yOyB9XG4gIGgzIHsgQGluY2x1ZGUgdHlwZS0taGVhZGluZy0zOyB9XG4gIGg0IHsgQGluY2x1ZGUgdHlwZS0taGVhZGluZy00OyB9XG4gIGg1IHsgQGluY2x1ZGUgdHlwZS0taGVhZGluZy01OyB9XG5cbiAgcCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaDsgfVxufVxuXG4udHlwZS1jb250YWluZXItLXNtYWxsIHtcbiAgcCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaC1zbWFsbDsgfVxufVxuXG5cblxuLnR5cGUtLWRpc3BsYXkge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi50eXBlLS1tYXJnaW4tYm90dG9tIHtcbiAgbWFyZ2luLWJvdHRvbTogZGVmYXVsdChzcGFjaW5nKTtcbn1cblxuLnR5cGUtLXN1YmR1ZWQge1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFyayk7XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuLnR5cGUtLWNvZGUge1xuICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogMC45NWVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbjo6c2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoYmx1ZSk7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAvICAvXFwgICAgICAgIC9fXy9cXCAgICAgICAgX19fICAgICAgICAgICAgICAgIC8gIC9cXCAgICAgIF9fXyAgICAgICAgLyAgL1xcICAgICAgICAvICAvXFxcbi8vICAgICAgLyAgLzovXyAgLyAgLzo6XFwgICAgICAgXFwgIFxcOlxcICAgICAgLyAgL1xcICAgICAgICAgICAgICAvICAvOi9fICAgIC8gIC9cXCAgICAgIC8gIC86OnwgICAgICAvICAvOi9fXG4vLyAgICAgLyAgLzovIC9cXC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXCAgICAvICAvOi8gICAgICAgICAgICAgLyAgLzovIC9cXCAgLyAgLzovICAgICAvICAvOi86fCAgICAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovIC86LyAgLzovICBcXDpcXCAgX19fX19cXF9fXFw6XFwgIC8gIC86LyAgICAgICAgICAgICAvICAvOi8gLzo6XFwvX18vOjpcXCAgICAvICAvOi98OnxfXyAgLyAgLzovIC86L19cbi8vICAgL19fLzovIC86L19fLzovIFxcX19cXDpcXC9fXy86Ojo6Ojo6OlxcLyAgLzo6XFwgICAgICAgICAgICAvX18vOi8gLzovXFw6XFxfX1xcL1xcOlxcX18vX18vOi8gfDp8IC9cXC9fXy86LyAvOi8gL1xcXG4vLyAgIFxcICBcXDpcXC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9fXy86L1xcOlxcICAgICAgICAgICBcXCAgXFw6XFwvOi9+LzovICBcXCAgXFw6XFwvXFxfX1xcLyAgfDp8LzovXFwgIFxcOlxcLzovIC86L1xuLy8gICAgXFwgIFxcOjovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn5cXF9fXFwvICBcXDpcXCAgICAgICAgICAgXFwgIFxcOjovIC86LyAgICBcXF9fXFw6Oi8gICB8ICB8Oi86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXCAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFwgICAgICAgICAgIFxcX19cXC8gLzovICAgICAvX18vOi8gICAgfCAgfDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAvX18vOi8gICAgICBcXF9fXFwvICAgICB8ICB8Oi8gICAgICBcXCAgXFw6Oi9cbi8vICAgICAgIFxcX19cXC8gICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgIHxfX3wvICAgICAgICBcXF9fXFwvXG4vL1xuLy8qXG4vLyBAcGF0dGVybiBGb250IFNpemVzXG4vLyBAZ3JvdXAgSGVscGVyXG4vL1xuLy8gVGhlIHN0eWxlc2hlZXQgZXhpc3RzIGFzIGEgc2luZ2xlIHBsYWNlIHRvIG1hbmFnZSBhbGwgZm9udCBzaXplcy4gVG8gdXNlXG4vLyBhIGZvbnQgc2l6ZSBpbiB5b3VyIHN0eWxlc2hlZXQsIGZvbGxvdyB0aGlzIHByb2NlZHVyZTpcbi8vXG4vLyAxLiBBZGQgYSB3ZWxsLW5hbWVkIGVudHJ5IHRvIHRoZSBgJEZPTlQtU0laRVNgIG1hcCB3aXRoIHRoZSB2YWx1ZSBzZXQgdG9cbi8vICAgIHRoZSBmb250IHNpemUgZm9yIHRoYXQgZWxlbWVudC5cbi8vXG4vLyAyLiBJZiB5b3Ugd2lzaCB0byBpbmNsdWRlIGEgYGZvbnQtc2l6ZWAgZGVjbGFyYXRpb24gaW4geW91ciBzdHlsZXNoZWV0LFxuLy8gICAgYEBpbmNsdWRlIGZvbnQtc2l6ZSgpYCwgcGFzc2luZyBpdCB0aGUgbmFtZSBvZiB0aGUgY29tcG9uZW50IHRvIHJldHJpZXZlXG4vLyAgICB0aGUgZm9udC1zaXplIGZvci5cbi8vXG4vLyAzLiBSZXRyaWV2aW5nIHRoZSBhY3R1YWwgZm9udC1zaXplIGRpbWVuc2lvbiAoZm9yIGV4YW1wbGUsIHRvIGJlIHVzZWQgaW4gYVxuLy8gICAgY2FsY3VsYXRpb24gdG8gZGV0ZXJtaW5lIG5lY2Vzc2FyeSBwYWRkaW5nKSBzaG91bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZVxuLy8gICAgc2FtZSBhcmd1bWVudCBkaXNjdXNzZWQgYWJvdmUgdG8gdGhlIGBmb250LXNpemVgICpmdW5jdGlvbiouXG5cblxuXG4kRk9OVF9TSVpFUzogKFxuICBoZWFkaW5nLTE6IHJlbSgzNiksXG4gIGhlYWRpbmctMjogcmVtKDMwKSxcbiAgaGVhZGluZy0zOiByZW0oMjQpLFxuICBoZWFkaW5nLTQ6IHJlbSgxNCksXG4gIGhlYWRpbmctNTogcmVtKDIwKSxcbiAgbGFiZWw6IHJlbSgxNiksXG4gIHBhcmFncmFwaDogcmVtKDIwKSxcbiAgcGFyYWdyYXBoLXNtYWxsOiByZW0oMTgpLFxuICBhdmF0YXI6IHJlbSgyMCksXG4gIGJhZGdlOiAwLjc1ZW0sXG4gIGJhZGdlLS1zdGFuZGFsb25lOiByZW0oMTYpLFxuICBjb2RlLWJsb2NrOiByZW0oMTYpLFxuICBjb2RlLWJsb2NrLS1jb25kZW5zZWQ6IHJlbSgxNCksXG4gIGxpc3QtaGVhZGluZzogcmVtKDIwKSxcbiAgc2VsZWN0OiByZW0oMTYpLFxuICB0YWJsaXN0OiByZW0oMTYpLFxuICB0YWJsaXN0LS1sYXJnZTogcmVtKDI0KSxcbiAgY29udHJvbDogcmVtKDE4KVxuKTtcblxuXG5cbi8vKlxuLy8gUmV0cml2ZXMgdGhlIGZvbnQtc2l6ZSBmb3IgYW4gZWxlbWVudCBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsXG4vLyBgJEZPTlRfU0laRVNgIG1hcC4gVGhpcyB3aWxsIG5vdCBhY3R1YWxseSBhZGQgYSBDU1MgcnVsZSDigJTCoGlmIHlvdVxuLy8gd291bGQgbGlrZSB0aGUgYWN0dWFsIGBmb250LXNpemVgIHJ1bGUgdG8gYmUgcHJpbnRlZCwgdXNlIHRoZVxuLy8gYEBtaXhpbmAgdmVyc2lvbi4gVXNlIHRoaXMgZnVuY3Rpb24gd2hlbiB5b3Ugd2FudCB0byByZXRyaXZlIHRoZSBmb250XG4vLyBzaXplIGZvciB1c2UgaW4gb3RoZXIgY2FsY3VsYXRpb25zLlxuLy9cbi8vIEBwYXJhbSB7U3RyaW5nfSAkZWxlbWVudCAtIFRoZSBlbGVtZW50IHdob3NlIGZvbnQtc2l6ZSBzaG91bGQgYmUgcmV0cmlldmVkLlxuLy8gQHJldHVybnMge051bWJlcn1cblxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkZWxlbWVudCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJEZPTlQtU0laRVMsICRlbGVtZW50KTtcbn1cblxuXG5cbi8vKlxuLy8gUmV0cml2ZXMgdGhlIGZvbnQtc2l6ZSBmb3IgYW4gZWxlbWVudCBkZWNsYXJlZCBpbiB0aGUgZ2xvYmFsXG4vLyBgJEZPTlRfU0laRVNgIG1hcCAqKmFuZCoqIHByaW50cyB0aGUgYGZvbnQtc2l6ZWAgcnVsZS5cbi8vXG4vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBUaGUgZWxlbWVudCB3aG9zZSBmb250LXNpemUgc2hvdWxkIGJlIHJldHJpZXZlZC5cbi8vXG4vLyBAZXhhbXBsZVxuLy8gLnR5cGUtLWhlYWRpbmctMSB7XG4vLyAgIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTEpOyAvLyA9PiBmb250LXNpemU6IDJyZW07XG4vLyB9XG5cbkBtaXhpbiBmb250LXNpemUoJGVsZW1lbnQpIHtcbiAgZm9udC1zaXplOiBmb250LXNpemUoJGVsZW1lbnQpO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgICBfX18gICAgICAgIC8gIC9cXCAgICAgICAgX19fICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAgL19fL1xcICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgIC8gIC86OlxcICAgICAgLyAgLzo6XFxcbi8vICAgICAvICAvOi9cXDpcXCAgICAgXFwgIFxcOlxcICAgIC8gIC86L1xcOlxcICAgIC8gIC86LyAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXFxuLy8gICAgLyAgLzovfi86OlxcICAgICBcXCAgXFw6XFwgIC8gIC86L34vOjpcXCAgLyAgLzovIC8gIC86L34vOjpcXCAgLyAgLzovfi86L1xuLy8gICAvX18vOi8gLzovXFw6XFxfX18gIFxcX19cXDpcXC9fXy86LyAvOi9cXDpcXC8gIC86OlxcL19fLzovIC86L1xcOlxcL19fLzovIC86L19fX1xuLy8gICBcXCAgXFw6XFwvOi9fX1xcL19fL1xcIHwgIHw6fFxcICBcXDpcXC86L19fXFwvX18vOi9cXDpcXCAgXFw6XFwvOi9fX1xcL1xcICBcXDpcXC86Ojo6Oi9cbi8vICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFx8ICB8OnwgXFwgIFxcOjovICAgIFxcX19cXC8gIFxcOlxcICBcXDo6LyAgICAgIFxcICBcXDo6L35+fn5cbi8vICAgICBcXCAgXFw6XFwgICAgIFxcICBcXDpcXF9ffDp8ICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFwgIFxcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgICBcXCAgXFw6XFwgICAgIFxcX19cXDo6OjovICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXC9cXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICAgfn5+fiAgICAgIFxcX19cXC8gICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gQXZhdGFyXG4vL1xuLy8gQSBzbWFsbCBpbWFnZSByZXByZXNlbnRpbmcgc29tZW9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9qZWN0LiBUaGUgc2NyaXB0XG4vLyBwYXJ0IG9mIHRoaXMgY29tcG9uZW50IGFsbG93cyBpdCB0byBmZXRjaCBhdmF0YXIgaW1hZ2VzIGZyb20gR2l0aHViLCBUd2l0dGVyLFxuLy8gb3IgR3JhdmF0YXIsIGRlcGVuZGluZyBvbiB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQuIElmIG5vIGltYWdlcyBhcmUgZm91bmRcbi8vIGZvciB0aGUgYXZhdGFyLCBpdCB3aWxsIGZhbGwgYmFjayB0byBkaXNwbGF5aW5nIHRoZWlyIGluaXRpYWxzLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG4vLypcbi8vIFRoZSBzaXplIChoZWlnaHQgYW5kIHdpZHRoKSBvZiBhbiBgYXZhdGFyYC5cbi8vIEB0eXBlIExlbmd0aFxuXG4kYXZhdGFyLS1zaXplOiAzcmVtO1xuXG4vLypcbi8vIFRoZSBtYXJnaW4gdGhhdCBzaG91bGQgYXBwZWFyIGJldHdlZW4gdHdvIGBhdmF0YXJgcyAoaW5jbHVkaW5nIHRob3NlIG9uIGFcbi8vIG5ldyBsaW5lKS5cbi8vIEB0eXBlIExlbmd0aFxuXG4kYXZhdGFyLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4vLypcbi8vIFRoZSBjb3JlIGNvbnRhaW5lciBmb3IgYSBzaW5nbGUgYXZhdGFyLiBBbiBhdmF0YXIgc3VwcG9ydHMgZmV0Y2hpbmcgb2YgdGhlXG4vLyBiYWNrZ3JvdW5kIGltYWdlIHRocm91Z2ggZWl0aGVyIGEgW0dpdGh1Yl0oaHR0cDovL2dpdGh1Yi5jb20pIHByb2ZpbGUgbmFtZSxcbi8vIGEgW1R3aXR0ZXJdKGh0dHA6Ly90d2l0dGVyLmNvbSkgdXNlcm5hbWUsIG9yIGFuIGVtYWlsIGFkZHJlc3MgdGhhdCBpc1xuLy8gYXNzb2NpYXRlZCB3aXRoIGEgW0dyYXZhdGFyXShodHRwOi8vZ3JhdmF0YXIuY29tKSBhY2NvdW50LiBJZiBhbnkgb2YgdGhlXG4vLyBhYm92ZSBhcmUgZ2l2ZW4sIGNsaWNraW5nIG9uIHRoZSBhdmF0YXIgd2lsbCBvcGVuIGEgdGFiIHdpdGggdGhlIHJlbGV2YW50XG4vLyBwcm9maWxlIHBhZ2Ugb3BlbiAob3IsIGNvbXBvc2UgYSBuZXcgZW1haWwgaWYgZW1haWwgd2FzIHRoZSBwcm92aWRlZFxuLy8gaWRlbnRpZmllcikuIElmIG5vbmUgb2YgdGhlIGFib3ZlIGFyZSBnaXZlbiwgdGhlIGluaXRpYWxzIG9mIHRoZSB1c2VyJ3MgbmFtZVxuLy8gd2lsbCBiZSBzaG93bi5cbi8vXG4vLyBAaGVscGVyXG4vLyA8JSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXI6Y29udGFpbmVyXCIpIGRvICU+XG4vLyAgIDwlPSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXJcIiwgYXV0aG9yOiBPcGVuU3RydWN0Lm5ldyhuYW1lOiBcIkNocmlzIFNhdXZlXCIsIGdpdGh1YjogXCJsZW1vbm1hZGVcIikpICU+XG4vLyA8JSBlbmQgJT5cblxuLmF2YXRhciB7XG4gIC8vIHBvc2l0aW9uXG4gIEBpbmNsdWRlIHotaW5kZXgoYXZhdGFyLCBwYWdlKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBmbGV4OiAwIDAgYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyYXktbGlnaHQpO1xuICBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGF2YXRhcik7XG59XG5cbi8vKlxuLy8gQSBjb250YWluZXIgdGhhdCBzaG93cyB0aGUgaW5pdGFscyBvZiB0aGUgdXNlci4gVGhpcyB3aWxsIGFsd2F5cyBiZSBwcmVzZW50XG4vLyBzbyB0aGF0IGl0IGlzIHZpc2libGUgaW1tZWRpYXRlbHkgb24gcGFnZSBsb2FkLiBUaGUgYXZhdGFyIGltYWdlLCB3aGljaCBpc1xuLy8gZmV0Y2hlZCBieSBKYXZhU2NyaXB0LCB3aWxsIGJlIGZhZGVkIGluIG92ZXIgdG9wIG9mIHRoaXMgc3ViY29tcG9uZW50LCBpZlxuLy8gYXZhaWxhYmxlLlxuLy9cbi8vIEV2ZXJ5IGluaXRpYWwgb2YgdGhlIHBhc3NlZCBuYW1lIHdpbGwgYmUgc2hvd24uIFRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3Jcbi8vIDLigJMzIGluaXRpYWxzLCBidXQgYW55IG1vcmUgdGhhbiB0aGlzIHdpbGwgb3ZlcmZsb3cgdGhlIGF2YXRhci4gQXMgc3VjaCxcbi8vIHBsZWFzZSByZXN0cmljdCBuYW1lcyB0byBmaXJzdCBhbmQgbGFzdCBvciBmaXJzdCwgbWlkZGxlLCBhbmQgbGFzdC5cblxuLmF2YXRhcl9faW5pdGlhbHMge1xuICAvLyBwb3NpdGlvblxuICBAaW5jbHVkZSB6LWluZGV4KGluaXRpYWxzLCBhdmF0YXIpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlOyBsZWZ0OiAwO1xuXG4gIC8vIGJveCBtb2RlbFxuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGNvbG9yOiBjb2xvcihncmF5KTtcblxuICAvLyB0eXBlXG4gIGZvbnQtc2l6ZTogMWVtO1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIHRoZSBhdmF0YXIgaW1hZ2UuIFRoZSBpbWFnZSB3aWxsIGJlIHNldCBieSBKYXZhU2NyaXB0IGFzXG4vLyBhIGJhY2tncm91bmQgaW1hZ2Ugb24gdGhpcyBzdWJjb21wb25lbnQsIHNvIGlmIG5vIGltYWdlIGlzIHByb3ZpZGVkIHRoaXNcbi8vIGNvbnRhaW5lciB3aWxsIGVmZmVjdGl2ZWx5IGJlIGludmlzaWJsZS4gT25jZSB0aGUgYmFja2dyb3VuZCBpbWFnZSBpc1xuLy8gZmV0Y2hlZCAod2hpY2ggd2lsbCBiZSBkb25lIHdpdGggYSBzbGlnaHQgZGVsYXkgdG8gcHJldmVudCB0b28gbXVjaCBmcm9tXG4vLyBoYXBwZW5pbmcgb24gcGFnZSBsb2FkKSwgaXQgaXMgZmFkZWQgaW50byBwbGFjZSB1c2luZyB0aGVcbi8vIGBhdmF0YXJfX2ltYWdlLS1pcy12aXNpYmxlYCBzdGF0ZS5cblxuLmF2YXRhcl9faW1hZ2Uge1xuICAvLyBwb3NpdGlvblxuICBAaW5jbHVkZSB6LWluZGV4KGltYWdlLCBhdmF0YXIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gYm94IG1vZGVsXG4gIGhlaWdodDogJGF2YXRhci0tc2l6ZTtcbiAgd2lkdGg6ICRhdmF0YXItLXNpemU7XG5cbiAgLy8gYmFja2Ryb3BcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vKlxuLy8gVGhlIHZhcmlhdGlvbiB0aGF0IGNhdXNlcyB0aGUgaW1hZ2UgdG8gYmUgZmFkZWQgaW50byB2aWV3LlxuLy9cbi8vIEBkZW1vX3R5cGUgbm9uZVxuLy8gQHNldF9ieSBBdmF0YXIjc2hvd19pbWFnZVxuXG4uYXZhdGFyX19pbWFnZS0taXMtdmlzaWJsZSB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi8vKlxuLy8gQ3JlYXRlcyB0aGUgcnVsZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gcmVzdHJpY3QgYW4gYGF2YXRhcl9fY29udGFpbmVyYCB0b1xuLy8gYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBgYXZhdGFyYHMgcGVyIGxpbmUuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGBhdmF0YXJgcyBhbGxvd2VkIHBlciBsaW5lLlxuXG5AbWl4aW4gYXZhdGFyLS1yZXN0cmljdC10by1uLWF2YXRhcnMoJG4pIHtcbiAgbWF4LXdpZHRoOiAoKCRuICogJGF2YXRhci0tc2l6ZSkgKyAoJG4gKiAkYXZhdGFyLS1zcGFjaW5nKSk7XG59XG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBhcm91bmQgYSBzZXQgb2YgYXZhdGFycy4gVGhpcyBjb250YWluZXIgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXRcbi8vIGVsaW1pbmF0ZXMgdGhlIGV4Y2VzcyBtYXJnaW4gYmVsb3cgYW5kIHRvIHRoZSByaWdodCBvZiBgYXZhdGFyYHMgb24gdGhlXG4vLyBvdXRzaWRlIGVkZ2VzIG9mIHRoZSBjb250YWluZXIsIGJ1dCBzdGlsbCBhbGxvd3MgdGhlbSB0byBiZSBwcm9wZXJseSBzcGFjZWRcbi8vIG91dCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIHVzaW5nIG5lZ2F0aXZlIG1hcmdpblxuLy8gb24gdGhlIGJvdHRvbSBhbmQgcmlnaHQgdG8gb2Zmc2V0IHRoZSBtYXJnaW4gb2YgdGhlIGNvbnRhaW5lZCBgYXZhdGFyYHMuXG4vL1xuLy8gVGhpcyBjb250YWluZXIgYWxsb3dzIHRocmVlIGF2YXRhcnMgc2lkZS1ieS1zaWRlLCB3aXRoIGFkZGl0aW9uYWwgYXZhdGFyc1xuLy8gYnJlYWtpbmcgb250byBhIG5ldyBsaW5lLiBJZiB5b3Ugb25seSBuZWVkIGEgc2luZ2xlIGF2YXRhciwgdGhpcyBjb250YWluZXJcbi8vIGlzIG5vdCBuZWNlc3NhcnkuXG4vL1xuLy8gWW91IGNhbiBjcmVhdGUgdGhpcyBjb21wb25lbnQgdXNpbmcgdGhlIGBcImF2YXRhcjpjb250YWluZXJcImAgaGVscGVyLiB0aGlzXG4vLyBoZWxwZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBjb250YWluZXI6XG4vL1xuLy8gYGBgZXJiX2RlbW9cbi8vIDxkaXY+XG4vLyAgIDwlIGRvY2tzX2NvbXBvbmVudChcImF2YXRhcjpjb250YWluZXJcIikgZG8gJT5cbi8vICAgICA8JSA0LnRpbWVzIGRvICU+XG4vLyAgICAgICA8JT0gZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyXCIsIGF1dGhvcjogT3BlblN0cnVjdC5uZXcobmFtZTogXCJDaHJpcyBTYXV2ZVwiLCBnaXRodWI6IFwibGVtb25tYWRlXCIpKSAlPlxuLy8gICAgIDwlIGVuZCAlPlxuLy8gICA8JSBlbmQgJT5cbi8vIDwvZGl2PlxuLy9cbi8vIDxkaXY+XG4vLyAgIDwlIGRvY2tzX2NvbXBvbmVudChcImF2YXRhcjpjb250YWluZXJcIiwgc2l6ZTogOmxhcmdlKSBkbyAlPlxuLy8gICAgIDwlIDQudGltZXMgZG8gJT5cbi8vICAgICAgIDwlPSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXJcIiwgYXV0aG9yOiBPcGVuU3RydWN0Lm5ldyhuYW1lOiBcIkNocmlzIFNhdXZlXCIsIGdpdGh1YjogXCJsZW1vbm1hZGVcIikpICU+XG4vLyAgICAgPCUgZW5kICU+XG4vLyAgIDwlIGVuZCAlPlxuLy8gPC9kaXY+XG4vLyBgYGBcblxuLmF2YXRhcl9fY29udGFpbmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZSgkYXZhdGFyLS1zcGFjaW5nKSAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiBuZWdhdGl2ZSgkYXZhdGFyLS1zcGFjaW5nKSAhaW1wb3J0YW50O1xuICBAaW5jbHVkZSBhdmF0YXItLXJlc3RyaWN0LXRvLW4tYXZhdGFycygzKTtcblxuICA+IC5hdmF0YXIge1xuICAgIG1hcmdpbi1yaWdodDogJGF2YXRhci0tc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkYXZhdGFyLS1zcGFjaW5nO1xuICB9XG59XG5cbi8vKlxuLy8gQSBjb250YWluZXIgdGhhdCBjYW4gaG9sZCBtb3JlIGBhdmF0YXJgcyBvbiBhIHNpbmdsZSBsaW5lIChmb3VyLCBpbnN0ZWFkIG9mXG4vLyB0aGUgYmFzZSB0aHJlZSkuIFVzZSB0aGlzIGZvciBzaXR1YXRpb25zIGluIHdoaWNoIHlvdSBoYXZlIG1vcmUgcm9vbVxuLy8gYXZhaWxhYmxlIGZvciBhbmNpbGxhcnkgaW5mb3JtYXRpb24gbGlrZSBjb250cmlidXRvciBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAc2V0X2J5IDpzaXplICg6bGFyZ2UpXG5cbi5hdmF0YXJfX2NvbnRhaW5lci0tbGFyZ2Uge1xuICBAaW5jbHVkZSBhdmF0YXItLXJlc3RyaWN0LXRvLW4tYXZhdGFycyg0KTtcbn1cbiIsIi8vICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICBfX19fXyAgICAgICAvICAvXFwgICAgICAvICAvOjpcXCAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAvICAvOjpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86L1xcOlxcICAgLyAgLzovXFw6XFwgIC8gIC86LyAgXFw6XFwgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovfi86OlxcIC8gIC86L34vOjpcXC9fXy86LyBcXF9fXFw6fC8gIC86L18vOjpcXCAgLyAgLzovIC86L19cbi8vICAgL19fLzovIC86L1xcOi9fXy86LyAvOi9cXDpcXCAgXFw6XFwgLyAgLzovX18vOi9fX1xcL1xcOlxcL19fLzovIC86LyAvXFxcbi8vICAgXFwgIFxcOlxcLzovfi86fCAgXFw6XFwvOi9fX1xcL1xcICBcXDpcXCAgLzovXFwgIFxcOlxcIC9+fi86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDo6LyAvOi8gXFwgIFxcOjovICAgICAgXFwgIFxcOlxcLzovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXC86LyAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86L1xuLy8gICAgICBcXCAgXFw6Oi8gICAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOjovXG4vLyAgICAgICBcXF9fXFwvICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIEJhZGdlXG4vL1xuLy8gQSBiYWRnZSBpcyBhIHNtYWxsIGNodW5rIG9mIHRleHQgaW4gYSBjb2xvcmVkIGJveCB0aGF0IGRlbm90ZXMgYSBwYXJ0aWN1bGFyXG4vLyBhdHRyaWJ1dGUgYWJvdXQgdGhlIGludGVyZmFjZSBlbGVtZW50IHRvIHdoaWNoIGl0IGlzIGF0dGFjaGVkLiBXaGVuXG4vLyBhZGRpdGlvbmFsIGV4cGxhbmF0b3J5IHRleHQgaXMgcmVxdWlyZWQsIHVzZSBhIGBub3RpY2VgIGluc3RlYWQg4oCUwqBiYWRnZXNcbi8vIHNob3VsZCBvbmx5IGV2ZXIgYmUgb25lIHdvcmQgaW4gbGVuZ3RoLiBJdCBpcyBhcHByb3ByaWF0ZSB0byBoYXZlIG11bHRpcGxlXG4vLyBiYWRnZXMgYXR0YWNoZWQgdG8gYSBzaW5nbGUgZWxlbWVudCBpZiBhZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgdGhhdFxuLy8gZWxlbWVudCBuZWVkIHRvIGJlIGluZGljYXRlZC5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG4kYmFkZ2UtLXNwYWNpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG5cblxuXG4vLypcbi8vIFRoZSBhY3R1YWwgYmFkZ2UuIEVhY2ggYmFkZ2UgcHJvdmlkZXMgc3BhY2luZyBiZXR3ZWVuIGl0c2VsZiBhbmQgYmFkZ2VzIGl0XG4vLyBpcyBuZXh0IHRvLCBzbyB0aGV5IG11c3QgYmUgd3JhcHBlZCBpbiBhIGBiYWRnZV9fY29udGFpbmVyYCB0byByZW1vdmUgYW55XG4vLyBleGNlc3Mgb3V0c2lkZSBzcGFjaW5nIGlmIHlvdSBpbmNsdWRlIG1vcmUgdGhhbiBhIHNpbmdsZSBiYWRnZS5cbi8vXG4vLyBCZWNhdXNlIGJhZGdlcyBtb3N0IG9mdGVuIHNpdCBhbGxvbmdzaWRlIG90aGVyIHRleHQsIHRoZXkgYXJlIGRlc2lnbmVkIHRvXG4vLyBzY2FsZSB3aXRoIHRoZSBzaXplIG9mIHdoYXRldmVyIGNvbnRhaW5lciB0aGV5IGFyZSBpbi4gVGhleSB3aWxsIGFsd2F5cyBiZVxuLy8gc2xpZ2h0bHkgc21hbGxlciB0aGFuIHRoZSB0ZXh0IHNpemUgb2YgdGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhleSBhcmVcbi8vIGF0dGFjaGVkIHN1Y2ggdGhhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgdGhlIGJhZGdlIGFwcHJveGltYXRlbHkgbWF0Y2ggdGhlXG4vLyBhc2NlbmRlcnMvIGRlc2NlbmRlcnMgb2YgdGhlIHRleHQuXG4vL1xuLy8gQG1hcmt1cFxuLy8gPGRpdiBjbGFzcz1cImJhZGdlX19jb250YWluZXJcIj5cbi8vICAgPCUgNS50aW1lcyBkbyB8aXwgJT5cbi8vICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIj5CYWRnZSA8JT0gaSArIDEgJT48L2Rpdj5cbi8vICAgPCUgZW5kICU+XG4vLyA8L2Rpdj5cblxuLmJhZGdlIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBmbGV4OiAwIDAgYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvLyBBIGxpdHRsZSBleHRyYSBib3R0b20gcGFkZGluZyB0byBtYWtlIGl0IGxvb2sgY2VudGVyZWQuXG4gIHBhZGRpbmc6IDAuMTVlbSAwLjVlbSAwLjI1ZW07XG5cbiAgLy8gYmFja2Ryb3BcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGJhZGdlKTtcbiAgbGluZS1oZWlnaHQ6IGRlZmF1bHQobGluZS1oZWlnaHQpO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbn1cblxuLy8qXG4vLyBVc2UgdGhpcyBiYWRnZSB2YXJpYXRpb24gd2hlbiB5b3UgYXJlIHRyeWluZyB0byBpbmRpY2F0ZSBzb21lIHNvcnQgb2Zcbi8vIHdhcm5pbmcgdG8gdGhlIHVzZXIg4oCUwqBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgY29udGVudCB0byB3aGljaCB0aGlzIGJhZGdlIGlzXG4vLyBhdHRhY2hlZCBoYXMgYmVlbiBkZXByZWNhdGVkIG9yIGhhcyBhIGNvbW1vbiBwaXRmYWxsLlxuLy9cbi8vIEBkZW1vX3R5cGUgam9pbnRcblxuLmJhZGdlLS13YXJuaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoeWVsbG93KTtcbiAgY29sb3I6IHVpLWNvbG9yKHllbGxvdywgZGFyayk7XG59XG5cbi8vKlxuLy8gVXNlIHRoaXMgYmFkZ2UgdmFyaWF0aW9uIHdoZW4geW91IGFyZSB0cnlpbmcgdG8gaW5kaWNhdGUgYSBuZXcgb3IgdXBkYXRlZFxuLy8gc3RhdHVzIGZvciB0aGUgYXR0YWNoZWQgY29udGVudC4gRm9yIGV4YW1wbGUsIHRoaXMgYmFkZ2UgbWlnaHQgYmUgdXNlZCB0b1xuLy8gaW5kaWNhdGUgc29tZXRoaW5nIGlzIGluIGJldGEgb3IgaGFzIHJlY2VudGx5IGJlZW4gdXBncmFkZWQgb3IgcmVsZWFzZWQuXG4vL1xuLy8gQGRlbW9fdHlwZSBqb2ludFxuXG4uYmFkZ2UtLW5ldyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGJsdWUpO1xuICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbn1cblxuLy8qXG4vLyBVc2UgdGhpcyBiYWRnZSB2YXJpYXRpb24gd2hlbiB0aGUgYXR0YWNoZWQgY29udGVudCBpcyBtZWFudCB0byBiZVxuLy8gY29uY2VhbGVkLCBzZWNyZXQsIG9yIGluIHNvbWUgb3RoZXIgd2F5IG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHRoZVxuLy8gYXZlcmFnZSBjYXNlLiBGb3IgZXhhbXBsZSwgdGhpcyBiYWRnZSBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0XG4vLyBzb21ldGhpbmcgaXMgcHJpdmF0ZS8gZm9yIGludGVybmFsIHVzZSBvbmx5LlxuLy9cbi8vIEBkZW1vX3R5cGUgam9pbnRcblxuLmJhZGdlLS1zZWNyZXQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXkpO1xufVxuXG4vLypcbi8vIFRoaXMgdmFyaWF0aW9uIGlzIHVzZWQgdG8gZml4IHRoZSB2ZXJ0aWNhbCBwYWRkaW5nIG9uIGJhZGdlcyB0aGF0IGFyZSBtZWFudFxuLy8gdG8gY29udGFpbiBjb250ZW50IHN0eWxlZCBhcyBjb2RlLiBCZWNhdXNlIHRoZSBtb25vc3BhY2UgZm9udCBmYW1pbHkgaGFzXG4vLyBkaWZmZXJlbnQgZm9udCBwcm9wZXJ0aWVzLCBsZWF2aW5nIHRoZSBleGlzdGluZyBgcGFkZGluZ2AvIGBsaW5lLWhlaWdodGBcbi8vIGFsb25nIHJlc3VsdHMgaW4gdGhlIHRleHQgc2l0dGluZyB0b28gY2xvc2VseSB0byB0aGUgdG9wIG9mIHRoZSBiYWRnZS4gVGhpc1xuLy8gZml4ZXMgdGhlIHByb2JsZW0gdXNpbmcgYSB2ZXJ5IHVuLXNjaWVudGlmaWMgcmVkaXN0cmlidXRpb24gb2YgdGhlXG4vLyBhdmFpbGFibGUgcGFkZGluZy5cbi8vXG4vLyBOb3RlIHRoYXQsIGJlY2F1c2UgdGhlIG1vbm9zcGFjZSBmb250IGhhcyBtb3JlIHNwYWNlIGFsbG9jYXRlZCBmb3IgZWFjaFxuLy8gY2hhcmFjdGVyLCBhIGJhZGdlIHdpdGggdGhpcyB2YXJpYW50IHdpbGwgYmUgd2lkZXIgdGhhbiBvbmUgd2l0aG91dCBpdCxcbi8vIGV2ZW4gaWYgdGhleSBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuXG4vL1xuLy8gQGRlbW9fdHlwZSBzZWxlY3RcblxuLmJhZGdlLS1jb2RlIHtcbiAgLy8gQGluY2x1ZGUgdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZy10b3A6IDAuMmVtO1xufVxuXG4vLypcbi8vIEEgYmFkZ2UgdGhhdCBpcyB1c2VkIG9uIGl0cyBvd24gKHRoYXQgaXMsIG5vdCBiZXNpZGUgb3RoZXIgdGV4dCwgYnV0IG1heSBiZVxuLy8gYmVzaWRlIG90aGVyIGJ1dHRvbnMpLlxuLy9cbi8vIEBkZW1vX3R5cGUgc2VsZWN0XG5cbi5iYWRnZS0tc3RhbmRhbG9uZSB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShiYWRnZS0tc3RhbmRhbG9uZSk7XG59XG5cblxuXG4vLypcbi8vIFRoaXMgY29udGFpbmVyIHNob3VsZCBhbHdheXMgYmUgd3JhcHBlZCBhcm91bmQgYSBzZXQgb2YgYmFkZ2VzLiBJdCByZW1vdmVzXG4vLyBhbnkgZXhjZXNzIHJpZ2h0IGFuZCBib3R0b20gbWFyZ2luICh3aGljaCBldmVyeSBjb250YWluZWQgYmFkZ2UgaGFzIHRvXG4vLyBhbGxvdyBmb3Igc3BhY2luZyBiZXR3ZWVuIHJvd3MgYW5kIGNvbHVtbnMgb2YgYmFkZ2VzKSwgd2hpbGUgc3RpbGwgYWxsb3dpbmdcbi8vIHRoZSBiYWRnZXMgdG8gYnJlYWsgb250byBhIG5ldyBsaW5lIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgdG8gY29udGFpblxuLy8gdGhlbSBhbGwgb24gYSBzaW5nbGUgbGluZS5cbi8vXG4vLyBJZiBvbmx5IGEgc2luZ2xlIGJhZGdlIGV4aXN0cywgdGhpcyBjb250YWluZXIgY2FuIGJlIG9taXR0ZWQuXG5cbi5iYWRnZV9fY29udGFpbmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZSgkYmFkZ2UtLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IG5lZ2F0aXZlKCRiYWRnZS0tc3BhY2luZykgIWltcG9ydGFudDtcblxuICA+IC5iYWRnZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkYmFkZ2UtLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJhZGdlLS1zcGFjaW5nO1xuICB9XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgX19fX18gICAgICAgIC9fXy9cXCAgICAgICAgIF9fXyAgICAgICBfX18gICAgIC8gIC9cXCAgICAgICAgL19fL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgICAvICAvXFwgICAgIC8gIC9cXCAgIC8gIC86OlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgIC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXCAgICAgLyAgLzovICAgIC8gIC86LyAgLyAgLzovXFw6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAvICAvOi9+Lzo6XFwgIF9fXyAgXFwgIFxcOlxcICAgLyAgLzovICAgIC8gIC86LyAgLyAgLzovICBcXDpcXCAgX19fX19cXF9fXFw6XFxcbi8vICAgL19fLzovIC86L1xcOnwvX18vXFwgIFxcX19cXDpcXCAvICAvOjpcXCAgIC8gIC86OlxcIC9fXy86LyBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXFxuLy8gICBcXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcIC8gIC86Ly9fXy86L1xcOlxcIC9fXy86L1xcOlxcXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXH5+XFx+flxcL1xuLy8gICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcICAvOi8gXFxfX1xcLyAgXFw6XFxcXF9fXFwvICBcXDpcXFxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwgIH5+flxuLy8gICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi8gICAgICAgXFwgIFxcOlxcICAgIFxcICBcXDpcXFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFxcbi8vICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOjovICAgICAgICAgXFxfX1xcLyAgICAgXFxfX1xcLyBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG4vL1xuLy8qXG4vLyBAcGF0dGVybiBCdXR0b25zXG4vLyBAdGFnbGluZSBDYXB0dXJlIGFsbCB0aGUgY2xpY2tzLlxuLy9cbi8vIEJ1dHRvbnMgYXJlIHdoYXQgdGhlIHVzZXIgc2hvdWxkIHByZXNzIHRvIGluaXRpYXRlIG1vc3QgYWN0aW9ucy4gQWN0aW9uc1xuLy8gbWF5IHRha2UgcGxhY2Ugb24gdGhlIHBhZ2UgKGZvciBleGFtcGxlLCBieSBhY3RpdmF0aW5nIGEgcG9wb3ZlciBvciB4LXJheVxuLy8gbW9kZSnCoG9yIG1heSBzZW5kIHRoZSB1c2VyIHRvIGFub3RoZXIgc2l0ZSB0byBwZXJmb3JtIGFuIGFjdGlvbiAodGhlIG1vc3Rcbi8vIG5vdGFibGUgZXhhbXBsZSBvZiB0aGlzIGFyZSB0aGUgYnV0dG9ucyB0aGF0IHNlbmQgdGhlIHVzZXIgdG8gR2l0aHViKS4gVGhlXG4vLyBlbGVtZW50IG9uIHdoaWNoIHRvIGFwcGx5IHRoZXNlIGNsYXNzZXMgd2lsbCBkZXBlbmQgb24gd2hldGhlciB0aGUgYWN0aW9uXG4vLyBpcyBpbnRlcm5hbCBvciBleHRlcm5hbCB0byB0aGUgcGFnZS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRidXR0b24tLXNwYWNpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG5cblxuXG4vLypcbi8vIEB0aXRsZSBTdGFuZGFyZCBCdXR0b25zXG4vL1xuLy8gQSBzdGFuZGFyZCBidXR0b24uIFRoaXMgY29tcG9uZW50IG5vcm1hbGl6ZXMgdGhlIHN0eWxlcyBvZiBib3RoIGBidXR0b25gIGFuZFxuLy8gYGFgIGVsZW1lbnRzIHNvIHRoYXQgdGhlc2UgY2xhc3NlcyBjYW4gYmUgcGxhY2VkIG9uIGVpdGhlciBvbmUuIElmIHRoZSBhY3Rpb25cbi8vIGlzIGludGVybmFsIChpLmUuLCBkb2Vzbid0IHJlcXVpcmUgYSBgR0VUYCByZXF1ZXN0KSwgdXNlIGEgYGJ1dHRvbmAuIElmIHRoZVxuLy8gYWN0aW9uIGRvZXMgcmVxdWlyZSBhIGBHRVRgLCB1c2UgYSBVUkwuIE5ldmVyIHVzZSBhbiBgYWAgdGFnIHdpdGggYSBibGFua1xuLy8gKG9yIGBcIiNcImApIGBocmVmYCBhdHRyaWJ1dGUuXG4vL1xuLy8gQW55IHZhcmlhdGlvbnMgb24gdGhpcyBidXR0b24gc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXkgZGVzaWduIGFuZCBpbXBsZW1lbnRcbi8vIGRlc2lnbnMgZm9yIHRoZSBgOmZvY3VzYCBzdGF0ZSwgYDphY3RpdmVgIHN0YXRlLCBgOmhvdmVyYCBzdGF0ZSAob3B0aW9uYWwpLFxuLy8gYW5kIGZvciBpY29ucyB3aXRoIGJ1dHRvbnMgKHVzaW5nIGEgY2hpbGQgc2VsZWN0b3IgdG8gdGhlIGBpY29uYCBjb21wb25lbnQpLFxuLy8gaWYgYWRqdXN0bWVudHMgdG8gdGhlIGNvbnRhaW5lZCBpY29ucyBhcmUgcmVxdWlyZWQuXG4vL1xuLy8gQSBzaW5nbGUgYnV0dG9uIGNhbiBiZSBpbmNsdWRlZCBvbiBpdHMgb3duLCB3aXRob3V0IGFueSBjb250YWluZXIuIElmXG4vLyBtdWx0aXBsZSBidXR0b25zIGhhdmUgdG8gYmUgcGxhY2VkIGJlc2lkZSBlYWNoIG90aGVyLCB3cmFwIGFsbCBvZiB0aGUgYnV0dG9uc1xuLy8gaW4gYSBgZG9ja3MtYnV0dG9uX19jb250YWluZXJgLlxuLy9cbi8vIEBtYXJrdXBcbi8vIDxkaXYgY2xhc3M9XCJkb2Nrcy1idXR0b25fX2NvbnRhaW5lclwiPlxuLy8gICA8YnV0dG9uIGNsYXNzPVwiZG9ja3MtYnV0dG9uXCI+YnV0dG9uITwvYnV0dG9uPlxuLy9cbi8vICAgPGJ1dHRvbiBjbGFzcz1cImRvY2tzLWJ1dHRvblwiPlxuLy8gICAgIDwlPSBkb2Nrc19pY29uIDpnaXRodWIsIHNpemU6IDptZWRpdW0gJT5cbi8vICAgICA8c3BhbiBjbGFzcz1cImRvY2tzLWJ1dHRvbl9fdGV4dFwiPmljb24gKyB0ZXh0PC9zcGFuPlxuLy8gICA8L2J1dHRvbj5cbi8vXG4vLyAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5cbi8vICAgICA8c3BhbiBjbGFzcz1cImRvY2tzLWJ1dHRvbl9fdGV4dFwiPnRleHQgKyBpY29uPC9zcGFuPlxuLy8gICAgIDwlPSBkb2Nrc19pY29uIDpnaXRodWIsIHNpemU6IDptZWRpdW0gJT5cbi8vICAgPC9idXR0b24+XG4vL1xuLy8gICA8ZGl2IGNsYXNzPVwiZG9ja3MtYnV0dG9uX19zZWdtZW50ZWQtY29udGFpbmVyXCI+XG4vLyAgICAgPGJ1dHRvbiBjbGFzcz1cImRvY2tzLWJ1dHRvblwiPlNlZ21lbnQgMTwvYnV0dG9uPlxuLy8gICAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5TZWdtZW50IDI8L2J1dHRvbj5cbi8vICAgPC9kaXY+XG4vLyA8L2Rpdj5cblxuLmRvY2tzLWJ1dHRvbiB7XG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAgZGVmYXVsdChjb250cm9sLXBhZGRpbmcpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuXG4gIC8vIHR5cGVcbiAgLy8gQGluY2x1ZGUgdHlwZS0tZGVmYXVsdC1mb250LWZhbWlseTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGNvbnRyb2wpO1xuICBsaW5lLWhlaWdodDogZGVmYXVsdChjb250cm9sLXNpemUpO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgPiAqOmZpcnN0LWNoaWxkIHsgbWFyZ2luLXJpZ2h0OiAkYnV0dG9uLS1zcGFjaW5nOyB9XG59XG5cbi8vKlxuLy8gQSBzbGlnaHRlciBkYXJrIHZhcmlhdGlvbi5cblxuLmRvY2tzLWJ1dHRvbi0tZGFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG5cbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICAgIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgfVxufVxuXG4vLypcbi8vIEEgYnV0dG9uIHRoYXQgY2FuIG5vIGxvbmdlciBiZSBwcmVzc2VkLiBNYWtlIHN1cmUgdG8gYWx3YXlzIGFsc28gaW5jbHVkZSB0aGVcbi8vIGBkaXNhYmxlZGAgYXR0cmlidXRlIG9uIHRoZSBhY3R1YWwgYGJ1dHRvbmAg4oCUwqB0aGlzIGltcHJvdmVzIHVzYWJpbGl0eSBieVxuLy8gcHJldmVudGluZyB0aGUgYnV0dG9uIGZyb20gYmVpbmcgdGFiYmVkIHRvLCBhbmQgcHJldmVudHMgYW55IGV2ZW50IGhhbmRsZXJzXG4vLyBvbiB0aGUgYGJ1dHRvbmAgZnJvbSBydW5uaW5nLlxuLy9cbi8vIEBqYXZhc2NyaXB0X2FjdGlvbiB0aGlzLmNsYXNzTGlzdC5hZGQoXCJkb2Nrcy1idXR0b24tLWlzLWRpc2FibGVkXCIpOyB0aGlzLmRpc2FibGVkID0gdHJ1ZVxuXG4uZG9ja3MtYnV0dG9uLS1pcy1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgZm9yIGEgY29sbGVjdGlvbiBvZiBidXR0b25zIHRoYXQgbm9ybWFsaXplcyB0aGUgbWFyZ2luIG9uIHRoZVxuLy8gb3V0c2lkZS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBlYWNoIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbnRhaW5lciBoYXNcbi8vIHJpZ2h0IGFuZCBib3R0b20gbWFyZ2luIHNvIHRoYXQgdGhlcmUgaXMgdmVydGljYWwgYW5kIGhvcml6b250YWwgc3BhY2Vcbi8vIGJldHdlZW4gZWFjaCBvZiBhbnkgbnVtYmVyIG9mIGJ1dHRvbnMuXG5cbi5kb2Nrcy1idXR0b25fX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoJGJ1dHRvbi0tc3BhY2luZykgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogbmVnYXRpdmUoJGJ1dHRvbi0tc3BhY2luZykgIWltcG9ydGFudDtcblxuICAvLyBQcmV2ZW50cyBtYXJnaW4gZnJvbSBjb2xsYXBzaW5nIHdoaWxlIHN0aWxsIGFsbG93aW5nIG92ZXJmbG93L1xuXG4gICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyBkaXNwbGF5OiB0YWJsZTsgfVxuXG4gIC8vIEFsbG93IGZvciBhbnl0aGluZyBpbnNpZGUgdGhlIGNvbnRhaW5lciDigJTCoHRoaXMgaXMgdXNlZnVsIGZvciwgZm9yIGV4YW1wbGUsXG4gIC8vIGNvbnRhaW5lZCBidXR0b25zIHRoYXQgYWN0aXZhdGUgcG9wb3ZlcnMgYW5kIHRodXMgaGF2ZSBwb3BvdmVyIGNvbnRhaW5lcnNcbiAgLy8gYXJvdW5kIHRoZW0uXG5cbiAgPiAqIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6ICRidXR0b24tLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJ1dHRvbi0tc3BhY2luZztcbiAgfVxufVxuXG4vLypcbi8vIFVzZSB0aGlzIGNvbnRhaW5lciB2YXJpYXRpb24gd2hlbiB5b3Ugd2FudCBhbGwgb2YgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZVxuLy8gY29udGFpbmVyIHRvIGNvbnN1bWUgYW4gZXF1YWwgcGFydCBvZiB0aGUgdG90YWwgd2lkdGggYXZhaWxhYmxlIHRvIHRoZVxuLy8gY29udGFpbmVyLiBOb3RlIHRoYXQgcG90ZW50aWFsbHktdW5leHBlY3RlZCBiZWhhdmlvciBtYXkgb2NjdXIgd2hlbiB0aGVcbi8vIGJ1dHRvbnMgaW4gdGhpcyBidXR0b24gZ3JvdXAgaGF2ZSBhIHRvdGFsIGludHJpbnNpYyBtaW5pbXVtIHdpZHRoIGdyZWF0ZXJcbi8vIHRoYW4gdGhhdCBvZiB0aGUgY29udGFpbmVyIOKAlCBidXR0b25zIHdpdGggc21hbGxlciBpbnRyaW5zaWMgd2lkdGhzIGluIHRoZVxuLy8gZ3JvdXAgd2lsbCBzaHJpbmsgYXMgbXVjaCBhcyBwb3NzaWJsZSwgYW5kIHRoZW4gYnV0dG9ucyB3aWxsIHN0YXJ0LCBvbmUtYnktb25lXG4vLyBhcyByZXF1aXJlZCwgYnJlYWtpbmcgb250byBhZGRpdGlvbmFsIGxpbmVzIChhbmQgZmlsbGluZyB0aGVtIGNvbXBsZXRlbHksXG4vLyByZXN1bHRpbmcgaW4gc29tZSBidXR0b25zIGxpa2VseSBiZWluZyBsYXJnZXIgdGhhbiBvdGhlcnMpLlxuLy9cbi8vIEZvciB0aGUgYmVzdCByZXN1bHRzLCB0cnkgdG8gaGF2ZSBvbmx5IHR3byBidXR0b25zIHNpZGUtYnktc2lkZSBpbiBhXG4vLyBjb250YWluZXIgdXNpbmcgdGhpcyB2YXJpYW50LlxuXG4uZG9ja3MtYnV0dG9uX19jb250YWluZXItLWZpbGwtd2lkdGgge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gIC8vIEZvciBib3RoIGJ1dHRvbnMgYW5kIG5vbi1idXR0b24tZXkgdGhpbmdzIGluIGJ1dHRvbiBncm91cHMsIGxpa2UgcG9wb3ZlclxuICAvLyBjb250YWluZXJzLlxuXG4gIC5kb2Nrcy1idXR0b24sXG4gID4gKjpub3QoLmRvY2tzLWJ1dHRvbikge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMSAwIDAlO1xuICAgIG1pbi13aWR0aDogLXdlYmtpdC1taW4tY29udGVudDtcbiAgICBtaW4td2lkdGg6IC1tb3otbWluLWNvbnRlbnQ7XG4gICAgbWluLXdpZHRoOiBtaW4tY29udGVudDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGUgdGV4dCBmb3IgYSBidXR0b24uIFRoaXMgY29udGFpbmVyIGlzIG5vdCBuZWNlc3NhcnkgdW5sZXNzIHRoZXJlIGlzIGFsc29cbi8vIGFuIGljb24gaW4gdGhlIGJ1dHRvbi5cblxuLmRvY2tzLWJ1dHRvbl9fdGV4dCB7fVxuXG5cblxuLy8qXG4vLyBBIHdyYXBwZXIgYXJvdW5kIGJ1dHRvbnMgdGhhdCBjYXVzZXMgdGhlbSB0byBsb29rIGxpa2Ugb25lIGJ1dHRvbiBzZWdtZW50ZWRcbi8vIGludG8gcGllY2VzLlxuXG4uZG9ja3MtYnV0dG9uX19zZWdtZW50ZWQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgPiAuZG9ja3MtYnV0dG9uIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlci1sZWZ0OiBub25lOyB9XG4gICAgJjpmaXJzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cykgMCAwIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiAwIGRlZmF1bHQoYm9yZGVyLXJhZGl1cykgZGVmYXVsdChib3JkZXItcmFkaXVzKSAwOyB9XG4gIH1cbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgX19fX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAvICAvOjpcXFxuLy8gICAgICAvICAvOi8gICAgICAgLyAgLzo6XFwgICAgICAvICAvOjpcXCAgICAvICAvOi9cXDpcXFxuLy8gICAgIC8gIC86LyAgICAgICAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXCAgLyAgLzovICBcXDpcXFxuLy8gICAgLyAgLzovICBfX18gIC8gIC86L34vOjpcXCAgLyAgLzovfi86LyAvX18vOi8gXFxfX1xcOnxcbi8vICAgL19fLzovICAvICAvXFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovX19cXCAgXFw6XFwgLyAgLzovXG4vLyAgIFxcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwvOi9fX1xcL1xcICBcXDpcXC86Ojo6Oi9cXCAgXFw6XFwgIC86L1xuLy8gICAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDo6LyAgICAgIFxcICBcXDo6L35+fn4gIFxcICBcXDpcXC86L1xuLy8gICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6L1xuLy8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAgICAgIFxcX19cXC9cbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cbi8vXG4vLypcbi8vIEBwYXR0ZXJuIENhcmRcbi8vXG4vLyBBIHNpbXBsZSwgY2xlYW4gY29udGFpbmVyIGZvciBjb250ZW50IHRoYXQgaXMgdG8gYXBwZWFyIG9uIGFuIGFyZWEgd2l0aCBhXG4vLyBjb2xvcmVkIGJhY2tncm91bmQgYnV0IHRoYXQgcmVxdWlyZXMgYSBjb21wbGV0ZWx5IG5ldXRyYWwgYmFja2dyb3VuZCB0b1xuLy8gYXBwZWFyIHByb3Blcmx5LlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG4vLypcbi8vIEBtYXJrdXBcbi8vIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4vLyAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDFyZW07IHdpZHRoOiAxcmVtOyBtYXJnaW46IDJyZW0gYXV0bztcIj48L2Rpdj5cbi8vIDwvZGl2PlxuXG4uY2FyZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICBfX19fXyAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgIC8gIC86OlxcICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86LyAgICAgICAvICAvOjpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fXG4vLyAgICAgLyAgLzovICAgICAgIC8gIC86L1xcOlxcICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi8gIF9fXyAgLyAgLzovICBcXDpcXC9fXy86LyBcXF9fXFw6fC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAgLyAgL1xcL19fLzovIFxcX19cXDpcXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xuLy8gICAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOjovICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gQ29kZSBCbG9ja1xuLy9cbi8vIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgZnVsbC1mZWF0dXJlZCBjb250YWluZXIgZm9yIGNvZGUgZGVtb3MsIGluY2x1ZGluZ1xuLy8gc3VwcG9ydCBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzIGJlaW5nIHNob3duIGluIGEgc2luZ2xlIGNvZGUgYmxvY2ssIGFcbi8vIHJlbmRlcmVkIGRlbW8gb2YgdGhlIGNvZGUgaW4gdGhlIGNvZGUgYmxvY2ssIGhpZGluZyB0aGUgbWFya3VwLCBhbmRcbi8vIHN3aXRjaGluZyBiZXR3ZWVuIGRpZmZlcmVudCBjb21wb25lbnRzLiBUaGUgY29tcG9uZW50IGNhbiBiZSBzY2FsZWQgdG9cbi8vIGluY2x1ZGUgYXMgbXVjaCBvciBhcyBsaXR0bGUgb2YgdGhlc2UgZmVhdHVyZXMgYXMgZGVzaXJlZC5cbi8vXG4vLyBUaGlzIHRoaW5nIG5lZWRzIGhlIGZvbGxvd2luZyBjb21wb25lbnRzOlxuLy9cbi8vIC0gW2BidXR0b25gXShAbGluaylcbi8vXG4vLyAtIFtgcmVzaXphYmxlOjpmb2N1c19zaXplX2J1dHRvbmBdKEBsaW5rKVxuLy9cbi8vIC0gW2BleHBsb2RlZDo6RXhwbG9kZWQjc2V0X21hcmt1cGBdKEBsaW5rKVxuLy9cbi8vIFRoZSBKYXZhU2NyaXB0IHBhcnQgb2YgdGhpcyBjb21wb25lbnQgYWxzbyBzdXBwb3J0cyBjb21tdW5pY2F0aW9uIHdpdGggYW5cbi8vIGBpZnJhbWVgZWQgZGVtbywgaW4tcGxhY2UgdXBkYXRpbmcgb2YgaGVscGVyIGFuZCByZW5kZXJlZCBtYXJrdXAgZm9yXG4vLyBjb21wb25lbnRzLCBhbmQsIHRocm91Z2ggW2hpZ2hsaWdodC5qc10oaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvKSwgc3ludGF4XG4vLyBoaWdobGlnaHRpbmcgb2YgbWFueSBjb21tb24gbGFuZ3VhZ2VzLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuLy8qXG4vLyBAdGl0bGUgQ29kZSBCbG9ja1xuLy9cbi8vIFRoaXMgaXMgaGUgb3ZlcmFsbCBjb250YWluZXIgZm9yIHRoZSBjb2RlIGJsb2NrLiBJdCdzIHByaW1hcnkgcHVycG9zZSBpcyB0b1xuLy8gcHJvdmlkZSBtYXJnaW4gYWJvdmUgYW5kIGJlbG93IHRoZSBjb2RlIGJsb2NrLCBhbmQgdG8gcHJvdmlkZSBhIGhvb2sgdG9cbi8vIG1ha2UgYWRqdXN0bWVudHMgdG8gbWFueSBzdWJjb21wb25lbnRzIHRocm91Z2ggdmFyaWF0aW9ucyBzdWNoIGFzXG4vLyBgY29kZS1ibG9jay0tY29uZGVuc2VkYCBhbmQgYGNvZGUtYmxvY2stLWhpZGRlbmAuXG4vL1xuLy8gQ29kZSBibG9ja3MgY2FuIGdvIGZyb20gdGhlIGluY3JlZGlibHkgY29tcGxleCAoc2VlIHRoZSBkZW1vIGFib3ZlKSwgdG9cbi8vIG1vcmUgbW9kZXJhdGUgbGV2ZWxzIG9mIGRldGFpbCDigJTCoHN1Y2ggYXMgYSBjb2RlIGJsb2NrIHRoYXQgZ2V0cyByZW5kZXJlZFxuLy8gaW5saW5lIGJhc2VkIG9uIGEgdGVtcGxhdGluZyBsYW5ndWFnZSBhbmQgYSBzdHViLCBhbmQgdGhhdCBvdXRwdXRzIGFuXG4vLyBhdHRhY2hlZCBkZW1vOlxuLy9cbi8vIGBgYGVyYl9kZW1vXG4vLyA8JT0gZG9ja3NfY29kZV9ibG9jayBjb2RlOiBcIjxwIHN0eWxlPSdjb2xvcjogZ3JheTsnPkhlbGxvIHdvcmxkITwvcD5cIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBcImVyYlwiLFxuLy8gICAgICAgICAgICAgICAgICAgICAgZGVtbz86IHRydWUsXG4vLyAgICAgICAgICAgICAgICAgICAgICBoaWRkZW4/OiB0cnVlICU+XG4vLyBgYGBcbi8vXG4vLyBBbGwgdGhlIHdheSB0byBhbiBpbmNyZWRpYmx5IHNpbXBsZSBjb2RlIGJsb2NrOlxuLy9cbi8vIGBgYGVyYl9kZW1vXG4vLyA8JT0gZG9ja3NfY29kZV9ibG9jayBjb2RlOiBcIjxwIGNsYXNzPSd0eXBlIHR5cGUtLXBhcmFncmFwaCc+SGVsbG8gd29ybGQhPC9wPlwiICU+XG4vLyBgYGBcbi8vXG4vLyBAaGVscGVyXG4vLyA8JT0gZG9ja3NfY29kZV9ibG9jayBjb2RlOiBcIjxwIHN0eWxlPSdjb2xvcjogZ3JheTsnPkhlbGxvIHdvcmxkITwvcD5cIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBcImVyYlwiLFxuLy8gICAgICAgICAgICAgICAgICAgICAgZGVtbz86IHRydWUsXG4vLyAgICAgICAgICAgICAgICAgICAgICBoaWRkZW4/OiB0cnVlICU+XG5cbi5jb2RlLWJsb2NrIHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcblxuICAuZG9ja3MtYnV0dG9uIHsgZGlzcGxheTogbm9uZTsgfVxufVxuXG5cbi8vKlxuLy8gQSBjb2RlIGJsb2NrIHdpdGggbGVzcyBpbnRlcm5hbCBwYWRkaW5nIGFuZCBhIHNtYWxsZXIgZm9udCBzaXplLiBVc2UgdGhpc1xuLy8gdmFyaWFudCBmb3Igc2l0dWF0aW9ucyBpbiB3aGljaCB0aGUgY29kZSBpcyBzZWNvbmRhcnkgb3Igd291bGQgY2xhc2ggd2l0aFxuLy8gYSBtb3JlIGltcG9ydGFudCBjb2RlIGJsb2NrLlxuLy9cbi8vIEBzZXRfYnkgOmNvbmRlbnNlZD9cblxuLmNvZGUtYmxvY2stLWNvbmRlbnNlZCB7XG4gIG1hcmdpbi10b3A6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG5cbiAgLmNvZGUtYmxvY2tfX2NvZGUge1xuICAgIHBhZGRpbmctYm90dG9tOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZShjb2RlLWJsb2NrLS1jb25kZW5zZWQpO1xuICB9XG5cbiAgJjpub3QoLmNvZGUtYmxvY2stLXdpdGgtaGVhZGVyKSB7XG4gICAgLmNvZGUtYmxvY2tfX2NvZGUge1xuICAgICAgcGFkZGluZy10b3A6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gICAgfVxuICB9XG59XG5cbi8vKlxuLy8gQSBjb2RlIGJsb2NrIHRoYXQgaXMgZnVsbC1ibGVlZCB3aXRoaW4gdGhlIHZpZXdwb3J0LiBUaGlzIHdpbGwgcmVtb3ZlIGFueVxuLy8gdW5uZWNlc3NhcnkgYm9yZGVyIHJhZGl1cyBhbmQgc2lkZSBwYWRkaW5nLyBib3JkZXJzLlxuLy9cbi8vIEBzZXRfYnkgOmZ1bGxfd2lkdGg/XG5cbi5jb2RlLWJsb2NrLS1mdWxsLXdpZHRoIHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcblxuICAuY29udGVudCAmIHtcbiAgICBtYXJnaW4tbGVmdDogbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZShkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4vLypcbi8vIEEgY29kZSBibG9jayB0aGF0IGhhcyBoaWRkZW4gdGhlIGNvbnRhaW5lZCBtYXJrdXAgYW5kIG1vc3Qgb2YgaXRzIFVJLiBVc2Vcbi8vIHRoaXMgZm9yIHRoZSBpbml0aWFsIHN0YXRlIG9mIGEgY29kZSBibG9jayBvbmx5IHdoZW4gaXQgaGFzIGEgZGVtbyBhdHRhY2hlZFxuLy8gdG8gaXQsIG90aGVyd2lzZSB0aGUgY29kZSBibG9jayB3aWxsIGFwcGVhciBhcyBhIHN0cmFuZ2Ugc3RyaXAgb2YgY29sb3Jcbi8vIHdpdGggbm8gaW5kaWNhdGlvbiBvZiBpdHMgcHVycG9zZS4gSGlkZWFibGUgY29kZSBibG9ja3MgKGFzIHNldCBieVxuLy8gYDpoaWRlYWJsZT9gKSBjYW4gaGF2ZSB0aGlzIHN0YXRlIHRvZ2dsZWQgYnkgY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lZFxuLy8gYnV0dG9uLlxuLy9cbi8vIFdoZW4gdGhlIGNvZGUgYmxvY2sgaXMgaGlkZGVuLCBhbGwgb2YgdGhlIFVJIGluIHRoZSBoZWFkZXIgZXhjZXB0IGZvciB0aGVcbi8vIGJ1dHRvbiB0byB0b2dnbGUgdmlzaWJpbGl0eSBpcyBoaWRkZW4gKHRoYXQgaXMsIHRhYnMgdG8gc3dpdGNoIGJldHdlZW5cbi8vIGxhbmd1YWdlcyBhbmQgdGhlIGBzZWxlY3RgIHRvIHN3aXRjaCBiZXR3ZWVuIGRlbW9zLCBpZiB0aGV5IGV4aXN0KS5cbi8vXG4vLyBAc2V0X2J5IDpoaWRkZW4/LCBDb2RlQmxvY2sjdG9nZ2xlXG4vLyBAamF2YXNjcmlwdF9hY3Rpb24gRG9ja3MuQ29kZUJsb2NrLmZvcih0aGlzKS50b2dnbGUoKVxuXG4uY29kZS1ibG9jay0taXMtaGlkZGVuIHtcbiAgJjpub3QoLmNvZGUtYmxvY2stLXdpdGgtZGVtbykge1xuICAgIC5jb2RlLWJsb2NrX190b2dnbGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgICB9XG4gIH1cblxuICAuY29kZS1ibG9ja19fY29udGVudCB7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cblxuXG4vLypcbi8vIFRoaXMgY29tcG9uZW50IHNpdHMgaW4gdGhlIGBjb2RlLWJsb2NrX19oZWFkZXJgIGFuZCB3cmFwcyBhcm91bmQgYm90aCB0aGVcbi8vIGJ1dHRvbiB0byBoaWRlIHRoZSBjb2RlIGJsb2NrIGFuZCBhIGBzZWxlY3RgIHRvIHN3aXRjaCBiZXR3ZWVuIHNldHMgb2Zcbi8vIGNvZGUgdGhhdCBtYXkgYmUgc2hvd24gaW4gdGhpcyBjb2RlIGJsb2NrLCBpZiBlaXRoZXIgb3IgYm90aCBhcmUgcmVxdWlyZWQuXG5cbi5jb2RlLWJsb2NrX19hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgYWxsIGFjdGlvbnMgcmVsYXRlZCB0byB0aGlzIGNvZGUgYmxvY2suIElmIHRoZSBjb2RlIGJsb2NrXG4vLyBpbmNsdWRlcyBib3RoIGhlbHBlciBhbmQgY29tcGlsZWQgbWFya3VwLCB0aGUgaGVhZGVyIHdpbGwgY29udGFpbiB0aGVcbi8vIHRhYmxpc3QgcmVxdWlyZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlbS4gSWYgdGhlIGNvZGUgYmxvY2sgaXMgaGlkZWFibGUsXG4vLyB0aGUgaGVhZGVyIHdpbGwgYWxzbyBpbmNsdWRlIGEgYnV0dG9uIHRvIGhpZGUgaXQuIEZpbmFsbHksIGlmIHRoZXJlIGFyZVxuLy8gbXVsdGlwbGUgc2V0cyBvZiBjb2RlIHRoYXQgbWF5IGJlIHNob3duIGluIHRoaXMgY29kZSBibG9jaywgdGhlIGhlYWRlciB3aWxsXG4vLyBjb250YWluIGEgYHNlbGVjdGAgdG8gc3dpdGNoIGJldHdlZW4gdGhlbS5cblxuLmNvZGUtYmxvY2tfX2hlYWRlciB7XG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgZGVmYXVsdChzcGFjaW5nKTtcbiAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDtcblxuICAvLyBiYWNrZHJvcFxuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG5cbiAgLnNlbGVjdCxcbiAgLnRhYmxpc3Qge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2VcbiAgfVxuXG4gIC50YWJsaXN0IHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cblxuXG4vLypcbi8vIFRoaXMgY29tcG9uZW50IGFsbG93cyB0aGUgY29kZSB0byBzY3JvbGwgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkuXG5cbi5jb2RlLWJsb2NrX19jb2RlLWNvbnRhaW5lciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuXG5cbi8vKlxuLy8gVGhlIHRoaW5nIHRoYXQgdG9nZ2xlcy5cblxuLmNvZGUtYmxvY2tfX3RvZ2dsZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShjb250cm9sKTtcbiAgcGFkZGluZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSAwO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG5cbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXkpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICA+IC5pY29uIHtcbiAgICAvLyBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmtlcik7XG4gICAgbWFyZ2luLXJpZ2h0OiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxufVxuXG4vLypcbi8vIENvbnRhaW5lciBhcm91bmQgdGhlIGNvZGUgYW5kIGhlYWRlci5cblxuLmNvZGUtYmxvY2tfX2NvbnRlbnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zcyBlYXNlO1xuICBtYXgtaGVpZ2h0OiAxNXJlbTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGFjdHVhbCBjb2RlIGZvciB0aGUgYXNzb2NpYXRlZCBkZW1vLiBUaGlzIGlzIHdoZXJlIGFsbCBvZiB0aGUgc3R5bGVzXG4vLyBmb3IgdGhlIHN5bnRheCBoaWdobGlnaHRpbmcgc2hvdWxkIGdvLiBUaGlzIHN1YmNvbXBvbmVudCB3cmFwcyBhcm91bmQgdGhlXG4vLyBjb2RlIGFuZCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgc2lkZSBwYWRkaW5nIHNvIHRoYXQgdGhlIGNvZGUgaXMgc2Nyb2xsYWJsZVxuLy8gd2hlbiBpdCBvdmVyZmxvd3MuXG5cbi5jb2RlLWJsb2NrX19jb2RlIHtcbiAgLy8gYm94IG1vZGVsXG4gIG1hcmdpbjogMDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIC8vIE9ubHkgcHJvdmlkZSBoYWxmIHNwYWNpbmcgb24gdGhlIHRvcCAod2l0aCBtYXRjaGluZyBoYWxmIHNwYWNpbmcgb24gdGhlXG4gIC8vIGJvdHRvbSBvZiB0aGUgaGVhZGVyKS5cbiAgcGFkZGluZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSBkZWZhdWx0KHNwYWNpbmcpIGRlZmF1bHQoc3BhY2luZyk7XG5cbiAgLy8gdHlwZVxuICBAaW5jbHVkZSBmb250LXNpemUoY29kZS1ibG9jayk7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC8vIE5lZWRzIGZ1bGwgcGFkZGluZyB0b3Agd2hlbiB0aGVyZSBpcyBubyBoZWFkZXIuXG4gIC5jb2RlLWJsb2NrOm5vdCguY29kZS1ibG9jay0td2l0aC1oZWFkZXIpOm5vdCguY29kZS1ibG9jay0tY29uZGVuc2VkKTpub3QoLmNvZGUtYmxvY2stLXdpdGgtZGVtbykgJiB7XG4gICAgcGFkZGluZy10b3A6IGRlZmF1bHQoc3BhY2luZyk7XG4gIH1cblxuICAuY29kZS1ibG9jay0td2l0aC1kZW1vOm5vdCguY29kZS1ibG9jay0td2l0aC1oZWFkZXIpICYge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG5cbiAgLy8gRW5zdXJlIHZlcnkgYmFzaWMgc3R5bGVzIGZvciBjb2RlLlxuICA+IGNvZGUge1xuICAgIEBpbmNsdWRlIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG5cblxuLy8gU3ludGF4IGhpZ2hsaWdodGluZyBzdHlsZXMuXG5cbi5obGpzLXZhbHVlLFxuLmhsanMtc3RyaW5nLFxuLmhsanMtcHJlcHJvY2Vzc29yIHtcbiAgY29sb3I6IGNvbG9yKGJsdWUpXG59XG5cbi5obGpzLXN5bWJvbCB7XG4gIGNvbG9yOiBjb2xvcihibHVlLWRhcmtlcik7XG59XG5cbi5obGpzLWF0X3J1bGUsXG4uaGxqcy1hdHRyaWJ1dGUsXG4uaGxqcy1rZXl3b3JkIHtcbiAgY29sb3I6IGNvbG9yKGdyYXktZGFya2VyKTtcbn1cblxuLmhsanMtY29tbWVudCB7XG4gIGNvbG9yOiByZ2JhKGNvbG9yKGdyYXktZGFyayksIDAuNSk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpY1xufVxuXG4uaGxqcy10YWcsXG4uaGxqcy12YXJpYWJsZSB7XG4gIGNvbG9yOiBjb2xvcihncmF5LWRhcmspO1xufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi5jb2RlLWJsb2NrLS13aXRoLWRlbW8ge1xuICAuY29kZS1ibG9ja19fY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IDA7XG5cbiAgICA+IC5jb2RlLWJsb2NrX19oZWFkZXIge1xuICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuICB9XG59XG5cbi5jb2RlLWJsb2NrX19kZW1vIHtcbiAgcGFkZGluZzogZGVmYXVsdChzcGFjaW5nKTtcbn1cblxuLmNvZGUtYmxvY2tfX2RlbW9fX2NvbnRlbnQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uY29kZS1ibG9ja19faWZyYW1lIHtcbiAgaGVpZ2h0OiAxMGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4gIGJvcmRlcjogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbn1cbiIsIi8vICAgICAgIF9fX19fICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgLyAgLzo6XFwgICAgICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIC8gIC9cXFxuLy8gICAgIC8gIC86L1xcOlxcICAgICAvICAvOi9fICAgICAgfCAgfDo6XFwgICAgICAvICAvOjpcXFxuLy8gICAgLyAgLzovICBcXDpcXCAgIC8gIC86LyAvXFwgICAgIHwgIHw6fDpcXCAgICAvICAvOi9cXDpcXFxuLy8gICAvX18vOi8gXFxfX1xcOnwgLyAgLzovIC86L18gIF9ffF9ffDp8XFw6XFwgIC8gIC86LyAgXFw6XFxcbi8vICAgXFwgIFxcOlxcIC8gIC86Ly9fXy86LyAvOi8gL1xcL19fLzo6Ojp8IFxcOlxcL19fLzovIFxcX19cXDpcXFxuLy8gICAgXFwgIFxcOlxcICAvOi8gXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXH5+XFxfX1xcL1xcICBcXDpcXCAvICAvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXC86L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovXG4vLyAgICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gRGVtb1xuLy9cbi8vIEEgY29udGFpbmVyIGFyb3VuZCBhIGRlbW8gKG9yIHNldCBvZiBkZW1vcykgb2YgYSBjb21wb25lbnQuIFRoZSBzdHlsZXMgZm9yXG4vLyB0aGlzIGNvbXBvbmVudCBhcmUgdmVyeSBsaWdodCDigJTCoHRoZXkgYXJlIG1lYW50IG5vdCB0byBpbnRlcmZlcmUgd2l0aCB0aGVcbi8vIGNvbXBvbmVudHMgYmVpbmcgZGVtb25zdHJhdGVkLiBUaGUgSmF2YVNjcmlwdCBjb21wb25lbnQsIGhvd2V2ZXIsIGNvbnRyb2xzXG4vLyBtdWNoIG9mIHRoZSBjaGlsZC1gaWZyYW1lYC1zaWRlIGNvbW11bmljYXRpb24sIGluY2x1ZGluZyBjb21tdW5pY2F0aW5nXG4vLyBoZWlnaHQgY2hhbmdlcywgdXBkYXRpbmcgY2xhc3Nlcywgc2VuZGluZyBtYXJrdXAsIGFuZCBydW5uaW5nIHJlZ2lzdGVyZWRcbi8vIGV2ZW50IGhhbmRsZXJzLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuJGRlbW8tLW1pbi1oZWlnaHQ6IHJlbSgxNjApO1xuXG5cblxuLy8qXG4vLyBBIGNvbnRhaW5lciBmb3IgYSBkZW1vIG9mIGEgY29tcG9uZW50IGFuZCwgb3B0aW9uYWxseSwgdmFyaWF0aW9ucyBvbiB0aGF0XG4vLyBjb21wb25lbnQgdGhhdCB0aGUgZGV2ZWxvcGVyIGhhcyBzcGVjaWZpZWQgdG8gZGlzcGxheSBqb2ludGx5LlxuLy9cbi8vIEBoZWxwZXJcbi8vIDwlIG1hcmt1cCA9IFwiPGRpdiBjbGFzcz0nZm9vJyBzdHlsZT0naGVpZ2h0OiAycmVtOyc+PC9kaXY+XCIgJT5cbi8vIDwlPSBkb2Nrc19kZW1vIDo6T3BlblN0cnVjdC5uZXcoXG4vLyAgIG5hbWU6IFwiZm9vXCIsXG4vLyAgIGNvbXBvbmVudDogOjpPcGVuU3RydWN0Lm5ldyhuYW1lOiBcImZvb1wiLCBtYXJrdXA6IG1hcmt1cCksXG4vLyAgIGpvaW50X3ZhcmlhdGlvbnM6IFtcbi8vICAgICA6Ok9wZW5TdHJ1Y3QubmV3KG5hbWU6IFwiZm9vLS1iYXJcIiwgbWFya3VwOiBtYXJrdXApLFxuLy8gICAgIDo6T3BlblN0cnVjdC5uZXcobmFtZTogXCJmb28tLWJhelwiLCBtYXJrdXA6IG1hcmt1cClcbi8vICAgXVxuLy8gKSAlPlxuXG4uZGVtbyB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHdoaXRlKTtcbiAgbWluLWhlaWdodDogJGRlbW8tLW1pbi1oZWlnaHQ7XG59XG5cblxuXG4vLypcbi8vIEEgc2luZ2xlIGRlbW8gd2l0aGluIHRoZSByZXNpemFibGUgaWZyYW1lLiBTcGFjaW5nIHN0eWxlcyBhcmUgb25seSBhcHBsaWVkIHRvXG4vLyBzaWJsaW5ncyBvZiBhbm90aGVyIGRlbW8gc2VjdGlvbiBzbyB0aGF0IHRoZSBzZXBhcmF0aW9uIG9ubHkgYXBwbGllcyB0byB0aGVcbi8vIHNlY29uZCB0aHJvdWdoIGxhc3QgZWxlbWVudCBvZiBhIGpvaW50IGRlbW8uXG4vL1xuLy8gVGhlIEphdmFTY3JpcHQgY29tcG9uZW50IHdpbGwgZW5zdXJlIHRoYXQgdGhlIG1pbmltdW0gaGVpZ2h0IG5vdGVkIGFib3ZlXG4vLyB3aWxsIGJlIGV2ZW5seSBhbGxvY2F0ZWQgYW1vbmcgdGhlIGBkZW1vX19zZWN0aW9uYHMgd2l0aGluIGEgYGRlbW9gLlxuLy9cbi8vIFlvdSBjYW4gbWFrZSB1c2Ugb2YgdGhlIGhlbHBlcnMgaW4gYGRlbW8taGVscGVycy5zY3NzYCB0byBwcm92aWRlIGN1c3RvbVxuLy8gc3R5bGVzIGZvciBzZWN0aW9ucyBjb250YWluaW5nIGdpdmVuIGNvbXBvbmVudHMuIFRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudFxuLy8gd2lsbCBmaW5kIHRoZSBsYXN0IHNlY3Rpb24gYW5kIGFzc2lnbiBpdHMgYmFja2dyb3VuZCBjb2xvciB0byB0aGVcbi8vIGJhY2tncm91bmQgb2YgdGhlIGVudGlyZSBkZW1vIHNvIHRoYXQgdGhlcmUgaXMgbm8gZmxhc2ggb2Ygd2hpdGUgb24gdGhlXG4vLyBib3R0b20gb2YgdGhlIGRlbW8gZHVyaW5nIHJlc2l6ZXMuXG5cbi5kZW1vX19zZWN0aW9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG5cbiAgfiAuZGVtb19fc2VjdGlvbiB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGNvbG9yKGdyYXktbGlnaHQpO1xuICB9XG59XG5cblxuXG4vLypcbi8vIEEgZGVzY3JpcHRvciBmb3IgdGhlIGN1cnJlbnQgc2VjdGlvbidzIGRlbW8uIFRoaXMgaXMgcHJvdmlkZWQgaW4gb3JkZXIgdG9cbi8vIGRpc3Rpbmd1aXNoIHZhcmlhbnRzIHdpdGhpbiBhIGpvaW50IGRlbW8uXG5cbi5kZW1vX19oZWFkZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKGhhbGYoZGVmYXVsdChzcGFjaW5nKSkpO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpIGRlZmF1bHQoc3BhY2luZykgMDtcblxuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgX19fX18gICAgICAgIF9fXyAgICAgICAgX19fX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgL19fL3wgICAgICAgLyAgL1xcICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAvICAvOjpcXCAgICAgIC8gIC9cXCAgICAgIC8gIC86OlxcXG4vLyAgICAgIC8gIC86L18gICAgICB8ICB8OnwgICAgICAvICAvOjpcXCAgICAgICAgICAgICAgIC8gIC86OlxcICAgIC8gIC86L1xcOlxcICAgIC8gIC86L18gICAgLyAgLzovXFw6XFxcbi8vICAgICAvICAvOi8gL1xcICAgICB8ICB8OnwgICAgIC8gIC86L1xcOlxcX19fICAgICBfX18gIC8gIC86L1xcOlxcICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcICAvICAvOi8gIFxcOlxcXG4vLyAgICAvICAvOi8gLzovXyAgX198X198OnwgICAgLyAgLzovfi86L19fL1xcICAgLyAgL1xcLyAgLzovICBcXDpcXC9fXy86LyBcXF9fXFw6fC8gIC86LyAvOi9fL19fLzovIFxcX19cXDp8XG4vLyAgIC9fXy86LyAvOi8gL1xcL19fLzo6OjpcXF9fXy9fXy86LyAvOi9cXCAgXFw6XFwgLyAgLzovX18vOi8gXFxfX1xcOlxcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcICBcXDpcXCAvICAvOi9cbi8vICAgXFwgIFxcOlxcLzovIC86LyAgIH5cXH5+XFw6Ojo6fCAgXFw6XFwvOi8gIFxcICBcXDpcXCAgLzovXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAgLzovXG4vLyAgICBcXCAgXFw6Oi8gLzovICAgICB8fn58Onx+fiBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcLzovICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgICB8ICB8OnwgICAgXFwgIFxcOlxcICAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOjovXG4vLyAgICAgIFxcICBcXDo6LyAgICAgICB8ICB8OnwgICAgIFxcICBcXDpcXCAgICAgXFxfX1xcLyAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvXG4vLyAgICAgICBcXF9fXFwvICAgICAgICB8X198LyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBFeHBsb2RlZFxuLy9cbi8vIEFuIGV4cGxvZGVkIHZpZXcgb2YgYSBnaXZlbiBET00gc3RydWN0dXJlIHRoYXQgY2FuIGJlIGZyZWVseSByb3RhdGVkLiBJdFxuLy8gYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQgYXMgaXQgaXMgcmVuZGVyZWQsXG4vLyBoZWxwaW5nIHRoZW0gbGVhcm4gYWJvdXQgc3ViY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlIG92ZXJhbGwgc3RydWN0dXJlLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuLy8qXG4vLyBUaGlzIGlzIHRoZSBiYXNlIGNvbXBvbmVudCBmb3IgYW4gZXhwbG9zaW9uLiBJdCBjb250YWlucyB0aGUgc291cmNlIG1hcmt1cFxuLy8gYW5kIHRoZSBleHBsb2RlZCByZXByZXNlbnRhdGlvbiwgYXMgd2VsbCBhcyBjb21tdW5pY2F0ZXMgb3ZlcmFsbCBzdGF0ZXMgb2Zcbi8vIHRoZSBjb21wb25lbnQgdG8gc3ViY29tcG9uZW50cy5cbi8vXG4vLyBAaGVscGVyXG4vLyA8JT0gZG9ja3NfZXhwbG9kZWQgbWFya3VwOiAlUShcbi8vICAgPGRpdiBjbGFzcz1cImZvb1wiIHN0eWxlPVwicGFkZGluZzogMWVtO1wiPlxuLy8gICAgIDxkaXYgY2xhc3M9XCJmb29fX2JhclwiIHN0eWxlPVwiaGVpZ2h0OiA1ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbi8vICAgICAgIDxkaXYgY2xhc3M9XCJmb29fX2Jhcl9fYmF6XCIgc3R5bGU9XCJ3aWR0aDogNTAlOyBoZWlnaHQ6IDEwMCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwO1wiPjwvZGl2PlxuLy8gICAgICAgPGRpdiBjbGFzcz1cImZvb19fYmFyX19iYXpcIiBzdHlsZT1cIndpZHRoOiA1MCU7IGhlaWdodDogMTAwJTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDUwJTtcIj48L2Rpdj5cbi8vICAgICA8L2Rpdj5cbi8vICAgPC9kaXY+XG4vLyApICU+XG5cbi5leHBsb2RlZCB7fVxuXG4uZXhwbG9kZWQtLWlzLWJlaW5nLWluaXRpYWxpemVkIHtcbiAgLmV4cGxvZGVkX19wYW5lIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZTtcbiAgfVxufVxuXG5cblxuLmV4cGxvZGVkX19zb3VyY2UsXG4uZXhwbG9kZWRfX3N0cnVjdHVyZSB7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZykgZG91YmxlKGRlZmF1bHQoc3BhY2luZykpO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciB0aGUgb3JpZ2luYWwgc291cmNlIG1hcmt1cCBmb3IgdGhlIGNvbXBvbmVudC4gVGhpcyBpc1xuLy8ga2VwdCBhcm91bmQgc28gdGhhdCBlYWNoIHBhbmUgY2FuIGJlIGFzc29jaWF0ZWQgdG8gYSBzb3VyY2UgRE9NIG5vZGUgZm9yXG4vLyBhbnkgY29uc3VtZXIgb2YgdGhlIGV4cGxvc2lvbiBwYW5lIHNlbGVjdGlvbiB0byBkaXNwbGF5IHNvdXJjZSBzdHJ1Y3R1cmVcbi8vIGRldGFpbHMuXG5cbi5leHBsb2RlZF9fc291cmNlIHt9XG5cbi8vKlxuLy8gQSBjb250YWluZXIgdGhhdCB3cmFwcyBleGFjdGx5IGFyb3VuZCB0aGUgc291cmNlIG1hcmt1cC4gVGhpcyBleHRyYVxuLy8gY29udGFpbmVyIChjb3JyZXNwb25kaW5nIHRvIHRoZSBzdHJ1Y3R1cmUncyBgZXhwbG9kZWRfX3N0cnVjdHVyZV9fY29udGVudGApXG4vLyBpcyByZXF1aXJlZCB0byBzaW1wbGlmeSBhYnNvbHV0ZSBwb3NpdGlvbmluZyBjYWxjdWxhdGlvbnMgZm9yIHRoZVxuLy8gSmF2YVNjcmlwdCBjb21wb25lbnQuXG5cbi5leHBsb2RlZF9fc291cmNlX19jb250ZW50IHt9XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgYXJvdW5kIHRoZSBleHBsb2RlZCByZXByZXNlbnRhdGlvbi4gVGhpcyBjb250YWluZXIgcHJvdmlkZXNcbi8vIHRoZSBwZXJzcGVjdGl2ZSByZXF1aXJlZCB0byBtYWtlIHRoZSBjb21wb25lbnQgdGhyZWUtZGltZW5zaW9uYWwuXG5cbi5leHBsb2RlZF9fc3RydWN0dXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwZXJzcGVjdGl2ZTogMjAwMHB4O1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgdGhhdCB3cmFwcyBleGFjdGx5IGFyb3VuZCB0aGUgZXhwbG9kZWQgc3RydWN0dXJlLiBUaGlzIGV4dHJhXG4vLyBjb250YWluZXIgZXhpc3RzIHNvIHRoYXQgYGV4cGxvZGVkX19zdHJ1Y3R1cmVgIGNhbiBwcm92aWRlIHNvbWUgcGFkZGluZy9cbi8vIGhvcml6b250YWwgY2VudGVyaW5nIG9mIHRoZSBleHBsb2RlZCBzdHJ1Y3R1cmUgd2hpbGUgYWxzbyBwcm92aWRpbmcgYVxuLy8gc2ltcGxlIHJlbGF0aXZlIGNvbnRhaW5lciAodGhpcyBzdWJjb21wb25lbnQpIGZyb20gd2hpY2ggdG8gbWFrZSBhYnNvbHV0ZVxuLy8gcG9zaXRpb25pbmcgY2FsY3VsYXRpb25zLlxuXG4uZXhwbG9kZWRfX3N0cnVjdHVyZV9fY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIGFsbCBjb250cm9scyAocmFuZ2Ugc2xpZGVycykgdGhhdCBjYW4gYmUgdXNlZCB0b1xuLy8gbWFuaXB1bGF0ZSB0aGUgY29tcG9uZW50LlxuXG4uZXhwbG9kZWRfX2NvbnRyb2wtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBtYXJnaW46IDNyZW0gbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSkgMDtcbn1cblxuLy8qXG4vLyBBIGNvbnRhaW5lciBmb3IgYSBzaW5nbGUgY29udHJvbCB0aGF0IG1hbmlwdWxhdGVzIHRoZSBjb21wb25lbnQuXG5cbi5leHBsb2RlZF9fY29udHJvbCB7XG4gIGZsZXg6IDEgMSAwO1xuICBtYXJnaW4tbGVmdDogZGVmYXVsdChzcGFjaW5nKTtcblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIHNpbmdsZSBwYW5lIHJlcHJlc2VudGluZyBhIERPTSBub2RlIGluIHRoZSBzb3VyY2UgbWFya3VwLiBUaGVzZSBwYW5lcyBhcmVcbi8vIGFic29sdXRlbHkgcG9zaXRpb25lZCBieSB0aGUgSmF2YVNjcmlwdCBwYXJ0IG9mIHRoaXMgY29tcG9uZW50cyBhbmQsXG4vLyBsaWtld2lzZSwgYXJlIHJvdGF0ZWQgaW4gdGhyZWUtZGltZW5zaW9uYWwgc3BhY2UgYXMgdGhlIHVzZXIgZHJhZ3Mgb3ZlciB0aGVcbi8vIGNvbXBvbmVudC5cblxuLmV4cGxvZGVkX19wYW5lIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcblxuICAvLyBiYWNrZHJvcFxuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHVpLWNvbG9yKGdyYXksIGRhcmtlciksIDAuNik7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodWktY29sb3IoZ3JheSksIDAuNSk7XG5cbiAgLy8gdHJhbnNpdGlvblxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3MgZWFzZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihibHVlKTtcbiAgfVxufVxuXG4vLypcbi8vIFRoZSBKYXZhU2NyaXB0IGFkZHMgdGhpcyBzdGF0ZSB0byBwYW5lcyB0aGF0IGhhdmUgYmVlbiBjbGlja2VkLyB0YXBwZWQgYnlcbi8vIHRoZSB1c2VyLiBUaGUgYWN0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhY3RpdmUgcGFuZSBpcyBkZWZlcnJlZCB0byBvdGhlclxuLy8gY29tcG9uZW50cyAodGhpcyBpcyBkb25lIGJ5IGZpcmluZyBhbiBldmVudCB3aXRoIGEgcmVmZXJlbmNlIHRvIHRoaXNcbi8vIHNlbGVjdGVkIHBhbmUpLlxuLy9cbi8vIEBkZW1vX3R5cGUgbm9uZVxuLy8gQHNldF9ieSBFeHBsb2RlZC5jbGlja1xuXG4uZXhwbG9kZWRfX3BhbmUtLWlzLXNlbGVjdGVkIHtcbiAgJiwgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdWktY29sb3IoYmx1ZSwgZGFyayk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiLmZpZWxkIHtcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xufVxuXG4kZmllbGQtLXN3aXRjaC0tc2l6ZTogbXVsdGlwbHkoMS41LCBkZWZhdWx0KHNwYWNpbmcpKTtcblxuLmZpZWxkLS1zd2l0Y2gge1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gID4gLmxhYmVsIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZy1sZWZ0OiBtdWx0aXBseSgxLjUsICRmaWVsZC0tc3dpdGNoLS1zaXplKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6ICRmaWVsZC0tc3dpdGNoLS1zaXplO1xuICAgIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogbXVsdGlwbHkoJGZpZWxkLS1zd2l0Y2gtLXNpemUsIDAuNyk7XG4gICAgICB3aWR0aDogbXVsdGlwbHkoMC4zLCAkZmllbGQtLXN3aXRjaC0tc2l6ZSk7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGhhbGYoJGZpZWxkLS1zd2l0Y2gtLXNpemUpO1xuICAgICAgbGVmdDogaGFsZigkZmllbGQtLXN3aXRjaC0tc2l6ZSk7XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNjAlKSByb3RhdGUoNDVkZWcpO1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaGVpZ2h0OiAkZmllbGQtLXN3aXRjaC0tc2l6ZTtcbiAgICAgIHdpZHRoOiAkZmllbGQtLXN3aXRjaC0tc2l6ZTtcbiAgICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXkpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwOyBsZWZ0OiAwO1xuICAgICAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICA+IC5maWVsZF9fc3dpdGNoOmNoZWNrZWQgKyAubGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihibHVlKTtcbiAgfVxuXG4gID4gLmZpZWxkX19zd2l0Y2g6Y2hlY2tlZCArIC5sYWJlbDphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICA+IC5maWVsZF9fc3dpdGNoIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgb3BhY2l0eTogMC4xO1xuICB9XG5cbiAgKyAuZmllbGQtLXN3aXRjaCB7XG4gICAgbWFyZ2luLXRvcDogZGVmYXVsdChzcGFjaW5nKTtcbiAgfVxufVxuXG4uZmllbGRfX2ljb24ge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZm9udC1zaXplOiAwO1xuXG4gID4gLmljb24ge1xuICAgIEBpbmNsdWRlIGljb24tLXJlY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgfVxufVxuXG4uZmllbGRfX2lucHV0IHtcbiAgZmxleDogMSAxIGF1dG87XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IGRlZmF1bHQoY29udHJvbC1zaXplKTtcbiAgZm9udC1zaXplOiAxLjFyZW07XG4gIEBpbmNsdWRlIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHk7XG5cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VyKSwgMC41KTtcbiAgfVxuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogcmdiYSh1aS1jb2xvcihncmF5LCBkYXJrZXIpLCAwLjUpO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxufVxuXG4iLCIvLypcbi8vIEBwYXR0ZXJuIFBhZ2UgSGVhZGVyXG4vLyBAZ3JvdXAgUGFydGlhbHNcbi8vXG4vLyBBIGdyb3VwIG9mIGhlYWRpbmdzIGFuZCBvdGhlciBwYWdlLWxldmVsIGluZm9ybWF0aW9uIHRoYXQgYXBwZWFycyBhdCB0aGVcbi8vIHRvcCBvZiBhIGdpdmVuIHBhZ2Ugb3Igc2VjdGlvbi5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBAbWFya3VwXG4vLyA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbi8vICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC0tdmVydGljYWxseS1jZW50ZXJlZFwiPlxuLy8gICAgIDxkaXYgY2xhc3M9XCJncmlkX19pdGVtXCI+XG4vLyAgICAgICA8aDEgY2xhc3M9XCJ0eXBlIHR5cGUtLWhlYWRpbmcgdHlwZS0taGVhZGluZy0xXCI+VGhlIHRpdGxlPC9oMT5cbi8vICAgICA8L2Rpdj5cbi8vXG4vLyAgICAgPGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gZ3JpZF9faXRlbS0tbm8tZmxleFwiPlxuLy8gICAgICAgPGJ1dHRvbiBjbGFzcz1cImRvY2tzLWJ1dHRvbiBkb2Nrcy1idXR0b24tLWRhcmtcIj5BY3Rpb248L2J1dHRvbj5cbi8vICAgICA8L2Rpdj5cbi8vICAgPC9kaXY+XG4vLyA8L2hlYWRlcj5cblxuLnBhZ2UtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZyk7XG4gIHBhZGRpbmctYm90dG9tOiBkZWZhdWx0KHNwYWNpbmcpO1xuICBtaW4taGVpZ2h0OiByZW0oNjYpO1xuXG4gIC50eXBlLS1oZWFkaW5nLTEge1xuICAgIG1hcmdpbjogLTAuNWVtIDA7XG4gIH1cbn1cbiIsIiRpbmxpbmUtZ3JvdXAtLXNwYWNpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG5cbi5pbmxpbmUtZ3JvdXAge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKCRpbmxpbmUtZ3JvdXAtLXNwYWNpbmcpO1xuICBtYXJnaW4tYm90dG9tOiBuZWdhdGl2ZSgkaW5saW5lLWdyb3VwLS1zcGFjaW5nKTtcbn1cblxuLmlubGluZS1ncm91cF9faXRlbSB7XG4gIG1hcmdpbi1yaWdodDogJGlubGluZS1ncm91cC0tc3BhY2luZztcbiAgbWFyZ2luLWJvdHRvbTogJGlubGluZS1ncm91cC0tc3BhY2luZztcbn1cbiIsIi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAgX19fICAgICAgICAvICAvXFwgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAvICAvOi9fICAgICAgLyAgL1xcXG4vLyAgICBfX18gICAgIF9fXyAgLyAgLzovICAgICAvICAvOi8gL1xcICAgIC8gIC86L1xuLy8gICAvX18vXFwgICAvICAvXFwvX18vOjpcXCAgICAvICAvOi8gLzo6XFwgIC8gIC86L1xuLy8gICBcXCAgXFw6XFwgLyAgLzovXFxfX1xcL1xcOlxcX18vX18vOi8gLzovXFw6XFwvICAvOjpcXFxuLy8gICAgXFwgIFxcOlxcICAvOi8gICAgXFwgIFxcOlxcL1xcICBcXDpcXC86L34vOi9fXy86L1xcOlxcXG4vLyAgICAgXFwgIFxcOlxcLzovICAgICAgXFxfX1xcOjovXFwgIFxcOjovIC86L1xcX19cXC8gIFxcOlxcXG4vLyAgICAgIFxcICBcXDo6LyAgICAgICAvX18vOi8gIFxcX19cXC8gLzovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAvX18vOi8gICAgICAgIFxcX19cXC9cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIExpc3Rcbi8vXG4vLyBBIGxpc3QgYWxsb3dzIHlvdSB0byBwcmVzZW50IGEgc2V0IG9mIHNlbGVjdGFibGUgaXRlbXMgdmVydGljYWxseS4gVGhlc2Vcbi8vIGxpc3RzIGNhbiBiZSBiZSBzZXBhcmF0ZWQgaW50byBhbnkgbnVtYmVyIG9mIHN1Ymxpc3RzLCBhbmQgdHdvIGxldmVscyBvZlxuLy8gc3ViaGVhZGluZ3MgYXJlIGF2YWlsYWJsZSAoc28sIHlvdSBjYW4gaGF2ZSBhIHN1Ymxpc3Qgd2l0aGluIGEgc3VibGlzdCkuXG4vL1xuLy8gVGhlIHN1Ymxpc3RzIGNhbiBvcHRpb25hbGx5IGFsbG93IGEgc3ViaGVhZGluZyB0byB0b2dnbGUgdGhlIHZpc2liaWxpdHkgb2Zcbi8vIHRoZSBhc3NvY2lhdGVkIHN1Ymxpc3QuIEl0IGFsc28gc3VwcG9ydHMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIHRoZSBjb250ZW50c1xuLy8gb2YgYSBsaXN0IHRvIG9ubHkgaXRlbXMgbWF0Y2hpbmcgYSBnaXZlbiBzdHJpbmcsIGhpZGluZyBzdWJoZWFkaW5ncyBhc1xuLy8gbmVjZXNzYXJ5LlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuLy8qXG4vLyBUaGUgY29yZSBjb250YWluZXIgZm9yIGEgbGlzdC4gTGlzdCBpdGVtcyBjYW4gZ28gZGlyZWN0bHkgaW4gdGhpcyBjb250YWluZXJcbi8vIG9yLCBpZiB5b3Ugd2FudCB0byBwcm92aWRlIHRvZ2dsZS1hYmxlIG9yIGZpbHRlci1hYmxlIHN1Ymxpc3RzLCB3aXRoaW4gYVxuLy8gc3VibGlzdC5cblxuLmxpc3Qge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMCBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgLnR5cGUtLWhlYWRpbmcge1xuICAgIHBhZGRpbmctbGVmdDogZGVmYXVsdChzcGFjaW5nKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBkZWZhdWx0KHNwYWNpbmcpO1xuICB9XG5cbiAgLnBvcG92ZXIgJiB7XG4gICAgbWFyZ2luLWJvdHRvbTogZGVmYXVsdChzcGFjaW5nKTtcbiAgfVxufVxuXG4vLypcbi8vIEFuIGluZGl2aWR1YWwgaXRlbSB3aXRoaW4gYSBsaXN0LiBUaGVzZSBpdGVtcyBoYXZlIGhvdmVyLCBmb2N1cywgYW5kIGFjdGl2ZVxuLy8gc3RhdGVzIHNvIHRoYXQgaXQgaXMgY2xlYXIgd2hhdCBpdGVtIGlzIGFjdGlvbmFibGUvIGJlaW5nIGFjdGlvbmVkLlxuXG4ubGlzdF9faXRlbSB7XG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogcXVhcnRlcihkZWZhdWx0KHNwYWNpbmcpKSBkZWZhdWx0KHNwYWNpbmcpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyB0eXBlXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgfVxuXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihibHVlKTtcbiAgICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbiAgfVxufVxuXG4vLypcbi8vIEFuIGl0ZW0gdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlIEZvciBleGFtcGxlLCBpbiB0aGUgc2lkZWJhciwgdGhpcyBjbGFzcyBpc1xuLy8gdXNlZCBmb3IgdGhlIGl0ZW0gcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50bHktYWN0aXZlIHBhdHRlcm4uXG5cbi5saXN0X19pdGVtLS1pcy1hY3RpdmUge1xuICAmLFxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihibHVlKTtcbiAgICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbiAgfVxufVxuXG4vLypcbi8vIEEgbGlzdCBpdGVtIHRoYXQgaXMgaW5kZW50ZWQgb24gdGhlIGxlZnQgdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyByZWxhdGVkIHRvXG4vLyB0aGUgY2xvc2VzdCwgbm9uLWluZGVudGVkIGl0ZW0gYWJvdmUgaXQuXG5cbi5saXN0X19pdGVtLS1pbmRlbnRlZCB7XG4gIHBhZGRpbmctbGVmdDogY2FsYygje2RlZmF1bHQoc3BhY2luZyl9ICsgMmNoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiBjYWxjKCN7ZGVmYXVsdChzcGFjaW5nKX0gKyAxY2gpO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHVpLWNvbG9yKGJsYWNrKSwgMC4wNyk7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQ6YmVmb3JlIHtcbiAgICBoZWlnaHQ6IDg1JTtcbiAgfVxuXG4gIC5saXN0X19pdGVtOm5vdCgubGlzdF9faXRlbS0taW5kZW50ZWQpICsgJjpiZWZvcmUge1xuICAgIHRvcDogMTUlO1xuICAgIGhlaWdodDogODUlO1xuICB9XG59XG5cbi8vKlxuLy8gQSBzdWJzZXQgb2YgaXRlbXMgdGhhdCBoYXZlIHRoZWlyIG93biBoYWRpbmcgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gVGhpc1xuLy8gc3ViY29tcG9uZW50IGNhbiBjb250YWluIGFueSBudW1iZXIgb2YgaXRlbXMgYW5kLyBvciBvdGhlciBzdWJsaXN0cy4gVGhpc1xuLy8gZ3JvdXBpbmcgYWxzbyBhbGxvd3MgdGhlIFtgRmlsdGVyYWJsZWBdKEBsaW5rIGZpbHRlcmFibGUpIGNvbXBvbmVudCB0b1xuLy8gYWNjdXJhdGVseSBoaWRlIHN1YnNldHMgb2YgdGhlIGxpc3QsIGluY2x1ZGluZyBoZWFkaW5ncyB3aXRoaW4gYSBncm91cFxuLy8gd2hlcmUgYWxsIGl0ZW1zIGFyZSBoaWRkZW4uXG5cbi5saXN0X19ncm91cCB7fVxuXG5cblxuLy8qXG4vLyBBIGhvcml6b250YWwgbGlzdCBvZiBsaW5rcyBzZXBhcmF0ZWQgYnkgc2xhc2hlcy5cblxuLmxpbmstbGlzdCB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuXG4gID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgICY6YWZ0ZXIge1xuICAgICAgJGxpbmstbGlzdF9faXRlbS0tc2VwYXJhdG9yLWhlaWdodDogODAlO1xuXG4gICAgICBjb250ZW50OiBcIlwiO1xuXG4gICAgICAvLyBwb3NpdGlvblxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBoYWxmKDEwMCUgLSAkbGluay1saXN0X19pdGVtLS1zZXBhcmF0b3ItaGVpZ2h0KTtcbiAgICAgIHJpZ2h0OiAtMXB4O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTVkZWcpO1xuXG4gICAgICAvLyBib3ggbW9kZWxcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaGVpZ2h0OiAkbGluay1saXN0X19pdGVtLS1zZXBhcmF0b3ItaGVpZ2h0O1xuXG4gICAgICAvLyBiYWNrZHJvcFxuICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSh1aS1jb2xvcihncmF5LCBkYXJrZXN0KSwgMC4xKTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQ6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8qXG4vLyBBbiBpbmRpdmlkdWFsIGxpc3Qgd2l0aGluIGEgbGluayBsaXN0LiBUaGlzIGNsYXNzIHNob3VsZCBnbyBvbiB0aGUgYWN0dWFsXG4vLyBhbmNob3IgKG9yIGBidXR0b25gLCBpZiB0aGVyZSBpcyBubyByZWFzb25hYmxlIGBocmVmYCkgZWxlbWVudCBzbyB0aGF0XG4vLyB0aGVyZSBpcyBhcyBsYXJnZSBhIGhpdCB0YXJnZXQgYXMgcG9zc2libGUuXG4vL1xuLy8gRWFjaCBpdGVtIChleGNlcHQgZm9yIHRoZSBsYXN0IG9uZSkgaXMgZ2l2ZW4gYSBzbWFsbCBzZXBhcmF0b3Igc28gdGhhdCBpdCBpc1xuLy8gY2xlYXIgd2hlcmUgdGhlIGhpdCBhcmVhcyBlbmQuIFRoaXMgaXMgcGxhY2VkIG9uIHRoZSBjb250YWluaW5nIGBsaWAgc2luY2Vcbi8vIHRoZSBgbGluay1saXN0X19pdGVtYCBjYW4gYmUgYSBgYnV0dG9uYC5cbi8vXG4vLyBJbiB0aGUgZGFyayB0aGVtZSwgdGhlIGNvbG9ycyBmb3IgZWFjaCBsaXN0IGl0ZW0gaW52ZXJ0LlxuXG4ubGluay1saXN0X19pdGVtIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiBxdWFydGVyKGRlZmF1bHQoc3BhY2luZykpIGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG5cbiAgLy8gYmFja2Ryb3BcbiAgQGluY2x1ZGUgcmVtb3ZlLWJyb3dzZXItc3R5bGluZztcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvcGFjaXR5OiAwLjY7XG5cbiAgLy8gdHlwZVxuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXIpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2U7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cblxuXG4vLypcbi8vIEEgbGlzdCB0aGF0IHNpbXBseSBhcnJhbmdlcyB0aGUgY29udGFpbmVkIGBsaWBzIHdpdGggc29tZSBzcGFjaW5nIGJldHdlZW5cbi8vIHRoZW0uXG5cbi51bnN0eWxlZC1saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gID4gbGkge1xuICAgIG1hcmdpbjogZG91YmxlKGRlZmF1bHQoc3BhY2luZykpIDA7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgL19fL1xcICAgICAgX19fICAgICAgIC9fXy98ICAgICAgX19fICAgICAgICAvX18vXFxcbi8vICAgICAgfCAgfDo6XFwgICAgLyAgL1xcICAgICB8ICB8OnwgICAgIC8gIC9cXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgfCAgfDp8OlxcICAvICAvOi8gICAgIHwgIHw6fCAgICAvICAvOi8gICAgICAgIFxcICBcXDpcXFxuLy8gICAgX198X198OnxcXDpcXC9fXy86OlxcICAgX198X198OnwgICAvX18vOjpcXCAgICBfX19fX1xcX19cXDpcXFxuLy8gICAvX18vOjo6OnwgXFw6XFxfX1xcL1xcOlxcXy9fXy86Ojo6XFxfX19cXF9fXFwvXFw6XFxfXy9fXy86Ojo6Ojo6OlxcXG4vLyAgIFxcICBcXDpcXH5+XFxfX1xcLyAgXFwgIFxcOlxcL1xcIH5cXH5+XFw6Ojo6LyAgXFwgIFxcOlxcL1xcICBcXDpcXH5+XFx+flxcL1xuLy8gICAgXFwgIFxcOlxcICAgICAgICAgXFxfX1xcOjovICB8fn58Onx+fiAgICBcXF9fXFw6Oi9cXCAgXFw6XFwgIH5+flxuLy8gICAgIFxcICBcXDpcXCAgICAgICAgL19fLzovICAgfCAgfDp8ICAgICAgL19fLzovICBcXCAgXFw6XFxcbi8vICAgICAgXFwgIFxcOlxcICAgICAgIFxcX19cXC8gICAgfCAgfDp8ICAgICAgXFxfX1xcLyAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgfF9ffC8gICAgICAgICAgICAgICAgIFxcX19cXC9cbi8vXG4vLyBNaXhpbnMgYXJlIHVzZWQgdG8gaW5jbHVkZSBjb21tb24gZnVuY3Rpb25hbGl0eSBpbiBjb21wb25lbnRzLlxuLy8gVXNlIHRoZXNlIG92ZXIgcGxhY2Vob2xkZXJzIGV2ZW4gd2hlbiBubyB2YXJpYWJsZXMgYXJlIHJlcXVpcmVkOlxuLy8gYEBleHRlbmRzYCBpcyBtb3JlIHRyb3VibGUgdGhhbiBpdCdzIHdvcnRoLCBhbmQgcHJvcGVyIGNvbXByZXNzaW9uXG4vLyBtb3N0bHkgc29sdmVzIHRoZSBwcm9ibGVtIG9mIGR1cGxpY2F0ZWQgbWFya3VwIGZyb20gbWl4aW5zLlxuXG4vLyAgICBfX18gX19fIF9fXyBfX18gXyAgICAgIF9fXyAgIF9fXG4vLyAgIHwgICBcXF8gXy8gX198IF8gXFwgfCAgICAvX1xcIFxcIC8gL1xuLy8gICB8IHwpIHwgfFxcX18gXFwgIF8vIHxfXyAvIF8gXFwgViAvXG4vLyAgIHxfX18vX19ffF9fXy9ffCB8X19fXy9fLyBcXF9cXF98XG4vL1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQbGFjZWhvbGRlcnMgcHJvdmlkaW5nIGNvbW1vbiBkaXNwbGF5LyBwb3NpdGlvbmluZyBwYXR0ZXJucy5cblxuQG1peGluIGNvbXBvc2l0ZS1sYXllciB7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG5AbWl4aW4gY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTsgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuQG1peGluIGNvdmVyLWFsbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xufVxuXG5AbWl4aW4gcmVtb3ZlLWJyb3dzZXItc3R5bGluZyB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xufVxuXG5cblxuLy8gICAgX19fX18gX19fICBfICAgXyAgX19fIF8gIF9cbi8vICAgfF8gICBfLyBfIFxcfCB8IHwgfC8gX198IHx8IHxcbi8vICAgICB8IHx8IChfKSB8IHxffCB8IChfX3wgX18gfFxuLy8gICAgIHxffCBcXF9fXy8gXFxfX18vIFxcX19ffF98fF98XG4vL1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQbGFjZWhvbGRlcnMgdG8gaGVscCB3aXRoIHRvdWNoIGRldmljZXMuXG5cbkBtaXhpbiB0b3VjaC1zY3JvbGwge1xuICBvdmVyZmxvdzogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG5cblxuLy8gICAgX19fX19fXyAgIF9fX19fIF9fX1xuLy8gICB8XyAgIF9cXCBcXCAvIC8gXyBcXCBfX3xcbi8vICAgICB8IHwgIFxcIFYgL3wgIF8vIF98XG4vLyAgICAgfF98ICAgfF98IHxffCB8X19ffFxuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGxhY2hvbGRlcnMgdG8gYWRkIG5pY2UgZmVhdHVyZXMgdG8gdGV4dCBjb250ZW50LlxuXG5AbWl4aW4gd29yZC13cmFwIHtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgaHlwaGVuczogYXV0bztcbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4iLCIuZGV0YWlscy1zaGVldCB7XG4gIG1heC13aWR0aDogOTAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTAlOyBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogMC40cmVtO1xuICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKGNvbG9yKGJsYWNrKSwgMC4zKTtcbiAgei1pbmRleDogMjA7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kZXRhaWxzLXNoZWV0LS1pcy1hY3RpdmUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmRldGFpbHMtc2hlZXRfX292ZXJsYXkge1xuICBiYWNrZ3JvdW5kOiByZ2JhKGNvbG9yKGJsYWNrKSwgMC45KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7IGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE5O1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGV0YWlscy1zaGVldF9fb3ZlcmxheS0taXMtYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuLmRldGFpbHMtc2hlZXRfX3NlY3Rpb24ge1xuICBwYWRkaW5nOiAxcmVtO1xuXG4gICsgLmRldGFpbHMtc2hlZXRfX3NlY3Rpb24ge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBjb2xvcihza3ktZGFyayk7XG4gIH1cbn1cblxuLmRldGFpbHMtc2hlZXRfX25hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHNreS1saWdodCk7XG4gIHBhZGRpbmc6IDAuMXJlbSAwLjI1ZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgY29sb3I6IGNvbG9yKHNsYXRlLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2U7XG4gIG1hcmdpbjogMDtcbn1cblxuLmRldGFpbHMtc2hlZXRfX3N1YnRpdGxlIHtcbiAgbWFyZ2luOiAwIDAgMC41cmVtO1xuICBmb250LXNpemU6IDAuNnJlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IGNvbG9yKHNsYXRlLWxpZ2h0KTtcbiAgb3BhY2l0eTogMC4zO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuIiwiLy8qXG4vLyBAcGF0dGVybiBOb3RpY2Vcbi8vXG4vLyBBIHNpbXBsZSwgY29sb3JlZCBjb250YWluZXIgYXJvdW5kIHRoYXQgZW1waGFzaXplcyB0aGUgY29udGFpbmVkIHRleHQuIFRoaXNcbi8vIHNob3VsZCBiZSB1c2VkIGZvciBpbXBvcnRhbnQgZGV0YWlscyBhYm91dCBhIHN5bWJvbDsgZm9yIGV4YW1wbGUsIHRvXG4vLyBpbmRpY2F0ZSB0aGF0IGEgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cbi8vKlxuLy8gQSByZWd1bGFyIG5vdGljZS5cbi8vXG4vLyBAbWFya3VwXG4vLyA8ZGl2IGNsYXNzPVwibm90aWNlXCI+XG4vLyAgIDxkaXYgY2xhc3M9XCJ0eXBlLWNvbnRhaW5lclwiPlxuLy8gICAgIDxwPlBsZWFzZSBkb24ndCB1c2UgdGhpcyBjb21wb25lbnQgYW55bW9yZSEgSXQncyBubyBnb29kLjwvcD5cbi8vICAgPC9kaXY+XG4vLyA8L2Rpdj5cblxuLm5vdGljZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKHllbGxvdyk7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgY29sb3I6IHVpLWNvbG9yKHllbGxvdywgZGFyayk7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShwYXJhZ3JhcGgtc21hbGwpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLnR5cGUsIHAsIGNvZGUge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxuXG4gIC50eXBlLS1oZWFkaW5nIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICB9XG59XG5cbi8vKlxuLy8gQSBub3RpY2UgdGhhdCBpbmRpY2F0ZXMgc29tZXRoaW5nIGlzIG5ldyBhYm91dCB0aGUgYXR0YWNoZWQgc3ltYm9sLlxuLy9cbi8vIEBkZW1vX3R5cGUgam9pbnRcblxuLm5vdGljZS0tbmV3IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gIGNvbG9yOiB1aS1jb2xvcihibHVlLCBkYXJrZXIpO1xufVxuIiwiIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBOZXh0IFBvcG92ZXJcbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4kcG9wb3Zlci10b29sdGlwLXNpemU6IHJlbSgxMCk7XG4kcG9wb3Zlci1tYXgtd2lkdGg6IHJlbSg0MDApO1xuJHBvcG92ZXItbWluLXdpZHRoOiByZW0oMTUwKTtcbiRwb3BvdmVyLW1heC13aWR0aC1wZXJjZW50OiAxMDAlO1xuJHBvcG92ZXItbWF4LWhlaWdodDogcmVtKDgwMCk7XG4kcG9wb3Zlci12ZXJ0aWNhbC1tYXJnaW46IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgKyAoJHBvcG92ZXItdG9vbHRpcC1zaXplIC8gMik7XG4kcG9wb3Zlci1iYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4kcG9wb3Zlci1zZWN0aW9uLWJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKGdyYXktbGlnaHQpO1xuJHBvcG92ZXItYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoY29sb3Ioc2xhdGUpLCAwLjA1KSwgMCAycHggN3B4IDFweCByZ2JhKGNvbG9yKHNsYXRlKSwgMC4xNik7XG5cblxuXG4ucG9wb3Zlcl9fY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgQGluY2x1ZGUgei1pbmRleChwb3BvdmVyLXJlc3RpbmcsIHBhZ2UpO1xuXG4gID4gKjpmb2N1cyB7IG91dGxpbmU6IDA7IH1cbn1cblxuLnBvcG92ZXJfX2NvbnRhaW5lci0tY29udGFpbnMtYWN0aXZlLXBvcG92ZXIge1xuICBAaW5jbHVkZSB6LWluZGV4KHBvcG92ZXItYWN0aXZlLCBwYWdlKTtcbn1cblxuLnBvcG92ZXJfX2NvbnRhaW5lci0taXMtZGVhY3RpdmF0aW5nIHtcbiAgQGluY2x1ZGUgei1pbmRleChwb3BvdmVyLWRlYWN0aXZhdGluZywgcGFnZSk7XG59XG5cbi5wb3BvdmVyX19jb250YWluZXItLWZ1bGwtd2lkdGgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5cblxuLnBvcG92ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMTAwJTtcblxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogJHBvcG92ZXItbWF4LXdpZHRoLXBlcmNlbnQ7XG4gIG1hcmdpbjogJHBvcG92ZXItdmVydGljYWwtbWFyZ2luIGRlZmF1bHQoc3BhY2luZyk7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgb3BhY2l0eTogMDtcbiAgYm94LXNoYWRvdzogJHBvcG92ZXItYm94LXNoYWRvdztcblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zNXMgY3ViaWMtYmV6aWVyKC4yNywxLjQxLC41MywuOTcpLCBvcGFjaXR5IDAuMnMgZWFzZTtcbn1cblxuLnBvcG92ZXItLWlzLWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5wb3BvdmVyLS1pcy1wb3NpdGlvbmVkLWFib3ZlIHtcbiAgdG9wOiBhdXRvO1xuICBib3R0b206IDEwMCU7XG5cbiAgLnBvcG92ZXJfX3Rvb2x0aXAge1xuICAgIHRvcDogMTAwJTtcblxuICAgICY6YWZ0ZXIgeyB0b3A6ICRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAvIC0yOyB9XG4gIH1cbn1cblxuXG4ucG9wb3Zlcl9fdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0b3A6ICgtMiAqICRwb3BvdmVyLXRvb2x0aXAtc2l6ZSk7XG5cbiAgd2lkdGg6ICgkcG9wb3Zlci10b29sdGlwLXNpemUgKiAyKTtcbiAgaGVpZ2h0OiAoJHBvcG92ZXItdG9vbHRpcC1zaXplICogMik7XG4gIG1hcmdpbi1sZWZ0OiAoJHBvcG92ZXItdG9vbHRpcC1zaXplICogLTEpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAoJHBvcG92ZXItdG9vbHRpcC1zaXplICogMyAvIDIpO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cbiAgICBtYXJnaW4tbGVmdDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAvIC0yKTtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJHBvcG92ZXItdG9vbHRpcC1zaXplO1xuICAgIHdpZHRoOiAkcG9wb3Zlci10b29sdGlwLXNpemU7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcG9wb3Zlci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRwb3BvdmVyLWJveC1zaGFkb3c7XG4gIH1cbn1cblxuXG5cbi5wb3BvdmVyX19jb250ZW50LXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtd2lkdGg6ICRwb3BvdmVyLW1heC13aWR0aDtcbiAgbWF4LWhlaWdodDogJHBvcG92ZXItbWF4LWhlaWdodDtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuXG5cbi5wb3BvdmVyX19jb250ZW50IHtcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBtaW4td2lkdGg6ICRwb3BvdmVyLW1pbi13aWR0aDtcblxuICA+ICo6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5cblxuXG4ucG9wb3Zlcl9fcGFuZSB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBvdmVyZmxvdzogYXV0bztcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX18gICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgICAgICAgICAgICBfX18gICAgICAvICAvOjpcXCAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gICAgICAgICAgICAgICAgIC8gIC9cXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgICAgLyAgLzo6XFxcbi8vICAgICAvICAvOi8gL1xcICBfX18gICAgIF9fXyAgLyAgLzovICAgLyAgLzovICBcXDpcXCAgLyAgLzovIC9cXCAgICAvICAvOi9cXDpcXFxuLy8gICAgLyAgLzovIC86OlxcL19fL1xcICAgLyAgL1xcL19fLzo6XFwgIC9fXy86LyBcXF9fXFw6fC8gIC86LyAvOi9fICAvICAvOi9+LzovXG4vLyAgIC9fXy86LyAvOi9cXDpcXCAgXFw6XFwgLyAgLzovXFxfX1xcL1xcOlxcX1xcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcL19fLzovIC86L19fX1xuLy8gICBcXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcICAvOi8gICAgXFwgIFxcOlxcL1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXC86Ojo6Oi9cbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXC86LyAgICAgIFxcX19cXDo6L1xcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovfn5+flxuLy8gICAgIFxcX19cXC8gLzovICAgIFxcICBcXDo6LyAgICAgICAvX18vOi8gIFxcICBcXDo6LyAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcXG4vLyAgICAgICAvX18vOi8gICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBTbGlkZXJcbi8vXG4vLyBBIHNpbXBsZSByYW5nZSBzbGlkZXIuIFVzZSB0aGlzIGNvbXBvbmVudCBmb3Igc2l0dWF0aW9ucyB3aGVyZSB0aGUgdXNlciBoYXNcbi8vIHRvIHNlbGVjdCBmcm9tIGEgY29udGludW91cyByYW5nZSBvZiB2YWx1ZXMgd2l0aCBhIG1pbmltdW0gYW5kIG1heGltdW0uIEZvclxuLy8gZXhhbXBsZSwgdGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHBlcnNwZWN0aXZlIGFuZCBwYW5lIGdhcCBmb3Jcbi8vIHRoZSBgRXhwbG9kZWRgIGNvbXBvbmVudC5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBAbWFya3VwXG4vLyA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiIGZvcj1cInJhbmdlXCI+VHJ5IHNvbWV0aGluZyBpbiByYW5nZTwvbGFiZWw+XG4vLyA8aW5wdXQgY2xhc3M9XCJyYW5nZVwiIG5hbWU9XCJyYW5nZVwiIGlkPVwicmFuZ2VcIiB0eXBlPVwicmFuZ2VcIj5cblxuLnJhbmdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbn1cblxuJHJhbmdlX190cmFjay0tc2l6ZTogZGVmYXVsdChjb250cm9sLXNpemUtLWxhcmdlKTtcbiRyYW5nZV9fdGh1bWItLXNwYWNpbmc6ICgwLjEgKiBkZWZhdWx0KGNvbnRyb2wtc2l6ZS0tbGFyZ2UpKTtcbiRyYW5nZV9fdGh1bWItLXNpemU6ICgkcmFuZ2VfX3RyYWNrLS1zaXplIC0gZG91YmxlKCRyYW5nZV9fdGh1bWItLXNwYWNpbmcpKTtcblxuQG1peGluIHJhbmdlX190cmFjayB7XG4gIC8vIGJveCBtb2RlbFxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkcmFuZ2VfX3RyYWNrLS1zaXplO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIGJvcmRlci1yYWRpdXM6IGhhbGYoJHJhbmdlX190cmFjay0tc2l6ZSk7XG4gIHBhZGRpbmc6ICRyYW5nZV9fdGh1bWItLXNwYWNpbmc7XG59XG5cbkBtaXhpbiByYW5nZV9fdGh1bWIge1xuICAvLyBib3ggbW9kZWxcbiAgaGVpZ2h0OiAkcmFuZ2VfX3RodW1iLS1zaXplO1xuICB3aWR0aDogJHJhbmdlX190aHVtYi0tc2l6ZTtcblxuICAvLyBiYWNrZHJvcFxuICBib3gtc2hhZG93OiAxcHggMXB4IDNweCByZ2JhKGNvbG9yKGJsYWNrKSwgMC4xNSk7XG4gIGJvcmRlci1yYWRpdXM6IGhhbGYoJHJhbmdlX190aHVtYi0tc2l6ZSk7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi5yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sgeyBAaW5jbHVkZSByYW5nZV9fdHJhY2s7IH1cbi5yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sgeyBvdXRsaW5lOiBub25lOyB9XG4ucmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgeyBAaW5jbHVkZSByYW5nZV9fdHJhY2s7IH1cbi5yYW5nZTo6LW1zLXRyYWNrIHsgQGluY2x1ZGUgcmFuZ2VfX3RyYWNrOyB9XG5cbi5yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyBAaW5jbHVkZSByYW5nZV9fdGh1bWI7IH1cbi5yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7IEBpbmNsdWRlIHJhbmdlX190aHVtYjsgfVxuLnJhbmdlOjotbXMtdGh1bWIgeyBAaW5jbHVkZSByYW5nZV9fdGh1bWI7IH1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAgX19fICAgICAgICAgLyAgL1xcICAgICAgICAvICAvXFxcbi8vICAgICAgLyAgLzo6XFwgICAgICAvICAvOi9fICAgICAgLyAgLzovXyAgICAgLyAgL1xcICAgICAgIC8gIC86OnwgICAgICAvICAvOi9fXG4vLyAgICAgLyAgLzovXFw6XFwgICAgLyAgLzovIC9cXCAgICAvICAvOi8gL1xcICAgLyAgLzovICAgICAgLyAgLzovOnwgICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86L34vOi8gICAvICAvOi8gLzovXyAgLyAgLzovIC86OlxcIC9fXy86OlxcICAgICAvICAvOi98OnxfXyAgLyAgLzovIC86L19cbi8vICAgL19fLzovIC86L19fXy9fXy86LyAvOi8gL1xcL19fLzovIC86L1xcOlxcXFxfX1xcL1xcOlxcX18gL19fLzovIHw6fCAvXFwvX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwvOjo6OjovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXC86L34vOi8gICBcXCAgXFw6XFwvXFxcXF9fXFwvICB8OnwvOi9cXCAgXFw6XFwvOi8gLzovXG4vLyAgICBcXCAgXFw6Oi9+fn5+ICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6Oi8gLzovICAgICBcXF9fXFw6Oi8gICAgfCAgfDovOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcX19cXC8gLzovICAgICAgL19fLzovICAgICB8ICB8OjovICAgIFxcICBcXDpcXC86L1xuLy8gICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovICAgICAgIC9fXy86LyAgICAgICBcXF9fXFwvICAgICAgfCAgfDovICAgICAgXFwgIFxcOjovXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgIHxfX3wvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gUmVzaXphYmxlXG4vL1xuLy8gQSBjb250YWluZXIgdGhhdCBjYW4gYmUgcmVzaXplZCBieSBkcmFnZ2luZyBvbiBhIGhhbmRsZVxuLy8gKGAucmVzaXphYmxlX19oYW5kbGVgKSB3aXRoIGEgY29udGFpbmVkIGlmcmFtZSB0aGF0IHNob3dzIHRoZSBhY3R1YWwgZGVtb1xuLy8gY29udGVudC4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gc2VlIGhvdyB0aGUgZGVzaWduIHdvdWxkIGFjdHVhbGx5IGJlaGF2ZVxuLy8gYXQgZGlmZmVyZW50IHZpZXdwb3J0IHdpZHRocywgYW5kIGFsbG93cyBmb3IgZml4ZWQgYW5kIGFic29sdXRlIHBvc2l0aW9uZWRcbi8vIGVsZW1lbnRzIHRvIGJlIGRpc3BsYXllZCBpbiBhIHJlYXNvbmFibGUgd2F5LlxuLy9cbi8vIFRoZSBKYXZhU2NyaXB0IHBvcnRpb24gb2YgdGhpcyBjb21wb25lbnQgbWFuYWdlcyB0aGUgY29tbXVuaWNhdGlvbiBvZlxuLy8gaGVpZ2h0IGNoYW5nZXMgZnJvbSB0aGUgYGlmcmFtZWAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGRlbW8gaXMgZW50aXJlbHlcbi8vIHZpc2libGUgYW5kIHNob3dzIHRoZSBjdXJyZW50IHdpZHRoIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VlIGEgc21hbGxcbi8vIG51bWJlciBvZiBwcmVzZXQgd2lkdGhzLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuJHJlc2l6YWJsZS0tbWluLXdpZHRoOiAxOHJlbTtcbiRyZXNpemFibGUtLWJvcmRlcjogMXB4IHNvbGlkIHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4kcmVzaXphYmxlLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nOiAwLjNzIGVhc2U7XG5cbiRyZXNpemFibGVfX2hhbmRsZS0td2lkdGg6IDEuMjVyZW07XG4kcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1oZWlnaHQ6IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbiRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXBlcmNlbnRhZ2Utd2lkdGg6IDAuMzU7XG5cbiRyZXNpemFibGVfX3NpemUtYnV0dG9uX19pY29uLS1zaXplOiAxLjhyZW07XG5cblxuXG4vLypcbi8vIFRoZSBjb3JlIGNvbXBvbmVudCBvZiBhIGBSZXNpemFibGVgLiBUaGlzIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBjb250YWluc1xuLy8gdGhlIGhhbmRsZSBhbmQgYGlmcmFtZWAsIGFuZCBpcyB0aGUgcGFydCBvZiB0aGUgY29tcG9uZW50IHRoYXQgaXMgYWN0dWFsbHlcbi8vIHJlc2l6ZWQgd2hlbiBkcmFnZ2luZyB0aGUgaGFuZGxlLyB1c2luZyB0aGUgc2l6ZSBidXR0b25zLiBUaGUgYG1pbi13aWR0aGBcbi8vIHNwZWNpZmllZCBoZXJlIHNob3VsZCBhY2NvdW50IGZvciBib3RoIHRoZSBgbWluLXdpZHRoYCBvZiB0aGUgY29udGVudCAqYW5kKlxuLy8gdGhlIHdpZHRoIG9mIHRoZSBoYW5kbGUgKHdoaWNoIHdpbGwgYmUgcG9zaXRpb25lZCBhYnNvbHV0ZWx5IG92ZXIgdGhlIHJpZ2h0XG4vLyBzaWRlKS5cbi8vXG4vLyBAaGVscGVyIGRvY2tzX3Jlc2l6YWJsZVxuXG4ucmVzaXphYmxlIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogKCRyZXNpemFibGUtLW1pbi13aWR0aCArICRyZXNpemFibGVfX2hhbmRsZS0td2lkdGgpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gdHlwZVxuICBsaW5lLWhlaWdodDogMDtcblxuICA+IC5jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1yaWdodDogJHJlc2l6YWJsZV9faGFuZGxlLS13aWR0aDtcbiAgfVxuXG4gIC5pZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDEwcmVtO1xuICAgIHRyYW5zaXRpb246IGhlaWdodCAkcmVzaXphYmxlLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8qXG4vLyBQcm92aWRlcyBhIHRyYW5zaXRpb24gdGhhdCBzbW9vdGhseSBtb3ZlcyB0aGUgcmVzaXphYmxlIGNvbnRhaW5lciBmcm9tIG9uZVxuLy8gd2lkdGggdG8gdGhlIG5leHQuIFRoaXMgaXMgbm90IGRvbmUgYnkgZGVmYXVsdCBhcyBkcmFnZ2luZyB0aGUgaGFuZGxlIHdvdWxkXG4vLyBhcHBlYXIgYnJva2VuLlxuXG4ucmVzaXphYmxlLS1pcy10cmFuc2l0aW9uaW5nLXdpZHRoIHtcbiAgdHJhbnNpdGlvbjogd2lkdGggJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGhhbmRsZSBieSB3aGljaCB0byByZXNpemUgdGhlIGNvbnRhaW5lci4gRGVmYXVsdCBzdHlsZSBnaXZlcyB0d28gc21hbGxcbi8vIGdyb292ZXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgaGFuZGxlIHRoYXQgYWZmb3JkcyBpdHMgZHJhZ2dhYmlsaXR5LlxuXG4ucmVzaXphYmxlX19oYW5kbGUge1xuICAvLyBwb3NpdGlvblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDsgcmlnaHQ6IDA7XG5cbiAgLy8gYm94IG1vZGVsXG4gIHdpZHRoOiAkcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoO1xuICBoZWlnaHQ6IDEwMCU7XG5cbiAgLy8gYmFja2Ryb3BcbiAgY3Vyc29yOiBjb2wtcmVzaXplO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgYm9yZGVyLXJhZGl1czogMCBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIGRlZmF1bHQoYm9yZGVyLXJhZGl1cykgMDtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJjphZnRlciB7XG4gICAgJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtd2lkdGg6ICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXBlcmNlbnRhZ2Utd2lkdGggKiAkcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoO1xuXG4gICAgY29udGVudDogXCJcIjtcblxuICAgIC8vIHBvc2l0aW9uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlOyBsZWZ0OiA1MCU7XG5cbiAgICAvLyBib3ggbW9kZWxcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6ICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLWhlaWdodDtcbiAgICB3aWR0aDogJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtd2lkdGg7XG4gICAgbWFyZ2luLXRvcDogbmVnYXRpdmUoaGFsZigkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1oZWlnaHQpKTtcbiAgICBtYXJnaW4tbGVmdDogbmVnYXRpdmUoaGFsZigkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS13aWR0aCkpO1xuXG4gICAgLy8gYmFja2Ryb3BcbiAgICBib3JkZXItcmlnaHQ6ICRyZXNpemFibGUtLWJvcmRlcjtcbiAgICBib3JkZXItbGVmdDogJHJlc2l6YWJsZS0tYm9yZGVyO1xuICB9XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGZvciBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFuZCBhY2lvbnMgYXZhaWxhYmxlIGZvciB0aGVcbi8vIGNvbXBvbmVudC5cblxuLnJlc2l6YWJsZV9fYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBtYXJnaW4tYm90dG9tOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xufVxuXG5cblxuXG4vLypcbi8vIEEgc21hbGwgbm90aWNlIHRoYXQgc2hvd3MgdGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIChjb250ZW50IG9mIHRoZSkgcmVzaXphYmxlXG4vLyBtb2R1bGUuIFRoaXMgaW5kaWNhdG9yIHNsaWRlcyBpbiB3aGVuIHRoZSBzaXplIGNoYW5nZXMgKHRocm91Z2ggdGhlIHVzZSBvZlxuLy8gdGhlIGByZXNpemFibGVfX3dpZHRoLWluZGljYXRvci0taXMtdmlzaWJsZWAgdmFyaWFudCkuXG4vL1xuLy8gVGhlIGluZGljYXRvciBzaG93cyB0aGUgd2lkdGggaW4gYm90aCBgcHhgIGFuZCBgZW1gIHZhbHVlcyB3aGljaCBhcmVcbi8vIGNvbnRhaW5lZCBpbiB0aGUgc3VibW9kdWxlcyBgcmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3JfX3B4YCBhbmRcbi8vIGByZXNpemFibGVfX3dpZHRoLWluZGljYXRvcl9fZW1gLCByZXNwZWN0aXZlbHkuXG4vL1xuLy8gQHN0YXRlIC0taXMtdmlzaWJsZSAtIFRoZSBpbmRpY2F0b3IgaXMgY3VycmVudGx5IGJlaW5nIHNob3duLlxuXG4ucmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3Ige1xuICAvLyB0eXBlXG4gIGNvbG9yOiBjb2xvcihncmF5LWRhcmspO1xuICBmb250OiAzMDAgMXJlbS8xIENvbnNvbGFzLCBtb25vc3BhY2U7O1xuXG4gIC8vIGJhY2tkcm9wXG4gIG9wYWNpdHk6IDAuNDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAkcmVzaXphYmxlLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nO1xufVxuXG4ucmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3ItLWlzLXZpc2libGUgeyBvcGFjaXR5OiAxOyB9XG5cblxuXG4vLypcbi8vIEEgdmVydGljYWxseS1vcmllbnRlZCBzZXQgb2YgYnV0dG9ucyB0aGF0IHJlc2l6ZSB0aGUgcmVzaXphYmxlIG1vZHVsZSB0b1xuLy8gcHJlZGV0ZXJtaW5lZCB3aWR0aHMuIFRoZXNlIHdpZHRocyBoYXZlIGJlZW4gc2V0IGluIHRoZSBKYXZhc2NyaXB0IHBhcnQgb2Zcbi8vIHRoaXMgbW9kdWxlLlxuXG4ucmVzaXphYmxlX19zaXplLWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5cblxuLy8qXG4vLyBBIHNpbmdsZSBidXR0b24gdGhhdCByZXNpemVzIHRoZSBtb2R1bGUuXG4vL1xuLy8gQHN0YXRlIC0taXMtYWN0aXZlIChzZWxlY3QpXG4vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkIGFuZCB0aGF0IHRoZSB1c2VyIGhhcyBub3Rcbi8vIHN1YnNlcXVlbnRseSByZXNpemVkIHRoZSBtb2R1bGUgaW4gc29tZSBvdGhlciB3YXkuXG4vL1xuLy8gQHN0YXRlIC0taXMtaGlkZGVuIChub25lKVxuLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGJ1dHRvbiBzaG91bGQgYmUgaGlkZGVuIGJlY2F1c2Ugbm90IGVub3VnaCBzY3JlZW4gc3BhY2Vcbi8vIGV4aXN0cyBmb3IgaXRzIHJlc2l6ZS5cbi8vXG4vLyBAdmFyaWFudCAtLXNtYWxsICAobm9uZSkgLSBSZXNpemVzIHRvIGEgcm91Z2hseSBzbWFydHBob25lLXNpemVkIHdpZHRoLlxuLy8gQHZhcmlhbnQgLS1tZWRpdW0gKG5vbmUpIC0gUmVzaXplcyB0byBhIHJvdWdobHkgdGFibGV0LXNpemVkIHdpZHRoLlxuLy8gQHZhcmlhbnQgLS1sYXJnZSAgKG5vbmUpIC0gUmVzaXplcyB0byBhIHJvdWdobHkgZGVza3RvcC1zaXplZCB3aWR0aC5cblxuLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgb3BhY2l0eTogMC41O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRyZXNpemFibGUtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmc7XG5cbiAgPiAuaWNvbiB7XG4gICAgaGVpZ2h0OiAkcmVzaXphYmxlX19zaXplLWJ1dHRvbl9faWNvbi0tc2l6ZTtcbiAgICB3aWR0aDogJHJlc2l6YWJsZV9fc2l6ZS1idXR0b25fX2ljb24tLXNpemU7XG5cbiAgICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXkpO1xuICAgIHRyYW5zaXRpb246IGZpbGwgJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlLFxuICAmLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24tLWlzLWFjdGl2ZSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuXG4gICYucmVzaXphYmxlX19zaXplLWJ1dHRvbi0taXMtYWN0aXZlLFxuICAmOmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcblxuICAgID4gLmljb24ge1xuICAgICAgZmlsbDogY29sb3IoYmx1ZSk7XG4gICAgICBzdHJva2U6IGNvbG9yKGJsdWUpO1xuICAgIH1cbiAgfVxufVxuXG4ucmVzaXphYmxlX19zaXplLWJ1dHRvbi0taXMtaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi5zY3JvbGwtY29udGFpbmVyIHtcbiAgLy8gQ29udGFpbiBhbnkgaW50ZXJpb3IgbWFyZ2luc1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgICBfX18gIF9fXyAgICAgICAgLyAgL1xcICAgICAgICAvX18vXFxcbi8vICAgICAgLyAgLzovXyAgICAgIC8gIC86L18gICAgICAvICAvOi8gICAgICAgLyAgL1xcLyAgL1xcICAgICAgLyAgLzo6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgLyAgLzovIC9cXCAgICAvICAvOi8gL1xcICAgIC8gIC86LyAgICAgICAvICAvOi8gIC86LyAgICAgLyAgLzovXFw6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAvICAvOi8gLzo6XFwgIC8gIC86LyAvOi9fICAvICAvOi8gIF9fXyAgLyAgLzovX18vOjpcXCAgICAvICAvOi8gIFxcOlxcICBfX19fX1xcX19cXDpcXFxuLy8gICAvX18vOi8gLzovXFw6XFwvX18vOi8gLzovIC9cXC9fXy86LyAgLyAgL1xcLyAgLzo6XFxfX1xcL1xcOlxcX18vX18vOi8gXFxfX1xcOlxcL19fLzo6Ojo6Ojo6XFxcbi8vICAgXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwgLyAgLzovX18vOi9cXDpcXCBcXCAgXFw6XFwvXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXH5+XFx+flxcL1xuLy8gICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcICAvOi9cXF9fXFwvICBcXDpcXCBcXF9fXFw6Oi9cXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn5cbi8vICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcLzovICAgICAgXFwgIFxcOlxcL19fLzovICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcXG4vLyAgICAgICAvX18vOi8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgICAgIFxcX19cXC9cXF9fXFwvICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBTZWN0aW9uXG4vL1xuLy8gU2VjdGlvbnMgYXJlIHNpbXBseSB3YXlzIG9mIGdyb3VwaW5nIHJlbGF0ZWQgY29udGVudCBhbmQgcHJvdmlzaW5nXG4vLyBzZXBhcmF0aW9uIGJldHdlZW4gdGhhdCBjb250YWluZWQgY29udGVudCBhbmQgXCJzaWJsaW5nXCIgY29udGVudC5cbi8vXG4vLyBTbWFsbGVyIHZhcmlhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgbW9yZSBjb25kZW5zZWQgY29udGVudCwgbGlrZSBjb250ZW50XG4vLyBpbnNpZGUgb2YgYSBwb3BvdmVyLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuLy8qXG4vLyBBIGNvbnRhaW5lciBhcm91bmQgc29tZSBjb250ZW50IHRoYXQgcHJvdmlkZXMgdGhlIHZlcnRpY2FsIHNlcGFyYXRpb24gZnJvbVxuLy8gb3RoZXIgYHNlY3Rpb25gcy4gVGhpcyB3aWxsIGFsc28gcmVtb3ZlIGFueSB0b3AvIGJvdHRvbSBwYWRkaW5nIGZyb20gdGhlXG4vLyBmaXJzdC8gbGFzdCBjaGlsZCwgcmVzcGVjdGl2ZWx5LCB0byBhdm9pZCBtb3JlIHZlcnRpY2FsIHBhZGRpbmcgdGhhblxuLy8gbmVjZXNzYXJ5LlxuXG4uc2VjdGlvbiB7XG4gIG1hcmdpbjogZG91YmxlKGRlZmF1bHQoc3BhY2luZykpIDA7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZykgMDtcblxuICA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICYsXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gIH1cblxuICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgJixcbiAgICAmID4gKjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG59XG5cbi8vKlxuLy8gQSBzbWFsbGVyIHNlY3Rpb24gd2l0aCBubyBib3JkZXIgc2VwYXJhdGluZyBjb250ZW50LiBVc2UgdGhpcyB2YXJpYW50IGZvclxuLy8gcGxhY2VzIHdoZXJlIHRoZSBiYXNlIGFtb3VudCBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGlzIGV4Y2Vzc2l2ZSAoZm9yIGV4YW1wbGUsXG4vLyBpbiBwb3BvdmVycyBvciBvdGhlciBsaW1pdGVkLXdpZHRoIGNvbnRhaW5lcnMpLlxuXG4uc2VjdGlvbi0tc21hbGwge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSAwO1xufVxuXG4vLypcbi8vIEEgc2VjdGlvbiB3aXRoIGEgbGlnaHQgZ3JheSBiYWNrZ3JvdW5kIHRoYXQgc2VwYXJhdGVzIGl0IHZpc3VhbGx5IGZyb20gdGhlXG4vLyBvdGhlciBzZWN0aW9ucy4gVXNlIHRoaXMgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHNpZ25pZmljYW50bHkgZGlmZmVyZW50XG4vLyBncm91cHMgb2YgY29udGVudC4gSXQgaXMgYmVzdCB0byBvbmx5IHVzZSB0aGlzIHdpdGggYHNlY3Rpb24tLXNtYWxsYCDigJRcbi8vIHJlZ3VsYXIgYHNlY3Rpb25gcyBhbHJlYWR5IGhhdmUgc3VmZmljaWVudCBzZXBhcmF0aW9uIGluIG1vc3QgY2FzZXMuXG5cbi5zZWN0aW9uLS1zdWJkdWVkIHtcbiAgYmFja2dyb3VuZDogY29sb3IoZ3JheS1saWdodCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJi5zZWN0aW9uLS1zbWFsbCB7XG4gICAgcGFkZGluZzogZGVmYXVsdChzcGFjaW5nKSAwO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBVc2UgdGhpcyBjb250YWluZXIgZm9yIHdoZW4geW91IHdhbnQgYSBncm91cCBvZiBzZWN0aW9ucyB0byBoYXZlIGFkZGl0aW9uYWxcbi8vIHZlcnRpY2FsIHNlcGFyYXRpb24gZnJvbSB0aGUgY29udGVudCBhcm91bmQgaXQuIFRoZSBhbW91bnQgb2YgYWRkaXRpb25hbFxuLy8gc3BhY2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjb250YWluZXIgY29udGFpbnMgcmVndWxhciBvciBgLS1zbWFsbGBcbi8vIGBzZWN0aW9uYHMuXG4vL1xuLy8gVGhpcyBjb250YWluZXIgaXMgbm90IG5lY2Vzc2FyeSDigJQgZm9yIGV4YW1wbGUsIHNlY3Rpb25zIGNhbiBzaXQgb24gdGhlaXIgb3duXG4vLyBpbnNpZGUgYSBwb3BvdmVyLlxuXG4uc2VjdGlvbl9fY29udGFpbmVyIHtcbiAgPiAuc2VjdGlvbiB7XG4gICAgJjpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTsgfVxuICAgICY6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTsgfVxuICB9XG5cbiAgPiAuc2VjdGlvbi0tc21hbGwge1xuICAgICY6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiBkZWZhdWx0KHNwYWNpbmcpOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogZGVmYXVsdChzcGFjaW5nKTsgfVxuICB9XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgICAgICAgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgICBfX19cbi8vICAgICAgLyAgLzovXyAgICAgIC8gIC86L18gICAgICAgICAgICAgICAgIC8gIC86L18gICAgICAvICAvOi8gICAgICAgLyAgL1xcXG4vLyAgICAgLyAgLzovIC9cXCAgICAvICAvOi8gL1xcICBfX18gICAgIF9fXyAgLyAgLzovIC9cXCAgICAvICAvOi8gICAgICAgLyAgLzovXG4vLyAgICAvICAvOi8gLzo6XFwgIC8gIC86LyAvOi9fL19fL1xcICAgLyAgL1xcLyAgLzovIC86L18gIC8gIC86LyAgX19fICAvICAvOi9cbi8vICAgL19fLzovIC86L1xcOlxcL19fLzovIC86LyAvXFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFwvX18vOi8gIC8gIC9cXC8gIC86OlxcXG4vLyAgIFxcICBcXDpcXC86L34vOi9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcIC8gIC86L19fLzovXFw6XFxcbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcICAvOi9cXF9fXFwvICBcXDpcXFxuLy8gICAgIFxcX19cXC8gLzovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgL19fLzovICAgICAgXFwgIFxcOjovICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgICAgXFxfX1xcL1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2VsZWN0XG4vL1xuLy8gQSBjdXN0b20gYHNlbGVjdGAgZWxlbWVudC4gSW4gb3JkZXIgdG8gcHJlc2VudCB0aGVzZSBpbiB0aGUgc2FtZSB3YXkgYWNyb3NzXG4vLyBicm93c2VycywgbW9zdCBvZiB0aGUgc3R5bGluZyBpcyBkb25lIG9uIGEgbm9kZSB3cmFwcGVkIGFyb3VuZCBhbiBhY3R1YWxcbi8vIGBzZWxlY3RgIGVsZW1lbnQsIGFuZCBhIGJpdCBvZiBKYXZhU2NyaXB0IHRoYXQgdHJhbnNsYXRlcyB0aGUgZm9jdXMvIGJsdXJcbi8vIG9uIHRoZSBjb250YWluZWQgYHNlbGVjdGAgaW50byBhIHN0YXRlIGNsYXNzLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG5cblxuJHNlbGVjdC0tZm9udC1zaXplOiAoZm9udC1zaXplKGNvbnRyb2wpICogMC45KTtcbiRzZWxlY3QtLWhvcml6b250YWwtcGFkZGluZzogZGVmYXVsdChjb250cm9sLXBhZGRpbmcpO1xuJHNlbGVjdC0tbGluZS1oZWlnaHQ6IGRlZmF1bHQoY29udHJvbC1zaXplKTtcbiRzZWxlY3QtLWljb24tc2l6ZTogJHNlbGVjdC0tZm9udC1zaXplIC8gMS42O1xuXG5cblxuLy8qXG4vLyBUaGUgd3JhcHBlciBhcm91bmQgYSBgc2VsZWN0YC4gVGhpcyB3cmFwcGVyIHByb3ZpZGVzIG1vc3Qgb2YgdGhlIHZpc3VhbFxuLy8gc3R5bGluZywgaW5jbHVkaW5nIHRoZSBmb2N1cyBzdHlsaW5nLiBUaGlzIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBhbHNvXG4vLyBjcmVhdGVzIGEgdHJpYW5nbGUgaWNvbiBpbiBwbGFjZSBvZiB0aGUgYnJvd3Nlci1zdXBwbGllZCBvbmUuXG4vL1xuLy8gQGhlbHBlclxuLy8gPCU9IGRvY2tzX3NlbGVjdCBvcHRpb25zOiAldyhTdXBlcl9sb25nX29wdGlvbl90aGF0X2lzX3F1aXRlX2xvbmcgbm9ybWFsX3NpemUgU01BTEwpICU+XG5cbi5zZWxlY3Qge1xuICAvLyBwb3NpdGlvblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gYm94IG1vZGVsXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBiYWNrZHJvcFxuICBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuXG4gICAgLy8gcG9zaXRpb25cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6ICRzZWxlY3QtLWhvcml6b250YWwtcGFkZGluZztcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cbiAgICAvLyBib3ggbW9kZWxcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6ICRzZWxlY3QtLWljb24tc2l6ZTtcbiAgICB3aWR0aDogJHNlbGVjdC0taWNvbi1zaXplO1xuICAgIG1hcmdpbi10b3A6ICgtMC43NSAqICRzZWxlY3QtLWljb24tc2l6ZSk7XG5cbiAgICAvLyBiYWNrZHJvcFxuICAgIGJvcmRlcjogc29saWQgcmdiYSh1aS1jb2xvcihncmF5LCBkYXJrZXIpLCAwLjUpO1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICArIC5kb2Nrcy1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICB9XG59XG5cbi8vKlxuLy8gVGhpcyBzdGF0ZSBpcyBhcHBsaWVkIHRvIGEgYHNlbGVjdGAgd2hvc2UgY29udGFpbmVkIGlucHV0IGlzIGZvY3VzZWQuXG5cbi5zZWxlY3QtLWlzLWZvY3VzZWQge1xuICBib3JkZXItY29sb3I6IGNvbG9yKGJsdWUpO1xufVxuXG4vLypcbi8vIEEgc2VsZWN0IHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIG1vbm9zcGFjZSBmb250IChmb3IgZXhhbXBsZSwgYmVjYXVzZVxuLy8gaXQgaXMgY2hvb3NpbmcgYSBjbGFzcyBuYW1lKS5cblxuLnNlbGVjdC0tY29kZSB7XG4gID4gLnNlbGVjdF9faW5wdXQge1xuICAgIEBpbmNsdWRlIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGUgYWN0dWFsIGBzZWxlY3RgLiBNb3N0IG9mIHRoZSBzdHlsZXMgaGVyZSBnbyB0byB1bmRvaW5nIHRoZSBkZWZhdWx0XG4vLyBicm93c2VyIHN0eWxlcyBmb3IgYHNlbGVjdGBzLiBBbGwgb2YgdGhlIGZvbnQgc2l6aW5nIGZvciB0aGUgY29tcG9uZW50IG11c3Rcbi8vIGJlIHBsYWNlZCBoZXJlIGZvciB0aG9zZSBzdHlsZXMgdG8gZGlzcGxheSBjb3JyZWN0bHkuXG5cbi5zZWxlY3RfX2lucHV0IHtcbiAgLy8gYm94IG1vZGVsXG4gIEBpbmNsdWRlIHJlbW92ZS1icm93c2VyLXN0eWxpbmc7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDAgKGRvdWJsZSgkc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmcpICsgJHNlbGVjdC0taWNvbi1zaXplKSAwICRzZWxlY3QtLWhvcml6b250YWwtcGFkZGluZztcblxuICAvLyBiYWNrZHJvcFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuXG4gIC8vIHR5cGVcbiAgZm9udC1zaXplOiAkc2VsZWN0LS1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgLy8gZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2U7XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cblxuICA+IG9wdGlvbiB7XG4gICAgY29sb3I6IGNvbG9yKHNsYXRlKTtcbiAgfVxufVxuXG4vLyBBbGwgb2YgdGhlIGJlbG93IGhhY2tzIGNvdXJ0ZXN5IG9mIFRvZGQgUGFya2VyJ3MgZmluZSB3b3JLIGhlcmU6XG4vLyBodHRwOi8vanNiaW4uY29tIC8geWFydWggLyA0OSAvIGVkaXRcblxuLy8gSGlkZXMgbmF0aXZlIHNlbGVjdCBhcnJvdyBpbiBJRSAxMCtcbl86LW1zLWlucHV0LXBsYWNlaG9sZGVyLCA6cm9vdCAuc2VsZWN0X19pbnB1dDo6LW1zLWV4cGFuZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8vIEhpZGVzIGJsdWUgYmFja2dyb3VuZCBvbiBmb2N1cyBpbiBJRSAxMCtcbl86LW1zLWlucHV0LXBsYWNlaG9sZGVyLCA6cm9vdCAuc2VsZWN0X19pbnB1dDpmb2N1czo6LW1zLXZhbHVlIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi8vIENyYXp5IGhhY2tzIHRvIHRhcmdldCBGRiBhbmQgY2xpcCB0aGUgbmF0aXZlIHNlbGVjdCBhcnJvd1xuQHN1cHBvcnRzICgtbW96LWFwcGVhcmFuY2U6bWV0ZXJiYXIpIGFuZCAoYmFja2dyb3VuZC1ibGVuZC1tb2RlOmRpZmZlcmVuY2Usbm9ybWFsKSB7XG5cbiAgXzo6LW1vei1wcm9ncmVzcy1iYXIsXG4gIGJvZHk6bGFzdC1jaGlsZCAuc2VsZWN0X19pbnB1dF9fd3JhcHBlciB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIF86Oi1tb3otcHJvZ3Jlc3MtYmFyLFxuICBib2R5Omxhc3QtY2hpbGQgLnNlbGVjdF9faW5wdXQge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAzMHB4KTtcbiAgfVxufVxuXG4vLyBLaWxscyB0aGUgc3R1cGlkIGZvY3VzIHJpbmcgaW4gRkZcbi5zZWxlY3RfX2lucHV0Oi1tb3otZm9jdXNyaW5nIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogMCAwIDAgYmxhY2s7XG59XG4iLCIvLyAgICAgICAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fXG4vLyAgICAgICAgX19fICAgIC8gIC9cXCAgICAgICAgX19fX18gICAgICAgICAgICAgICAgICAgLyAgL1xcXG4vLyAgICAgICAvICAvXFwgIC8gIC86OlxcICAgICAgLyAgLzo6XFwgICAgICAgICAgICAgICAgIC8gIC86L19cbi8vICAgICAgLyAgLzovIC8gIC86L1xcOlxcICAgIC8gIC86L1xcOlxcICBfX18gICAgIF9fXyAgLyAgLzovIC9cXFxuLy8gICAgIC8gIC86LyAvICAvOi9+Lzo6XFwgIC8gIC86L34vOjpcXC9fXy9cXCAgIC8gIC9cXC8gIC86LyAvOi9fXG4vLyAgICAvICAvOjpcXC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9cXDpcXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXFxuLy8gICAvX18vOi9cXDpcXCAgXFw6XFwvOi9fX1xcL1xcICBcXDpcXC86L34vOi9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgXFxfX1xcLyAgXFw6XFwgIFxcOjovICAgICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcLzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgICAgXFwgIFxcOlxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86L1xuLy8gICAgICAgICBcXF9fXFwvXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi9cbi8vICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gVGFibGVcbi8vXG4vLyBUYWJsZXMgYXJlIHVzZWQgdG8gcHJlc2VudCB0YWJ1bGFyIGRhdGEgb25seSDigJTCoG5ldmVyIGZvciBsYXlvdXQhIFRoZXNlIHRhYmxlc1xuLy8gYXJlIHNtYXJ0ZXIgdGhhbiB0aGUgYXZlcmFnZSB0YWJsZSwgaG93ZXZlci4gVGhleSB3aWxsIGRldGVybWluZSB0aGVpclxuLy8gaW50cmluc2ljIHNpemUgKHVwIHRvIGEgc3R5bGVzaGVldC1zcGVjaWZpZWQgbWF4aW11bSkgYW5kLCB3aGVuIHRoZSBzcGFjZVxuLy8gYXZhaWxhYmxlIHRvIHRoZW0gaXMgbGVzcyB0aGFuIHRoYXQgc2l6ZSwgdGhleSB3aWxsIGJlZ2luIHRvIHNjcm9sbC5cbi8vXG4vLyBBcyB5b3Ugc2Nyb2xsLCB0aGUgZmlyc3QgY29sdW1uIHdpbGwgc3RheSBmaXhlZCwgc28geW91IGFsd2F5cyBoYXZlIGNvbnRleHQsXG4vLyBhbmQgdGhlIGFueSBnaXZlbiBjb2x1bW4gd2lsbCBhbHdheXMgYmUgc21hbGwgZW5vdWdoIHRvIGJlIGZ1bGx5IHZpc2libGUuIE5vdFxuLy8gb25seSB0aGF0LCBidXQgdGhlIHRhYmxlIHByb3ZpZGVzIGJvdGgga2V5Ym9hcmQgaW5wdXQgYW5kIGludGVyZmFjZSBlbGVtZW50c1xuLy8gdGhhdCBhbGxvdyB5b3UgdG8gcXVpY2tseSBzaGlmdCB0byBvdmVyc2Nyb2xsZWQgY29sdW1ucy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiR0YWJsZS0tYm9yZGVyOiAxcHggc29saWQgY29sb3IoZ3JheS1saWdodCk7XG4kdGFibGUtLWJvcmRlci1yYWRpdXM6IGRvdWJsZShkZWZhdWx0KGJvcmRlci1yYWRpdXMpKTtcbiR0YWJsZS0tYm94LXNoYWRvdy1zaXplOiAzcHggMCA0cHggLTFweDtcblxuXG5cbi8vKlxuLy8gQSBzbWFydGVyIGB0YWJsZWAgZWxlbWVudC4gVGhlIGBtaW4td2lkdGhgIHBsYWNlZCBoZXJlIHdpbGwgbm90IGFjdHVhbGx5XG4vLyBiZSB0aGUgbWluaW11bSB3aWR0aCBvZiB0aGUgcmVuZGVyZWQgdGFibGU7IHRoZSBwcm92aWRlZCBtaW5pbXVtIHdpZHRoIHdpbGxcbi8vIGluc3RlYWQgYmUgdXNlZCBhcyB0aGUgbWF4aW11bSB3aWR0aCBhbGxvd2VkIGluIGRldGVybWluaW5nIHRoZSBwcmVmZXJyZWQvXG4vLyBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgdGFibGUgY2VsbHMuIFRoYXQgaXMsIGEgdGFibGUgd2hvc2UgbmF0dXJhbCBzaXplIGlzXG4vLyBsZXNzIHRoYW4gdGhpcyBhbW91bnQgd2lsbCBub3Qgb3ZlcmZsb3cgdW50aWwgdGhlIHNwYWNlIGl0IGhhcyBpcyBsZXNzIHRoYW5cbi8vIGl0cyBpbnRyaW5zaWMgc2l6ZSwgd2hlcmUgYSB0YWJsZSB3aXRoIGxhcmdlIGNlbGxzIHdpbGwgb3ZlcmZsb3cgYXQgdGhlXG4vLyBwcm92aWRlZCBgbWluLXdpZHRoYCBicmVha3BvaW50LlxuLy9cbi8vIFZpc3VhbGx5LCBhbGwgdGFibGVzIHdpbGwgYmUgMTAwJSB3aWR0aC4gQXMgbm90ZWQgYWJvdmUsIHRhYmxlcyB3aWxsIG92ZXJmbG93XG4vLyBvbmNlIHRoZSBsZXNzZXIgb2YgdGhlIGBtaW4td2lkdGhgIGJlbG93IG9yIHRoZSBpbnRyaXNpYyBzaXplIG9mIHRoZSB0YWJsZVxuLy8gaXMgcmVhY2hlZC4gVGhpcyBvdmVyZmxvd2luZyBpcyBtYW5hZ2VkIGJ5IHRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudC5cbi8vXG4vLyBAaGVscGVyIGRvY2tzX3RhYmxlXG5cbi50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IHJlbSg1MDApO1xuXG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgb3V0ZXJtb3N0IHdyYXBwZXIgYXJvdW5kIGEgdGFibGUuIFRoaXMgd3JhcHBlciBpcyB1c2VkIHRvIHNpZ25hbCB0byB0aGVcbi8vIGVudGlyZSBjb21wb25lbnQgd2hlbiB0aGUgdGFibGUgaXMgaW4gb3ZlcmZsb3cgKHZpYSB0aGVcbi8vIGB0YWJsZV9fY29udGFpbmVyLS1pcy1vdmVyZmxvd2luZ2Agc3RhdGUpLiBEb2luZyBzbyBvbiB0aGUgb3V0bW9zdCBjb250YWluZXJcbi8vIGFsbG93cyBhZGp1c3RtZW50cyB0byBib3RoIHRoZSB0YWJsZSBpdHNlbGYgYW5kIHRoZSBgdGFibGVfX2FjdGlvbnNgLlxuLy9cbi8vIEluIGFkZGl0aW9uLCBgdGFibGVfX2NvbnRhaW5lcnNgIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlcXVpcmVkXG4vLyBzcGFjZSBiZXR3ZWVuIHRoZW1zZWx2ZXMgYW5kIG90aGVyIGNvbnRlbnQuXG5cbi50YWJsZV9fY29udGFpbmVyIHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIGF1dG87XG59XG5cbi8vKlxuLy8gU2lnbmFscyB0byB0aGUgYHRhYmxlYCB0aGF0IGl0IHNob3VsZCBmb3JjZSB0aGUgZmlyc3QgY2VsbCBpbiBlYWNoIHJvd1xuLy8gdG8gZmxvYXQgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIHJvd3MgKHRoZSByZXF1aXJlZCBsZWZ0IHBhZGRpbmcgb24gdGhlXG4vLyBzZWNvbmQgY2VsbCBpbiBlYWNoIHJvdyB0byBhY2NvdW50IGZvciB0aGUgYWJzb2x1dGVseS1wb3NpdGlvbmVkIGZpcnN0IGNlbGxcbi8vIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgSmF2YVNjcmlwdCBzaWRlIG9mIHRoaW5ncywgYXMgaXMgdGhlXG4vLyBlcXVhbGl6YXRpb24gb2YgYWxsIG9mIHRoZSBmaXJzdCBjZWxscycgd2lkdGhzKS4gQWRkaXRpb25hbGx5LCB0aGlzXG4vLyBzdGF0ZSBjYXVzZXMgdGhlIGB0YWJsZV9fYWN0aW9uc2AgdG8gYmUgbWFkZSB2aXNpYmxlLlxuLy9cbi8vIEBzZXRfYnkgVGFibGUjY2hlY2tfZm9yX292ZXJmbG93XG4vLyBAZGVtb190eXBlIG5vbmVcblxuLnRhYmxlX19jb250YWluZXItLWlzLW92ZXJmbG93aW5nIHtcbiAgLnRhYmxlX19jZWxsOmZpcnN0LWNoaWxkIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgQGluY2x1ZGUgei1pbmRleChjZWxsLXBlcnNpc3RhbnQsIHRhYmxlKTtcbiAgICBsZWZ0OiAwO1xuXG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgLy8gU3RhcnQgYm94IHNoYWRvdyBhcyB0cmFuc3BhcmVudCBzbyBpdCBjYW4gYmUgYW5pbWF0ZWQgaW50byB2aWV3IHdoZW5cbiAgICAvLyB0aGUgdGFibGUgaXMgYWN0dWFsbHkgYmVpbmcgc2Nyb2xsZWQuXG4gICAgYm94LXNoYWRvdzogJHRhYmxlLS1ib3gtc2hhZG93LXNpemUgcmdiYShjb2xvcihibGFjayksIDApO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlO1xuICB9XG5cbiAgLnRhYmxlX19hY3Rpb25zIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgbWF4LWhlaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIHdyYXBwZXIgYXJvdW5kIHRoZSBgdGFibGVgIHRoYXQgYWxsb3dzIGl0IHRvIHNjcm9sbCB3aGVuIHRoZSBtaW5pbXVtXG4vLyB3aWR0aCBvZiBpdHMgY29sdW1ucyAodGhlaXIgaW50cmluc2ljIHdpZHRoIG9yIHRoZWlyIHdpZHRoIHdoZW4gdGhlIHRhYmxlXG4vLyBpcyBsYXJnZXIgdGhhbiB0aGUgYG1pbi13aWR0aGAgc2V0IG9uIGB0YWJsZWApIGlzIGxhcmdlciB0aGFuIHRoZSBzcGFjZVxuLy8gYXZhaWxhYmxlIHRvIHRoaXMgY29udGFpbmVyLlxuXG4udGFibGVfX3Njcm9sbGVyIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLy8qXG4vLyBUaGUgc3RhdGUgdGhhdCBpcyBhZGRlZCBieSB0aGUgSmF2YVNjcmlwdCBjb21wb25lbnQgd2hlbiB0aGUgdGFibGUgaXNcbi8vIG92ZXJmbG93ZWQgKiphbmQqKiB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoaXMgc3ViY29tcG9uZW50IGlzIG5vdCBmdWxseVxuLy8gcGlubmVkIHRvIHRoZSBsZWZ0LlxuLy9cbi8vIEBzZXRfYnkgVGFibGUjaGFuZGxlX3Njcm9sbCwgVGFibGUjc2hpZnRfdGFibGVcblxuLnRhYmxlX19zY3JvbGxlci0taXMtc2Nyb2xsZWQge1xuICAudGFibGVfX2NlbGw6Zmlyc3QtY2hpbGQge1xuICAgIGJveC1zaGFkb3c6ICR0YWJsZS0tYm94LXNoYWRvdy1zaXplIHJnYmEoY29sb3IoYmxhY2spLCAwLjEpO1xuICB9XG59XG5cblxuXG4vLypcbi8vIFRoZSB3cmFwcGVyIGFyb3VuZCBhIGB0YWJsZWAgdGhhdCBwcm92aWRlcyBhIGZldyB2aXN1YWwgcGllY2VzLiBNb3N0XG4vLyBub3RpY2VhYmx5LCB0aGlzIGFkZHMgdGhlIGJvcmRlciBhbmQgYm9yZGVyIHJhZGl1cyBvbiB0aGUgb3V0c2lkZSBvZiB0aGVcbi8vIHRhYmxlLiBUaGVzZSBwaWVjZXMgbXVzdCBiZSBvbiB0aGlzIGNvbnRhaW5lciByYXRoZXIgdGhhbiB0aGVcbi8vIGB0YWJsZV9fY29udGFpbmVyYCBzdWJjb21wb25lbnQgYmVjYXVzZSBpdCBzaG91bGQgb25seSB3cmFwIGFyb3VuZCB0aGVcbi8vIGB0YWJsZWAsIGFuZCBub3QgdGhlIGB0YWJsZV9fYWN0aW9uc2AuIFRoZXNlIHJ1bGVzIGNhbid0IGJlIG9uIHRoZVxuLy8gYHRhYmxlX19zY3JvbGxlcmAgc3ViY29tcG9uZW50LCBlaXRoZXIsIGJlY2F1c2UgaXQgbXVzdCBiZSBgb3ZlcmZsb3c6IGhpZGRlbmBcbi8vICh0byBoaWRlIHRoZSBwYXJ0cyBvdXRzaWRlIHRoZSByb3VuZGVkIGNvcm5lcnMpLCB3aGVyZSB0aGUgc2Nyb2xsZXIgbXVzdFxuLy8gYmUgYWxsb3dlZCB0byBzY3JvbGwuXG4vL1xuLy8gTW9yZSBpbXBvcnRhbnRseSwgaG93ZXZlciwgdGhpcyBjb250YWluZXIgaXMgYHBvc2l0aW9uOiByZWxhdGl2ZWAgYW5kLCBhc1xuLy8gc3VjaCwgYWN0cyBhcyB0aGUgZWxlbWVudCBhZ2FpbnN0IHdoaWNoIHRoZSBwZXJzaXN0YW50IGNlbGxzIGFyZVxuLy8gcG9zaXRpb25lZC4gVGhlc2UgcnVsZXMgY2FuJ3QgYmUgb24gdGhlIGB0YWJsZV9fc2Nyb2xsZXJgIGJlY2F1c2UgaXQgc2Nyb2xscyxcbi8vIHdoZXJlIHRoZSBwZXJzaXN0YW50IGNlbGxzIHNob3VsZCBiZSBmaXhlZCBldmVuIGFzIHRoZSByZXN0IG9mIHRoZSB0YWJsZVxuLy8gc2Nyb2xscy5cblxuLnRhYmxlX19iYWNrZHJvcCB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgei1pbmRleChiYWNrZHJvcCwgdGFibGUpO1xuXG4gIC8vIGJveCBtb2RlbFxuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGNsZWFyOiBib3RoO1xuXG4gIC8vIGJhY2tkcm9wXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlcjogJHRhYmxlLS1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICR0YWJsZS0tYm9yZGVyLXJhZGl1cztcbn1cblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgYXJvdW5kIHRoZSBhY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgYHRhYmxlYC4gRm9yIG5vdyxcbi8vIHRoaXMgaW5jbHVkZXMgb25seSB0aGUgc2VnbWVudGVkIGJ1dHRvbiB0byBzaGlmdCB0aGUgdGFibGUgcmlnaHQvIGxlZnQgYnlcbi8vIG9uZSBjb2x1bW4uXG5cbi50YWJsZV9fYWN0aW9ucyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDAlKTtcbiAgbWF4LWhlaWdodDogMDtcbiAgZmxvYXQ6IHJpZ2h0O1xuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzICRib3VuY3ktdHJhbnNpdGlvbixcbiAgICAgICAgICAgICAgbWF4LWhlaWdodCAwLjNzIGVhc2UsXG4gICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tIDAuM3MgZWFzZTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGhlYWRlciByb3cgb2YgdGhlIHRhYmxlLlxuXG4udGFibGVfX2hlYWRlciB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHBhZGRpbmc6IDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgYXJvdW5kIHRoZSByb3dzIHRoYXQgbWFrZSB1cCB0aGUgYm9keSBvZiB0aGUgdGFibGUuXG5cbi50YWJsZV9fYm9keSB7XG4gIC8vIFN0cmlwZWQgcm93cyFcbiAgPiAudGFibGVfX3JvdzpudGgtY2hpbGQob2RkKSA+IC50YWJsZV9fY2VsbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoZ3JheS1saWdodGVyKTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIHJvdyBvZiB0YWJsZSBjZWxscy5cblxuLnRhYmxlX19yb3cge1xuICAvLyBIaWRlIHRoZSBvdmVyZmxvdyBzbyB0aGF0IGJveCBzaGFkb3dzIG9uIHBlcnNpc3RhbnQgY2VsbHMgZG9uJ3QgYmxlZWRcbiAgLy8gYmV0d2VlbiByb3dzLlxuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5cblxuLy8qXG4vLyBBbiBpbmRpdmlkdWFsIHRhYmxlIGNlbGwuXG5cbi50YWJsZV9fY2VsbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgei1pbmRleChjZWxsLCB0YWJsZSk7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHdoaXRlKTtcbn1cblxuLy8qXG4vLyBBIHRhYmxlIGNlbGwgd2l0aCBjZW50ZXItYWxpZ25lZCB0ZXh0LlxuXG4udGFibGVfX2NlbGwtLWNlbnRlcmVkIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLy8gICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fXG4vLyAgICAgICAgX19fICAgIC8gIC9cXCAgICAgICAgX19fX18gICAgICAgICAgICAgICAgICAgX19fICAgICAgICAvICAvXFwgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAvICAvOjpcXCAgICAgIC8gIC86OlxcICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAvICAvOi9fICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86LyAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXCAgX19fICAgICBfX18gIC8gIC86LyAgICAgLyAgLzovIC9cXCAgICAvICAvOi9cbi8vICAgICAvICAvOi8gLyAgLzovfi86OlxcICAvICAvOi9+Lzo6XFwvX18vXFwgICAvICAvXFwvX18vOjpcXCAgICAvICAvOi8gLzo6XFwgIC8gIC86L1xuLy8gICAgLyAgLzo6XFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L1xcX19cXC9cXDpcXF9fL19fLzovIC86L1xcOlxcLyAgLzo6XFxcbi8vICAgL19fLzovXFw6XFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcICAvOi8gICAgXFwgIFxcOlxcL1xcICBcXDpcXC86L34vOi9fXy86L1xcOlxcXG4vLyAgIFxcX19cXC8gIFxcOlxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXC86LyAgICAgIFxcX19cXDo6L1xcICBcXDo6LyAvOi9cXF9fXFwvICBcXDpcXFxuLy8gICAgICAgIFxcICBcXDpcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICAgICAvX18vOi8gIFxcX19cXC8gLzovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICAgIFxcX19cXC9cXCAgXFw6XFwgICAgICAgXFwgIFxcOjovICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgL19fLzovICAgICAgICBcXF9fXFwvXG4vLyAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gVGFibGlzdFxuLy9cbi8vIFRhYmxpc3RzIGFyZSB1c2VkIHRvIGNyZWF0ZSBncm91cHMgb2YgcmVsYXRlZCBjb250ZW50IHRoYXQgaXMgY29uZGl0aW9uYWxseVxuLy8gc2hvd24gb3IgaGlkZGVuIGJhc2VkIG9uIHRoZSBzZWxlY3RlZCB0YWIuIFRoZSBKYXZhU2NyaXB0IHBhcnQgb2YgdGhpc1xuLy8gY29tcG9uZW50cyBlbnN1cmVzIHRoYXQgdGhlIHJlcXVpcmVkIGFjY2Vzc2liaWxpdHktcmVsYXRlZCBtYXJrdXAgaXMgYWRkZWRcbi8vIHRvIHRoZSB0YWJzLCBhbmQgYSBudW1iZXIgb2YgZGlmZmVyZW50IHN0eWxlcyBhcmUgYXZhaWxhYmxlIGRlcGVuZGluZyBvblxuLy8gdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIHRhYnMgYXJlIGJlaW5nIHVzZWQuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgYSBzZXQgb2YgdGFicy4gV2hpbGUgcGFuZWxzIGFuZCB0YWJzIGJvdGggdXNlIGB0YWJsaXN0YFxuLy8gYXMgdGhlaXIgYmFzZSBjb21wb25lbnQsIG9ubHkgYHRhYmxpc3RfX3RhYmBzIGFyZSBjaGlsZCBub2RlcyBvZiB0aGlzXG4vLyBjb21wb25lbnQ7IGB0YWJsaXN0X19wYW5lbGBzIChhbmQgdGhlaXIgY29udGFpbmVyKSBhcmUgc2VwYXJhdGUgZnJvbSB0aGVcbi8vIGRvY3VtZW50IHRvIGFsbG93IHRhYnMgdG8gbW92ZSBhcm91bmQgdGhlIHBhZ2UgaW5kZXBlbmRlbnRseSBvZiB0aGUgY29udGVudFxuLy8gdGhleSBhY3R1YWxseSBhY3RpdmF0ZS5cbi8vXG4vLyBUaGUgYHRhYmxpc3QtLW1hbmFnZXMtdXJsYCB2YXJpYW50IGlzIHVuaXF1ZSBpbiB0aGF0IGl0IGhhcyBubyB2aXN1YWxcbi8vIGRpZmZlcmVuY2VzLCBidXQgd2lsbCBwcmVzZXJ2ZSB0aGUgc2VsZWN0ZWQgdGFiIHZpYSBhIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJcbi8vIGFuZCByZXN0b3JlIHRoZSBzZWxlY3RlZCB0YWIgb24gc3Vic2VxdWVudCBwYWdlIGxvYWRzLiBUbyBhZGQgdGhpc1xuLy8gZnVuY3Rpb25hbGl0eSwgc2ltcGx5IHBhc3MgYHRydWVgIGZvciB0aGUgYDptYW5hZ2VfdXJsYCBvcHRpb24gb2YgdGhlXG4vLyBgZG9ja3NfdGFibGlzdGAgdmlldyBoZWxwZXIuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc190YWJsaXN0XG5cbi50YWJsaXN0IHtcbiAgLy8gYm94IG1vZGVsXG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoaGFsZihkZWZhdWx0KHNwYWNpbmcpKSk7XG5cbiAgLy8gYmFja2Ryb3BcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLy8qXG4vLyBBIGxhcmdlciBzZXQgb2YgdGFicyAoYm90aCBpbiB0ZXJtcyBvZiB0aGUgZm9udCBzaXplIG9mIHRoZSB0YWJzIGFuZCB0aGVcbi8vIHBhZGRpbmcgd2l0aGluIGVhY2ggdGFiKS5cbi8vXG4vLyBAc2V0X2J5IDpzaXplICg6bGFyZ2UpXG5cbi50YWJsaXN0LS1sYXJnZSB7XG4gIG1hcmdpbjogZG91YmxlKGRlZmF1bHQoc3BhY2luZykpIDA7XG5cbiAgPiAudGFibGlzdF9fdGFiIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUodGFibGlzdC0tbGFyZ2UpO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZykgbXVsdGlwbHkoZGVmYXVsdChzcGFjaW5nKSwgMi41KSBtdWx0aXBseShkZWZhdWx0KHNwYWNpbmcpLCAxLjIpO1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgfVxuXG4gID4gLnRhYmxpc3RfX3RhYi0taXMtYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIH1cbn1cblxuLy8qXG4vLyBBIHZhcmlhdGlvbiBvZiB0aGUgdGFibGlzdCB0aGF0IGZvcmNlcyB0aGUgSmF2YVNjcmlwdCB0byBwcmVzZXJ2ZSB0aGVcbi8vIHNlbGVjdGVkIHRhYiBhbmQgcmVsb2FkIHRoYXQgdGFiIG9uIHN1YnNlcXVlbnQgcGFnZSBsb2Fkcy5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgOm1hbmFnZV91cmxcblxuLnRhYmxpc3QtLW1hbmFnZXMtdXJsIHt9XG5cblxuXG5cbi8vKlxuLy8gQSBzaW5nbGUgdGFiIGluIHRoZSB0YWJsaXN0LiBUYWJzIHdpbGwgYmUgYSByZWxhdGl2ZWx5IGxpZ2h0IGNvbG9yIGJ5XG4vLyBkZWZhdWx0IHdpdGggcHJvZ3Jlc3NpdmVseSBkYXJrZXIgc2hhZGVzIHVzZWQgb24gYDpmb2N1c2AvYDpob3ZlcmAgYW5kIHdoZW5cbi8vIGA6YWN0aXZlYC5cbi8vXG4vLyBUYWJzIHNob3VsZCBzdGlsbCB3b3JrIGV2ZW4gd2hlbiB0aGVyZSBpcyBubyBKYXZhU2NyaXB0IG9yIENTUy4gVG8gbWFrZSB0aGlzXG4vLyB3b3JrLCBlbnN1cmUgdGhhdCBlYWNoIGB0YWJsaXN0X190YWJgIGlzIGFuIGBhYCB0YWcgd2l0aCBhbiBgaHJlZmAgdGhhdFxuLy8gcG9pbnRzIHRvIHRoZSBgaWRgIG9mIHRoZSByZWxldmFudCBgdGFibGlzdF9fcGFuZWxgLiBMaWtld2lzZSwgdGhlIGBpZGBzIG9mXG4vLyB0aGUgdGFiIGFuZCBwYW5lbCBzaG91bGQgbWF0Y2ggdXAgdmFpIHRoZSBgYXJpYS1jb250cm9sc2AgYW5kXG4vLyBgYXJpYS1sYWJlbGxlZGJ5YCBwcm9wZXJ0aWVzLiBUaGUgSmF2YVNjcmlwdCBjb21wb25lbnQsIGlmIHJ1biwgd2lsbFxuLy8gZ3VhcmFudGVlIGFsbCBvZiB0aGVzZSBhc3NvY2lhdGlvbnMuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc190YWJsaXN0X3RhYlxuXG4udGFibGlzdF9fdGFiIHtcbiAgLy8gYm94IG1vZGVsXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMCBkZWZhdWx0KGNvbnRyb2wtcGFkZGluZyk7XG5cbiAgLy8gYmFja2Ryb3BcbiAgb3BhY2l0eTogMC4zO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIGJvcmRlci1jb2xvciAwLjNzIGVhc2U7XG5cbiAgLy8gdHlwZVxuICBAaW5jbHVkZSBmb250LXNpemUoY29udHJvbCk7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXIpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgJjpmb2N1cyxcbiAgJjpob3ZlciB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICA+IC5pY29uIHtcbiAgICBoZWlnaHQ6IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICB3aWR0aDogZG91YmxlKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIEBpbmNsdWRlIGljb24tLXJlY29sb3IoZ3JheSwgZGFyayk7XG4gICAgc3Ryb2tlLXdpZHRoOiAzcHg7XG4gIH1cbn1cblxuLy8qXG4vLyBUaGUgdmFyaWF0aW9uIGFkZGVkIHRvIHRoZSB0YWIgd2hvc2UgY29ycmVzcG9uZGluZyB0YWIgaXMgY3VycmVudGx5XG4vLyB2aXNpYmxlLiBUaGlzIGNsYXNzIGNhbiBlaXRoZXIgYmUgYXBwbGllZCBtYW51YWxseSBieSBzZXR0aW5nIHRoZSBgOmFjdGl2ZT9gXG4vLyBhcmd1bWVudCB0byB0aGUgaGVscGVyIG1ldGhvZCB0byBgdHJ1ZWAgb3IgYnkgY2xpY2tpbmcgb24gdGhlIGNvcnJlY3QgdGFiXG4vLyAod2hpY2ggZG9lcyBhbGwgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBtYW5pcHVsYXRpb25zIHRocm91Z2ggdGhlIEphdmFTY3JpcHRcbi8vIGNvbXBvbmVudCkuXG4vL1xuLy8gQGRlbW9fdHlwZSBub25lXG4vLyBAc2V0X2J5IDphY3RpdmU/XG5cbi50YWJsaXN0X190YWItLWlzLWFjdGl2ZSB7XG4gICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8vKlxuLy8gVGhlIHRleHQgd2l0aGluIGEgdGFiLiBUaGlzIGNvbnRhaW5lciBpcyByZXF1aXJlZCBpbiBvcmRlciBmb3IgdGhlIHRleHQgYW5kXG4vLyAob3B0aW9uYWwpIGljb24gdG8gYmUgYWJvdmUgb25lIGFub3RoZXIuXG5cbi50YWJsaXN0X190YWJfX3RleHQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuXG5cbi8vKlxuLy8gQSBwYW5lbCB0aGF0IGNvbnRhaW5zIHRoZSBjb250ZW50IHRoYXQgc2hvdWxkIGJlIHNob3duIHdoZW4gdGhlIGFzc29jaWF0ZWRcbi8vIHRhYiBpcyBhY3RpdmUuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc190YWJsaXN0X3BhbmVsXG5cbi50YWJsaXN0X19wYW5lbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8vKlxuLy8gQSBzdGF0ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGFzc29jaWF0ZWQgdGFiIGlzIGFjdGl2ZSBhbmQgdGhlIGNvbnRlbnRzIG9mXG4vLyB0aGlzIHBhbmVsIHNob3VsZCBiZSBtYWRlIHZpc2libGUuIFRoZXJlIGlzIG5vIGFuaW1hdGlvbiB3aGVuIHN3aXRjaGluZ1xuLy8gYmV0d2VlbiB0YWJzIOKAlMKgdGhleSBzaW1wbHkgcG9wIGluIGFuZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgOmFjdGl2ZT9cblxuLnRhYmxpc3RfX3BhbmVsLS1pcy1hY3RpdmUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgYXJvdW5kIGFsbCBvZiB0aGUgcGFuZWxzIGZvciBhIHRhYmxpc3QuIFRoaXMgY29udGFpbmVyXG4vLyB0ZWNobmljYWxseSBkb2VzIG5vdGhpbmcsIGJ1dCBpcyBhIG5pY2Ugd2F5IHRvIGlzb2xhdGUgYSBzZXQgb2YgdGFiIHBhbmVsc1xuLy8gZnJvbSB0aGUgc3Vycm91bmRpbmcgY29udGVudC5cblxuLnRhYmxpc3RfX3BhbmVsLWNvbnRhaW5lciB7fVxuIiwiLnZlcnRpY2FsLXNwYWNlciB7XG4gICAgbWFyZ2luOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpIDA7XG59XG4iLCIudmVydGljYWwtc3RhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnZlcnRpY2FsLXN0YWNrX19pdGVtIHtcbiAgZmxleDogMSAxIDBweDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuLnZlcnRpY2FsLXN0YWNrX19pdGVtLS1maXhlZCB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbiIsImJvZHkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJi54LXJheV9faGVscGVycy0teC1yYXktaXMtYWN0aXZlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi54LXJheSB7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKHdoaXRlKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IGJvdHRvbTogMDtcbiAgbGVmdDogMDsgcmlnaHQ6IDA7XG4gIHotaW5kZXg6IC0xO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuXG4gIC5wYWdlLWhlYWRlciB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cbn1cblxuLngtcmF5LS1pcy1hY3RpdmUge1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAxMjAwO1xufVxuXG5cblxuLngtcmF5X19jb250ZW50IHtcbiAgcGFkZGluZy1ib3R0b206IDNyZW07XG59XG5cblxuLngtcmF5X19saXN0IHtcbiAgcGFkZGluZzogZGVmYXVsdChzcGFjaW5nKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xufVxuXG4ueC1yYXlfX2Nsb3NlciB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG59XG5cblxuXG4ueC1yYXlfX2RpYWdyYW0ge1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIDAgMDtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSk7XG59XG5cblxuLngtcmF5X19kZXRhaWxzIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLngtcmF5X19kZXRhaWxzLS1pcy12aXNpYmxlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi54LXJheV9fZGV0YWlsc19fdGFnbmFtZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbiAgcGFkZGluZzogMC4zZW0gMC40ZW0gMC4yZW07XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xufVxuXG4ueC1yYXlfX2RldGFpbHNfX2Rlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogKDIgKiBkZWZhdWx0KHNwYWNpbmcpKTtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgX19fICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAgIF9fX19fICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gICAgLyAgL1xcICAgIC8gIC86L1xcOlxcICAgIC8gIC86L18gICAgICAvICAvOjpcXCAgICAgLyAgLzo6XFwgICAgICAvICAvOjpcXFxuLy8gICAgIC8gIC86LyAvXFwgIC8gIC86LyAgIC8gIC86LyAgXFw6XFwgIC8gIC86LyAvXFwgICAgLyAgLzovXFw6XFwgICAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXFxuLy8gICAgLyAgLzovIC86OlxcL19fLzo6XFwgIC9fXy86LyBcXF9fXFw6fC8gIC86LyAvOi9fICAvICAvOi9+Lzo6XFwgLyAgLzovfi86OlxcICAvICAvOi9+LzovXG4vLyAgIC9fXy86LyAvOi9cXDpcXF9fXFwvXFw6XFxfXFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFwvX18vOi8gLzovXFw6L19fLzovIC86L1xcOlxcL19fLzovIC86L19fX1xuLy8gICBcXCAgXFw6XFwvOi9+LzovICBcXCAgXFw6XFwvXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcLzovfi86fCAgXFw6XFwvOi9fX1xcL1xcICBcXDpcXC86Ojo6Oi9cbi8vICAgIFxcICBcXDo6LyAvOi8gICAgXFxfX1xcOjovXFwgIFxcOlxcLzovICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6Oi8gLzovIFxcICBcXDo6LyAgICAgIFxcICBcXDo6L35+fn5cbi8vICAgICBcXF9fXFwvIC86LyAgICAgL19fLzovICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgIC9fXy86LyAgICAgIFxcX19cXC8gICAgXFxfX1xcLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBTaWRlYmFyXG4vLyBAZ3JvdXAgUGFydGlhbHNcbi8vXG4vLyBUaGUgbWFpbiBzaWRlYmFyIGZvciB0aGUgcGFnZS4gVGhpcyBzaWRlYmFyIGlzIGFjdGl2YXRlZCBieSBhIHRvZ2dsZVxuLy8gKGBzaWRlYmFyX190b2dnbGVyYCkgYW5kIHNsaWRlcyBvdmVyIHRoZSBtYWluIGNvbnRlbnQgKHdpdGhvdXQgbW92aW5nIHRoZVxuLy8gbWFpbiBjb250ZW50KS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBUaGUgbWFpbiBwaWVjZSBvZiB0aGUgc2lkZWJhci4gVGhpcyBwcm92aWRlcyB0aGUgdmlzdWFsIGJhY2tpbmcgb2YgdGhlXG4vLyBzaWRlYmFyIGFuZCBtYW5hZ2VzIHRoZSByZXZlYWwvIGhpZGUgdHJhbnNpdGlvbi5cblxuLnNpZGViYXIge1xuICAvLyBwb3NpdGlvblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7IHRvcDogMDtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gIG1heC13aWR0aDogMTVyZW07XG5cbiAgLy8gYm94IG1vZGVsXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwdmg7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3Iod2hpdGUpO1xuICBAaW5jbHVkZSBkZWZhdWx0KGJveC1zaGFkb3cpO1xuXG4gIEBpbmNsdWRlIGFmdGVyKDQwcmVtKSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbi8vKlxuLy8gVGhlIHN0YXRlIHRoYXQgaXMgYWRkZWQgYnkgdGhlIEphdmFTY3JpcHQgY29tcG9uZW50IHdoZW4gdGhlIHNpZGViYXIgaXNcbi8vIHZpc2libGUuXG5cbi5zaWRlYmFyLS1pcy1hY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciB0aGUgaXRlbSB0aGF0IHNob3VsZCBhY3RpdmF0ZSB0aGUgc2lkZWJhci4gVGhlIEphdmFTY3JpcHRcbi8vIGNvbXBvbmVudCB3aWxsIGxvb2sgZm9yIGFueSBpbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBhbmQgd2lsbCBhdHRhY2ggYGNsaWNrYFxuLy8gaGFuZGxlcnMgdGhhdCB0aGF0IHRvZ2dsZSB0aGUgc2lkZWJhcidzIHZpc2liaWxpdHkuXG5cbi5zaWRlYmFyX190b2dnbGVyIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAvLyBAaW5jbHVkZSBhZnRlcig0MHJlbSkge1xuICAvLyAgIGRpc3BsYXk6IG5vbmU7XG4gIC8vIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */