wao 0.41.3 → 0.41.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/.babelrc-cjs +5 -0
  2. package/.babelrc-esm +5 -0
  3. package/.gitmodules +4 -0
  4. package/.prettierrc +6 -0
  5. package/README.md +90 -0
  6. package/app/.eslintrc.json +3 -0
  7. package/app/.mocharc.cjs +6 -0
  8. package/app/arweave.mjs +87 -0
  9. package/app/components/Footer.js +76 -0
  10. package/app/components/Global.js +1128 -0
  11. package/app/components/Header.js +306 -0
  12. package/app/components/Left.js +28 -0
  13. package/app/components/Logo.js +34 -0
  14. package/app/components/Middle.js +37 -0
  15. package/app/components/Sidebar.js +93 -0
  16. package/app/components/Tags.js +42 -0
  17. package/app/components/editor/Editor.js +322 -0
  18. package/app/components/editor/FilePath.js +42 -0
  19. package/app/components/editor/MonacoEditor.js +44 -0
  20. package/app/components/left/LeftMessages.js +85 -0
  21. package/app/components/left/LeftModules.js +86 -0
  22. package/app/components/left/LeftNetworks.js +438 -0
  23. package/app/components/left/LeftProcesses.js +98 -0
  24. package/app/components/left/LeftProjects.js +397 -0
  25. package/app/components/left/LeftTests.js +189 -0
  26. package/app/components/middle/MiddleBlocks.js +79 -0
  27. package/app/components/middle/MiddleEntity.js +16 -0
  28. package/app/components/middle/MiddleEntityAccount.js +264 -0
  29. package/app/components/middle/MiddleEntityAssignment.js +104 -0
  30. package/app/components/middle/MiddleEntityBlock.js +148 -0
  31. package/app/components/middle/MiddleEntityMessage.js +430 -0
  32. package/app/components/middle/MiddleEntityModule.js +183 -0
  33. package/app/components/middle/MiddleEntityProcess.js +323 -0
  34. package/app/components/middle/MiddleEntityTx.js +211 -0
  35. package/app/components/middle/MiddleMessages.js +87 -0
  36. package/app/components/middle/MiddleModules.js +89 -0
  37. package/app/components/middle/MiddleNetworks.js +516 -0
  38. package/app/components/middle/MiddleProcesses.js +87 -0
  39. package/app/components/middle/MiddleTests.js +134 -0
  40. package/app/components/modals/CreateFileModal.js +115 -0
  41. package/app/components/modals/CreateFolderModal.js +83 -0
  42. package/app/components/modals/CreateProjectModal.js +63 -0
  43. package/app/components/modals/FSModal.js +141 -0
  44. package/app/components/modals/ImportModal.js +105 -0
  45. package/app/components/modals/LaunchNetworkModal.js +95 -0
  46. package/app/components/modals/Modal.js +38 -0
  47. package/app/components/modals/ProxyModal.js +122 -0
  48. package/app/components/modals/RenameFileModal.js +95 -0
  49. package/app/components/styles/EditorScrollbarStyle.js +29 -0
  50. package/app/components/styles/EntityScrollbarStyle.js +29 -0
  51. package/app/components/styles/GlobalStyle.js +102 -0
  52. package/app/components/styles/XtermStyle.js +37 -0
  53. package/app/components/terminal/Terminal.js +132 -0
  54. package/app/components/terminal/Xterm.js +160 -0
  55. package/app/components/ui/avatar.jsx +49 -0
  56. package/app/components/ui/checkbox.jsx +17 -0
  57. package/app/components/ui/close-button.jsx +20 -0
  58. package/app/components/ui/color-mode.jsx +61 -0
  59. package/app/components/ui/dialog.jsx +54 -0
  60. package/app/components/ui/drawer.jsx +44 -0
  61. package/app/components/ui/field.jsx +22 -0
  62. package/app/components/ui/input-group.jsx +39 -0
  63. package/app/components/ui/popover.jsx +49 -0
  64. package/app/components/ui/provider.jsx +12 -0
  65. package/app/components/ui/radio.jsx +17 -0
  66. package/app/components/ui/slider.jsx +107 -0
  67. package/app/components/ui/toaster.jsx +69 -0
  68. package/app/components/ui/tooltip.jsx +35 -0
  69. package/app/index.js +10 -0
  70. package/app/jsconfig.json +7 -0
  71. package/app/lib/GithubCSS.js +1218 -0
  72. package/app/lib/addon-fit.js +72 -0
  73. package/app/lib/data.js +31 -0
  74. package/app/lib/github-markdown.css +1169 -0
  75. package/app/lib/global.js +1 -0
  76. package/app/lib/guide.js +82 -0
  77. package/app/lib/hub.js +109 -0
  78. package/app/lib/scripts.js +47 -0
  79. package/app/lib/store.js +34 -0
  80. package/app/lib/use.js +64 -0
  81. package/app/lib/utils.js +387 -0
  82. package/app/lib/webrtc.js +217 -0
  83. package/app/next.config.js +25 -0
  84. package/app/package.json +62 -0
  85. package/app/pages/404.js +9 -0
  86. package/app/pages/_app.js +10 -0
  87. package/app/pages/_document.js +14 -0
  88. package/app/pages/index.js +121 -0
  89. package/app/playwright.config.mjs +41 -0
  90. package/app/proxy.mjs +21 -0
  91. package/app/public/assets/cover.png +0 -0
  92. package/app/public/blueprints/apm.lua +91 -0
  93. package/app/public/blueprints/arena.lua +345 -0
  94. package/app/public/blueprints/arns.lua +318 -0
  95. package/app/public/blueprints/chat.lua +210 -0
  96. package/app/public/blueprints/chatroom.lua +56 -0
  97. package/app/public/blueprints/patch-legacy-reply.lua +13 -0
  98. package/app/public/blueprints/staking.lua +93 -0
  99. package/app/public/blueprints/token.lua +298 -0
  100. package/app/public/blueprints/voting.lua +45 -0
  101. package/app/public/favicon.ico +0 -0
  102. package/app/public/logo.png +0 -0
  103. package/cli-esm.js +55 -0
  104. package/cli.js +54 -0
  105. package/devnet/app/api.js +129 -0
  106. package/devnet/app/components/layout.js +89 -0
  107. package/devnet/app/components/pagination.js +144 -0
  108. package/devnet/app/components/search.js +159 -0
  109. package/devnet/app/components/table.js +124 -0
  110. package/devnet/app/components/tags.js +89 -0
  111. package/devnet/app/index.html +14 -0
  112. package/devnet/app/main.js +215 -0
  113. package/devnet/app/router.js +59 -0
  114. package/devnet/app/state.js +19 -0
  115. package/devnet/app/style.css +1606 -0
  116. package/devnet/app/utils.js +77 -0
  117. package/devnet/app/views/blocks.js +75 -0
  118. package/devnet/app/views/dashboard.js +127 -0
  119. package/devnet/app/views/entity.js +1473 -0
  120. package/devnet/app/views/messages.js +90 -0
  121. package/devnet/app/views/modules.js +165 -0
  122. package/devnet/app/views/processes.js +90 -0
  123. package/devnet/app/views/schedulers.js +90 -0
  124. package/devnet/app/views/transactions.js +88 -0
  125. package/devnet/migrations/0001_initial.sql +51 -0
  126. package/devnet/package.json +26 -0
  127. package/devnet/playwright.config.js +7 -0
  128. package/devnet/src/cu-worker.js +166 -0
  129. package/devnet/src/index.js +309 -0
  130. package/devnet/vite.config.js +17 -0
  131. package/devnet/vitest.config.js +10 -0
  132. package/devnet/wrangler-cu.toml +32 -0
  133. package/devnet/wrangler.toml +38 -0
  134. package/dhfs-tutorial-app/package.json +15 -0
  135. package/dist/esm/workspace/dashboard/public/favicon.png +0 -0
  136. package/dist/esm/workspace/src/counter.lua +14 -0
  137. package/dist/package.json +82 -0
  138. package/hb.sh +18 -0
  139. package/hbsig/.babelrc-cjs +5 -0
  140. package/hbsig/.babelrc-esm +5 -0
  141. package/hbsig/README.md +1 -0
  142. package/hbsig/dist/cjs/bin_to_str.js +44 -0
  143. package/hbsig/dist/cjs/collect-body-keys.js +470 -0
  144. package/hbsig/dist/cjs/commit.js +330 -0
  145. package/hbsig/dist/cjs/encode-array-item.js +110 -0
  146. package/hbsig/dist/cjs/encode-utils.js +242 -0
  147. package/hbsig/dist/cjs/encode.js +1365 -0
  148. package/hbsig/dist/cjs/erl_json.js +326 -0
  149. package/hbsig/dist/cjs/erl_str.js +1042 -0
  150. package/hbsig/dist/cjs/flat.js +279 -0
  151. package/hbsig/dist/cjs/http-message-signatures/httpbis.js +489 -0
  152. package/hbsig/dist/cjs/http-message-signatures/index.js +25 -0
  153. package/hbsig/dist/cjs/http-message-signatures/structured-header.js +129 -0
  154. package/hbsig/dist/cjs/httpsig.js +861 -0
  155. package/hbsig/dist/cjs/id.js +470 -0
  156. package/hbsig/dist/cjs/index.js +174 -0
  157. package/hbsig/dist/cjs/nocrypto.js +51 -0
  158. package/hbsig/dist/cjs/parser.js +201 -0
  159. package/hbsig/dist/cjs/send-utils.js +1231 -0
  160. package/hbsig/dist/cjs/send.js +211 -0
  161. package/hbsig/dist/cjs/signer-utils.js +494 -0
  162. package/hbsig/dist/cjs/signer.js +436 -0
  163. package/hbsig/dist/cjs/structured.js +515 -0
  164. package/hbsig/dist/cjs/test.js +12 -0
  165. package/hbsig/dist/cjs/utils.js +44 -0
  166. package/hbsig/dist/esm/bin_to_str.js +46 -0
  167. package/hbsig/dist/esm/collect-body-keys.js +436 -0
  168. package/hbsig/dist/esm/commit.js +219 -0
  169. package/hbsig/dist/esm/encode-array-item.js +112 -0
  170. package/hbsig/dist/esm/encode-utils.js +191 -0
  171. package/hbsig/dist/esm/encode.js +1256 -0
  172. package/hbsig/dist/esm/erl_json.js +292 -0
  173. package/hbsig/dist/esm/erl_str.js +1144 -0
  174. package/hbsig/dist/esm/flat.js +250 -0
  175. package/hbsig/dist/esm/http-message-signatures/httpbis.js +438 -0
  176. package/hbsig/dist/esm/http-message-signatures/index.js +4 -0
  177. package/hbsig/dist/esm/http-message-signatures/structured-header.js +105 -0
  178. package/hbsig/dist/esm/httpsig.js +866 -0
  179. package/hbsig/dist/esm/id.js +459 -0
  180. package/hbsig/dist/esm/index.js +13 -0
  181. package/hbsig/dist/esm/nocrypto.js +4 -0
  182. package/hbsig/dist/esm/package.json +3 -0
  183. package/hbsig/dist/esm/parser.js +171 -0
  184. package/hbsig/dist/esm/send-utils.js +1132 -0
  185. package/hbsig/dist/esm/send.js +142 -0
  186. package/hbsig/dist/esm/signer-utils.js +375 -0
  187. package/hbsig/dist/esm/signer.js +312 -0
  188. package/hbsig/dist/esm/structured.js +496 -0
  189. package/hbsig/dist/esm/test.js +2 -0
  190. package/hbsig/dist/esm/utils.js +29 -0
  191. package/hbsig/dist/package.json +39 -0
  192. package/hbsig/make.js +36 -0
  193. package/hbsig/package.json +39 -0
  194. package/hbsig/src/bin_to_str.js +46 -0
  195. package/hbsig/src/collect-body-keys.js +436 -0
  196. package/hbsig/src/commit.js +219 -0
  197. package/hbsig/src/encode-array-item.js +112 -0
  198. package/hbsig/src/encode-utils.js +191 -0
  199. package/hbsig/src/encode.js +1256 -0
  200. package/hbsig/src/erl_json.js +292 -0
  201. package/hbsig/src/erl_str.js +1144 -0
  202. package/hbsig/src/flat.js +250 -0
  203. package/hbsig/src/http-message-signatures/httpbis.js +438 -0
  204. package/hbsig/src/http-message-signatures/index.js +4 -0
  205. package/hbsig/src/http-message-signatures/structured-header.js +105 -0
  206. package/hbsig/src/httpsig.js +866 -0
  207. package/hbsig/src/id.js +459 -0
  208. package/hbsig/src/index.js +13 -0
  209. package/hbsig/src/nocrypto.js +4 -0
  210. package/hbsig/src/parser.js +171 -0
  211. package/hbsig/src/send-utils.js +1132 -0
  212. package/hbsig/src/send.js +142 -0
  213. package/hbsig/src/signer-utils.js +375 -0
  214. package/hbsig/src/signer.js +312 -0
  215. package/hbsig/src/structured.js +496 -0
  216. package/hbsig/src/test.js +2 -0
  217. package/hbsig/src/utils.js +29 -0
  218. package/lp/index.html +25 -0
  219. package/lp/package.json +19 -0
  220. package/lp/public/cover.png +0 -0
  221. package/lp/public/favicon.ico +0 -0
  222. package/lp/public/favicon.png +0 -0
  223. package/lp/public/images/book.jpg +0 -0
  224. package/lp/public/images/dashboard.png +0 -0
  225. package/lp/public/images/devnet.png +0 -0
  226. package/lp/public/images/hero-bg.png +0 -0
  227. package/lp/public/images/hyperadd.png +0 -0
  228. package/lp/public/images/message-flow.png +0 -0
  229. package/lp/public/images/mobile.png +0 -0
  230. package/lp/public/images/og-cover.png +0 -0
  231. package/lp/public/images/scan.png +0 -0
  232. package/lp/public/images/wao-hub.png +0 -0
  233. package/lp/public/images/wao-web.png +0 -0
  234. package/lp/public/logo.png +0 -0
  235. package/lp/src/App.jsx +29 -0
  236. package/lp/src/components/CodeBlock.jsx +37 -0
  237. package/lp/src/components/CodeBlock.module.css +89 -0
  238. package/lp/src/components/Footer.jsx +22 -0
  239. package/lp/src/components/Footer.module.css +60 -0
  240. package/lp/src/components/Nav.jsx +80 -0
  241. package/lp/src/components/Nav.module.css +177 -0
  242. package/lp/src/components/SectionWrapper.jsx +15 -0
  243. package/lp/src/hooks/useReveal.js +25 -0
  244. package/lp/src/hooks/useScrolled.js +14 -0
  245. package/lp/src/main.jsx +10 -0
  246. package/lp/src/sections/Book.jsx +60 -0
  247. package/lp/src/sections/Book.module.css +204 -0
  248. package/lp/src/sections/Browser.jsx +46 -0
  249. package/lp/src/sections/Browser.module.css +67 -0
  250. package/lp/src/sections/Devnet.jsx +55 -0
  251. package/lp/src/sections/Devnet.module.css +136 -0
  252. package/lp/src/sections/GetStarted.jsx +51 -0
  253. package/lp/src/sections/GetStarted.module.css +128 -0
  254. package/lp/src/sections/Hero.jsx +67 -0
  255. package/lp/src/sections/Hero.module.css +202 -0
  256. package/lp/src/sections/HyperADD.jsx +46 -0
  257. package/lp/src/sections/HyperADD.module.css +113 -0
  258. package/lp/src/sections/SDK.jsx +90 -0
  259. package/lp/src/sections/SDK.module.css +122 -0
  260. package/lp/src/sections/Testing.jsx +47 -0
  261. package/lp/src/sections/Testing.module.css +124 -0
  262. package/lp/src/sections/Vision.jsx +93 -0
  263. package/lp/src/sections/Vision.module.css +147 -0
  264. package/lp/src/styles/globals.css +285 -0
  265. package/lp/src/utils/scrollTo.js +4 -0
  266. package/lp/vite.config.js +7 -0
  267. package/make.js +39 -0
  268. package/package.json +17 -12
  269. package/patches/@permaweb+ao-loader+0.0.44.patch +64 -0
  270. package/plan.md +435 -0
  271. package/rebar.lock +1 -0
  272. package/src/accounts-web.js +128 -0
  273. package/src/accounts.js +124 -0
  274. package/src/adaptor-base.js +622 -0
  275. package/src/adaptor-cf.js +11 -0
  276. package/src/adaptor-web.js +11 -0
  277. package/src/adaptor.js +10 -0
  278. package/src/ao-loader.js +30660 -0
  279. package/src/ao.js +1173 -0
  280. package/src/aoconnect-base.js +1098 -0
  281. package/src/aoconnect-cf.js +9 -0
  282. package/src/aoconnect-web.js +8 -0
  283. package/src/aoconnect.js +8 -0
  284. package/src/aos_wamr.js +1 -0
  285. package/src/ar-remote.js +87 -0
  286. package/src/ar.js +276 -0
  287. package/src/armem-base.js +529 -0
  288. package/src/armem-cf.js +67 -0
  289. package/src/armem-web.js +19 -0
  290. package/src/armem.js +26 -0
  291. package/src/bao.js +141 -0
  292. package/src/bar.js +366 -0
  293. package/src/build.js +7 -0
  294. package/src/bundler.js +119 -0
  295. package/src/car.js +10 -0
  296. package/src/cf-env.js +29 -0
  297. package/src/cf.js +11 -0
  298. package/src/cli.js +561 -0
  299. package/src/compress.js +112 -0
  300. package/src/create.js +415 -0
  301. package/src/devs.js +86 -0
  302. package/src/dirname.js +1 -0
  303. package/src/dodb.js +26 -0
  304. package/src/erl_json.js +289 -0
  305. package/src/erl_str.js +1139 -0
  306. package/src/gql.js +229 -0
  307. package/src/hb.js +967 -0
  308. package/src/helpers.js +203 -0
  309. package/src/http.js +619 -0
  310. package/src/hub/bundler.js +123 -0
  311. package/src/hub/cu.js +74 -0
  312. package/src/hub/fs.js +157 -0
  313. package/src/hub/index.js +85 -0
  314. package/src/hub/utils.js +64 -0
  315. package/src/hub/ws-proxy.js +67 -0
  316. package/src/hyper-aos.js +1 -0
  317. package/src/hyperbeam-server.js +21 -0
  318. package/src/hyperbeam.js +585 -0
  319. package/src/index.js +5 -0
  320. package/src/keygen.js +47 -0
  321. package/src/lfdb.js +67 -0
  322. package/src/lua/aos.wasm +0 -0
  323. package/src/lua/aos2_0_1.js +1 -0
  324. package/src/lua/aos2_0_1.wasm +0 -0
  325. package/src/lua/aos2_0_3.js +1 -0
  326. package/src/lua/aos2_0_3.wasm +0 -0
  327. package/src/lua/aos2_0_4_32.js +1 -0
  328. package/src/lua/aos2_0_4_32.wasm +0 -0
  329. package/src/lua/aos2_0_6.wasm +0 -0
  330. package/src/lua/apm.lua +61 -0
  331. package/src/lua/llama.wasm +0 -0
  332. package/src/lua/process.wasm +0 -0
  333. package/src/lua/sqlite.js +1 -0
  334. package/src/lua/sqlite.wasm +0 -0
  335. package/src/lua/weavedb_mock.lua +44 -0
  336. package/src/lua/weavedrive.lua +53 -0
  337. package/src/run.js +25 -0
  338. package/src/server.js +173 -0
  339. package/src/storage-multi.js +183 -0
  340. package/src/tao.js +12 -0
  341. package/src/tar.js +10 -0
  342. package/src/test.js +42 -0
  343. package/src/tgql-d1.js +407 -0
  344. package/src/tgql.js +310 -0
  345. package/src/toerl.js +162 -0
  346. package/src/utils.js +777 -0
  347. package/src/wao.js +29 -0
  348. package/src/waosm/README.md +81 -0
  349. package/src/waosm/waosm.d.ts +40 -0
  350. package/src/waosm/waosm.js +240 -0
  351. package/src/waosm/waosm_bg.wasm +0 -0
  352. package/src/waosm/waosm_bg.wasm.d.ts +8 -0
  353. package/src/waosm-node/README.md +81 -0
  354. package/src/waosm-node/waosm.d.ts +8 -0
  355. package/src/waosm-node/waosm.js +4 -0
  356. package/src/waosm-node/waosm_bg.js +147 -0
  357. package/src/waosm-node/waosm_bg.wasm +0 -0
  358. package/src/waosm-node/waosm_bg.wasm.d.ts +8 -0
  359. package/src/waosm-node/waosm_bg.wasm.js +14 -0
  360. package/src/waosm-node.js +9 -0
  361. package/src/war.js +10 -0
  362. package/src/weavedrive.js +376 -0
  363. package/src/web.js +11 -0
  364. package/src/workspace/.mcp.json +8 -0
  365. package/src/workspace/CLAUDE.md +258 -0
  366. package/src/workspace/README.md +85 -0
  367. package/src/workspace/dashboard/index.html +163 -0
  368. package/src/workspace/dashboard/package.json +18 -0
  369. package/src/workspace/dashboard/public/favicon.ico +0 -0
  370. package/src/workspace/dashboard/public/favicon.png +0 -0
  371. package/src/workspace/dashboard/server.js +224 -0
  372. package/src/workspace/dashboard/src/App.jsx +2350 -0
  373. package/{cjs/workspace/frontend → src/workspace/dashboard}/vite.config.js +6 -0
  374. package/src/workspace/package.json +18 -0
  375. package/src/workspace/src/counter.lua +14 -0
  376. package/tsconfig.json +18 -0
  377. package/types/index.d.ts +329 -0
  378. package/waollama/.eslintrc.json +3 -0
  379. package/waollama/README.md +19 -0
  380. package/waollama/arweave.mjs +87 -0
  381. package/waollama/components/ui/avatar.jsx +49 -0
  382. package/waollama/components/ui/checkbox.jsx +17 -0
  383. package/waollama/components/ui/close-button.jsx +20 -0
  384. package/waollama/components/ui/color-mode.jsx +61 -0
  385. package/waollama/components/ui/dialog.jsx +54 -0
  386. package/waollama/components/ui/drawer.jsx +44 -0
  387. package/waollama/components/ui/field.jsx +22 -0
  388. package/waollama/components/ui/input-group.jsx +39 -0
  389. package/waollama/components/ui/popover.jsx +49 -0
  390. package/waollama/components/ui/provider.jsx +12 -0
  391. package/waollama/components/ui/radio.jsx +17 -0
  392. package/waollama/components/ui/slider.jsx +107 -0
  393. package/waollama/components/ui/tooltip.jsx +35 -0
  394. package/waollama/index.js +10 -0
  395. package/waollama/jsconfig.json +7 -0
  396. package/waollama/lib/ao-loader.js +30654 -0
  397. package/waollama/lib/client.js +1 -0
  398. package/waollama/lib/wasm.js +1 -0
  399. package/waollama/next.config.js +25 -0
  400. package/waollama/package.json +43 -0
  401. package/waollama/pages/404.js +9 -0
  402. package/waollama/pages/_app.js +9 -0
  403. package/waollama/pages/_document.js +14 -0
  404. package/waollama/pages/index.js +212 -0
  405. package/waollama/playwright.config.js +31 -0
  406. package/waollama/proxy.mjs +21 -0
  407. package/waollama/public/favicon.ico +0 -0
  408. package/waollama/public/human.png +0 -0
  409. package/waollama/public/llama.png +0 -0
  410. package/waosm/Cargo.toml +11 -0
  411. package/waosm/README.md +81 -0
  412. package/waosm/compress.js +112 -0
  413. package/waosm/make.js +33 -0
  414. package/waosm/package.json +10 -0
  415. package/waosm/src/lib.rs +180 -0
  416. package/waosm/test.js +16 -0
  417. package/cjs/workspace/.claude/agents/builder.md +0 -99
  418. package/cjs/workspace/.claude/agents/device-builder.md +0 -86
  419. package/cjs/workspace/.claude/agents/tester.md +0 -90
  420. package/cjs/workspace/.claude/mcp/dashboard/server.js +0 -128
  421. package/cjs/workspace/.claude/rules/deploy.md +0 -45
  422. package/cjs/workspace/.claude/rules/frontend.md +0 -69
  423. package/cjs/workspace/.claude/rules/hyperbeam.md +0 -104
  424. package/cjs/workspace/.claude/rules/lua.md +0 -108
  425. package/cjs/workspace/.claude/rules/testing.md +0 -257
  426. package/cjs/workspace/.claude/settings.json +0 -109
  427. package/cjs/workspace/.claude/skills/build/SKILL.md +0 -214
  428. package/cjs/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  429. package/cjs/workspace/.claude/skills/build-device/SKILL.md +0 -192
  430. package/cjs/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  431. package/cjs/workspace/.claude/skills/build-module/SKILL.md +0 -281
  432. package/cjs/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  433. package/cjs/workspace/.claude/skills/create-device/SKILL.md +0 -87
  434. package/cjs/workspace/.claude/skills/create-module/SKILL.md +0 -162
  435. package/cjs/workspace/.claude/skills/debug/SKILL.md +0 -57
  436. package/cjs/workspace/.claude/skills/deploy/SKILL.md +0 -85
  437. package/cjs/workspace/.claude/skills/dev/SKILL.md +0 -32
  438. package/cjs/workspace/.claude/skills/plan/SKILL.md +0 -176
  439. package/cjs/workspace/.claude/skills/readme/SKILL.md +0 -186
  440. package/cjs/workspace/.claude/skills/report/SKILL.md +0 -49
  441. package/cjs/workspace/.claude/skills/team/SKILL.md +0 -101
  442. package/cjs/workspace/.claude/skills/test/SKILL.md +0 -56
  443. package/cjs/workspace/.claude/skills/test-device/SKILL.md +0 -114
  444. package/cjs/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  445. package/cjs/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  446. package/cjs/workspace/.claude/skills/validate/SKILL.md +0 -96
  447. package/cjs/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  448. package/cjs/workspace/docs/aos-lua.md +0 -428
  449. package/cjs/workspace/docs/debug.md +0 -230
  450. package/cjs/workspace/docs/hyperbeam-dev.md +0 -606
  451. package/cjs/workspace/docs/hyperbeam-devices.md +0 -618
  452. package/cjs/workspace/docs/wao-sdk.md +0 -807
  453. package/cjs/workspace/frontend/e2e/.gitkeep +0 -0
  454. package/cjs/workspace/frontend/index.html +0 -12
  455. package/cjs/workspace/frontend/package.json +0 -24
  456. package/cjs/workspace/frontend/playwright.config.js +0 -10
  457. package/cjs/workspace/frontend/src/App.jsx +0 -24
  458. package/cjs/workspace/frontend/test/.gitkeep +0 -0
  459. package/cjs/workspace/frontend/vitest.config.js +0 -10
  460. package/cjs/workspace/scripts/deploy.js +0 -140
  461. package/cjs/workspace/scripts/keygen.js +0 -52
  462. package/cjs/workspace/test/aos.test.js +0 -98
  463. package/cjs/workspace/test/hyperbeam.test.js +0 -80
  464. package/esm/compiler/native +0 -0
  465. package/esm/workspace/.claude/agents/builder.md +0 -99
  466. package/esm/workspace/.claude/agents/device-builder.md +0 -86
  467. package/esm/workspace/.claude/agents/tester.md +0 -90
  468. package/esm/workspace/.claude/mcp/dashboard/server.js +0 -128
  469. package/esm/workspace/.claude/rules/deploy.md +0 -45
  470. package/esm/workspace/.claude/rules/frontend.md +0 -69
  471. package/esm/workspace/.claude/rules/hyperbeam.md +0 -104
  472. package/esm/workspace/.claude/rules/lua.md +0 -108
  473. package/esm/workspace/.claude/rules/testing.md +0 -257
  474. package/esm/workspace/.claude/settings.json +0 -109
  475. package/esm/workspace/.claude/skills/build/SKILL.md +0 -214
  476. package/esm/workspace/.claude/skills/build-aos/SKILL.md +0 -129
  477. package/esm/workspace/.claude/skills/build-device/SKILL.md +0 -192
  478. package/esm/workspace/.claude/skills/build-frontend/SKILL.md +0 -134
  479. package/esm/workspace/.claude/skills/build-module/SKILL.md +0 -281
  480. package/esm/workspace/.claude/skills/create-aos/SKILL.md +0 -63
  481. package/esm/workspace/.claude/skills/create-device/SKILL.md +0 -87
  482. package/esm/workspace/.claude/skills/create-module/SKILL.md +0 -162
  483. package/esm/workspace/.claude/skills/debug/SKILL.md +0 -57
  484. package/esm/workspace/.claude/skills/deploy/SKILL.md +0 -85
  485. package/esm/workspace/.claude/skills/dev/SKILL.md +0 -32
  486. package/esm/workspace/.claude/skills/plan/SKILL.md +0 -176
  487. package/esm/workspace/.claude/skills/readme/SKILL.md +0 -186
  488. package/esm/workspace/.claude/skills/report/SKILL.md +0 -49
  489. package/esm/workspace/.claude/skills/team/SKILL.md +0 -101
  490. package/esm/workspace/.claude/skills/test/SKILL.md +0 -56
  491. package/esm/workspace/.claude/skills/test-device/SKILL.md +0 -114
  492. package/esm/workspace/.claude/skills/test-e2e/SKILL.md +0 -103
  493. package/esm/workspace/.claude/skills/test-hb/SKILL.md +0 -76
  494. package/esm/workspace/.claude/skills/validate/SKILL.md +0 -96
  495. package/esm/workspace/.claude/skills/validate/scripts/check-lua.sh +0 -41
  496. package/esm/workspace/docs/aos-lua.md +0 -428
  497. package/esm/workspace/docs/debug.md +0 -230
  498. package/esm/workspace/docs/hyperbeam-dev.md +0 -606
  499. package/esm/workspace/docs/hyperbeam-devices.md +0 -618
  500. package/esm/workspace/docs/wao-sdk.md +0 -807
  501. package/esm/workspace/frontend/e2e/.gitkeep +0 -0
  502. package/esm/workspace/frontend/index.html +0 -12
  503. package/esm/workspace/frontend/package.json +0 -24
  504. package/esm/workspace/frontend/playwright.config.js +0 -10
  505. package/esm/workspace/frontend/src/App.jsx +0 -24
  506. package/esm/workspace/frontend/src/main.jsx +0 -9
  507. package/esm/workspace/frontend/test/.gitkeep +0 -0
  508. package/esm/workspace/frontend/vite.config.js +0 -6
  509. package/esm/workspace/frontend/vitest.config.js +0 -10
  510. package/esm/workspace/scripts/deploy.js +0 -140
  511. package/esm/workspace/scripts/keygen.js +0 -52
  512. package/esm/workspace/test/aos.test.js +0 -98
  513. package/esm/workspace/test/hyperbeam.test.js +0 -80
  514. /package/{cjs/workspace/dashboard/public → devnet/app}/favicon.ico +0 -0
  515. /package/{cjs/workspace → dhfs-tutorial-app}/src/counter.lua +0 -0
  516. /package/{cjs → dist/cjs}/accounts-web.js +0 -0
  517. /package/{cjs → dist/cjs}/accounts.js +0 -0
  518. /package/{cjs → dist/cjs}/adaptor-base.js +0 -0
  519. /package/{cjs → dist/cjs}/adaptor-cf.js +0 -0
  520. /package/{cjs → dist/cjs}/adaptor-web.js +0 -0
  521. /package/{cjs → dist/cjs}/adaptor.js +0 -0
  522. /package/{cjs → dist/cjs}/ao-loader.js +0 -0
  523. /package/{cjs → dist/cjs}/ao.js +0 -0
  524. /package/{cjs → dist/cjs}/aoconnect-base.js +0 -0
  525. /package/{cjs → dist/cjs}/aoconnect-cf.js +0 -0
  526. /package/{cjs → dist/cjs}/aoconnect-web.js +0 -0
  527. /package/{cjs → dist/cjs}/aoconnect.js +0 -0
  528. /package/{cjs → dist/cjs}/aos_wamr.js +0 -0
  529. /package/{cjs → dist/cjs}/ar-remote.js +0 -0
  530. /package/{cjs → dist/cjs}/ar.js +0 -0
  531. /package/{cjs → dist/cjs}/armem-base.js +0 -0
  532. /package/{cjs → dist/cjs}/armem-cf.js +0 -0
  533. /package/{cjs → dist/cjs}/armem-web.js +0 -0
  534. /package/{cjs → dist/cjs}/armem.js +0 -0
  535. /package/{cjs → dist/cjs}/bao.js +0 -0
  536. /package/{cjs → dist/cjs}/bar.js +0 -0
  537. /package/{cjs → dist/cjs}/build.js +0 -0
  538. /package/{cjs → dist/cjs}/bundler.js +0 -0
  539. /package/{cjs → dist/cjs}/car.js +0 -0
  540. /package/{cjs → dist/cjs}/cf-env.js +0 -0
  541. /package/{cjs → dist/cjs}/cf.js +0 -0
  542. /package/{cjs → dist/cjs}/cli.js +0 -0
  543. /package/{cjs → dist/cjs}/compress.js +0 -0
  544. /package/{cjs → dist/cjs}/create.js +0 -0
  545. /package/{cjs → dist/cjs}/devs.js +0 -0
  546. /package/{cjs → dist/cjs}/dirname.js +0 -0
  547. /package/{cjs → dist/cjs}/dodb.js +0 -0
  548. /package/{cjs → dist/cjs}/erl_json.js +0 -0
  549. /package/{cjs → dist/cjs}/erl_str.js +0 -0
  550. /package/{cjs → dist/cjs}/gql.js +0 -0
  551. /package/{cjs → dist/cjs}/hb.js +0 -0
  552. /package/{cjs → dist/cjs}/helpers.js +0 -0
  553. /package/{cjs → dist/cjs}/http.js +0 -0
  554. /package/{cjs → dist/cjs}/hub/bundler.js +0 -0
  555. /package/{cjs → dist/cjs}/hub/cu.js +0 -0
  556. /package/{cjs → dist/cjs}/hub/fs.js +0 -0
  557. /package/{cjs → dist/cjs}/hub/index.js +0 -0
  558. /package/{cjs → dist/cjs}/hub/utils.js +0 -0
  559. /package/{cjs → dist/cjs}/hub/ws-proxy.js +0 -0
  560. /package/{cjs → dist/cjs}/hyper-aos.js +0 -0
  561. /package/{cjs → dist/cjs}/hyperbeam-server.js +0 -0
  562. /package/{cjs → dist/cjs}/hyperbeam.js +0 -0
  563. /package/{cjs → dist/cjs}/index.js +0 -0
  564. /package/{cjs → dist/cjs}/keygen.js +0 -0
  565. /package/{cjs → dist/cjs}/lfdb.js +0 -0
  566. /package/{cjs → dist/cjs}/lua/aos.wasm +0 -0
  567. /package/{cjs → dist/cjs}/lua/aos2_0_1.js +0 -0
  568. /package/{cjs → dist/cjs}/lua/aos2_0_1.wasm +0 -0
  569. /package/{cjs → dist/cjs}/lua/aos2_0_3.js +0 -0
  570. /package/{cjs → dist/cjs}/lua/aos2_0_3.wasm +0 -0
  571. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.js +0 -0
  572. /package/{cjs → dist/cjs}/lua/aos2_0_4_32.wasm +0 -0
  573. /package/{cjs → dist/cjs}/lua/aos2_0_6.wasm +0 -0
  574. /package/{cjs → dist/cjs}/lua/apm.lua +0 -0
  575. /package/{cjs → dist/cjs}/lua/llama.wasm +0 -0
  576. /package/{cjs → dist/cjs}/lua/process.wasm +0 -0
  577. /package/{cjs → dist/cjs}/lua/sqlite.js +0 -0
  578. /package/{cjs → dist/cjs}/lua/sqlite.wasm +0 -0
  579. /package/{cjs → dist/cjs}/lua/weavedb_mock.lua +0 -0
  580. /package/{cjs → dist/cjs}/lua/weavedrive.lua +0 -0
  581. /package/{cjs → dist/cjs}/run.js +0 -0
  582. /package/{cjs → dist/cjs}/server.js +0 -0
  583. /package/{cjs → dist/cjs}/storage-multi.js +0 -0
  584. /package/{cjs → dist/cjs}/tao.js +0 -0
  585. /package/{cjs → dist/cjs}/tar.js +0 -0
  586. /package/{cjs → dist/cjs}/test.js +0 -0
  587. /package/{cjs → dist/cjs}/tgql-d1.js +0 -0
  588. /package/{cjs → dist/cjs}/tgql.js +0 -0
  589. /package/{cjs → dist/cjs}/toerl.js +0 -0
  590. /package/{cjs → dist/cjs}/utils.js +0 -0
  591. /package/{cjs → dist/cjs}/wao.js +0 -0
  592. /package/{cjs → dist/cjs}/waosm/waosm.js +0 -0
  593. /package/{cjs → dist/cjs}/waosm-node/waosm.js +0 -0
  594. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.js +0 -0
  595. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm +0 -0
  596. /package/{cjs → dist/cjs}/waosm-node/waosm_bg.wasm.js +0 -0
  597. /package/{cjs → dist/cjs}/waosm-node.js +0 -0
  598. /package/{cjs → dist/cjs}/war.js +0 -0
  599. /package/{cjs → dist/cjs}/weavedrive.js +0 -0
  600. /package/{cjs → dist/cjs}/web.js +0 -0
  601. /package/{cjs → dist/cjs}/workspace/.mcp.json +0 -0
  602. /package/{cjs → dist/cjs}/workspace/CLAUDE.md +0 -0
  603. /package/{cjs → dist/cjs}/workspace/README.md +0 -0
  604. /package/{cjs → dist/cjs}/workspace/dashboard/index.html +0 -0
  605. /package/{cjs → dist/cjs}/workspace/dashboard/package.json +0 -0
  606. /package/{esm → dist/cjs}/workspace/dashboard/public/favicon.ico +0 -0
  607. /package/{cjs → dist/cjs}/workspace/dashboard/public/favicon.png +0 -0
  608. /package/{cjs → dist/cjs}/workspace/dashboard/server.js +0 -0
  609. /package/{cjs → dist/cjs}/workspace/dashboard/src/App.jsx +0 -0
  610. /package/{cjs → dist/cjs}/workspace/dashboard/src/main.jsx +0 -0
  611. /package/{cjs → dist/cjs}/workspace/dashboard/vite.config.js +0 -0
  612. /package/{cjs → dist/cjs}/workspace/package.json +0 -0
  613. /package/{esm → dist/cjs}/workspace/src/counter.lua +0 -0
  614. /package/{esm → dist/esm}/accounts-web.js +0 -0
  615. /package/{esm → dist/esm}/accounts.js +0 -0
  616. /package/{esm → dist/esm}/adaptor-base.js +0 -0
  617. /package/{esm → dist/esm}/adaptor-cf.js +0 -0
  618. /package/{esm → dist/esm}/adaptor-web.js +0 -0
  619. /package/{esm → dist/esm}/adaptor.js +0 -0
  620. /package/{esm → dist/esm}/ao-loader.js +0 -0
  621. /package/{esm → dist/esm}/ao.js +0 -0
  622. /package/{esm → dist/esm}/aoconnect-base.js +0 -0
  623. /package/{esm → dist/esm}/aoconnect-cf.js +0 -0
  624. /package/{esm → dist/esm}/aoconnect-web.js +0 -0
  625. /package/{esm → dist/esm}/aoconnect.js +0 -0
  626. /package/{esm → dist/esm}/aos_wamr.js +0 -0
  627. /package/{esm → dist/esm}/ar-remote.js +0 -0
  628. /package/{esm → dist/esm}/ar.js +0 -0
  629. /package/{esm → dist/esm}/armem-base.js +0 -0
  630. /package/{esm → dist/esm}/armem-cf.js +0 -0
  631. /package/{esm → dist/esm}/armem-web.js +0 -0
  632. /package/{esm → dist/esm}/armem.js +0 -0
  633. /package/{esm → dist/esm}/bao.js +0 -0
  634. /package/{esm → dist/esm}/bar.js +0 -0
  635. /package/{esm → dist/esm}/build.js +0 -0
  636. /package/{esm → dist/esm}/bundler.js +0 -0
  637. /package/{esm → dist/esm}/car.js +0 -0
  638. /package/{esm → dist/esm}/cf-env.js +0 -0
  639. /package/{esm → dist/esm}/cf.js +0 -0
  640. /package/{esm → dist/esm}/cli.js +0 -0
  641. /package/{esm → dist/esm}/compress.js +0 -0
  642. /package/{esm → dist/esm}/create.js +0 -0
  643. /package/{esm → dist/esm}/devs.js +0 -0
  644. /package/{esm → dist/esm}/dirname.js +0 -0
  645. /package/{esm → dist/esm}/dodb.js +0 -0
  646. /package/{esm → dist/esm}/erl_json.js +0 -0
  647. /package/{esm → dist/esm}/erl_str.js +0 -0
  648. /package/{esm → dist/esm}/gql.js +0 -0
  649. /package/{esm → dist/esm}/hb.js +0 -0
  650. /package/{esm → dist/esm}/helpers.js +0 -0
  651. /package/{esm → dist/esm}/http.js +0 -0
  652. /package/{esm → dist/esm}/hub/bundler.js +0 -0
  653. /package/{esm → dist/esm}/hub/cu.js +0 -0
  654. /package/{esm → dist/esm}/hub/fs.js +0 -0
  655. /package/{esm → dist/esm}/hub/index.js +0 -0
  656. /package/{esm → dist/esm}/hub/utils.js +0 -0
  657. /package/{esm → dist/esm}/hub/ws-proxy.js +0 -0
  658. /package/{esm → dist/esm}/hyper-aos.js +0 -0
  659. /package/{esm → dist/esm}/hyperbeam-server.js +0 -0
  660. /package/{esm → dist/esm}/hyperbeam.js +0 -0
  661. /package/{esm → dist/esm}/index.js +0 -0
  662. /package/{esm → dist/esm}/keygen.js +0 -0
  663. /package/{esm → dist/esm}/lfdb.js +0 -0
  664. /package/{esm → dist/esm}/lua/aos.wasm +0 -0
  665. /package/{esm → dist/esm}/lua/aos2_0_1.js +0 -0
  666. /package/{esm → dist/esm}/lua/aos2_0_1.wasm +0 -0
  667. /package/{esm → dist/esm}/lua/aos2_0_3.js +0 -0
  668. /package/{esm → dist/esm}/lua/aos2_0_3.wasm +0 -0
  669. /package/{esm → dist/esm}/lua/aos2_0_4_32.js +0 -0
  670. /package/{esm → dist/esm}/lua/aos2_0_4_32.wasm +0 -0
  671. /package/{esm → dist/esm}/lua/aos2_0_6.wasm +0 -0
  672. /package/{esm → dist/esm}/lua/apm.lua +0 -0
  673. /package/{esm → dist/esm}/lua/llama.wasm +0 -0
  674. /package/{esm → dist/esm}/lua/process.wasm +0 -0
  675. /package/{esm → dist/esm}/lua/sqlite.js +0 -0
  676. /package/{esm → dist/esm}/lua/sqlite.wasm +0 -0
  677. /package/{esm → dist/esm}/lua/weavedb_mock.lua +0 -0
  678. /package/{esm → dist/esm}/lua/weavedrive.lua +0 -0
  679. /package/{esm → dist/esm}/package.json +0 -0
  680. /package/{esm → dist/esm}/run.js +0 -0
  681. /package/{esm → dist/esm}/server.js +0 -0
  682. /package/{esm → dist/esm}/storage-multi.js +0 -0
  683. /package/{esm → dist/esm}/tao.js +0 -0
  684. /package/{esm → dist/esm}/tar.js +0 -0
  685. /package/{esm → dist/esm}/test.js +0 -0
  686. /package/{esm → dist/esm}/tgql-d1.js +0 -0
  687. /package/{esm → dist/esm}/tgql.js +0 -0
  688. /package/{esm → dist/esm}/toerl.js +0 -0
  689. /package/{esm → dist/esm}/utils.js +0 -0
  690. /package/{esm → dist/esm}/wao.js +0 -0
  691. /package/{esm → dist/esm}/waosm/README.md +0 -0
  692. /package/{esm → dist/esm}/waosm/waosm.d.ts +0 -0
  693. /package/{esm → dist/esm}/waosm/waosm.js +0 -0
  694. /package/{esm → dist/esm}/waosm/waosm_bg.wasm +0 -0
  695. /package/{esm → dist/esm}/waosm/waosm_bg.wasm.d.ts +0 -0
  696. /package/{esm → dist/esm}/waosm-node/README.md +0 -0
  697. /package/{esm → dist/esm}/waosm-node/waosm.d.ts +0 -0
  698. /package/{esm → dist/esm}/waosm-node/waosm.js +0 -0
  699. /package/{esm → dist/esm}/waosm-node/waosm_bg.js +0 -0
  700. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm +0 -0
  701. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.d.ts +0 -0
  702. /package/{esm → dist/esm}/waosm-node/waosm_bg.wasm.js +0 -0
  703. /package/{esm → dist/esm}/waosm-node.js +0 -0
  704. /package/{esm → dist/esm}/war.js +0 -0
  705. /package/{esm → dist/esm}/weavedrive.js +0 -0
  706. /package/{esm → dist/esm}/web.js +0 -0
  707. /package/{esm → dist/esm}/workspace/.mcp.json +0 -0
  708. /package/{esm → dist/esm}/workspace/CLAUDE.md +0 -0
  709. /package/{esm → dist/esm}/workspace/README.md +0 -0
  710. /package/{esm → dist/esm}/workspace/dashboard/index.html +0 -0
  711. /package/{esm → dist/esm}/workspace/dashboard/package.json +0 -0
  712. /package/{esm/workspace/dashboard/public/favicon.png → dist/esm/workspace/dashboard/public/favicon.ico} +0 -0
  713. /package/{esm → dist/esm}/workspace/dashboard/server.js +0 -0
  714. /package/{esm → dist/esm}/workspace/dashboard/src/App.jsx +0 -0
  715. /package/{cjs/workspace/frontend → dist/esm/workspace/dashboard}/src/main.jsx +0 -0
  716. /package/{esm → dist/esm}/workspace/dashboard/vite.config.js +0 -0
  717. /package/{esm → dist/esm}/workspace/package.json +0 -0
  718. /package/{postinstall.cjs → dist/postinstall.cjs} +0 -0
  719. /package/{esm → src}/workspace/dashboard/src/main.jsx +0 -0
@@ -0,0 +1 @@
1
+ export default "AGFzbQEAAAAB/QNKYAF+AX9gAn5+AGADfn5+AX5gBH5+fn4Bf2ABfgBgAn5+AX5gAn5/AGACfn4Bf2ABfgF+YAN+fn4AYAJ+fwF/YAN+fn4Bf2AEfn5+fgF+YAN+fn8AYAN+f34Bf2ACfn8BfmADfn5/AX9gA35/fgF+YAN+f38AYAV+fn5+fgBgA35+fwF+YAN+f34AYAF8AXxgBX5+fn5+AX9gBH5+fn8AYAN+f38Bf2AEfn5+fgBgAnx8AXxgAX8Bf2AAAGAFfn9/f38AYAR+f39/AGAEfn5/fwBgAAF+YAN+f38BfmACf34AYAF/AGAEf35+fgF/YAJ/fgF+YAR+f35+AX5gBH5/f34AYAV+f39/fwF/YAR+f35+AGAEfn5+fwF/YAN8fH8BfGAFfn5+fn4BfmAEfn9/fwF/YAR+f35+AX9gAn9+AX9gAn5+AXxgBn58f39/fwF/YAABf2AEf35/fgF/YAJ+fwF8YAV+fn5+fwBgBn5+fn5/fgF+YAJ+fABgAnx/AXxgA35/fgF8YAZ+f39/fn4Bf2ACf38Bf2AGfn5+fn5/AGAEfn9/fgF+YAJ8fgF8YAZ+f35+fn4AYAJ8fgF/YAd+fn5+fn5+AX9gBH5+f34AYAV+fn5+fwF/YAR+fn9+AX5gBX5/fn5/AGADf35/AX9gA39+fgF/YAN/f38BfwKzAw4Wd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQhmZF9jbG9zZQAcFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUAJQNlbnYSX19zeXNjYWxsX3VubGlua2F0AEcDZW52El9lbXNjcmlwdGVuX3N5c3RlbQAAFndhc2lfc25hcHNob3RfcHJldmlldzEJcHJvY19leGl0ACQWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9zZWVrADQWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9yZWFkACUWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MRFlbnZpcm9uX3NpemVzX2dldAAHFndhc2lfc25hcHNob3RfcHJldmlldzELZW52aXJvbl9nZXQABxZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxDmNsb2NrX3RpbWVfZ2V0AEgDZW52D19fc3lzY2FsbF9ybWRpcgAAA2VudhJfX3N5c2NhbGxf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KAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUJAfSEBIAJCQH0iAiAFWA0ACwsgAiAEWg0AA0AgAiABKAIANgIAIAFCBHwhASACQgR8IgIgBFQNAAsLIAIgA1QEQANAIAIgAS0AADoAACABQgF8IQEgAkIBfCICIANSDQALCyAAC8UBAQR+IwBCEH0iBiQAAkAgAlAEQAwBCyAAKQMAIQQDQAJAIARCAFIEQCAAKQMIIQMMAQsgACkDICAAKQMYIAZCCHwgACkDEKcRAgAiA1AEQCACIQMMAwsgBikDCCIEUARAIAIhAwwDCyAAIAM3AwggACAENwMACyABIAMgAiAEIAIgBFQbIgUQHiAAIAApAwAgBX0iBDcDACAAIAUgACkDCHw3AwggBXwhAUIAIQMgAiAFfSICQgBSDQALCyAGQhB8JAAgAwsOACAAIAEgACgCEBAyAAvvAQICfgF/IAApAwAhAiAAIAAoAiggACgCICIEQf8BIAQQwQEgAEF/NgIoAkAgACgCICIEIAIoAhhIBEAgAikDOCEDDAELIAIgACkDECkDOCACKQM4IAJCGHxCBEH/////B0LOExBlIgM3AzggACgCICEECyADIASsQgKGfCABNgIAAkAgACgCICIEIAIoAhxIBEAgAikDSCEDDAELIAIgACkDECkDOCACKQNIIAJCHHxCBEH/////B0LOExBlIgM3A0ggACgCICEECyADIASsQgKGfCAAKQMQKAIINgIAIAAgACgCICIBQQFqNgIgIAELNgEBfiMAQhB9IgMkACADIAI3AwggACABIAIQzgEgACkDGCkDGEIAVQRAIAAQLgsgA0IQfCQAC9gBAQN+IAEgACkDCCICIAApAxAiBH1YBEAgACkDACAEfA8LIAApAxghAyAEIAEgBHwgAkIBhiICIAIgBH0gAVQbIgJYIAIgBH0gAVpxRQRAIANC/zBCABAQGgsCQCAAKQMAIABCIHxSBEAgAyACELECIQEMAQsgA0IQEG4iAUIANwMAIAFCADcDCCADQpM9ENACBEAgA0IMQQAQTCADQX5CsTkQDwsgA0F+EH0gAyACELECIgEgACkDACAAKQMQEB4aCyAAIAI3AwggACABNwMAIAEgACkDEHwLvQoCEH4EfyMAQuAAfSIFJAAgBEL///////8/gyEIIAIgBIVCgICAgICAgICAf4MhBiACQv///////z+DIglCIIghCiAEQjCIp0H//wFxIRYCQAJAIAJCMIinQf//AXEiGEH//wFrQYKAfk8EQCAWQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgdCgICAgICAwP//AFQgB0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEGDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQYgAyEBDAILIAEgB0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQZCACEBDAMLIAZCgICAgICAwP//AIQhBkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAeEQgAhAVAEQEKAgICAgIDg//8AIQYMAwsgBkKAgICAgIDA//8AhCEGDAILIAEgB4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAdC////////P1gEQCAFQtAAfCABIAkgASAJIAlQIhUbeSAVQQZ0rXynIhVBD2sQQkEQIBVrIRUgBSkDWCIJQiCIIQogBSkDUCEBCyACQv///////z9WDQAgBUJAfSADIAggAyAIIAhQIhcbeSAXQQZ0rXynIhdBD2sQQiAVIBdrQRBqIRUgBSkDSCEIIAUpA0AhAwsgA0IPhiIHQoCA/v8PgyICIAFCIIgiBH4iDCAHQiCIIg8gAUL/////D4MiAX58IgtCIIYiDSABIAJ+fCIHIA1UrSACIAlC/////w+DIgl+IhEgBCAPfnwiDSAIQg+GIg4gA0IxiIRC/////w+DIgMgAX58IhAgCyAMVK1CIIYgC0IgiIR8IgsgAiAKQoCABIQiCH4iEiAJIA9+fCIKIA5CIIhCgICAgAiEIgIgAX58IgwgAyAEfnwiDkIghnwiE3whASAWIBhqIBVqQf//AGshFQJAIAIgBH4iFCAIIA9+fCIEIBRUrSAEIAQgAyAJfnwiBFatfCACIAh+fCAEIAQgDSARVK0gDSAQVq18fCIEVq18IAMg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IAAoAgBB////A3FBgICACHI2AgAgAUEMNgIACw8LIAFBDDYCACABIAI2AggLzAkCA38FfiMAQvAAfSIIJAAgBEL///////////8AgyEJAkACQCABUCIFIAJC////////////AIMiCkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAKUBtFBEAgA0IAUiAJQoCAgICAgMD//wB9IgtCgICAgICAwICAf1YgC0KAgICAgIDAgIB/URsNAQsgBSAKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCUKAgICAgIDA//8AVCAJQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAKQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBRshBEIAIAEgBRshAwwCCyADIAlCgICAgICAwP//AIWEUA0BIAEgCoRQBEAgAyAJhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAJhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgCSAKViAJIApRGyIHGyEKIAQgAiAHGyIMQv///////z+DIQkgAiAEIAcbIgtCMIinQf//AXEhBiAMQjCIp0H//wFxIgVFBEAgCELgAHwgCiAJIAogCSAJUCIFG3kgBUEGdK18pyIFQQ9rEEIgCCkDaCEJIAgpA2AhCkEQIAVrIQULIAEgAyAHGyEDIAtC////////P4MhASAGBH4gAQUgCELQAHwgAyABIAMgASABUCIGG3kgBkEGdK18pyIGQQ9rEEJBECAGayEGIAgpA1AhAyAIKQNYC0IDhiADQj2IhEKAgICAgICABIQhASAJQgOGIApCPYiEIAIgBIUhBAJ+IANCA4YiAiAFIAZGDQAaIAUgBmsiBkH/AEsEQEIAIQFCAQwBCyAIQkB9IAIgAUGAASAGaxBCIAhCMHwgAiABIAYQnQEgCCkDOCEBIAgpAzAgCCkDQCAIKQNIhEIAUq2ECyEJQoCAgICAgIAEhCELIApCA4YhCgJAIARCAFMEQEIAIQNCACEEIAkgCoUgASALhYRQDQIgCiAJfSECIAsgAX0gCSAKVq19IgRC/////////wNWDQEgCEIgfCACIAQgAiAE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QCAHQgGGQvD/////AINCwJwVfCEBQpicFSkDACECAn4gDEEBIAdCA4indCILcUUEQEL4mxUgCyAMcjYCACABDAELIAEpAxALIQMgASACNwMQIAMgAjcDGCACIAE3AxggAiADNwMQC0KYnBUgBDcDAEKAnBUgBTcDAAwDC0L8mxUoAgAiC0UNASALaK1CA4ZC0KAVfCkDACICKQMIQniDIAZ9IQMgAiEBA0ACQCABKQMgIgBQBEAgASkDKCIAUA0BCyAAKQMIQniDIAZ9IgEgAyABIANUIg0bIQMgACACIA0bIQIgACEBDAELCyACKQMwIQgCQCACIAIpAxgiAFIEQCACKQMQIgEgADcDGCAAIAE3AxAMAQsgAikDKCIBQgBSBH4gAkIofAUgAikDICIBUARAQgAhAAwCCyACQiB8CyEFA0AgBSEEIAEiAEIofCEFIAApAygiAUIAUg0AIABCIHwhBSAAKQMgIgFCAFINAAsgBEIANwMACwJAIAhQDQACQCACKAI4Ig2tQgOGQtCgFXwiASkDACACUQRAIAEgADcDACAAQgBSDQFC/JsVIAtBfiANd3E2AgAMAgsgCEIgQiggCCkDICACURt8IAA3AwAgAFANAQsgACAINwMwIAIpAyAiAUIAUgRAIAAgATcDICABIAA3AzALIAIpAygiAVANACAAIAE3AyggASAANwMwCwJAIANCH1gEQCACIAMgBnwiAEIDhDcDCCAAIAJ8IgAgACkDCEIBhDcDCAwBCyACIAZCA4Q3AwggAiAGfCIFIANCAYQ3AwggAyAFfCADNwMAIAdCAFIEQCAHQgGGQvD/////AINCwJwVfCEAQpicFSkDACEBAn5BASAHQgOIp3QiCyAMcUUEQEL4mxUgCyAMcjYCACAADAELIAApAxALIQQgACABNwMQIAQgATcDGCABIAA3AxggASAENwMQC0KYnBUgBTcDAEKAnBUgAzcDAAsgAkIQfCEADAILQn8hBiAAQv9+Vg0AIABCD3wiAEJ4gyEGQvybFSgCACIMRQ0AQgAgBn0hAwJAAkACQAJ/QQAgAEIIiKciC0UNABpBHyALQf//A0sNABogBkEmIAtnIgtrrYinQQFxIAtBAXRyQT5zCyILrUIDhkLQoBV8KQMAIgFQBEBCACEADAELIAZCPyALQQF2QQZqrX1CACALQR9HG4YhBUIAIQADQAJAIAEpAwhCeIMgBn0iBCADWg0AIAEhAiAEIgNCAFINAEIAIQMgAiEADAMLIAAgACABKQMoIgAgACABIAVCPIhCCIN8KQMgIgFRGyAAUBshACAFQgGGIQUgAUIAUg0ACwsgACAChFAEQEECIAt0IgtBACALa3IgDHEiC0UNA0IAIQIgC2itQgOGQtCgFXwpAwAhAAsgAFANAQsDQCAAKQMIQniDIAZ9IgEgA1QhCyABIAMgCxshAyAAIAIgCxshAiAAKQMgIgFQBH4gACkDKAUgAQsiAEIAUg0ACwsgAlANACADQoCcFSkDACAGfVoNACACKQMwIQcCQCACIAIpAxgiAFIEQCACKQMQIgEgADcDGCAAIAE3AxAMAQsgAikDKCIBQgBSBH4gAkIofAUgAikDICIBUARAQgAhAAwCCyACQiB8CyEFA0AgBSEEIAEiAEIofCEFIAApAygiAUIAUg0AIABCIHwhBSAAKQMgIgFCAFINAAsgBEIANwMACwJAIAdQDQACQCACKAI4IgutQgOGQtCgFXwiASkDACACUQRAIAEgADcDACAAQgBSDQFC/JsVIAxBfiALd3EiDDYCAAwCCyAHQiBCKCAHKQMgIAJRG3wgADcDACAAUA0BCyAAIAc3AzAgAikDICIBQgBSBEAgACABNwMgIAEgADcDMAsgAikDKCIBUA0AIAAgATcDKCABIAA3AzALAkAgA0IfWARAIAIgAyAGfCIAQgOENwMIIAAgAnwiACAAKQMIQgGENwMIDAELIAIgBkIDhDcDCCACIAZ8IgQgA0IBhDcDCCADIAR8IAM3AwAgA0L/AVgEQCADQgOIIgFCBIZCwJwVfCEAAn5C+JsVKAIAIgxBASABp3QiC3FFBEBC+JsVIAsgDHI2AgAgAAwBCyAAKQMQCyEBIAAgBDcDECABIAQ3AxggBCAANwMYIAQgATcDEAwBCyAEQgA3AyggBAJ/QQAgA0IIiKciC0UNABpBHyALQf//A0sNABogA0EmIAtnIgtrrYinQQFxIAtBAXRyQT5zCyILNgI4IARCADcDICALrUIDhkLQoBV8IQECQAJAIAxBASALdCINcUUEQEL8mxUgDCANcjYCACABIAQ3AwAgBCABNwMwDAELIANCPyALQQF2QQZqrX1CACALQR9HG4YhACABKQMAIQEDQCABIgUpAwhCeIMgA1ENAiAAQjyIIQEgAEIBhiEAIAUgAUIIg3xCIHwiBikDACIBQgBSDQALIAYgBDcDACAEIAU3AzALIAQgBDcDGCAEIAQ3AxAMAQsgBSkDECIAIAQ3AxggBSAENwMQIARCADcDMCAEIAU3AxggBCAANwMQCyACQhB8IQAMAQsgBkKAnBUpAwAiBVgEQEKYnBUpAwAhAAJAIAUgBn0iAUIgWgRAIAAgBnwiAiABQgGENwMIIAAgBXwgATcDACAAIAZCA4Q3AwgMAQsgACAFQgOENwMIIAAgBXwiASABKQMIQgGENwMIQgAhAkIAIQELQoCcFSABNwMAQpicFSACNwMAIABCEHwhAAwBCyAGQoicFSkDACIBVARAQoicFSABIAZ9IgE3AwBCoJwVQqCcFSkDACIAIAZ8IgI3AwAgAiABQgGENwMIIAAgBkIDhDcDCCAAQhB8IQAMAQtCACEAIAZCzwB8IgMCfkKgoxUpAwBCAFIEQEKwoxUpAwAMAQtCsKMVQoAgNwMAQsijFUEANgIAQsCjFUJ/NwMAQrijFUJ/NwMAQqijFUKAIDcDAELoohVBADYCAEKgoxUgCkIIfEJwg0LYqtWqBYU3AwBCgCALIgJ8IgRCACACfSIHgyIFIAZYDQBC4KIVKQMAIgJCAFIEQELQohUpAwAiCCAFfCIJIAhYDQEgAiAJVA0BCwJAAkACQELoohUtAABBBHFFBEACQAJAAkACQEKgnBUpAwAiAkIAUgRAQvCiFSEAA0AgACkDACIIIAJYBEAgAiAIIAApAwh8VA0DCyAAKQMQIgBCAFINAAsLQgAQigEiAkJ/UQ0DIAUhAUKooxUpAwAiAEIBfSIEIAKDQgBSBEAgASACfSACIAR8QgAgAH2DfCEBCyABIAZYDQNC4KIVKQMAIgBCAFIEQELQohUpAwAiBCABfCIHIARYDQQgACAHVA0ECyABEIoBIgAgAlINAQwFCyAEIAF9IAeDIgEQigEiAiAAKQMAIAApAwh8UQ0BIAIhAAsgAEJ/UQ0BIAZC0AB8IAFYBEAgACECDAQLQrCjFSkDACICIAMgAX18QgAgAn2DIgIQigFCf1ENASABIAJ8IQEgACECDAMLIAJCf1INAgtC6KIVQuiiFSgCAEEEcjYCAAsgBRCKASECQgAQigEhACACQn9RDQEgAEJ/UQ0BIAAgAlgNASAAIAJ9IgEgBkLIAHxYDQELQtCiFULQohUpAwAgAXwiADcDAELYohUpAwAgAFQEQELYohUgADcDAAsCQAJAAkBCoJwVKQMAIgNCAFIEQELwohUhAANAIAIgACkDACIFIAApAwgiBHxRDQIgACkDECIAQgBSDQALDAILQpCcFSkDACIAQgBSIAAgAlhxRQRAQpCcFSACNwMAC0IAIQBCiKMVQQA2AgBC+KIVIAE3AwBC8KIVIAI3AwBCsJwVQn83AwBCuJwVQqCjFSkDADcDAANAIABCBIYiBULQnBV8IAVCwJwVfCIDNwMAIAVC2JwVfCADNwMAIABCAXwiAEIgUg0AC0KInBUgAULIAH0iAEJwIAJ9QgeDIgF9IgU3AwBCoJwVIAEgAnwiATcDACABIAVCAYQ3AwggACACfELIADcDCEKonBVCwKMVKQMANwMADAILIAIgA1gNACADIAVUDQAgACgCGEEIcQ0AIAAgASAEfDcDCEKgnBUgA0JwIAN9QgeDIgB8IgI3AwBCiJwVQoicFSkDACABfCIBIAB9IgA3AwAgAiAAQgGENwMIIAEgA3xCyAA3AwhCqJwVQsCjFSkDADcDAAwBC0KQnBUpAwAgAlYEQEKQnBUgAjcDAAsgASACfCEEQvCiFSEAAkADQCAEIAApAwAiBVIEQCAAKQMQIgBCAFINAQwCCwsgAC0AGEEIcUUNAwtC8KIVIQADQAJAIAApAwAiBSADWARAIAMgBSAAKQMIfCIEVA0BCyAAKQMQIQAMAQsLQoicFSABQsgAfSIAQnAgAn1CB4MiBX0iBzcDAEKgnBUgAiAFfCIFNwMAIAUgB0IBhDcDCCAAIAJ8QsgANwMIQqicFULAoxUpAwA3AwAgAyAEQj8gBH1CB4N8Qs8AfSIAIAAgA0IgfFQbIgVCKzcDCCAFQih8IgBCiKMVKQMANwMAIAVCgKMVKQMANwMgIAVC+KIVKQMANwMYIAVC8KIVKQMANwMQQviiFSABNwMAQoCjFSAFQhB8NwMAQoijFUEANgIAQvCiFSACNwMAA0AgAEILNwMIIABCEHwgAEIIfCEAIARUDQALIAMgBVENACAFIAUpAwhCfoM3AwggAyAFIAN9IgRCAYQ3AwggBSAENwMAAn4gBEL/AVgEQCAEQgOIIgFCBIZCwJwVfCEAAn5C+JsVKAIAIgxBASABp3QiC3FFBEBC+JsVIAsgDHI2AgAgAAwBCyAAKQMQCyEBIAAgAzcDECABIAM3AxhCECEFQhgMAQsgA0IANwMoIAMCf0EAIARCCIinIgxFDQAaQR8gDEH//wNLDQAaIARBJiAMZyIMa62Ip0EBcSAMQQF0ckE+cwsiDDYCOCADQgA3AyAgDK1CA4ZC0KAVfCEBAkACQEL8mxUoAgAiC0EBIAx0Ig1xRQRAQvybFSALIA1yNgIAIAEgAzcDAAwBCyAEQj8gDEEBdkEGaq19QgAgDEEfRxuGIQAgASkDACECA0AgAiIBKQMIQniDIARRDQIgAEI8iCECIABCAYYhACABIAJCCIN8QiB8IgUpAwAiAkIAUg0ACyAFIAM3AwALIAMgATcDMEIYIQUgAyIBIQBCEAwBCyABKQMQIgAgAzcDGCABIAM3AxAgAyAANwMQQgAhAEIYIQVCMAsgAyAFfCABNwMAIAN8IAA3AwALQoicFSkDACIAIAZYDQBCiJwVIAAgBn0iATcDAEKgnBVCoJwVKQMAIgAgBnwiAjcDACACIAFCAYQ3AwggACAGQgOENwMIIABCEHwhAAwCC0KAuRRBMDYCAEIAIQAMAQsgACACNwMAIAAgACkDCCABfDcDCCACQnAgAn1CB4N8IgggBkIDhDcDCCAFQnAgBX1CB4N8IgQgBiAIfCIDfSEGAkBCoJwVKQMAIARRBEBCoJwVIAM3AwBCiJwVQoicFSkDACAGfCIANwMAIAMgAEIBhDcDCAwBC0KYnBUpAwAgBFEEQEKYnBUgAzcDAEKAnBVCgJwVKQMAIAZ8IgA3AwAgAyAAQgGENwMIIAAgA3wgADcDAAwBCyAEKQMIIgJCA4NCAVEEQCACQniDIQkCQCACQv8BWARAIAQpAxgiACAEKQMQIgFRBEBC+JsVQvibFSgCAEF+IAJCA4ind3E2AgAMAgsgASAANwMYIAAgATcDEAwBCyAEKQMwIQcCQCAEIAQpAxgiAlIEQCAEKQMQIgAgAjcDGCACIAA3AxAMAQsgBCkDKCIAQgBSBH4gBEIofAUgBCkDICIAUARAQgAhAgwCCyAEQiB8CyEBA0AgASEFIAAiAkIofCEBIAApAygiAEIAUg0AIAJCIHwhASACKQMgIgBCAFINAAsgBUIANwMACyAHUA0AAkAgBCgCOCIMrUIDhkLQoBV8IgApAwAgBFEEQCAAIAI3AwAgAkIAUg0BQvybFUL8mxUoAgBBfiAMd3E2AgAMAgsgB0IgQiggBykDICAEURt8IAI3AwAgAlANAQsgAiAHNwMwIAQpAyAiAEIAUgRAIAIgADcDICAAIAI3AzALIAQpAygiAFANACACIAA3AyggACACNwMwCyAGIAl8IQYgBCAJfCIEKQMIIQILIAQgAkJ+gzcDCCADIAZCAYQ3AwggAyAGfCAGNwMAIAZC/wFYBEAgBkIDiCIBQgSGQsCcFXwhAAJ+QvibFSgCACIMQQEgAad0IgtxRQRAQvibFSALIAxyNgIAIAAMAQsgACkDEAshASAAIAM3AxAgASADNwMYIAMgADcDGCADIAE3AxAMAQsgA0IANwMoIAMCf0EAIAZCCIinIgxFDQAaQR8gDEH//wNLDQAaIAZBJiAMZyIMa62Ip0EBcSAMQQF0ckE+cwsiDDYCOCADQgA3AyAgDK1CA4ZC0KAVfCEAAkACQEL8mxUoAgAiC0EBIAx0Ig1xRQRAQvybFSALIA1yNgIAIAAgAzcDAAwBCyAGQj8gDEEBdkEGaq19QgAgDEEfRxuGIQIgACkDACEBA0AgASIAKQMIQniDIAZRDQIgAkI8iCEBIAJCAYYhAiAAIAFCCIN8QiB8IgUpAwAiAUIAUg0ACyAFIAM3AwALIAMgADcDMCADIAM3AxggAyADNwMQDAELIAApAxAiASADNwMYIAAgAzcDECADQgA3AzAgAyAANwMYIAMgATcDEAsgCEIQfCEACyAKQhB8JAAgAAt1AQR+IwBCIH0iBCQAAkAgASAAKAIQRwRAIAMgACgCBEYNASAAKQM4IQUgACABEPQBIQYgACACEPQBIQcgBCADNgIQIAQgBzcDCCAEIAY3AwAgACAFQonGACAEECoQIAALIAAQFCAEQiB8JAAPCyAAIAEQNAALxwMCCH4DfyAAKQMAIQQCQAJAIAApAxAiAykDOCIHIAMpA1AgARCDASIBKAIIQRNHDQAgASkDACIDpyILIAAoAixODQAgAigCCCAEKQMwIANCIIZCHId8IgMoAghzQT9xDQBCACADIAIQdw0BCyAEKAIUIQ0gACgCLCELIAFBEzYCCCABIAusIgk3AwAgBCgCFCIMIAtMBEAgBCAHIAQpAzAgBEIUfEIQQf///x9CmBAQZTcDMCAEKAIUIQwLIAQpAzAhBQJAIAwgDUwNACANrCIGIQMgDKwiCCAGfUIHgyIKQgBSBEBCACEBA0AgBSADQgSGfEEANgIIIANCAXwhAyABQgF8IgEgClINAAsLIAYgCH1CeFYNAANAIAUgA0IEhnwiAUEANgIIIAFBADYCGCABQQA2AiggAUEANgI4IAFBADYCSCABQQA2AlggAUEANgJoIAFBADYCeCADQgh8IgMgCFINAAsLIAUgCUIEhnwiASACKQMANwMAIAEgAkIIfCIBKQMANwMIIAAgACgCLEEBajYCLCABLQAAQcAAcUUNACAELQAJQQRxRQ0AIAIpAwAiAC0ACUEDcUUNACAHIAQgABByCyALC6gBAAJAIAFBgAhOBEAgAEQAAAAAAADgf6IhACABQf8PSQRAIAFB/wdrIQEMAgsgAEQAAAAAAADgf6IhAEH9FyABIAFB/RdPG0H+D2shAQwBCyABQYF4Sg0AIABEAAAAAAAAYAOiIQAgAUG4cEsEQCABQckHaiEBDAELIABEAAAAAAAAYAOiIQBB8GggASABQfBoTRtBkg9qIQELIAAgAUH/B2qtQjSGv6ILowUCBH8DfiMAQhB9IgkkAAJAIAEoAggiBUE/cSIGIAIoAggiBEE/cUcEQCAFQQ9xQQNHDQEgBEEPcUEDRw0BAkAgBUETRgRAIAkgASkDADcDCAwBCyABIAlCCHxBABAxRQ0CIAIoAgghBAsCQCAEQRNGBEAgAiEBDAELIAIgCSIBQQAQMUUNAgsgCSkDCCABKQMAUSEDDAELQQEhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGDhcMAgMBBQgLBwsLCwsLCwsLCwsLAAYLBAsLIAEpAwAgAikDAFEhAwwLCyABKwMAIAIrAwBhIQMMCgsgASgCACACKAIARiEDDAkLIAEpAwAgAikDAFEhAwwICyABKQMAIAIpAwBRIQMMBwsgASkDACACKQMAUSEDDAYLAn9BASABKQMAIgAgAikDACIBUQ0AGkEAIAApAxAiAiABKQMQUg0AGiAAQhh8IAFCGHwgAhBhRQshAwwFCyABKQMAIgggAikDACIHUQ0EQQAhAyAAUA0EAkAgCCkDECIIUA0AIAgtAApBIHENACAIQQUgACkDGCkDiAIQeCIHQgBSDQMgAikDACEHCyAHKQMQIgdQDQQgBy0ACkEgcUUNAQwECyABKQMAIgggAikDACIHUQ0DQQAhAyAAUA0DAkAgCCkDKCIIUA0AIAgtAApBIHENACAIQQUgACkDGCkDiAIQeCIHQgBSDQIgAikDACEHCyAHKQMoIgdQDQMgBy0ACkEgcQ0DCyAHQQUgACkDGCkDiAIQeCIHQgBSDQAMAgsgACAHIAEgAiAAKQMQQQEQzQECQAJAIAApAxAiACgCCCIDDgIDAAELIAAoAgBBAEchAwwCC0EBIQMMAQsgASkDACACKQMAUSEDCyAJQhB8JAAgAwsmACAAIAIQrQEiAigCCAR+IAIFIAAgAC0ACkEBIAF0cjoACkIACwtIAgF+AX8gACkDGCEDIABCACABQQ9xrSACEBEhACADLQBUIQQgACABOgAIIAAgBEEDcToACSAAIAMpA1g3AwAgAyAANwNYIAALRgAgAEECEBZFBEAgACABIAJBARDKAQ8LIABBAhAYIAAgAUEBaxAYIAAgAkECaxAYIABBAkEBQgAQUyAAQX8QSyAAQX4QDgvVDwIFfgN/IAApA3AiAiACLQAJIgZBBHI6AAkCQCAAAn4CQAJAAkACQAJAIAItAAhBBWsOIgABBgMEBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgIGCyAAIAIpAzA3A3ACQAJAIAIpAygiAVANAAJAIAEtAApBCHFFBEAgAUEDIAApA/gBEHghAyACKQMoIgFQDQELIAEtAAlBA3FFDQAgACABEB0LIANQDQAgAygCCEEPcUEERw0AIAMpAwBCGHwiAUHrABAlIgMgAUH2ABAlIgGEUA0AIAIgAi0ACUH7AXE6AAkgA1AEQCACKAIMQQBHIQcgAi0ACyIGQR9HBEAgAikDGCIBQQEgBnSsQgWGfCEDA0AgASgCGEHAAHEhBgJAIAEoAghFBEAgBkUNASABKQMQLQAJQQNxRQ0BIAFBCjYCGAwBCwJAIAZFDQAgASkDECIELQAJQQNxRQ0AIAAgBBAdCyAHBEBBASEHDAELAkAgASgCCCIHQcAAcUUNACABKQMAIgQtAAlBA3EhBiAHQQ9xQQRGBEAgBkUNASAAIAQQHQwBC0EBIQcgBg0BC0EAIQcLIAFCIHwiASADVA0ACwsgAiAALQBVBH4gB0UNA0KAAQVC+AALIAB8IgEpAwA3AzAgASACNwMADAILIAFQBEAgACACEOYBGgwCCyACIAApA5ABNwMwIAAgAjcDkAEMAQsgAikDGCIBQQEgAi0AC3SsQgWGfCEDIAIoAgwiBgRAQgAhAQNAAkAgAikDECABQgSGfCIELQAIQcAAcUUNACAEKQMAIgQtAAlBA3FFDQAgACAEEB0gAigCDCEGCyABQgF8IgEgBq1UDQALIAIpAxghAQsgASADWg0AA0AgASgCGEHAAHEhBgJAIAEoAggiB0UEQCAGRQ0BIAEpAxAtAAlBA3FFDQEgAUEKNgIYDAELAkAgBkUNACABKQMQIgQtAAlBA3FFDQAgACAEEB0gASgCCCEHCyAHQcAAcUUNACABKQMAIgQtAAlBA3FFDQAgACAEEB0LIAFCIHwiASADVA0ACwsgAjUCDCEBIAIpAyBQBH5CAAVBASACLQALdKxCBYYLIAFCBIZ8Qjh8DAQLIAAgAikDEDcDcAJAIAIpAxgiAVANACABLQAJQQNxRQ0AIAAgARAdC0IgIAItAApFDQMaIAJCIHwhBUIAIQEDQAJAIAUgAUIDhnwpAwAiA1ANAAJAIAMpAwAiBCADQhB8UQ0AIAAtAFVBCEYNACADQQE2AhgMAQsgBC0ACEHAAHFFDQAgBCkDACIDLQAJQQNxRQ0AIAAgAxAdCyABQgF8IgEgAjEACiIDVA0ACyADQgOGQiB8DAMLIAAgAikDEDcDcEIgIAItAAoiBkUNAhogAkIgfCEDA0ACQCADIAFCBIZ8IgQtAAhBwABxRQ0AIAQpAwAiBC0ACUEDcUUNACAAIAQQHSACLQAKIQYLIAFCAXwiASAGrSIEQv8Bg1QNAAsgBEL/AYNCBIZCIHwMAgsgACACKQNINwNwIAIgACkDeDcDSCAAIAI3A3ggAiAGQfsBcToACUIBIAIpAzgiAVANARogAikDECIDIAFWBEADQAJAIAEtAAhBwABxRQ0AIAEpAwAiBC0ACUEDcUUNACAAIAQQHSACKQMQIQMLIAFCEHwiASADVA0ACwsCQCAALQBVQQhGBEAgAikDOCACNAK4AUIEhnwiAyABVgRAA0AgAUEANgIIIAFCEHwiASADVA0ACwsgAikDUCACUg0BIAIpA0BQDQEgAiAAKQOoATcDUCAAIAI3A6gBDAELIAAtAFZBAUYNACACKQMQIQEgAikDICIDQgBSBEADQCADKQMIIgQgASABIARUGyEBIAMpAxAiA0IAUg0ACwsgASACKQM4fUIEiKciBkEBaiIHQQhtIQgCQCACKAK4AUHBhD1OBEAgAhCBAgwBCyACEIACCwJAIAZBuoQ9Sg0AQbaEPSAHIAhqIgYgBkG2hD1OG0EKaiIGIAIoArgBTg0AIAIgBhBVCwsgAjMBCkLIAH4gAjQCuAFCBIZ8QtABfAwBCyAAIAIpA3A3A3ACQCACKQNgIgFQDQAgAS0ACUEDcUUNACACQgA3A2ALAkAgAikDaCIBUA0AIAEtAAlBA3FFDQAgACABEB0LIAIoAhQiBkEASgRAQgAhAQNAAkAgAikDMCABQgSGfCIDLQAIQcAAcUUNACADKQMAIgMtAAlBA3FFDQAgACADEB0gAigCFCEGCyABQgF8IgEgBqxTDQALCyACKAIQIgZBAEoEQEIAIQEDQAJAIAIpA1ggAUIEhnwpAwAiA1ANACADLQAJQQNxRQ0AIAAgAxAdIAIoAhAhBgsgAUIBfCIBIAasUw0ACwsgAigCICIGQQBKBEBCACEBA0ACQCACKQNAIAFCA4Z8KQMAIgNQDQAgAy0ACUEDcUUNACAAIAMQHSACKAIgIQYLIAFCAXwiASAGrFMNAAsLIAIoAiQiB0EASgR/QgAhAQNAAkAgAikDUCABQgSGfCkDACIDUA0AIAMtAAlBA3FFDQAgACADEB0gAigCJCEHCyABQgF8IgEgB6xTDQALIAIoAiAFIAYLQQN0IAIoAhwgAigCGGpBAnRqIAIoAhAgAigCFCAHampBBHRqQfgAaqwLIAApAyB8NwMgCwuCAgICfwJ+IAJCAFIhAwJAAkACQCAAQgeDUA0AIAJQDQAgAUH/AXEhBANAIAAtAAAgBEYNAiACQgF9IgJCAFIhAyAAQgF8IgBCB4NQDQEgAkIAUg0ACwsgA0UNAQJAIAFB/wFxIgMgAC0AAEYNACACQghUDQAgA61CgYKEiJCgwIABfiEFA0BCgIKEiJCgwIABIAApAwAgBYUiBn0gBoRCgIGChIiQoMCAf4NCgIGChIiQoMCAf1INAiAAQgh8IQAgAkIIfSICQgdWDQALCyACUA0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQgF8IQAgAkIBfSICQgBSDQALC0IAC4YDAQN+IAApAyAhAgJ+IAFBAEoEQEKI+BIgAikDACABrUIEhnwiAiACIAApAxBaGwwBCyABQdnzQk4EQCAAKQMQIAGsQgSGfAwBCyABQdjzQkYEQCAAKQMYQkB9DAELQoj4EiACKQMAIgIoAghBFkYNABpCiPgSIAIpAwAiAkHX80IgAWutQgSGfEIgfCACLQAKQdjzQiABa0kbCyEDIAApAxAiAkIIfSgCAAR+IAJCEH0pAwAFQgALIQICQAJAAkACQCADKAIIQQ9xIgFBBWsOAwACAQILIAMpAwAgAjcDKCACUA0CAkAgAykDACIELQAJQQRxRQ0AIAItAAlBA3FFDQAgACAEIAIQciADKQMAIQQLIAAgBCACEN4CDAILIAMpAwAgAjcDECACUA0BAkAgAykDACIELQAJQQRxRQ0AIAItAAlBA3FFDQAgACAEIAIQciADKQMAIQQLIAAgBCACEN4CDAELIAApAxggAa1CA4Z8IAI3A6ADCyAAIAApAxBCEH03AxALpwEBAX4gACkDICECAn4gAUEASgRAQoj4EiACKQMAIAGtQgSGfCICIAIgACkDEFobDAELIAFB2fNCTgRAIAApAxAgAaxCBIZ8DAELIAFB2PNCRgRAIAApAxhCQH0MAQtCiPgSIAIpAwAiAigCCEEWRg0AGkKI+BIgAikDACIAQdfzQiABa61CBIZ8QiB8IAAtAApB2PNCIAFrSRsLKAIIQQ9xQQNrQQJJC4wBAQF+IAApAzgiAyABIAIQKyECIAMgAykDECIBQhB8NwMQIAEgAjcDACABIAItAAhBwAByNgIIAkAgAyAAKQNQIAMpAxBCEH0QgwEiACgCCEUEQCAAQQE2AgggAEEBNgIAIAMpAxgpAxhCAFcNASADEC4MAQsgACkDECECCyADIAMpAxBCEH03AxAgAgvWAQIBfgJ/AkADQAJAIARQBEAgACABQQAQpQEiBSgCCCIGDQEgACABQt0KEIQBAAsgASkDACkDKCIEUA0CIAQtAApBAXENAiAEQQAgACkDGCkD4AEQeCIFUA0CIAUoAgghBgsgBkEPcUEGRgRAIAAgBSABIAIgA0EBEM0BDwtCACEEAkAgBkHFAEcNACAFKQMAIAIQWCIEKAIIRQ0AIAMgBCkDADcDACADIAQpAwg3AwgPCyAFIQEgB0EBaiIHQdAPRw0ACyAAQukZQgAQKQALIANBADYCCAsVACAAQdjzQkKYwgAQJhogAEF+EH0LJAAgAkIAUgRAIAAgAhAjIAEgAhAeGiAAIAApAxAgAnw3AxALCyABAX4gASACEFgiA0KI+BJRBH4gACABIAIQlAEFIAMLCzoBAn4jAEIgfSIDJAAgACABEPUBIQQgAyAAIAEQogI3AxAgAyAENwMIIAMgAjcDACAAQokUIAMQKQALOAECfiAAIAEgACkDGCAAKQMQfCICQv///////////wB9IgMgASADVRsiATcDGCAAIAIgAX03AxAL5wECBn4CfyAAIABBPRDiASIBUQRAQgAPCwJAIAAgASAAfSIEfC0AAA0AQoi5FCkDACICUA0AIAIpAwAiAVANAANAAkACfyAAIQNBACAEIgVQDQAaAkAgAC0AACIHRQRAQQAhBwwBCwJAA0AgByABLQAAIghHDQEgCEUNASAFQgF9IgVQDQEgAUIBfCEBIAMtAAEhByADQgF8IQMgBw0AC0EAIQcLCyAHIAEtAABrC0UEQCACKQMAIAR8IgEtAABBPUYNAQsgAikDCCEBIAJCCHwhAiABQgBSDQEMAgsLIAFCAXwhBgsgBgtEAQF+IAEgAn4hBCAEAn4gAygCjAFBAEgEQCAAIAQgAxCeAgwBCyAAIAQgAxCeAgsiAFEEQEIAIAIgAVAbDwsgACABgAuxDAIHfgN/AkAgAFANACAAQhB9IgMgAEIIfSkDACIBQniDIgB8IQQCQCABp0EBcQ0AIAFCAoNQDQEgAyADKQMAIgF9IgNCkJwVKQMAVA0BIAAgAXwhAAJAQpicFSkDACADUgRAIAFC/wFYBEAgAykDGCIFIAMpAxAiAlINAkL4mxVC+JsVKAIAQX4gAUIDiKd3cTYCAAwDCyADKQMwIQYCQCADIAMpAxgiAlIEQCADKQMQIgEgAjcDGCACIAE3AxAMAQsgAykDKCIBQgBSBH4gA0IofAUgAykDICIBUARAQgAhAgwCCyADQiB8CyEFA0AgBSEHIAEiAkIofCEFIAIpAygiAUIAUg0AIAJCIHwhBSACKQMgIgFCAFINAAsgB0IANwMACyAGUA0CAkAgAygCOCIIrUIDhkLQoBV8IgEpAwAgA1EEQCABIAI3AwAgAkIAUg0BQvybFUL8mxUoAgBBfiAId3E2AgAMBAsgBkIgQiggBikDICADURt8IAI3AwAgAlANAwsgAiAGNwMwIAMpAyAiAUIAUgRAIAIgATcDICABIAI3AzALIAMpAygiAVANAiACIAE3AyggASACNwMwDAILIAQpAwgiAUIDg0IDUg0BQoCcFSAANwMAIAQgAUJ+gzcDCCADIABCAYQ3AwggBCAANwMADwsgAiAFNwMYIAUgAjcDEAsgAyAEWg0AIAQpAwgiAUIBg1ANAAJAIAFCAoNQBEBCoJwVKQMAIARRBEBCoJwVIAM3AwBCiJwVQoicFSkDACAAfCIANwMAIAMgAEIBhDcDCCADQpicFSkDAFINA0KAnBVCADcDAEKYnBVCADcDAA8LQpicFSkDACAEUQRAQpicFSADNwMAQoCcFUKAnBUpAwAgAHwiADcDACADIABCAYQ3AwggACADfCAANwMADwsgAUJ4gyAAfCEAAkAgAUL/AVgEQCAEKQMYIgUgBCkDECICUQRAQvibFUL4mxUoAgBBfiABQgOIp3dxNgIADAILIAIgBTcDGCAFIAI3AxAMAQsgBCkDMCEGAkAgBCAEKQMYIgJSBEAgBCkDECIBIAI3AxggAiABNwMQDAELIAQpAygiAUIAUgR+IARCKHwFIAQpAyAiAVAEQEIAIQIMAgsgBEIgfAshBQNAIAUhByABIgJCKHwhBSACKQMoIgFCAFINACACQiB8IQUgAikDICIBQgBSDQALIAdCADcDAAsgBlANAAJAIAQoAjgiCK1CA4ZC0KAVfCIBKQMAIARRBEAgASACNwMAIAJCAFINAUL8mxVC/JsVKAIAQX4gCHdxNgIADAILIAZCIEIoIAYpAyAgBFEbfCACNwMAIAJQDQELIAIgBjcDMCAEKQMgIgFCAFIEQCACIAE3AyAgASACNwMwCyAEKQMoIgFQDQAgAiABNwMoIAEgAjcDMAsgAyAAQgGENwMIIAAgA3wgADcDACADQpicFSkDAFINAUKAnBUgADcDAA8LIAQgAUJ+gzcDCCADIABCAYQ3AwggACADfCAANwMACyAAQv8BWARAIABCA4giAUIEhkLAnBV8IQACfkL4mxUoAgAiCEEBIAGndCIJcUUEQEL4mxUgCCAJcjYCACAADAELIAApAxALIQIgACADNwMQIAIgAzcDGCADIAA3AxggAyACNwMQDwsgA0IANwMoIAMCf0EAIABCCIinIghFDQAaQR8gCEH//wNLDQAaIABBJiAIZyIIa62Ip0EBcSAIQQF0ckE+cwsiCDYCOCADQgA3AyAgCK1CA4ZC0KAVfCEHAn4CQAJ+QvybFSgCACIJQQEgCHQiCnFFBEBC/JsVIAkgCnI2AgBCMCECIAchBUIQDAELIABCPyAIQQF2QQZqrX1CACAIQR9HG4YhAiAHKQMAIQUDQCAFIgEpAwhCeIMgAFENAiACQjyIIQUgAkIBhiECIAEgBUIIg3xCIHwiBykDACIFQgBSDQALQjAhAiABIQVCEAshACADIgEMAQsgASkDECIFIAM3AxhCECECIAFCEHwhB0IwIQBCAAshBCAHIAM3AwAgAiADfCAFNwMAIAMgATcDGCAAIAN8IAQ3AwBCsJwVQn9CsJwVKQMAQgF9IgAgAFAbNwMACwvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC2QBAn5C4LYUKQMAIgEgAEIHfEJ4gyICfCEAAkAgAkIAUiAAIAFYcUUEQCAAPwBCEIZYDQEgAD8AQhCGfUL//wN8QhCIQABCf1INAQtCgLkUQTA2AgBCfw8LQuC2FCAANwMAIAELiwEBBH4CQAJAIAApA0giAikDCCIEQgF8IgUgAikDECIDWARAIAIpAwAhAAwBCyADQv//////////P1oNASAAKQM4IAIpAwAgAyADQgGGIgMQESEAIAIgAzcDECACIAA3AwAgAikDCCIEQgF8IQULIAIgBTcDCCAAIAR8IAE6AAAPCyAAQr0kQQAQMgALlwoCDX4EfyMAQhB9IgkkACAALQAMQQFGBEAgACkDICIDKQM4IQQgAyADKQMAIAApAzgiBn03AzggAyAEIAZ8NwMACwJAIAEtAABBPkYEQCAAIAApAxBCEH0iCDcDECABQgF8IQFCACEGDAELIAIpA3giBikDACEIC0IAIQQgCCgCCEEfcUEGRgRAIAgpAwAhBAsgAkI4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AEEHRw0AIAhBgAJxDQAgCCACLQA6SA0AIAIgAi0APEEBazoAPAsgAi0APCEGIAFBBzYCACABIAY2AggCQAJAIAItADwiBkECaiIJIAIpAwAiBC0ADEsEQCAGQf0BTw0BIAQgCToADAsgAiAJOgA8IAIgCEEXdCABKAIIQQZ0ciACIAUQaUEOdHJBDHIQIRoCQCAFKAIAQQdHDQAgBSgCCCIGQYACcQ0AIAYgAi0AOkgNACACIAItADxBAWs6ADwLDAELIAIpAxBC8BAQIAALIAAgASAHEO0CDAELCyADQiB8JAAPCyAAQd0AEDQACyAAQaQCEDQAC8ADAgR+A38gACgCACEHAkACQAJAIAApA0giASkDCCIDQgF8IgQgASkDECICWARAIAEpAwAhAgwBCyACQv//////////P1oNASAAKQM4IAEpAwAgAiACQgGGIgMQESECIAEgAzcDECABIAI3AwAgASkDCCIDQgF8IQQLIAEgBDcDCCACIAN8IAc6AAAgACkDQCIBIAEpAwAiAkIBfTcDACAAAn8gAkIAUgRAIAEgASkDCCIBQgF8NwMIIAEtAAAMAQsgARAZCyIFNgIAIAVBPUYEQANAAkAgACkDSCIBKQMIIgNCAXwiBCABKQMQIgJYBEAgASkDACECDAELIAJC//////////8/Wg0EIAApAzggASkDACACIAJCAYYiAxARIQIgASADNwMQIAEgAjcDACABKQMIIgNCAXwhBAsgASAENwMIIAIgA3xBPToAACAAKQNAIgEgASkDACICQgF9NwMAIAACfyACQgBSBEAgASABKQMIIgFCAXw3AwggAS0AAAwBCyABEBkLIgU2AgAgBkEBaiEGIAVBPUYNAAsLIAZBf0EAIAUgB0cbcw8LIABCvSRBABAyAAsgAEK9JEEAEDIAC5wCAgJ/A34gAFAEQCACQQA2AgggAkEANgIAIAJCfzcDEA8LIAAtADohBAJAAkADQCAEIgVBAEwNASABIAApAwApA1AgACkDECkDWCkDACAEQQFrIgQgACgCNGqsQgGGfDIBAEIEhnwpAwBSDQALIAIgBDYCCCACQQg2AgAgAkJ/NwMQIAMNASAAQhh8IQADQCAFIAApAwAiAC0AEEwNAAsgAEEBOgARDwsgAgJ/AkAgADEAOyIHQgBSBEAgACkDACkDWCEIA0AgCCAG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IARCAXwhAiAGIARCBIYiBHwoAggEQCADQRM2AgggAyACQv////8PgzcDACADIAQgBSkDEHwiAikDADcDEAwDCyAHIAIiBKdHDQALIAcFIAELIAdrIgdBASAFLQALdCIBTg0BIAUpAxghBANAIAQgB60iAkIFhnwiBigCCEUEQCABIAdBAWoiB0cNAQwDCwsgAyAGKQMQNwMAIAMgBikDGDcDCCADIAUpAxggAkIFhnwiAikDADcDEAsgAyACKQMINwMYQQEhCAsgCCEBIAAgACkDEEIQQnAgARt8NwMQIAELrQMCAn4BfyMAQjB9IgYkACAGQgh8IgUgAjcDGCAFIAE3AxAgBSAANwMgIAVCADcDACAFQgA3AwgjAELgAH0iASQAIAAgAC8BxAFBAWo7AcQBIAFCIHwiAkIANwMAIAFCtj4gAyADUBs3A1ggASAFNwMAIAEgBDcDUCABQQA2AkwgAUIANwNAIAFBADYCPCABQgA3AzAgAUEANgIsIAFCADcDGCABQgA3AwggAEIIIAEgACkDECAAKQM4fSAAKQOwARCCAiEHIAAgASkDCCABKQMYQgAQESEDIAFCADcDGCABIAM3AwggACACKQMAIAE0AixCAYZCABARGiAAIAEpAzAgATQCPEIYfkIAEBEaIAAgASkDQCABNAJMQhh+QgAQERogACAALwHEAUEBazsBxAEgAULgAHwkAAJAIAcNACAAKQMQQhB9KQMAIgEtAApFDQAgACkDGCkDQEICEJYBIQIgASkDICkDACIDIAIpAwA3AwAgAyACKQMINwMIIAEpAyAiASkDACICLQAIQcAAcUUNACACIAFCEHxSDQAgACABELMBCyAGQjB8JAAgBwuyAQEDfiAAKQMYKQNAQgIQlgEhAyAAIAEQTSECQgAhAQJAAkAgAygCCEHFAEcNACADKQMAIAIQ1QEiASgCCEUNACAAKQMQIgMgASkDADcDACADIAEpAwg3AwggACAAKQMQQhB8IgA3AxAMAQsgACkDECIEIAI3AwAgBCACLQAIQcAAcjYCCCAAIAApAxAiAkIQfDcDECAAIAMgAiACIAEQgAEgACkDECEACyAAQgh9KAIAGgsOACAAKQMYKQPIARD8AgtqAQJ+IwBCIH0iAiQAAn4gAUGAAkwEQCAAKQM4IAIgATYCAEKAzAAgAhAqDAELIAFB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AygCDCIIQccBSg0AA0AgAyAIQQFqNgIMIAUgCKx8IAc6AAAgAyADKQMAIgQQPCIHNgIIIAdBMGtBCk8NAiADKAIMIghBxwFMDQALCyADQQA6ABALIAcgBBCkAiAFIAM0Agx8QQA6AABBASEHIAAgBRC8AkIAUg0AIAApAxAiBEEANgIIIAAgBEIQfDcDEEEAIQcLIAlBAWohCSANRQ0BIA1BAWshDSAHDQALCwJ/IAEoAowBQQBIBEAgASgCAAwBCyABKAIAC0EFdkEBcQRAIABBAEIAEFcMAQsgB0UEQCAAQX4QDiAAKQMQIgFBADYCCCAAIAFCEHw3AxALIAkgAmsLIANCoMAAfCQAC68BAgJ+AX8gAigCjAEaIAIgAigCiAEiBUEBayAFcjYCiAEgAikDCCIDIAIpAxAiBFEEfiABBSAAIAMgBCADfSIDIAEgASADVhsiAxAeGiACIAIpAwggA3w3AwggACADfCEAIAEgA30LIgNCAFIEQANAAkAgAhCXAkUEQCACIAAgAyACKQNApxECACIEQgBSDQELIAEgA30PCyAAIAR8IQAgAyAEfSIDQgBSDQALCyABC4kEAgR+An8CQAJAIAG9IgIiBEIBhiIDUA0AIAJC////////////AINCgICAgICAgPj/AFYNACAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsgAyAFQgGGIgJaBEAgAEQAAAAAAAAAAKIgACACIANRGw8LIARCNIinQf8PcSEHAn4gBkUEQEEAIQYgBUIMhiICQgBZBEADQCAGQQFrIQYgAkIBhiICQgBZDQALCyAFQQEgBmuthgwBCyAFQv////////8Hg0KAgICAgICACIQLIQICfiAHRQRAQQAhByAEQgyGIgNCAFkEQANAIAdBAWshByADQgGGIgNCAFkNAAsLIARBASAHa62GDAELIARC/////////weDQoCAgICAgIAIhAshBCAGIAdKBEADQAJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsgAkIBhiECIAZBAWsiBiAHSg0ACyAHIQYLAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCwJAIAJC/////////wdWBEAgAiEDDAELA0AgBkEBayEGIAJCgICAgICAgARUIAJC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BHFFDQAgA0IQfSkDAC0ACUEDcUUNACAAKQMYIQMgAiACLQAJQfsBcToACSACIAMpA3g3AzAgAyACNwN4IAApAxAhAwsgACADQiB9NwMQC/cBAQF+IAApAyAhAgJ+IAFBAEoEQEKI+BIgAikDACABrUIEhnwiAiACIAApAxBaGwwBCyABQdnzQk4EQCAAKQMQIAGsQgSGfAwBCyABQdjzQkYEQCAAKQMYQkB9DAELQoj4EiACKQMAIgIoAghBFkYNABpCiPgSIAIpAwAiAEHX80IgAWutQgSGfEIgfCAALQAKQdjzQiABa0kbCyEAQgAhAgJAAkACQAJAAkAgACgCCEE/cUEEaw4RAAMEAgQEBAQEBAQEBAQEBAEECyAAKQMAMQALDwsgACkDACkDEA8LIAApAwApAxgPCyAAKQMAENkCrCECCyACC7gFAgR+AX8gACkDGCICKQMYQgBVBEAgABAuCyAAQgBCCELYARARIQEgAi0AVCEFIAFBCDoAECABIAVBA3E6ABEgASACKQNYNwMIIAIgAUIIfCIDNwNYIAApAxAiBEHIADYCCCAEIAM3AwAgACAAKQMQQhB8NwMQIAFCADcDQCABIAI3AyAgAUIANwMoIAFBADsBEiABQgA3A2AgASADNwNYIAFCADcDsAEgAUEBOgDUASABQgA3A8ABIAFCATcCzAEgAUIANwNIIAFCADcDuAEgAUEAOgAUIAEgACgCyAE2AtABIAEgACgCvAEiBTYCxAEgACkDqAEhBCABIAU2AsgBIAEgBDcDsAEgASACKQPIAUIIfSkAADcAACAAQgBCAEKABRARIQAgAUEoNgLAASABIAA3A0AgAEEANgL4BCAAQQA2AugEIABBADYC2AQgAEEANgLIBCAAQQA2ArgEIABBADYCqAQgAEEANgKYBCAAQQA2AogEIABBADYC+AMgAEEANgLoAyAAQQA2AtgDIABBADYCyAMgAEEANgK4AyAAQQA2AqgDIABBADYCmAMgAEEANgKIAyAAQQA2AvgCIABBADYC6AIgAEEANgLYAiAAQQA2AsgCIABBADYCuAIgAEEANgKoAiAAQQA2ApgCIABBADYCiAIgAEEANgL4ASAAQQA2AugBIABBADYC2AEgAEEANgLIASAAQQA2ArgBIABBADYCqAEgAEEANgKYASAAQQA2AogBIABBADYC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CyACIAM3AwggBCAFfCAKOgAADAELAkAgACkDSCICKQMIIgNCAXwiBSACKQMQIgRYBEAgAikDACEEDAELIARC//////////8/Wg0MIAApAzggAikDACAEIARCAYYiAxARIQQgAiADNwMQIAIgBDcDACACKQMIIgNCAXwhBQsgAiAFNwMIIAMgBHwgCToAACAAKQNAIgIgAikDACIDQgF9NwMAIAACfyADQgBSBEAgAiACKQMIIgJCAXw3AwggAi0AAAwBCyACEBkLNgIACyAAKAIAIgkgC0cNAAsLAkAgACkDSCICKQMIIgNCAXwiBSACKQMQIgRYBEAgAikDACEEDAELIARC//////////8/Wg0JIAApAzggAikDACAEIARCAYYiAxARIQQgAiADNwMQIAIgBDcDACACKQMIIgNCAXwhBQsgAiAFNwMIIAMgBHwgCzoAACAAKQNAIgIgAikDACIDQgF9NwMAIAACfyADQgBSBEAgAiACKQMIIgJCAXw3AwggAi0AAAwBCyACEBkLNgIAIAApAzgiAiAAKQNIIgMpAwBCAXwgAykDCEICfRArIQMgAiACKQMQIgRCEHw3AxAgBCADNwMAIAQgAy0ACEHAAHI2AggCQCACIAApA1AgAikDEEIQfRCDASIAKAIIRQRAIABBATYCCCAAQQE2AgAgAikDGCkDGEIAVw0BIAIQLgwBCyAAKQMQIQMLIAIgAikDEEIQfTcDECABIAM3AwBBpQIhCQwDCwJAIAApA0giAikDCCIFQgF8IgQgAikDECIDWARAIAIpAwAhAwwBCyADQv//////////P1oNCCAAKQM4IAIpAwAgAyADQgGGIgQQESEDIAIgBDcDECACIAM3AwAgAikDCCIFQgF8IQQLIAIgBDcDCCADIAV8QS46AAAgACkDQCICIAIpAwAiA0IBfTcDACAAAn8gA0IAUgRAIAIgAikDCCICQgF8NwMIIAItAAAMAQsgAhAZCyIKNgIAQS4hCSAKQS5GBEAgACkDQCIBIAEpAwAiAkIBfTcDACAAAn8gAkIAUgRAIAEgASkDCCIBQgF8NwMIIAEtAAAMAQsgARAZCyIJNgIAIAlBLkcEQEGYAiEJDAQLIAApA0AiASABKQMAIgJCAX03AwAgAAJ/IAJCAFIEQCABIAEpAwgiAEIBfDcDCCAALQAADAELIAEQGQs2AgBBmQIhCQwDCyAKrEKB9hJ8LQAAQQJxRQ0CCwJ/IwBCEH0iBiQAIAAoAgAhCQJAAkAgACkDSCIDKQMIIgRCAXwiAiADKQMQIgVYBEAgAykDACEFDAELIAVC//////////8/Wg0BIAApAzggAykDACAFIAVCAYYiAhARIQUgAyACNwMQIAMgBTcDACADKQMIIgRCAXwhAgsgAyACNwMIIAQgBXwgCToAACAAKQNAIgIgAikDACIDQgF9NwMAIAACfyADQgBSBEAgAiACKQMIIgJCAXw3AwggAi0AAAwBCyACEBkLNgIAQsYzIQggCUEwRgRAQscaQsYzIABCkD0QkgIbIQgLA0AgACAIEJICBEAgAEKVwgAQkgIaCyAAKAIAIgmsQoH2EnwtAABBEHEEQAJAIAApA0giAykDCCIEQgF8IgIgAykDECIFWARAIAMpAwAhBQwBCyAFQv//////////P1oNAyAAKQM4IAMpAwAgBSAFQgGGIgIQESEFIAMgAjcDECADIAU3AwAgAykDCCIEQgF8IQILIAMgAjcDCCAEIAV8IAk6AAAgACkDQCICIAIpAwAiA0IBfTcDACADQgBSBEAgAiACKQMIIgJCAXw3AwggACACLQAANgIADAILIAAgAhAZNgIADAELIAApA0giAykDCCIFQgF8IQQgAykDECECIAlBLkYEQAJAIAIgBFoEQCADKQMAIQIMAQsgAkL//////////z9aDQMgACkDOCADKQMAIAIgAkIBhiIEEBEhAiADIAQ3AxAgAyACNwMAIAMpAwgiBUIBfCEECyADIAQ3AwggAiAFfEEuOgAAIAApA0AiAiACKQMAIgNCAX03AwAgA0IAUgRAIAIgAikDCCICQgF8NwMIIAAgAi0AADYCAAwCCyAAIAIQGTYCAAwBCwsCQCACIARaBEAgAykDACECDAELIAJC//////////8/Wg0BIAApAzggAykDACACIAJCAYYiBBARIQIgAyAENwMQIAMgAjcDACADKQMIIgVCAXwhBAsgAyAENwMIIAIgBXxBADoAACAAKQNIKQMAIAYQLEIAUgRAIAYoAgghCSABIAYrAwA5AwAgBkIQfCQAQaMCQaICIAlBE0YbDAILIABCpBhBogIQMgALIABCvSRBABAyAAshCQwBCyALrEKB9hJ8LQAAQQFxBEADQAJA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JAACQAJAAkAgAyAEQgBCABCJAUUNAAJ/IARC////////P4MhBwJ/IARCMIinQf//AXEiCkH//wFHBEBBBCAKDQEaQQJBAyADIAeEUBsMAgsgAyAHhFALC0UNACACQjCIpyILQf//AXEiCUH//wFHDQELIAVCEHwgASACIAMgBBAkIAUgBSkDECICIAUpAxgiASACIAEQlwMgBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiByADIARC////////////AIMiBhCJAUEATARAIAEgByADIAYQiQEEQCABIQQMAgsgBULwAHwgASACQgBCABAkIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEKIAkEfiABBSAFQuAAfCABIAdCAEKAgICAgIDAu8AAECQgBSkDaCIHQjCIp0H4AGshCSAFKQNgCyEEIApFBEAgBULQAHwgAyAGQgBCgICAgICAwLvAABAkIAUpA1giBkIwiKdB+ABrIQogBSkDUCEDCyAGQv///////z+DQoCAgICAgMAAhCEIIAdC////////P4NCgICAgICAwACEIQcgCSAKSgRAA0ACfiAHIAh9IAMgBFatfSIGQgBZBEAgBiAEIAN9IgSEUARAIAVCIHwgASACQgBCABAkIAUpAyghAiAFKQMgIQQMBQsgBkIBhiAEQj+IhAwBCyAHQgGGIARCP4iECyEHIARCAYYhBCAJQQFrIgkgCkoNAAsgCiEJCwJAIAcgCH0gAyAEVq19IgZCAFMEQCAHIQYMAQsgBiAEIAN9IgSEQgBSDQAgBUIwfCABIAJCAEIAECQgBSkDOCECIAUpAzAhBAwBCyAGQv///////z9YBEADQCAEQj+IIAlBAWshCSAEQgGGIQQgBkIBhoQiBkKAgICAgIDAAFQNAAsLIAtBgIACcSEKIAlBAEwEQCAFQkB9IAQgBkL///////8/gyAJQfgAaiAKcq1CMIaEQgBCgICAgICAwMM/ECQgBSkDSCECIAUpA0AhBAwBCyAGQv///////z+DIAkgCnKtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVCgAF8JAAL+wECAX4BfwJAIAMCfgJAAkACQCABLQBCQQJxBEAgAkEATg0BQgAhAEEAIAJrIgIgASkDICABKQMAIgF9QgSIpyABKQMAKQMYLQAKIgVr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ASkDGCICQpgBfCEAA0AgACIDKQMAIgBCAFINAAsgAkLoAHwhBCACIQUgAikDaCIAQgBSBEADQCAEIAApAwA3AwAgACADKQMANwMAIAMgADcDACAAIQMgBCkDACIAQgBSDQALIAEpAxghBQsgBSkDmAFCAFIEQANAIAFBABCgAiAFKQOYAUIAUg0ACwsgAkEAOgBWIAJBAzoAVCABIARCfxBsGiABIAJC2AB8Qn8QbBogASACQqABfEJ/EGwaIAEgASkDGCIAKQMwIAA0AjxCA4ZCABARGiABKQM4IgNCAFIEQCABIAFC4AB8NwMgIAEpA3ghACABQgA3A3ggASAAQgBSBH4DQCAAKQMYIAEgAELIAEIAEBEaIAEgAS8BCkEBazsBCiIAQgBSDQALIAEpAzgFIAMLIAE0ArgBQgSGQgAQERoLIAYpAwggAUIIfUKQDEIAIAYpAwCnEQwAGguyAgIDfgF/IAApAzghAyAAKQMwIgIpAwAhASACQQBBABDVAiACEFogASADIAEpAzggATQCGEIChiACNAIgQgKGEBE3AzggASACKAIgIgQ2AhggASADIAEpA0ggATQCHEIChiAErEIChhARNwNIIAEgAigCIDYCHCABIAMgASkDMCABNAIUQgSGIAI0AixCBIYQETcDMCABIAIoAiw2AhQgASADIAEpA0AgATQCIEIDhiACNAIwQgOGEBE3A0AgASACKAIwNgIgIAEgAyABKQNQIAE0AiRCBIYgAjIBOEIEhhARNwNQIAEgAi4BODYCJCABIAMgASkDWCABNAIQQgSGIAIxADtCBIYQETcDWCABIAItADs2AhAgACACKQMINwMwIAMpAxgpAxhCAFUEQCADEC4LC2UCA34BfyMAQhB9IgAkAEF/IQMCQEECIAAQnwINACAAKQMAIgFC9rXB3reMAlUNACAAKQMIQugHfyICIAFCwIQ9fiIBQv///////////wCFVQ0AIAEgAnynIQMLIABCEHwkACADC04CAX8BfgJ/QQAgAEI0iKdB/w9xIgFB/wdJDQAaQQIgAUGzCEsNABpBAEIBQbMIIAFrrYYiAkIBfSAAg0IAUg0AGkECQQEgACACg1AbCwtUAgJ+AX8gASAAKAIARgR/IAApA0AiAiACKQMAIgNCAX03AwAgAAJ/IANCAFIEQCACIAIpAwgiAkIBfDcD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EEEsRg0ACwsgAiAGRgRAIAApAzAhBAJAAkACQCADKAIAQQ1rDgIAAQILIANBBzYCACADIAQpAwApAzggAzQCCEIChnwoAgBBBnZB/wFxNgIIDAELIAQpAwApAzggAzQCCEIChnwiBCAEKAIAQf///wNxQYCAgAhyNgIAIANBDDYCAAsgACkDMCEADAULIAAgAiAGIAMQlQIMAwsgAEE9EDQACyAFQQVBACAGQQhHGyAHIAMoAhBBABCSARogBUEBEJABCyACIAApAzgvAcYBakHJAU4NAiAAIAMgAkEBahCFAwsgACkDMCIALQA8IQIgA0EHNgIAIANCfzcDECADIAJBAWs2AggLIAAgAUIIfCADENQCIANCIHwkAA8LIAApAzBByAFCmhIQtwEAC4wBAQJ+IwBCEH0iACQAAkAgAEIIfCAAEAcNAEKIuRQgACkDCEIDhkIIfBBzIgE3AwAgAVANACAAKQMAEHMiAUIAUgRAQoi5FCkDACAAKQMIQgOGfEIANwMAQoi5FCkDACABEAhFDQELQoi5FEIANwMACyAAQhB8JABCsLwUQoC6FDcDAEK4uxRBKjYCAAv0AwIDfgR/IwBCIH0iAyQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIEpyIFQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIAVBgPgAa60hBAJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBRshACAFrSAEfAwBCwJAIAAgAoRQDQAgBEL//wFSDQAgAkIEhiAAQjyIhEKAgICAgICABIQhAEL/DwwBCyAFQf6HAUsEQEIAIQBC/w8MAQtBgPgAQYH4ACAEUCIHGyIIIAVrIgZB8ABKBEBCACEAQgAMAQsgA0IQfCAAIAIgAkKAgICAgIDAAIQgBxsiAkGAASAGaxBCIAMgACACIAYQnQEgAykDCEIEhiADKQMAIgJCPIiEIQACQCAFIAhHIAMpAxAgAykDGIRCAFJxrSACQv//////////D4OEIgJCgYCAgICAgIAIWgRAIABCAXwhAAwBCyACQoCAgICAgICACFINACAAQgGDIAB8IQALIABCgICAgICAgAiFIAAgAEL/////////B1YiBRshACAFrQshAiADQiB8JAAgAUKAgICAgICAgIB/gyACQjSGhCAAhL8LwAECA38EfiMAQhB9IgUkACAANAIUIQQgACgCECICQQxPBH4gAiACQQxtIgNBDGxrIgFBDGogASABQQBIGyECIAMgAUEfdWqsIAR8BSAECyAFQgx8EN8BIQQgAqxCAoZCkJoTfCgCACIBQYCjBWogASAFKAIMGyABIAJBAUobIQIgACgCDCEBIAA0AgghBiAANAIEIQcgADQCACAFQhB8JAAgBCACrHwgAUEBa6xCgKMFfnwgBkKQHH58IAdCPH58fAufAwMCfAF+An8gAL0iBUKAgICAgP////8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gAJmhRAdcFDMmpoE8IAEgAZogBUIAWSIHG6GgIQBEAAAAAAAAAAAhAQsgACAAIAAgAKIiBKIiA0RjVVVVVVXVP6IgBCADIAQgBKIiAyADIAMgAyADRHNTYNvLdfO+okSmkjegiH4UP6CiRAFl8vLYREM/oKJEKANWySJtbT+gokQ31gaE9GSWP6CiRHr+EBEREcE/oCAEIAMgAyADIAMgA0TUer90cCr7PqJE6afwMg+4Ej+gokRoEI0a9yYwP6CiRBWD4P7I21c/oKJEk4Ru6eMmgj+gokT+QbMbuqGrP6CioKIgAaCiIAGgoCIDoCEBIAZFBEBBASACQQF0a7ciBCAAIAMgASABoiABIASgo6GgIgAgAKChIgAgAJogBxsPCyACBHxEAAAAAAAA8L8gAaMiBCAEvUKAgICAcIO/IgQgAyABvUKAgICAcIO/IgEgAKGhoiAEIAGiRAAAAAAAAPA/oKCiIASgBSABCwvtEgIIfgh/IwBCgAF9IgskAAJAAkAgAVAiEw0AAn4CQANAAn4gAi0AACINQSVHBEAgCiANRQ0EGiAAIAp8IA06AAAgCkIBfAwBC0EAIRJCASEHAkACQAJAIAItAAEiDUEtaw4EAQICAQALIA1B3wBHDQELIA0hEiACLQACIQ1CAiEHCwJ+IA0iFEErRq0gAiAHfHwiAiwAAEEwa0EJTQRAIAtCCHwhB0IAIQlBACEQQQAhESMAQhB9IggkAAJAIAItAAAiD0UEQCACIQUMAQsgAiEFAkADQCAPwCINQSBGIA1BCWtBBUlyRQ0BIAUtAAEhDyAFQgF8IQUgDw0ACwwBCwJAIA9B/wFxIg1BK2sOAwABAAELQX9BACANQS1GGyEQIAVCAXwhBQtBACEOA0ACQAJAIAUtAAAiDUEwayIPQf8BcUEKSQ0AIA1B4QBrQf8BcUEZTQRAIA1B1wBrIQ8MAQsgDUHBAGtB/wFxQRlLDQEgDUE3ayEPCyAPQf8BcUEKTw0AIAhCCkIAIAlCABA9QQEhDQJAIAgpAwhCAFINACAJQgp+IgwgD61C/wGDIgZCf4VWDQAgBiAMfCEJQQEhESAOIQ0LIAVCAXwhBSANIQ4MAQsLIAdCAFIEQCAHIAUgAiARGzcDAAsCQCAOBEBCgLkUQcQANgIAQQAhEEJ/IQkMAQsgCUJ/Ug0ACyAIQhB8JAAgCSAQrCIFhSAFfSEFIAspAwgMAQsgCyACNwMIQgAhBSACCyEGQgAhDAJAIAYtAAAiDUHDAGsiDkEWSw0AQQEgDnRBmYCAAnFFDQAgBSIMQgBSDQAgAiAGUq0hDAsCfgJAIA1BzwBGDQAgDUHFAEYNACAGDAELIAYtAAEhDSAGQgF8CyECIAtCEHwhBkIAIQUjAELQAH0iCSQAQvEJIQdBMCERQaiACCEQAkAgC0L4AHwiCAJ+AkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJ+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCANwCIOQSVrDlYhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tAQMEJy0HCAkKLS0tDS0tLS0QEhQWGBccHiAtLS0tLS0AAiYGBS0IAi0LLS0MDi0PLSURExUtGRsdHy0LIAMoAhgiDUEGTQ0iDCoLIAMoAhgiDUEGSw0pIA1Bh4AIagwiCyADKAIQIg1BC0sNKCANQY6ACGoMIQsgAygCECINQQtLDScgDUGagAhqDCALIAM0AhRC7A58QuQAfyEFDCMLQd8AIRELIAM0AgwhBQwhC0KQOCEHDB8LIAM0AhQiB0LsDnwhBQJAIAMoAhwiDUECTARAIAUgB0LrDnwgAxDlAUEBRhshBQwBCyANQekCSQ0AIAdC7Q58IAUgAxDlAUEBRhshBQsgDkHnAEYNGQwgCyADNAIIIQUMHgtBAiEOIAMoAggiDUUEQEIMIQUMIAsgDawiBUIMfSAFIA1BDEobIQUMHwsgAygCHEEBaqwhBUEDIQ4MHgsgAygCEEEBaqwhBQwbCyADNAIEIQUMGgsgCEIBNwMAQvzNACEFDB4LQaeACEGmgAggAygCCEELShsMFAtC6D0hBwwWCyADEIgDIAMpAyh9DAgLIAM0AgAhBQwVCyAIQgE3AwBC/s0AIQUMGQtCtj0hBwwSCyADKAIYIg1BByANG6wMBAsgAygCHCADKAIYa0EHakEHbq0hBQwRCyADKAIcIAMoAhhBBmpBB3BrQQdqQQdurSEFDBALIAMQ5QGtIQUMDwsgAzQCGAshBUEBIQ4MDwtBqYAIIRAMCgtBqoAIIRAMCQsgAzQCFELsDnxC5ACBIgUgBUI/hyIFhSAFfSEFDAoLIAM0AhQiB0LsDnwhBSAHQqQ/Uw0KIAkgBTcDMCAIIAZC5ABCrzQgCUIwfBBDrDcDACAGIQUMDgsgAygCIEEASARAIAhCADcDAEKBzgAhBQwOCyAJIAMpAygiB0KQHH8iBULkAH4gByAFQpAcfn2nwUE8ba3DfDcDQCAIIAZC5ABCwTQgCUJAfRBDrDcDACAGIQUMDQsgAygCIEEASARAIAhCADcDAEKBzgAhBQwNCyADKQMwIQZCsJkTIQUQ9QICQCAGQrCZE1ENAAJAIAZCkLcUKQMAUQ0AIAZCmLcUKQMAUQ0AQqi3FCkDAEIAUgRAIAYiBUK4txQpAwAiBn1C+LcUKQMAIAZ9VA0CC0KBzgAhBQwBCyAGIQULIAUMCwsgCEIBNwMAQsLMACEFDAsLIAVC5ACBIQUMBQsgDUGAgAhyCyAEEI0DDAcLQauACCEQCyAQIAQQjQMhBwsgCCAGQuQAIAcgAyAEEIoDIgU3AwBCACAGIAVQGyEFDAULQQIhDgwBC0EEIQ4LAkAgEiARIBIbIg1B3wBHBEAgDUEtRw0BIAkgBTcDECAIIAZC5ABCsDQgCUIQfBBDrDcDACAGIQUMBAsgCSAFNwMoIAkgDjYCICAIIAZC5ABCqTQgCUIgfBBDrDcDACAGIQUMAwsgCSAFNwMIIAkgDjYCACAIIAZC5ABCojQgCRBDrDcDACAGIQUMAgtCkMIACyIFECg3AwALIAlC0AB8JAAgBVANAgJAIAxQBEAgCykDeCEIDAELAn4CQAJAIAUtAAAiDUEraw4DAQABAAsgCykDeAwBCyAFLQABIQ0gBUIBfCEFIAspA3hCAX0LIQgCQCANQTBHDQADQCAFLAABIg1BMGtBCUsNASAFQgF8IQUgCEIBfSEIIA1BMEYNAAsLIAsgCDcDeEIAIQcDQCAHIgZCAXwhByAFIAZ8LAAAQTBrQQpJDQALIAwgCCAIIAxUGyEHAkAgACAKfCADKAIUQZRxSAR/QS0FIBRBK0cNASAHIAh9IAZ8QgNCBSALKQMILQAAQcMARhtUDQFBKws6AAAgB0IBfSEHIApCAXwhCgsgByAIWA0AIAEgClgNAANAIAAgCnxBMDoAACAKQgF8IQogB0IBfSIHIAhYDQEgASAKVg0ACwsgCyAIIAEgCn0iBiAGIAhWGyIGNwN4IAAgCnwgBSAGEB4aIAspA3ggCnwLIQogAkIBfCECIAEgClYNAAsgEw0CCyABQgF9IAogASAKURshCkIACyEHIAAgCnxBADoAAAwBC0IAIQcLIAtCgAF8JAAgBwuLAQIFfgF/IwBCEH0iAiQAQQAgAhCfAhogAikDCCEBIAIpAwAhBEK4uxQ0AgAhBULYmxVC2JsVKAIAIgZBAWo2AgAgBq0gASAEfCAFQoGABH58fCEBA0AgACADfCABQg+DIAFCAYZCIIOEQsEAfDwAACABQgWIIQEgA0IBfCIDQgZSDQALIAJCEHwkAAtBAgF/AX4CQELwthQpAwBCAFINAELwthQQzwIiATcDACABEIEDRQ0AQv4gQgAQ5QJC8LYUKQMAEPMBQQEhAAsgAAvCAQEBfyAAQQ5GBEBC9T1C2D8gASkDAFAbDwsgAEEQdSECAkAgAEH//wNxIgBB//8DRw0AIAJBBUoNAEKzPiABIAKsQgOGfCkDACIBQhB8IAFQGw8LQoHOACEBAkACfgJAAkACQCACQQFrDgUAAQQEAgQLIABBAUsNA0KkqRQMAgsgAEExSw0CQrCpFAwBCyAAQQNLDQFC8KsUCyEBIABFBEAgAQ8LA0AgAS0AACABQgF8IQENACAAQQFrIgANAAsLIAELhwICA34BfyMAQhB9IgMkACADQgA3AwgCQCABQgBSAn5C8LoUKQMAIgJCAFIEQCADQgh8IgRQIQUDQCACIAAgAikDAFENAhogBUUEQCAEIAI3AwALIAIpAzAiAkIAUg0ACwtCAAsiAEIAUnFFBEBBZCEFDAELIAEgACkDCFIEQEFkIQUMAQtC8LoUIAMpAwgiAUIwfCABUBsgACkDMDcDACAAKAIYQSBxRQRAIAAoAigaIAAoAhQaIAApAyAaCyAAKAIQBEAgACkDABCIAQtBACEFIAAtABhBIHENACAAEIgBCyADQhB8JAAgBawiAEKBYFoEfkKAuRRBACAAp2s2AgBCAAUgAAsaC5YCAgJ+AX8jAELwAH0iAiQAIAAQmAKsIgBCgWBaBH5CgLkUQQAgAKdrNgIAQn8FIAALpyIDQQBOBEBCfyEBAn8gA0EASARAQoC5FEEINgIAQX8MAQsCfwJAIANBAE4EQEKBzgAtAAANAUFMDAILAkAgA0Gcf0cEQEKBzgAtAABBL0ZBAHENAQwCCwwBC0FMDAELQUwLrCIAQoFgWgR+QoC5FEEAIACnazYCAEJ/BSAAC6cLRQRAAn4gAikDKEL///////////8AWgRAQoC5FEEwNgIAQn8MAQtCOBBzEIgBQoC5FEE0NgIAQn8LIQFCgLgUIAIpAyg3AwALIAMQABogAUIAIAFCf1IbIQELIAJC8AB8JAAgAQvAAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFJxDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAIAEgAlIgASACU3ENASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC4cDAgN+AX8CQCABLQAADQBC7j0QhgEiAUIAUgRAIAEtAAANAQsgAKxCDH5C8JYUfBCGASIBQgBSBEAgAS0AAA0BC0KUPhCGASIBQgBSBEAgAS0AAA0BC0LWPyEBCwJAA0ACQCABIAJ8LQAAIgVFDQAgBUEvRg0AQhchBCACQgF8IgJCF1INAQwCCwsgAiEEC0LWPyEDAkACQAJAAkACQCABLQAAIgVBLkYNACABIAR8LQAADQAgASEDIAVBwwBHDQELIAMtAAFFDQELIANC1j8QNkUNACADQpo9EDYNAQsgAEUEQEK4lhQhAiADLQABQS5GDQILQgAPC0KAvRQpAwAiAkIAUgRAA0AgAyACQhB8EDZFDQIgAikDKCICQgBSDQALC0IwEHMiAlAiBUUEQCACQsCWFCkDADcDCCACQriWFCkDADcDACACQhB8IgEgAyAEEB4aIAEgBHxBADoAACACQoC9FCkDADcDKEKAvRQgAjcDAAsgAkK4lhQgAiAFGyAAGyECCyACC3ACAn4BfyAAKQNQIQFBASEDAkAgAEIAIAAtAABBgAFxBH9BAUECIAApAyggACkDOFEbBUEBCyABpxEUACIBQgBTDQAgACkDECICQgBSBH5CCAUgACkDOCICUA0BQigLIAB8KQMAIAEgAn18IQELIAELqgEBAX4CQCACQQNPBEBCgLkUQRw2AgAMAQsCQCACQQFHDQAgACkDECIDUA0AIAApAwggASADfXwhAQsgACkDKCAAKQM4UgRAIABCAEIAIAApA0inEQIAGiAAKQMoUA0BCyAAQgA3AzggAEIANwMgIABCADcDKCAAIAEgAiAAKQNQpxEUAEIAUw0AIABCADcDCCAAQgA3AxAgACAAKAIAQW9xNgIAQQAPC0F/C3IBAn9BAiEBIABBKxAlUARAIAAtAABB8gBHIQELIAEgAUGAAXIgAEH4ABAlUBsiASABQYCAIHIgAEHlABAlUBsiASABQcAAciAALQAAIgFB8gBGGyICQYAEciACIAFB9wBGGyICQYAIciACIAFB4QBGGwufAgIDfgF/IwBCIH0iAyQAAkBC8DogASwAABAlUARAQoC5FEEcNgIADAELQvAJEHMiAlANACACQQBC6AEQYBogAUErECVQBEAgAkEIQQQgAS0AAEHyAEYbNgIACwJAIAEtAABB4QBHBEAgAigCACEFDAELIAIgAigCAEGAAXIiBTYCAAsgAkF/NgKQASACQoAINwNgIAIgADYCeCACIAJC8AF8NwNYIAVBCHFFBEAgAyADQhh8NwMACyACQsQBNwNQIAJCxQE3A0ggAkLGATcDQCACQscBNwMYQsm5FC0AAEUEQCACQX82AowBCyACQoC7FCkDACIBNwNwIAFCAFIEQCABIAI3A2gLQoC7FCACNwMAIAIhBAsgA0IgfCQAIAQLKAAgAUQAAAAAAADAf6IgAESL3RoVZiCWwKAQkAKiRAAAAAAAAMB/oguqDwIQfgR/IwBC0AJ9IgUkACAEQv///////z+DIQYgAkL///////8/gyEHIAIgBIVCgICAgICAgICAf4MhCCAEQjCIp0H//wFxIRcCQAJAIAJCMIinQf//AXEiGEH//wFrQYKAfk8EQCAXQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIglCgICAgICAwP//AFQgCUKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEIDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQggAyEBDAILIAEgCUKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEIDAMLIAhCgICAgICAwP//AIQhCEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAJhFAEQEKAgICAgIDg//8AIAggAiADhFAbIQhCACEBDAILIAIgA4RQBEAgCEKAgICAgIDA//8AhCEIQgAhAQwCCyAJQv///////z9YBEAgBULAAnwgASAHIAEgByAHUCIVG3kgFUEGdK18pyIVQQ9rEEJBECAVayEVIAUpA8gCIQcgBSkDwAIhAQsgAkL///////8/Vg0AIAVCsAJ8IAMgBiADIAYgBlAiFht5IBZBBnStfKciFkEPaxBCIBUgFmpBEGshFSAFKQO4AiEGIAUpA7ACIQMLIAVCoAJ8IAZCgICAgICAwACEIg5CD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAED0gBUKQAnxCACAFKQOoAn1CACAEQgAQPSAFQoACfCAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABA9IAVC8AF8IARCAEIAIAUpA4gCfUIAED0gBULgAXwgBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQPSAFQtABfCAEQgBCACAFKQPoAX1CABA9IAVCwAF8IAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAED0gBUKwAXwgBEIAQgAgBSkDyAF9QgAQPSAFQqABfCACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABA9IAVCkAF8IANCD4ZCACACQgAQPSAFQvAAfCACQgBCACAFKQOoASAFKQOgASIJIAUpA5gBfCIEIAlUrXwgBEIBVq18fUIAED0gBUKAAXxCASAEfUIAIAJCABA9IBUgGCAX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ARA+IAMiASACUg0ACyACIQELIAApAxAiAkEANgIIIAAgAkIQfDcDECAAQQEgARA+QQELqgICBX4CfyAAQQIQFyECIABBAxAXIQMgAEEEEBchBCAAQQUQFiEGIABBAUEBEJwBIABBBUEBIAZBAEobIgdBAhCcAQJAIAIgA1UNAAJAIAJCAFUNACADIAJC////////////AHxTDQAgAEEDQsUpEBUaCyADIAJ9IgFC////////////AIUgBFMEQCAAQQRC3zMQFRoLAkACQCADIARTDQAgAiAEWQ0AIAZBAEwNASAAQQFBBUEAEMoBDQELIAFCAFMNASADIAJ9QgF8IQEDQCAAIAIgBXwQMxogACAHIAQgBXwQPiAFQgF8IgUgAVINAAsMAQsgAUIAUw0AA0AgACABIAJ8EDMaIAAgByABIAR8ED4gAUIAUiABQgF9IQENAAsLIAAgBxAYQQELnwEBA34gAEEBQQcQnAEgABCOASIDQgF8IQECQAJAAkAgACkDECAAKQMgKQMAfUIQfUIEiKdBAmsOAgEAAgsgAEECEBciAkIAVSABIAJZcUUEQCAAQQJC6RMQFRoLIAIgA1cEQANAIAAgAUIBfSIDEDMaIABBASABED4gAyIBIAJVDQALCyACIQELIABBASABED5BAA8LIABCwcgAQgAQEAu+AgEFfiMAQtDAAH0iASQAIABBAUEFEJwBIAAQjgEhBCAAQQJCgc4AIAFCKHwQPyEFIABBA0IBEC0hAiAAQQQgBBAtIQQgAUIwfCIDQgA3AxAgAyAANwMYIANCgMAANwMIIAMgA0IgfDcDAAJAAkAgAiAEUwRAA0AgACACEDMaIABBfxB+RQRAIABBfxAWrEIDhkL4/RJ8KQMAIQMgASACNwMYIAEgAzcDECAAQrTJACABQhB8EBAaCyABQjB8IgMQaCADIAUgASkDKBCCASACQgF8IgIgBFINAAwCCwALIAIgBFINAQsgACAEEDMaIABBfxB+RQRAIABBfxAWrEIDhkL4/RJ8KQMAIQIgASAENwMIIAEgAjcDACAAQrTJACABEBAaCyABQjB8EGgLIAFCMHwQRiABQtDAAHwkAEEBC44BAgR+AX8jAEKwwAB9IgEkACAAQQEgAUKowAB8EBshAiAAIAFCCHwgASkDqEAQqQEhA0IAIQAgASkDqEBCAFIEQANA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J0T4wWMa3KVMQKIhASAAKQMQIgJBAzYCCCACIAE5AwAgACAAKQMQQhB8NwMQQQELxwECAXwBfgJ8IABBARAnmSIBvSICQv////+fyIvzP1gEQEQAAAAAAADwPyACQoCAgICAgICoPlQNARogARC2ASIBIAGiIAFEAAAAAAAA8D+gIgEgAaCjRAAAAAAAAPA/oAwBCyACQv////+fyIvDwABYBEAgARCQAiIBRAAAAAAAAPA/IAGjoEQAAAAAAADgP6IMAQsgAUQAAAAAAADwPxCWAwshASAAKQMQIgJBAzYCCCACIAE5AwAgACAAKQMQQhB8NwMQQQEL8AEDAnwBfgF/IABBARAnIQEjAEIQfSIDJAACfCABvUIgiKdB/////wdxIgRB+8Ok/wNNBEBEAAAAAAAA8D8gBEGewZryA0kNARogAUQAAAAAAAAAABC7AQwBCyABIAGhIARBgIDA/wdPDQAaIAEgAxCcAiEEIAMrAwghASADKwMAIQICQAJAAkACQCAEQQNxQQFrDgMBAgMACyACIAEQuwEMAwsgAiABQQEQugGaDAILIAIgARC7AZoMAQsgAiABQQEQugELIQEgA0IQfCQAIAApAxAiA0EDNgIIIAMgATkDACAAIAApAxBCEHw3AxBBAQvGAQICfgF8IABBARBkBEAgAEEBEA5BAQ8LAkAgAEEBECebIgNEAAAAAAAA4MNmRQ0AIANEAAAAAAAA4ENjRQ0AIAOZRAAAAAAAAOBDYwRAIAOwIQEgACkDECICQRM2AgggAiABNwMAIAAgACkDEEIQfDcDEEEBDwsgACkDECIBQRM2AgggAUKAgICAgICAgIB/NwMAIAAgACkDEEIQfDcDEEEBDwsgACkDECIBQQM2AgggASADOQMAIAAgACkDEEIQfDcDEEEBC7IEAwJ8AX4FfwJ8IABBARAnIQFEAAAAAAAA8D8hAiMAQhB9IgMkAAJAIABBAhAWQQBMDQAgAEECIANCDHwQogEhAiADKAIMDQAgAEECQpD+EikDABBrCyADQhB8JAACQCACvUL///////////8Ag0KAgICAgICA+P8AWARAIAG9Qv///////////wCDQoGAgICAgID4/wBUDQELIAEgAqAMAQsgAr0iA0IgiKciBEGAgMD/A2sgA6ciB3JFBEAgARCEAwwBCyAEQR52QQJxIggg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ASkDYEL4rAFSDQogAiADQggQH0IAUg0MIAErA2BEAAAAAAAod0BiDQsgAiADQgEQH0IAUg0MIAAgAS0AYBD/ASECIAApAxAiA0HGADYCCCADIAI3AwAgABBfIAIgABDWASIDNwMYIAFCyAB8IANCABCYAyABQvAAfCQAIAIMDQsMCwsgAULIAHxCojwQTgALIAFCyAB8QqYgEE4ACyABQsgAfEL8HxBOAAsgAULIAHxC6DQQTgALIAFCkA03A0AgAULIAHwgAEK6ICABQkB9ECoQTgALIAFCyA83AzAgAULIAHwgAEK6ICABQjB8ECoQTgALIAFCrxw3AyAgAULIAHwgAEK6ICABQiB8ECoQTgALIAFC4Rc3AxAgAULIAHwgAEK6ICABQhB8ECoQTgALIAFCkxk3AwAgAULIAHwgAEK6ICABECoQTgALIAFCyAB8Qo8gEE4ACyABQsgAfEL2HxBOAAsgAULIAHxCgDcQTgALDAELIAJCAFIEQCACQfQAECVQDQMLAn4gASkDACEEIAFCCHwhBiABQiB8IQIgASkDWCEIIwBC4AF9IgEkACAAQQEQ/wEhByAAKQMQIgNBxgA2AgggAyAHNwMAIAAQXyABIAAQlQEiAzcDkAEgACkDECIJQcUANgIIIAkgAzcDACAAEF8gByAAENYBIgM3AxggASADNwMAIAMgACAIEE0iCDcDaCABIAI3A5gBIAEgBjcDiAEgAkEANgIYIAJBADYCKCACQQA2AgggAUJAfSICIAA3AzggAkEANgIQIAIgBDcDQCACQaECNgIgIAIgCjYCACACQgA3AzAgAiAINwNgIAJCgYCAgBA3AgQgAiAAQqA9QgQQKzcDaCACKQM4IAIpA0giBCkDACAEKQMQQiAQESEEIAIpA0giBkIgNwMQIAYgBDcDACABQQA6ADwgAUEANgI4IAFBADYCMCABQv////8PNwMoIAFCADcDICABIAEpA3A3AwggASACNwMQIAEgATcDcCABIAEpA5gBIgQoAgg2AjQgASkDoAEhBiADQQI6AAwgAyAGNwNoIAFBADoA2AEgAUEAOgDaASABIAQoAig2AtABIAQoAhghCiABQQA6ANkBIAEgCjYC1AEgAUIANwPIASABIAFCyAF8NwMYIANBAToACyABQQA2ArgBIAFBCDYCsAEgAUJ/NwPAASABIAEpA6gBIAFCsAF8ELkCGiACEBQDQAJAAkAgASgCUCILQYQCayIKQR1LDQBBASAKdEGHgIiAAnEEfyALBSAKQQ5HDQEgAUJAfRA5IAEoAlALQaECRw0BIAFCQH0Q/QIgACAAKQMQQhB9NwMQIAFC4AF8JAAgBwwDCyABQkB9EDkMAQsLIAFCQH1BoQIQNAALCyECQgAhAyACLQAKBEAgAkIgfCEHA0AgAEIAQgBCIBARIgFBADYCGCABQgE3AwggASABQhB8NwMAIAcgA0IDhnwgATcDACADQgF8IgMgAjEAClQNAAsLIAVCIHwkAA8LIAUgAjcDCCAFQsoINwMAIABC7MYAIAUQKhogAEEDEEEACyAFIAI3AxggBUL/CzcDECAAQuzGACAFQhB8ECoaIABBAxBBAAu2BgEFfiMAQhB9IgMkACAAKQMYIQUgAEIAQgBCgAUQESEBIABBKDYCuAEgACABNwM4IAFBADYC+AQgAUEANgLoBCABQQA2AtgEIAFBADYCyAQgAUEANgK4BCABQQA2AqgEIAFBADYCmAQgAUEANgKIBCABQQA2AvgDIAFBADYC6AMgAUEANgLYAyABQQA2AsgDIAFBADYCuAMgAUEANgKoAyABQQA2ApgDIAFBADYCiAMgAUEANgL4AiABQQA2AugCIAFBADYC2AIgAUEANgLIAiABQQA2ArgCIAFBADYCqAIgAUEANgKYAiABQQA2AogCIAFBADYC+AEgAUEANgLoASABQQA2AtgBIAFBADYCyAEgAUEANgK4ASABQQA2AqgBIAFBADYCmAEgAUEANgKIASABQQA2AnggAUEANgJoIAFBADYCWCABQQA2AkggAUEANgI4IAFBADYCKCABQQA2AhggAEEAOwGiASAAIAFCsAR8NwMwIABCADcDcCAAQgA3A3ggACABNwNgIAAgAUIQfDcDECABQQA2AgggACAAQuAAfDcDICAAIAFC0AJ8NwNoIAAQlQEhASAFQcUANgJIIAUgATcDQCAAIAFBAkEAEJMBIANByAA2AgggAyAANwMAIAAgAUIBIAMQrAEgABCVASECIANBxQA2AgggAyACNwMAIAAgAUICIAMQrAEgACkDGCEBIABBgAEQ9wEgASAAQq8IQhEQKyICNwPYASAAIAIQ2AEgAULoA3whBiABKQPYASEBA0AgBiAEQgSGfCICIAE3AwggAiABNwMAIARCNFIEQCACIAE3AxggAiABNwMQIAIgATcDICACIAE3AyggAiABNwMwIAIgATcDOCAEQgR8IQQMAQsLQgAhAQNAIAAgAUIDhiICQtD+EnwpAwAQTSEEIAApAxggAnwgBDcD4AEgACAAKQMYIAJ8KQPgARDYASABQgF8IgFCGFINAAtCACEBIAAgAEKgPUIEECsQ2AEDQCAAIAAgAUIDhkLQ+hJ8KQMAEE0iAhDYASACIAFCAXwiATwACiABQhZSDQALIAVBAToAVyAFQvj1EjcD0AEgA0IQfCQACyAAIAAQQCkDCFAEQCAAQpQvQgAQEBoLIABBABCDA0EBC04BAn4jAEIQfSIBJAACQCAAEEAiAikDCFANACACKQMAUA0AIAEgABBAIgIpAwg3AwggAkIANwMIIAAgASkDCKcRAAAaCyABQhB8JABBAAspAQF+IAAQQCIBKQMIUARAIABClC9CABAQGgsgACABKQMAEFtFQgAQVwsRACAAIAEpAwAgASgCCBCXAQsEACMACxEAIAAgACkDEEIgfUEAEJcBCxoAIAApAxAgACkDICkDAH1CEH1CBIinQQFrC+MCAgR+An8gAEECEBchASAAQQFBBhA3IABBASABpyIFEMcBUARAIABBAkLNChAVGgsgAEEEEBchASAAQQNBBhA3IABBAyABpyIGEMcBUARAIABBBELNChAVGgsgAEEBEMMCBEAgAEEBQs81EBUaCyAAQQMQwwIEQCAAQQNCzzUQFRoLQoj4EiAAKQMgIgEpAwBCEHwiAyADIAApAxAiAlobKQMAIAWsQgOGfEIYfCEDQoj4EiABKQMAQjB8IgEgASACWhspAwAhAiADKQMAIgEgASkDCEIBfSIENwMIAkAgBEIAUg0AIAEpAwAgAUIQfFINACAAIAFCIEIAEBEaCyADIAIgBqxCA4Z8KQMYIgE3AwAgASABKQMIQgF8NwMIIAEpAwAiAiABQhB8UgRAIAFBATYCGCADKQMAIgEpAwAhAgsCQCACLQAIQcAAcUUNACACIAFCEHxSDQAgACABELMBC0EAC8EBAgN+An8gAEECEBchASAAQQFBBhA3IABBASABpyIEEMcBUARAIABBAkLNChAVGgsCfkKI+BIgACkDICIBKQMAQhB8IgIgAiAAKQMQIgNaGyICKAIIQT9x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Qn+Fg0L/////D4MgAiAEg0L/////D4MgAYaENwMAIAAgACkDEEIQfDcDEEEBC3MCA38CfkEBIQEgACkDECAAKQMgKQMAfUIQfUIEiKciAkEASgR+A0AgACABEBcgBIQhBCABIAJHIAFBAWohAQ0ACyAEQv////8PgwVCAAshBCAAKQMQIgVBEzYCCCAFIAQ3AwAgACAAKQMQQhB8NwMQQQELOAECfiAAQQEQF0J/hUL/////D4MhASAAKQMQIgJBEzYCCCACIAE3AwAgACAAKQMQQhB8NwMQQQELcAECfiAAQQEQFyECAn4gAEECEBciAUIAUwRAQgAgAUJhVA0BGiACQv////8Pg0IAIAF9iAwBCyACIAGGQv////8Pg0IAIAFCH1gbCyEBIAApAxAiAkETNgIIIAIgATcDACAAIAApAxBCEHw3AxBBAQtmAgR+AX8gAEECEBchASAAQQEQFyIDQv////8PgyECIAApAxAiBEETNgIIIAQgAadBH3EiBQR+IAMgAUIfg4ZC/////w+DIAJBICAFa62IhAUgAgs3AwAgACAAKQMQQhB8NwMQQQELkwEBBH4gAEEBEBchAyAAQQIQFyEBIABBA0IBEC0hAiABQgBTBEAgAEECQvYpEBUaCyACQgBXBEAgAEEDQt8pEBUaCyABIAJ8QiFZBEAgAEKzEEIAEBAaCyAAKQMQIgRBEzYCCCAEQv7///8fIAJCAX2GQn+FIANC/////w+DIAGIgzcDACAAIAApAxBCEHw3AxBBAQusAQEDfgJ+IABBARAXIgJCgICAgAiDQgBSIABBAhAXIgFCAFlxRQRAQgAgAX0hAyABQgBVBEBCACADQmFUDQIaIAJC/////w+DIAGIDAILIAIgA4ZC/////w+DQgAgA0IfWBsMAQtC/////w9CgICAgHAgAYcgAiABiIRC/////w+DIAFCH1YbCyEBIAApAxAiAkETNgIIIAIgATcDACAAIAApAxBCEHw3AxBBAQt7AgJ+A39BASEDIAApAxAgACkDICkDAH1CEH1CBIinIgRBAEwEfkL/////DwVCfyEBA0AgACADEBcgAYMhASADIARHIANBAWohAw0ACyABQv////8PgwshASAAKQMQIgJBEzYCCCACIAE3AwAgACAAKQMQQhB8NwMQQQELDAAQhgMQjAMQ9AIACwYAIAAkAAsQACMAIAB9QnCDIgAkACAACwMAAAv9AgIFfgJ/IwBCMH0iAyQAIAMgACkDOCIENwMQIAApAyghBSADIAI3AyggAyABNwMgIAMgBSAEfSIBNwMYIAEgAnwhBUECIQkCfgJAAkACQCAAKAJ4IANCEHwiAUICIANCCHwQASIIBH9CgLkUIAg2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMpAwgiBlENAiAGQgBTBEAgASEEDAQLIAEgBiABKQMIIgdWIgitQgSGfCIEIAYgB0IAIAgbfSIHIAQpAwB8NwMAIAFCGEIIIAgbfCIBIAEpAwAgB303AwAgBSAGfSEFIAAoAnggBCIBIAkgCGsiCawgA0IIfBABIggEf0KAuRQgCDYCAEF/BUEAC0UNAAsLIAVCf1INAQsgACAAKQNYIgE3AzggACABNwMoIAAgASAAKQNgfDcDICACDAELIABCADcDOCAAQgA3AyAgAEIANwMoIAAgACgCAEEgcjYCAEIAIAlBAkYNABogAiAEKQMIfQsgA0IwfCQAC0sBAX8gACgCeCMAQhB9IgAkACABIAJB/wFxIABCCHwQBSICBH9CgLkUIAI2AgBBfwVBAAshAiAAKQMIIQEgAEIQfCQAQn8gASACGwvqAQIEfgF/IwBCMH0iAyQAIAMgATcDECADIAIgACkDYCIEQgBSrX03AxggACkDWCEFIAMgBDcDKCADIAU3AyACQAJAIAAgACgCeCADQhB8QgIgA0IIfBAGIgcEf0KAuRQgBzYCAEF/BUEACwR/QSAFIAMpAwgiBEIAVQ0BQRBBICAEUBsLIAAoAgByNgIADAELIAMpAxgiBSAEIgZaDQAgACAAKQNYIgQ3AwggACAEIAYgBX18NwMQIAApA2BCAFIEQCAAIARCAXw3AwggASACfEIBfSAELQAAOgAACyACIQYLIANCMHwkACAGCx4BAX8gACgCeBAAIgEEf0KAuRQgATYCAEF/BUEACwsEAEIACwQAQQALC+KgFOIBAEKACAuBRi5wcmV0dHkAaW50ZXJ2YWwgaXMgZW1wdHkAaW5maW5pdHkAZ2V0cmVnaXN0cnkAbm90IGVub3VnaCBtZW1vcnkAbW9uZXRhcnkAYmluYXJ5AGF0dGVtcHQgdG8geWllbGQgYWNyb3NzIGEgQy1jYWxsIGJvdW5kYXJ5AC5zdHJpbmdpZnkALmNyeXB0by51dGlsLmFycmF5AHlkYXkAd2RheQBhQWJCY0NkRGVGZ0doSElqbU1ucHJSU3RUdVVWd1d4WHlZelolfHxFY0VDRXhFWEV5RVlPZE9lT0hPSU9tT01PU091T1VPVk93T1dPeQAlbS8lZC8leQAuY3J5cHRvLmNpcGhlci5ub3J4ADB4JWxseABwYXR0ZXJuIHRvbyBjb21wbGV4AC5jcnlwdG8udXRpbC5oZXgAX19uZXdpbmRleABfX2luZGV4AGludmFsaWQgdXB2YWx1ZSBpbmRleABtYXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABfX3BvdwBpbnRlZ2VyIG92ZXJmbG93AEMgc3RhY2sgb3ZlcmZsb3cAc3RyaW5nIGxlbmd0aCBvdmVyZmxvdwB0YWJsZSBvdmVyZmxvdwB1bnNpZ25lZCBvdmVyZmxvdwBnZXRlbnYAX19pZGl2AF9fZGl2AGZsblN0dQB0ZXh0AG5leHQAX0lPX291dHB1dABfSU9faW5wdXQAL2Rldi9zdGRvdXQAYnRlc3QAaXNkc3QAc3FydABzb3J0AGRhdGEgc3RyaW5nIHRvbyBzaG9ydABhc3NlcnQAaW5zZXJ0AHJlc3RhcnQAX19ibm90AGNvdW50AFNsbnQAcHJpbnQAY29kZXBvaW50AC5iaW50AGFic2VudAAuYXNzaWdubWVudABjb21tZW50AGNvbnN0YW50AC5kZWZhdWx0AF9fbHQAZXhpdAAuY3J5cHRvLmRpZ2VzdC5pbml0AC5jcnlwdG8uY2lwaGVyLmluaXQALmNyeXB0by5pbml0AC5jcnlwdG8udXRpbC5pbml0AC5jcnlwdG8ua2RmLmluaXQALmNyeXB0by5tYWMuaW5pdAAuY3J5cHRvLnV0aWwuYml0AGFyc2hpZnQAbHNoaWZ0AHJhd3NldABvZmZzZXQAcmF3Z2V0AGNvbGxlY3QAc2VsZWN0AGV4dHJhY3QAYnQAZmxvYXQAdmFyaWFibGUtbGVuZ3RoIGZvcm1hdABpbnZhbGlkIGZvcm1hdABuYW1ld2hhdAByZXBlYXQAX19jb25jYXQAc2l6ZV90AHN0YXR1cwAuY3J5cHRvLmNpcGhlci5tb3J1cwB0b28gbWFueSBhcmd1bWVudHMAd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cwBjb25zdGFudHMAdG9vIG1hbnkgcmVzdWx0cwB0cnlpbmcgdG8gYWNjZXNzIG5vbi1leGlzdGVudCBiaXRzAC5wcm9jZXNzAF9faXBhaXJzAF9fcGFpcnMAZnVuY3Rpb24gb3IgZXhwcmVzc2lvbiBuZWVkcyB0b28gbWFueSByZWdpc3RlcnMALmhhbmRsZXJzAHNlYXJjaGVycwBudXBzAGxhYmVscy9nb3RvcwBzdHJpbmcgY29udGFpbnMgemVyb3MAYWNvcwB0b28gbWFueSBuZXN0ZWQgZnVuY3Rpb25zAG5wYXJhbXMALnV0aWxzAC5oYW5kbGVycy11dGlscwBDIGxldmVscwB0b28gbWFueSB1cHZhbHVlcwBhdHRlbXB0IHRvIGNvbXBhcmUgdHdvICVzIHZhbHVlcwB0b28gbWFueSBjYXB0dXJlcwBjb3JlIGFuZCBsaWJyYXJ5IGhhdmUgaW5jb21wYXRpYmxlIG51bWVyaWMgdHlwZXMAYWN0aXZlbGluZXMAY2h1bmsgaGFzIHRvbyBtYW55IGxpbmVzAGxvY2FsIHZhcmlhYmxlcwBvcGNvZGVzAC5jcnlwdG8uY2lwaGVyLmFlcwBwb3NpdGlvbiBvdXQgb2YgYm91bmRzAGFicwAlcyVzAGF0dGVtcHQgdG8gJXMgYSAlcyB2YWx1ZSVzAGx1YW9wZW5fJXMAQCVzAD4lcwBtb2R1bGUgJyVzJyBub3QgZm91bmQ6JXMAJXMgZXhwZWN0ZWQsIGdvdCAlcwAlcyBuZWFyICVzAHRvbyBtYW55ICVzIChsaW1pdCBpcyAlZCkgaW4gJXMAYXR0ZW1wdCB0byBjb21wYXJlICVzIHdpdGggJXMAY2Fubm90ICVzICVzOiAlcwAlczolZDogJXMAZXJyb3IgbG9hZGluZyBtb2R1bGUgJyVzJyBmcm9tIGZpbGUgJyVzJzoKCSVzAGhvdXIAY3VyAC5jcnlwdG8uY2lwaGVyLm1vZGUuY3RyAC9kZXYvc3RkZXJyAF9fYnhvcgBmb3IgaXRlcmF0b3IAc3ludGF4IGVycm9yAGZsb29yAGZvcgBfX2JvcgBfX3NocgBsb3dlcgBpbnZhbGlkIGxvbmcgc3RyaW5nIGRlbGltaXRlcgB1cHBlcgBtYXhpbnRlZ2VyAHRvaW50ZWdlcgBtaW5pbnRlZ2VyAG9iamVjdCBsZW5ndGggaXMgbm90IGFuIGludGVnZXIAZmllbGQgJyVzJyBpcyBub3QgYW4gaW50ZWdlcgBsdWFfSW50ZWdlcgAlZC1ieXRlIGludGVnZXIgZG9lcyBub3QgZml0IGludG8gTHVhIEludGVnZXIAdG9udW1iZXIAbWFsZm9ybWVkIG51bWJlcgAnZm9yJyBsaW1pdCBtdXN0IGJlIGEgbnVtYmVyACdmb3InIHN0ZXAgbXVzdCBiZSBhIG51bWJlcgAnZm9yJyBpbml0aWFsIHZhbHVlIG11c3QgYmUgYSBudW1iZXIAbHVhX051bWJlcgBjaGFyAHllYXIAX19lcQBmcmV4cABsZGV4cABzdG9wACdfX25ld2luZGV4JyBjaGFpbiB0b28gbG9uZzsgcG9zc2libGUgbG9vcAAnX19pbmRleCcgY2hhaW4gdG9vIGxvbmc7IHBvc3NpYmxlIGxvb3AAPCVzPiBhdCBsaW5lICVkIG5vdCBpbnNpZGUgYSBsb29wAC5kdW1wAHN0ZXAAcmVwAHdyYXAAUHAAJXM6ICVwAHByb3RvAGdvdG8AL3Vzci9sb2NhbC9saWIvbHVhLzUuMy8/LnNvOy91c3IvbG9jYWwvbGliL2x1YS81LjMvbG9hZGFsbC5zbzsuLz8uc28ALmNyeXB0by5wYWRkaW5nLnplcm8AYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwBubwBpbwBnZXRpbmZvAGRvAC5hbwByZXR1cm4AY2hhcnBhdHRlcm4AbWlzc2luZyAnWycgYWZ0ZXIgJyUlZicgaW4gcGF0dGVybgBqc29uAGludmFsaWQgb3B0aW9uAEluc3RydWN0aW9uAG1haW4gZnVuY3Rpb24AdW5hYmxlIHRvIGR1bXAgZ2l2ZW4gZnVuY3Rpb24AY2Fubm90IHVzZSAnLi4uJyBvdXRzaWRlIGEgdmFyYXJnIGZ1bmN0aW9uAGZhaWxlZCB0byBjYWxsIGhhbmRsZSBmdW5jdGlvbgBudW1iZXIlcyBoYXMgbm8gaW50ZWdlciByZXByZXNlbnRhdGlvbgBudW1iZXIgaGFzIG5vIGludGVnZXIgcmVwcmVzZW50YXRpb24AdGltZSByZXN1bHQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIHRoaXMgaW5zdGFsbGF0aW9uAGR5bmFtaWMgbGlicmFyaWVzIG5vdCBlbmFibGVkOyBjaGVjayB5b3VyIEx1YSBpbnN0YWxsYXRpb24Abm90IGVub3VnaCBtZW1vcnkgZm9yIGJ1ZmZlciBhbGxvY2F0aW9uAHBlcmZvcm0gYml0d2lzZSBvcGVyYXRpb24gb24AcGVyZm9ybSBhcml0aG1ldGljIG9uAGFzaW4AdXB2YWx1ZWpvaW4AbWluAD1zdGRpbgAvZGV2L3N0ZGluAG1haW4AZmxvYXQgZm9ybWF0IG1pc21hdGNoIGluAGVuZGlhbm5lc3MgbWlzbWF0Y2ggaW4AdmVyc2lvbiBtaXNtYXRjaCBpbgAlcyBzaXplIG1pc21hdGNoIGluAHBvcGVuAHJlb3BlbgByYXdsZW4AX19sZW4AdGhlbgBhdGFuAG5hbgBib29sZWFuAGZhaWxlZCB0byBib290IGx1YSBydW50aW1lXG4AdmFsdWUgaGFzIG5vIGxpdGVyYWwgZm9ybQByYW5kb20AX191bm0ALmNyeXB0by51dGlsLnN0cmVhbQBzZXRzdGVwbXVsAF9fbXVsAHVuZXhwZWN0ZWQgc3ltYm9sAGZ1bGwAeHBjYWxsAGlzdGFpbGNhbGwAX19jYWxsAHRhaWwgY2FsbAB1bnRpbAB0YWJsZSBpbmRleCBpcyBuaWwAY2VpbABfX3NobAAuZXZhbAByYXdlcXVhbABub3JtYWwAc2V0bG9jYWwAZ2V0bG9jYWwAZ2xvYmFsAFNsAHNldGhvb2sAZ2V0aG9vawBleHRlcm5hbCBob29rAG1haW4gY2h1bmsAJXM6ICVzIHByZWNvbXBpbGVkIGNodW5rAHNlZWsAY2xvY2sAdG9vIG1hbnkgcmVzdWx0cyB0byB1bnBhY2sAdHJhY2ViYWNrAGJyZWFrAHBpAG1vbnRoAHNlYXJjaHBhdGgAY3BhdGgAbWF0aABmbHVzaABjb3NoAHNpbmgAdGFuaABnbWF0Y2gAZGVidWcAaXN2YXJhcmcAbG9nAGxleGljYWwgZWxlbWVudCB0b28gbG9uZwBjb250cm9sIHN0cnVjdHVyZSB0b28gbG9uZwBzdHJpbmcgc2xpY2UgdG9vIGxvbmcAaW52YWxpZCBvcmRlciBmdW5jdGlvbiBmb3Igc29ydGluZwBfX3Rvc3RyaW5nAGJpbmFyeSBzdHJpbmcAaW52YWxpZCB1c2Ugb2YgJyVjJyBpbiByZXBsYWNlbWVudCBzdHJpbmcAZmluYWwgcG9zaXRpb24gb3V0IG9mIHN0cmluZwBpbml0aWFsIHBvc2l0aW9uIG91dCBvZiBzdHJpbmcAdW5maW5pc2hlZCBzdHJpbmcAcmVhZGVyIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgc3RyaW5nACdfX3Rvc3RyaW5nJyBtdXN0IHJldHVybiBhIHN0cmluZwAncGFja2FnZS4lcycgbXVzdCBiZSBhIHN0cmluZwBpc3J1bm5pbmcAZXJyb3IgaW4gZXJyb3IgaGFuZGxpbmcAY29uZmlnAGFycmF5IHRvbyBiaWcAbWVtb3J5IGFsbG9jYXRpb24gZXJyb3I6IGJsb2NrIHRvbyBiaWcAZGVnACUuMTRnAHNldHZidWYAZ2V0IGxlbmd0aCBvZgBpbmYAc2VsZgBlbHNlaWYAVFppZgBtb2RmAHZlcnNpb24gbWlzbWF0Y2g6IGFwcC4gbmVlZHMgJWYsIEx1YSBjb3JlIHByb3ZpZGVzICVmAHBhY2tzaXplAHN0cmluZyBsZW5ndGggZG9lcyBub3QgZml0IGluIGdpdmVuIHNpemUAc3RyaW5nIGxvbmdlciB0aGFuIGdpdmVuIHNpemUAcmVtb3ZlAHRvbyBtYW55IGVsZW1lbnRzIHRvIG1vdmUAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBmaWVsZCBjYW5ub3QgYmUgbmVnYXRpdmUAdHJ1ZQBzZXR1c2VydmFsdWUAZ2V0dXNlcnZhbHVlAHNldHVwdmFsdWUAZ2V0dXB2YWx1ZQBubyB2YWx1ZQAuY3J5cHRvLnV0aWwucXVldWUAaW5pdGlhbCBwb3NpdGlvbiBpcyBhIGNvbnRpbnVhdGlvbiBieXRlAGV4ZWN1dGUAd3JpdGUAcnJvdGF0ZQBscm90YXRlAGNvbmNhdGVuYXRlAGNvbGxhdGUAY3JlYXRlAGRhdGUAc2V0cGF1c2UAcmV2ZXJzZQBjbG9zZQBlbHNlAGZhbHNlAGludmFsaWQgcGF0dGVybiBjYXB0dXJlAHVuZmluaXNoZWQgY2FwdHVyZQByZXF1aXJlAGN0eXBlAGNhbm5vdCByZXN1bWUgbm9uLXN1c3BlbmRlZCBjb3JvdXRpbmUAY2Fubm90IHJlc3VtZSBkZWFkIGNvcm91dGluZQBhdHRlbXB0IHRvIHlpZWxkIGZyb20gb3V0c2lkZSBhIGNvcm91dGluZQBjdXJyZW50bGluZQB0b28gbWFueSBhcmd1bWVudHMgdG8gcmVzdW1lAHRvbyBtYW55IHJlc3VsdHMgdG8gcmVzdW1lAGZ1bmN0aW9uIGhhbmRsZSBpcyBub3QgZGVmaW5lZCBnbG9iYWx5IGluIGx1YSBydW50aW1lAC9ldGMvbG9jYWx0aW1lAGRpZmZ0aW1lAHRtcG5hbWUAcmVuYW1lAHVuYWJsZSB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBmaWxlbmFtZQBfX25hbWUAd2hpbGUAdG1wZmlsZQBkb2ZpbGUAbG9hZGZpbGUAY2Fubm90IGNsb3NlIHN0YW5kYXJkIGZpbGUAYXR0ZW1wdCB0byB1c2UgYSBjbG9zZWQgZmlsZQBoYW5kbGUAc2V0bWV0YXRhYmxlAGdldG1ldGF0YWJsZQBfX21ldGF0YWJsZQBjYW5ub3QgY2hhbmdlIGEgcHJvdGVjdGVkIG1ldGF0YWJsZQBmaWVsZCAnJXMnIG1pc3NpbmcgaW4gZGF0ZSB0YWJsZQAncGFja2FnZS5zZWFyY2hlcnMnIG11c3QgYmUgYSB0YWJsZQBpc3lpZWxkYWJsZQBzZXRsb2NhbGUAX19sZQBodWdlAGZvcm1hdCByZXN1bHQgdG9vIGxhcmdlAGJ1ZmZlciB0b28gbGFyZ2UAaW50ZXJ2YWwgdG9vIGxhcmdlAHJlc3VsdGluZyBzdHJpbmcgdG9vIGxhcmdlAFVURi04IHZhbHVlIHRvbyBsYXJnZQBkZWNpbWFsIGVzY2FwZSB0b28gbGFyZ2UAaW5kZXggb3V0IG9mIHJhbmdlAHBvc2l0aW9uIG91dCBvZiByYW5nZQBsZXZlbCBvdXQgb2YgcmFuZ2UAdmFsdWUgb3V0IG9mIHJhbmdlAGJhc2Ugb3V0IG9mIHJhbmdlAG5vIG1lc3NhZ2UAcGFja2FnZQBjb2xsZWN0Z2FyYmFnZQBfX21vZGUAaW52YWxpZCBtb2RlAGludmFsaWQgVVRGLTggY29kZQBzb3VyY2UAaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UALmNoYW5jZQByZXBsYWNlAEVlAGZtb2QAX19tb2QAbWV0YW1ldGhvZABkZXN0aW5hdGlvbiB3cmFwIGFyb3VuZABmaWVsZCAnJXMnIGlzIG91dC1vZi1ib3VuZABmaW5kAGVuZABfX2JhbmQAJTAqbGxkACUqbGxkACslbGxkAHlpZWxkAGZpZWxkACUrLjRsZAB1cHZhbHVlaWQAJ3BvcGVuJyBub3Qgc3VwcG9ydGVkAGNvcnJ1cHRlZABtdWx0aXBsZSBMdWEgVk1zIGRldGVjdGVkAGhleGFkZWNpbWFsIGRpZ2l0IGV4cGVjdGVkAGZ1bmN0aW9uIGFyZ3VtZW50cyBleHBlY3RlZAAlcyBleHBlY3RlZABMdWEgZnVuY3Rpb24gZXhwZWN0ZWQAdGFibGUgb3Igc3RyaW5nIGV4cGVjdGVkAHZhbHVlIGV4cGVjdGVkAHN0cmluZy9mdW5jdGlvbi90YWJsZSBleHBlY3RlZABuaWwgb3IgdGFibGUgZXhwZWN0ZWQAdGhyZWFkIGV4cGVjdGVkACc9JyBvciAnaW4nIGV4cGVjdGVkADxuYW1lPiBvciAnLi4uJyBleHBlY3RlZAB0cnVuY2F0ZWQAZmlsZSBpcyBhbHJlYWR5IGNsb3NlZABzdGFuZGFyZCAlcyBmaWxlIGlzIGNsb3NlZABsYXN0bGluZWRlZmluZWQAcmFuZG9tc2VlZABzdXNwZW5kZWQAbG9hZGVkAF9fYWRkAHJhZABwcmVsb2FkAHRocmVhZABkZWFkAFwlMDNkAFwlZAAlWS0lbS0lZABpbnZhbGlkIGNhcHR1cmUgaW5kZXggJSUlZABmdW5jdGlvbiBhdCBsaW5lICVkAG5vIHZpc2libGUgbGFiZWwgJyVzJyBmb3IgPGdvdG8+IGF0IGxpbmUgJWQAbGFiZWwgJyVzJyBhbHJlYWR5IGRlZmluZWQgb24gbGluZSAlZABzaG9ydF9zcmMAZnVuYwBudW1lcmljAF9fZ2MAc2VjAC5jcnlwdG8uY2lwaGVyLm1vZGUuY2JjAC5jcnlwdG8uY2lwaGVyLmlzc2FjAC5jcnlwdG8ubWFjLmhtYWMAJWMAZ3N1YgBfX3N1YgByYgBsb2FkbGliAC5jcnlwdG8uY2lwaGVyLm1vZGUub2ZiAC5jcnlwdG8uY2lwaGVyLm1vZGUuY2ZiAC5jcnlwdG8uY2lwaGVyLm1vZGUuZWNiAC5jcnlwdG8uZGlnZXN0LmJsYWtlMmIAcndhAC91c3IvbG9jYWwvc2hhcmUvbHVhLzUuMy8/Lmx1YTsvdXNyL2xvY2FsL3NoYXJlL2x1YS81LjMvPy9pbml0Lmx1YTsvdXNyL2xvY2FsL2xpYi9sdWEvNS4zLz8ubHVhOy91c3IvbG9jYWwvbGliL2x1YS81LjMvPy9pbml0Lmx1YTsuLz8ubHVhOy4vPy9pbml0Lmx1YQAbTHVhAGxpZ2h0IHVzZXJkYXRhACVhAG5vdCBhAF9fbHVhX3dlYmFzc2VtYmx5X18AaW50ZWdyYWwgc2l6ZSAoJWQpIG91dCBvZiBsaW1pdHMgWzEsJWRdAD1bQ10ACglubyBmaWVsZCBwYWNrYWdlLnByZWxvYWRbJyVzJ10AIl0AVFoAeFgATFVBQk9YAFBPU0lYAF9FTlYATFVBX05PRU5WACVVAEdNVAAlSDolTTolUwBwUAAueFhuTgB0YWJsZSBpbmRleCBpcyBOYU4AX1ZFUlNJT04ATkFOACVIOiVNAExDX0FMTABBU0NJSQAlSQBMVUFfUEFUSABMVUFfQ1BBVEgAX0cATEFORwBJTkYAZUUAX0xPQURFRABfUFJFTE9BRABVVEMAPT8APGludGVnZXI+ADxudW1iZXI+ADxzdHJpbmc+ADxlb2Y+ADxuYW1lPgA8XCVkPgBmdW5jdGlvbiA8JXM6JWQ+AD4+AH49AD49AD09ADw9ADw8ADs7ADsBOwAKCSVzOgBzdGFjayB0cmFjZWJhY2s6ACVkOgA6OgAtMDEyMzQ1Njc4OQB1dGY4AC5jcnlwdG8uY2lwaGVyLmFlczEyOABDLlVURi04AC5jcnlwdG8uY2lwaGVyLmFlczI1NgAuY3J5cHRvLmRpZ2VzdC5zaGEyXzI1NgAuY3J5cHRvLmRpZ2VzdC5tZDUALmNyeXB0by5kaWdlc3QubWQ0AC5iYXNlNjQALmNyeXB0by5kaWdlc3Quc2hhMwBfNV8zAEx1YSA1LjMAYXRhbjIALmNyeXB0by5rZGYucGJrZGYyAC5jcnlwdG8uZGlnZXN0Lm1kMgAuY3J5cHRvLmNpcGhlci5hZXMxOTIAYml0MzIALmNyeXB0by5kaWdlc3Quc2hhMl81MTIAZm9ybWF0IGFza3MgZm9yIGFsaWdubWVudCBub3QgcG93ZXIgb2YgMgAuY3J5cHRvLmRpZ2VzdC5zaGExAGxvZzEwAC8vAAoJLi4uAF4kKis/LihbJS0AdysALSsARklMRSoAKCp0ZW1wb3JhcnkpAChmb3IgaW5kZXgpAChmb3IgbGltaXQpAGludmFsaWQgZm9ybWF0IChyZXBlYXRlZCBmbGFncykAc3RhY2sgb3ZlcmZsb3cgKCVzKQBjYWxsaW5nICclcycgb24gYmFkIHNlbGYgKCVzKQBlcnJvciBpbiBfX2djIG1ldGFtZXRob2QgKCVzKQBiYWQgYXJndW1lbnQgIyVkICglcykAYmFkIGFyZ3VtZW50ICMlZCB0byAnJXMnICglcykAY2Fubm90IG9wZW4gZmlsZSAnJXMnICglcykAaW52YWxpZCByZXBsYWNlbWVudCB2YWx1ZSAoYSAlcykAKGZvciBnZW5lcmF0b3IpAChmb3Igc3RlcCkAZmlsZSAoJXApAChmb3IgY29udHJvbCkAKG51bGwpACgqdmFyYXJnKQBpbnZhbGlkIGZvcm1hdCAod2lkdGggb3IgcHJlY2lzaW9uIHRvbyBsb25nKQAoZXJyb3Igb2JqZWN0IGlzIGEgJXMgdmFsdWUpAChmb3Igc3RhdGUpACgqbm8gbmFtZSkAPShkZWJ1ZyBjb21tYW5kKQBmaWxlIChjbG9zZWQpAD0obG9hZCkAdG9vIG1hbnkgJXMgKGxpbWl0IGlzICVkKQAlcyBleHBlY3RlZCAodG8gY2xvc2UgJXMgYXQgbGluZSAlZCkAdW5maW5pc2hlZCBsb25nICVzIChzdGFydGluZyBhdCBsaW5lICVkKQAKCSguLi50YWlsIGNhbGxzLi4uKQBhdHRlbXB0IHRvIGxvYWQgYSAlcyBjaHVuayAobW9kZSBpcyAnJXMnKQAgKCVzICclcycpAG1hbGZvcm1lZCBwYXR0ZXJuIChtaXNzaW5nIGFyZ3VtZW50cyB0byAnJSViJykAbWFsZm9ybWVkIHBhdHRlcm4gKG1pc3NpbmcgJ10nKQBtYWxmb3JtZWQgcGF0dGVybiAoZW5kcyB3aXRoICclJScpAG1pc3NpbmcgJ30nAG1pc3NpbmcgJ3snAGludmFsaWQga2V5IHRvICduZXh0JwB3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvICdpbnNlcnQnACd0b3N0cmluZycgbXVzdCByZXR1cm4gYSBzdHJpbmcgdG8gJ3ByaW50JwBpbnZhbGlkIG9wdGlvbiAnJSUlYycgdG8gJ2Zvcm1hdCcAaW52YWxpZCB2YWx1ZSAoJXMpIGF0IGluZGV4ICVkIGluIHRhYmxlIGZvciAnY29uY2F0JwAlcyAnJXMnAGludmFsaWQgb3B0aW9uICclcycAZnVuY3Rpb24gJyVzJwA8Z290byAlcz4gYXQgbGluZSAlZCBqdW1wcyBpbnRvIHRoZSBzY29wZSBvZiBsb2NhbCAnJXMnAAoJbm8gZmlsZSAnJXMnAAoJbm8gbW9kdWxlICclcycgaW4gZmlsZSAnJXMnAGludmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIgJyUlJXMnAGludmFsaWQgb3B0aW9uICclJSVjJyB0byAnbHVhX3B1c2hmc3RyaW5nJwBtaXNzaW5nIHNpemUgZm9yIGZvcm1hdCBvcHRpb24gJ2MnAGludmFsaWQgZm9ybWF0IG9wdGlvbiAnJWMnAGludmFsaWQgbmV4dCBvcHRpb24gZm9yIG9wdGlvbiAnWCcAYXR0ZW1wdCB0byBwZXJmb3JtICduJSUwJwAlAFtzdHJpbmcgIgBpbnRlcnJ1cHRlZCEAYXNzZXJ0aW9uIGZhaWxlZCEAIGluIABsdWFfZGVidWc+IAAlczolZDogACAMCg0JCwBjb250CgBlcnJvcjogJXMKAC8KOwo/CiEKLQoAUEFOSUM6IHVucHJvdGVjdGVkIGVycm9yIGluIGNhbGwgdG8gTHVhIEFQSSAoJXMpCgBlcnJvciBvbiBsdWFMX2xvYWRidWZmZXIoKQoAGZMNChoKAAkAAQBCkM4AC7cPLS0gVGhpcyBzY3JpcHQgaXMgYnJpZGdlIHByb2dyYW0gZm9yIFdBU00KbG9jYWwgYXJncyA9IHsuLi59CmxvY2FsIGx1YV9idW5kbGUgPSBhcmdzWzFdCgptYXRoLnJhbmRvbSA9IGZ1bmN0aW9uKCkKICAgIHJldHVybiAwLjUgLS0gUmVwbGFjZSB3aXRoIGFueSB2YWx1ZSB5b3Ugd2FudAplbmQKLS0gSW5saW5lIGxvYWRlcgotLSBJbiBXQVNNIEx1YSwgYWxsIEx1YSBzY3JpcHRlZCB3aWxsIGJlIGNvbXBpbGVkIGFzIGJ5dGUgc3RyaW5nIGFuZCBzZXQgdG8gbHVhX2J1bmRsZSB0YWJsZS4KLS0gVGhlbiwgdGhpcyBsb2FkZXIgd2lsbCByZXNvbHZlIGJ5IG1vZHVsZSBuYW1lIGFuZCBldmFsdWF0ZSBpdC4KbG9jYWwgZnVuY3Rpb24gX2lubGluZV9sb2FkZXIobmFtZSkKICAgIGxvY2FsIG1vZCA9IGx1YV9idW5kbGVbbmFtZV0gb3IgbHVhX2J1bmRsZVtuYW1lIC4uICcuaW5pdCddCiAgICBpZiBub3QgbW9kIHRoZW4gcmV0dXJuICgibW9kdWxlICVzIG5vdCBmb3VuZCIpOmZvcm1hdChuYW1lKSBlbmQKICAgIGlmIHR5cGUobW9kKSA9PSAnc3RyaW5nJyB0aGVuCiAgICAgICAgbG9jYWwgY2h1bmssIGVyciA9IGxvYWQobW9kLCBuYW1lKQogICAgICAgIGlmIGNodW5rIHRoZW4KICAgICAgICAgICAgcmV0dXJuIGNodW5rCiAgICAgICAgZWxzZQogICAgICAgICAgICBlcnJvcigoImVycm9yIGxvYWRpbmcgbW9kdWxlICVzOiAlcyIpOmZvcm1hdChuYW1lLCBlcnIpLCAwKQogICAgICAgIGVuZAogICAgZWxzZWlmIHR5cGUobW9kKSA9PSAnZnVuY3Rpb24nIHRoZW4KICAgICAgICByZXR1cm4gbW9kCiAgICBlbmQKZW5kCgp0YWJsZS5pbnNlcnQocGFja2FnZS5sb2FkZXJzIG9yIHBhY2thZ2Uuc2VhcmNoZXJzLCAyLCBfaW5saW5lX2xvYWRlcikKCi0tIFRoZSBfX2x1YV93ZWJhc3NlbWJseV9fIG1vZHVsZSB3aWxsIGJlIGluamVjdCB2aWEgQyBwcm9ncmFtLgpsb2NhbCBtYWluID0gX2lubGluZV9sb2FkZXIoJ19fbHVhX3dlYmFzc2VtYmx5X18nKQptYWluKCkKCi0tIEV4cG9ydCBmdW5jdGlvbiBjYWxsIHdyYXBwZXIKLS0gZnVuY3Rpb24gbHVhX2NhbGwoZnVuY3Rpb25fbmFtZSwgLi4uKQotLSAgIGZvciBrLCB2IGluIHBhaXJzKGV4cG9ydHMpIGRvCi0tICAgICBwcmludChrKQotLSAgIGVuZAotLSAgIHByaW50KGV4cG9ydHNbJ2hlbGxvX3dvcmxkJ10pCi0tICAgcHJpbnQoI2Z1bmN0aW9uX25hbWUpCi0tICAgcHJpbnQoZnVuY3Rpb25fbmFtZSA9PSAnaGVsbG9fd29ybGQnKQotLSAgIHByaW50KGZ1bmN0aW9uX25hbWUgPT0gJ2hlbGxvX3dvcmxkJykKLS0gICBwcmludCh0eXBlKGZ1bmN0aW9uX25hbWUpKQotLSAKLS0gICBsb2NhbCBtb2QgPSBleHBvcnRzW2Z1bmN0aW9uX25hbWVdCi0tICAgaWYgbm90IG1vZCB0aGVuCi0tICAgICBwcmludCgoIk1vZHVsZSAlcyBpc24ndCBleHBvcnRlZCIpOmZvcm1hdChmdW5jdGlvbl9uYW1lKSkKLS0gICAgIHJldHVybgotLSAgIGVsc2VpZiB0eXBlKG1vZCkgfj0gJ3RhYmxlJyB0aGVuCi0tICAgICBwcmludCgoIk1vZHVsZSAlcyBleHBvcnRlZCBidXQgbm90IGFuIHRhYmxlIik6Zm9ybWF0KGZ1bmN0aW9uX25hbWUpKQotLSAgICAgcmV0dXJuCi0tICAgZW5kCi0tIAotLSAgIGxvY2FsIGZuID0gbW9kLmZuCi0tICAgaWYgbm90IGZuIHRoZW4KLS0gICAgIHByaW50KCgiTW9kdWxlICVzLmZuIGlzIG5vdCBkZWZpbmVkIik6Zm9ybWF0KGZ1bmN0aW9uX25hbWUpKQotLSAgICAgcmV0dXJuCi0tICAgZWxzZWlmIHR5cGUoZm4pIH49ICdmdW5jdGlvbicgdGhlbgotLSAgICAgcHJpbnQoKCJNb2R1bGUgJXMuZm4gaXMgbm90IGEgZnVuY3Rpb24iKTpmb3JtYXQoZnVuY3Rpb25fbmFtZSkpCi0tICAgICByZXR1cm4KLS0gICBlbmQKLS0gICAtLSBDYWxsIGV4cG9ydGVkIGZ1bmN0aW9uCi0tICAgbG9jYWwgYXJndW1lbnRzID0ge3NlbGVjdCgxLCAuLi4pfQotLSAgIHJldHVybiBmbih0YWJsZS51bnBhY2soYXJndW1lbnRzKSkKLS0gZW5kCgBC0N0AC7IEbG9jYWwganNvbiA9IHJlcXVpcmUgImpzb24iCgpmdW5jdGlvbiBoYW5kbGUobXNnSlNPTiwgYW9KU09OKQogICAgLS0gYnkgcmVxdWlyaW5nICcucHJvY2VzcycgaGVyZSB3ZSBhcmUgYWJsZSB0byByZWxvYWQgdmlhIC51cGRhdGVzCiAgICBsb2NhbCBwcm9jZXNzID0gcmVxdWlyZSAiLnByb2Nlc3MiCiAgICAtLSBkZWNvZGUgaW5wdXRzCiAgICBsb2NhbCBtc2cgPSBqc29uLmRlY29kZShtc2dKU09OKQogICAgbG9jYWwgZW52ID0ganNvbi5kZWNvZGUoYW9KU09OKQoKICAgIC0tIGhhbmRsZSBwcm9jZXNzCiAgICBsb2NhbCBzdGF0dXMsIHJlc3BvbnNlID0gcGNhbGwoZnVuY3Rpb24oKQogICAgICAgIHJldHVybiAocHJvY2Vzcy5oYW5kbGUobXNnLCBlbnYpKQogICAgZW5kKQoKICAgIC0tIGVuY29kZSBvdXRwdXQKICAgIGxvY2FsIHJlc3BvbnNlSlNPTiA9IGpzb24uZW5jb2RlKHtvayA9IHN0YXR1cywgcmVzcG9uc2UgPSByZXNwb25zZX0pCiAgICAtLSBmcmVlIAogICAgcmVzcG9uc2UgPSBuaWwKICAgIGNvbGxlY3RnYXJiYWdlKCkKICAgIHJldHVybiByZXNwb25zZUpTT04KZW5kCgBCkOIAC8FLbG9jYWwgcHJldHR5ID0geyBfdmVyc2lvbiA9ICIwLjAuMSJ9CgoKCmZ1bmN0aW9uIHByZXR0eS50cHJpbnQgKHRibCwgaW5kZW50KSAKCiAgaWYgbm90IGluZGVudCB0aGVuIGluZGVudCA9IDAgZW5kCgogIGxvY2FsIG91dHB1dCA9ICIiCgogIGZvciBrLCB2IGluIHBhaXJzKHRibCkgZG8KCiAgICBsb2NhbCBmb3JtYXR0aW5nID0gc3RyaW5nLnJlcCgiICIsIGluZGVudCkgLi4gayAuLiAiOiAiCgogICAgaWYgdHlwZSh2KSA9PSAidGFibGUiIHRoZW4KCiAgICAgIG91dHB1dCA9IG91dHB1dCAuLiBmb3JtYXR0aW5nIC4uICJcbiIKCiAgICAgIG91dHB1dCA9IG91dHB1dCAuLiBwcmV0dHkudHByaW50KHYsIGluZGVudCsxKQoKICAgIGVsc2VpZiB0eXBlKHYpID09ICdib29sZWFuJyB0aGVuCgogICAgICBvdXRwdXQgPSBvdXRwdXQgLi4gZm9ybWF0dGluZyAuLiB0b3N0cmluZyh2KSAuLiAiXG4iCgogICAgZWxzZQoKICAgICAgb3V0cHV0ID0gb3V0cHV0IC4uIGZvcm1hdHRpbmcgLi4gdiAuLiAiXG4iCgogICAgZW5kCgogIGVuZAoKICByZXR1cm4gb3V0cHV0CgplbmQKCgoKcmV0dXJuIHByZXR0eQAAAAAAAAAALS0KCi0tIENvcHlyaWdodCAoQykgMjAxOCBNYXNhdG9zaGkgVGVydXlhCgotLQoKLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQoKLS0gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKCi0tIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKCi0tIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKCi0tIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwoKLS0gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCi0tCgotLSBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgoKLS0gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgotLQoKLS0gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKCi0tIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAoKLS0gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQoKLS0gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgoKLS0gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKCi0tIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KCi0tIFRIRSBTT0ZUV0FSRS4KCi0tCgotLSBkdW1wLmx1YQoKLS0gbHVhLWR1bXAKCi0tIENyZWF0ZWQgYnkgTWFzYXRvc2hpIFRlcnV5YSBvbiAxOC8wNC8yMi4KCi0tCgotLS0gZmlsZS1zY29wZSB2YXJpYWJsZXMKCmxvY2FsIHR5cGUgPSB0eXBlCgpsb2NhbCBmbG9vciA9IG1hdGguZmxvb3IKCmxvY2FsIHRvc3RyaW5nID0gdG9zdHJpbmcKCmxvY2FsIHRibHNvcnQgPSB0YWJsZS5zb3J0Cgpsb2NhbCB0Ymxjb25jYXQgPSB0YWJsZS5jb25jYXQKCmxvY2FsIHN0cm1hdGNoID0gc3RyaW5nLm1hdGNoCgpsb2NhbCBzdHJmb3JtYXQgPSBzdHJpbmcuZm9ybWF0CgotLS0gY29uc3RhbnRzCgpsb2NhbCBJTkZJTklURV9QT1MgPSBtYXRoLmh1Z2UKCmxvY2FsIExVQV9GSUVMRE5BTUVfUEFUID0gJ15bYS16QS1aX11bYS16QS1aMC05X10qJCcKCmxvY2FsIEZPUl9LRVkgPSAna2V5JwoKbG9jYWwgRk9SX1ZBTCA9ICd2YWwnCgpsb2NhbCBGT1JfQ0lSQ1VMQVIgPSAnY2lyY3VsYXInCgpsb2NhbCBSRVNFUlZFRF9XT1JEID0gewoKICAgIC0tIHByaW1pdGl2ZSBkYXRhCgogICAgWyduaWwnXSA9IHRydWUsCgogICAgWyd0cnVlJ10gPSB0cnVlLAoKICAgIFsnZmFsc2UnXSA9IHRydWUsCgogICAgLS0gZGVjbGFyYXRvbgoKICAgIFsnbG9jYWwnXSA9IHRydWUsCgogICAgWydmdW5jdGlvbiddID0gdHJ1ZSwKCiAgICAtLSBib29sZWFuIGxvZ2ljCgogICAgWydhbmQnXSA9IHRydWUsCgogICAgWydvciddID0gdHJ1ZSwKCiAgICBbJ25vdCddID0gdHJ1ZSwKCiAgICAtLSBjb25kaXRpb25hbCBzdGF0ZW1lbnQKCiAgICBbJ2lmJ10gPSB0cnVlLAoKICAgIFsnZWxzZWlmJ10gPSB0cnVlLAoKICAgIFsnZWxzZSddID0gdHJ1ZSwKCiAgICAtLSBpdGVyYXRpb24gc3RhdGVtZW50CgogICAgWydmb3InXSA9IHRydWUsCgogICAgWydpbiddID0gdHJ1ZSwKCiAgICBbJ3doaWxlJ10gPSB0cnVlLAoKICAgIFsndW50aWwnXSA9IHRydWUsCgogICAgWydyZXBlYXQnXSA9IHRydWUsCgogICAgLS0ganVtcCBzdGF0ZW1lbnQKCiAgICBbJ2JyZWFrJ10gPSB0cnVlLAoKICAgIFsnZ290byddID0gdHJ1ZSwKCiAgICBbJ3JldHVybiddID0gdHJ1ZSwKCiAgICAtLSBibG9jayBzY29wZSBzdGF0ZW1lbnQKCiAgICBbJ3RoZW4nXSA9IHRydWUsCgogICAgWydkbyddID0gdHJ1ZSwKCiAgICBbJ2VuZCddID0gdHJ1ZSwKCn0KCmxvY2FsIERFRkFVTFRfSU5ERU5UID0gNAoKCgotLS0gZmlsdGVyIGZ1bmN0aW9uIGZvciBkdW1wCgotLS0gQHBhcmFtIHZhbCBhbnkKCi0tLSBAcGFyYW0gZGVwdGggaW50ZWdlcgoKLS0tIEBwYXJhbSB2dHlwZSBzdHJpbmcKCi0tLSBAcGFyYW0gdXNlIHN0cmluZwoKLS0tIEBwYXJhbSBrZXkgYW55CgotLS0gQHBhcmFtIHVkYXRhIGFueQoKLS0tIEByZXR1cm4gYW55IHZhbAoKLS0tIEByZXR1cm4gYm9vbGVhbiBub2R1bXAKCmxvY2FsIGZ1bmN0aW9uIERFRkFVTFRfRklMVEVSKHZhbCkKCiAgICByZXR1cm4gdmFsCgplbmQKCgoKLS0tIHNvcnRfaW5kZXgKCi0tLSBAcGFyYW0gYSB0YWJsZQoKLS0tIEBwYXJhbSBiIHRhYmxlCgpsb2NhbCBmdW5jdGlvbiBzb3J0X2luZGV4KGEsIGIpCgogICAgaWYgYS50eXAgPT0gYi50eXAgdGhlbgoKICAgICAgICBpZiBhLnR5cCA9PSAnYm9vbGVhbicgdGhlbgoKICAgICAgICAgICAgcmV0dXJuIGIua2V5CgogICAgICAgIGVuZAoKCgogICAgICAgIHJldHVybiBhLmtleSA8IGIua2V5CgogICAgZW5kCgoKCiAgICByZXR1cm4gYS50eXAgPT0gJ251bWJlcicKCmVuZAoKCgotLS0gZHVtcHRibAoKLS0tIEBwYXJhbSB0YmwgdGFibGUKCi0tLSBAcGFyYW0gZGVwdGggaW50ZWdlcgoKLS0tIEBwYXJhbSBpbmRlbnQgc3RyaW5nCgotLS0gQHBhcmFtIG5lc3RJbmRlbnQgc3RyaW5nCgotLS0gQHBhcmFtIGN0eCB0YWJsZQoKLS0tIEByZXR1cm4gc3RyaW5nCgpsb2NhbCBmdW5jdGlvbiBkdW1wdGJsKHRibCwgZGVwdGgsIGluZGVudCwgbmVzdEluZGVudCwgY3R4KQoKICAgIGxvY2FsIHJlZiA9IHRvc3RyaW5nKHRibCkKCgoKICAgIC0tIGNpcmN1bGFyIHJlZmVyZW5jZQoKICAgIGlmIGN0eC5jaXJjdWxhcltyZWZdIHRoZW4KCiAgICAgICAgbG9jYWwgdmFsLCBub2R1bXAgPSBjdHguZmlsdGVyKHRibCwgZGVwdGgsIHR5cGUodGJsKSwgRk9SX0NJUkNVTEFSLCB0YmwsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudWRhdGEpCgoKCiAgICAgICAgaWYgdmFsIH49IG5pbCBhbmQgdmFsIH49IHRibCB0aGVuCgogICAgICAgICAgICBsb2NhbCB0ID0gdHlwZSh2YWwpCgoKCiAgICAgICAgICAgIGlmIHQgPT0gJ3RhYmxlJyB0aGVuCgogICAgICAgICAgICAgICAgLS0gZHVtcCB0YWJsZSB2YWx1ZQoKICAgICAgICAgICAgICAgIGlmIG5vdCBub2R1bXAgdGhlbgoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZHVtcHRibCh2YWwsIGRlcHRoICsgMSwgaW5kZW50LCBuZXN0SW5kZW50LCBjdHgpCgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAgcmV0dXJuIHRvc3RyaW5nKHZhbCkKCiAgICAgICAgICAgIGVsc2VpZiB0ID09ICdzdHJpbmcnIHRoZW4KCiAgICAgICAgICAgICAgICByZXR1cm4gc3RyZm9ybWF0KCclcScsIHZhbCkKCiAgICAgICAgICAgIGVsc2VpZiB0ID09ICdudW1iZXInIG9yIHQgPT0gJ2Jvb2xlYW4nIHRoZW4KCiAgICAgICAgICAgICAgICByZXR1cm4gdG9zdHJpbmcodmFsKQoKICAgICAgICAgICAgZW5kCgoKCiAgICAgICAgICAgIHJldHVybiBzdHJmb3JtYXQoJyVxJywgdG9zdHJpbmcodmFsKSkKCiAgICAgICAgZW5kCgoKCiAgICAgICAgcmV0dXJuICciPENpcmN1bGFyICcgLi4gcmVmIC4uICc+IicKCiAgICBlbmQKCgoKICAgIGxvY2FsIHJlcyA9IHt9CgogICAgbG9jYWwgYXJyID0ge30KCiAgICBsb2NhbCBuYXJyID0gMAoKICAgIGxvY2FsIGZpZWxkSW5kZW50ID0gaW5kZW50IC4uIG5lc3RJbmRlbnQKCgoKICAgIC0tIHNhdmUgcmVmZXJlbmNlCgogICAgY3R4LmNpcmN1bGFyW3JlZl0gPSB0cnVlCgoKCiAgICBmb3IgaywgdiBpbiBwYWlycyh0YmwpIGRvCgogICAgICAgIC0tIGNoZWNrIGtleQoKICAgICAgICBsb2NhbCBrZXksIG5va2R1bXAgPSBjdHguZmlsdGVyKGssIGRlcHRoLCB0eXBlKGspLCBGT1JfS0VZLCBuaWwsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnVkYXRhKQoKCgogICAgICAgIGlmIGtleSB+PSBuaWwgdGhlbgoKICAgICAgICAgICAgLS0gY2hlY2sgdmFsCgogICAgICAgICAgICBsb2NhbCB2YWwsIG5vdmR1bXAgPSBjdHguZmlsdGVyKHYsIGRlcHRoLCB0eXBlKHYpLCBGT1JfVkFMLCBrZXksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC51ZGF0YSkKCiAgICAgICAgICAgIGxvY2FsIGt2CgoKCiAgICAgICAgICAgIGlmIHZhbCB+PSBuaWwgdGhlbgoKICAgICAgICAgICAgICAgIGxvY2FsIGt0ID0gdHlwZShrZXkpCgogICAgICAgICAgICAgICAgbG9jYWwgdnQgPSB0eXBlKHZhbCkKCgoKICAgICAgICAgICAgICAgIC0tIGNvbnZlcnQga2V5IHRvIHN1aXRhYmxlIHRvIGJlIHNhZmVseSByZWFkIGJhY2sKCiAgICAgICAgICAgICAgICAtLSBieSB0aGUgTHVhIGludGVycHJldGVyCgogICAgICAgICAgICAgICAgaWYga3QgPT0gJ251bWJlcicgb3Iga3QgPT0gJ2Jvb2xlYW4nIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgayA9IGtleQoKICAgICAgICAgICAgICAgICAgICBrZXkgPSAnWycgLi4gdG9zdHJpbmcoa2V5KSAuLiAnXScKCiAgICAgICAgICAgICAgICAgICAgLS0gZHVtcCB0YWJsZSB2YWx1ZQoKICAgICAgICAgICAgICAgIGVsc2VpZiBrdCA9PSAndGFibGUnIGFuZCBub3Qgbm9rZHVtcCB0aGVuCgogICAgICAgICAgICAgICAgICAgIGtleSA9ICdbJyAuLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcHRibChrZXksIGRlcHRoICsgMSwgZmllbGRJbmRlbnQsIG5lc3RJbmRlbnQsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eCkgLi4gJ10nCgogICAgICAgICAgICAgICAgICAgIGsgPSBrZXkKCiAgICAgICAgICAgICAgICAgICAga3QgPSAnc3RyaW5nJwoKICAgICAgICAgICAgICAgIGVsc2VpZiBrdCB+PSAnc3RyaW5nJyBvciBSRVNFUlZFRF9XT1JEW2tleV0gb3IKCiAgICAgICAgICAgICAgICAgICAgbm90IHN0cm1hdGNoKGtleSwgTFVBX0ZJRUxETkFNRV9QQVQpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAga2V5ID0gc3RyZm9ybWF0KCJbJXFdIiwgdG9zdHJpbmcoa2V5KSwgdikKCiAgICAgICAgICAgICAgICAgICAgayA9IGtleQoKICAgICAgICAgICAgICAgICAgICBrdCA9ICdzdHJpbmcnCgogICAgICAgICAgICAgICAgZW5kCgoKCiAgICAgICAgICAgICAgICAtLSBjb252ZXJ0IGtleS12YWwgcGFpciB0byBzdWl0YWJsZSB0byBiZSBzYWZlbHkgcmVhZCBiYWNrCgogICAgICAgICAgICAgICAgLS0gYnkgdGhlIEx1YSBpbnRlcnByZXRlcgoKICAgICAgICAgICAgICAgIGlmIHZ0ID09ICdudW1iZXInIG9yIHZ0ID09ICdib29sZWFuJyB0aGVuCgogICAgICAgICAgICAgICAgICAgIGt2ID0gc3RyZm9ybWF0KCclcyVzID0gJXMnLCBmaWVsZEluZGVudCwga2V5LCB0b3N0cmluZyh2YWwpKQoKICAgICAgICAgICAgICAgIGVsc2VpZiB2dCA9PSAnc3RyaW5nJyB0aGVuCgogICAgICAgICAgICAgICAgICAgIC0tIGR1bXAgYSBzdHJpbmctdmFsdWUKCiAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5vdmR1bXAgdGhlbgoKICAgICAgICAgICAgICAgICAgICAgICAga3YgPSBzdHJmb3JtYXQoJyVzJXMgPSAlcScsIGZpZWxkSW5kZW50LCBrZXksIHZhbCkKCiAgICAgICAgICAgICAgICAgICAgZWxzZQoKICAgICAgICAgICAgICAgICAgICAgICAga3YgPSBzdHJmb3JtYXQoJyVzJXMgPSAlcycsIGZpZWxkSW5kZW50LCBrZXksIHZhbCkKCiAgICAgICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICAgICAgZWxzZWlmIHZ0ID09ICd0YWJsZScgYW5kIG5vdCBub3ZkdW1wIHRoZW4KCiAgICAgICAgICAgICAgICAgICAga3YgPSBzdHJmb3JtYXQoJyVzJXMgPSAlcycsIGZpZWxkSW5kZW50LCBrZXksIGR1bXB0YmwodmFsLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCArCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEluZGVudCwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVzdEluZGVudCwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4KSkKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGt2ID0gc3RyZm9ybWF0KCclcyVzID0gJXEnLCBmaWVsZEluZGVudCwga2V5LCB0b3N0cmluZyh2YWwpKQoKICAgICAgICAgICAgICAgIGVuZAoKCgogICAgICAgICAgICAgICAgLS0gYWRkIHRvIGFycmF5CgogICAgICAgICAgICAgICAgbmFyciA9IG5hcnIgKyAxCgogICAgICAgICAgICAgICAgYXJyW25hcnJdID0gewoKICAgICAgICAgICAgICAgICAgICB0eXAgPSBrdCwKCiAgICAgICAgICAgICAgICAgICAga2V5ID0gaywKCiAgICAgICAgICAgICAgICAgICAgdmFsID0ga3YsCgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgZW5kCgogICAgICAgIGVuZAoKICAgIGVuZAoKCgogICAgLS0gcmVtb3ZlIHJlZmVyZW5jZQoKICAgIGN0eC5jaXJjdWxhcltyZWZdID0gbmlsCgogICAgLS0gY29uY2F0IHJlc3VsdAoKICAgIGlmIG5hcnIgPiAwIHRoZW4KCiAgICAgICAgdGJsc29ydChhcnIsIHNvcnRfaW5kZXgpCgoKCiAgICAgICAgZm9yIGkgPSAxLCBuYXJyIGRvCgogICAgICAgICAgICByZXNbaV0gPSBhcnJbaV0udmFsCgogICAgICAgIGVuZAoKICAgICAgICByZXNbMV0gPSAneycgLi4gY3R4LkxGIC4uIHJlc1sxXQoKICAgICAgICByZXMgPSB0Ymxjb25jYXQocmVzLCAnLCcgLi4gY3R4LkxGKSAuLiBjdHguTEYgLi4gaW5kZW50IC4uICd9JwoKICAgIGVsc2UKCiAgICAgICAgcmVzID0gJ3t9JwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHJlcwoKZW5kCgoKCi0tLSBpc191aW50CgotLS0gQHBhcmFtIHYgYW55CgotLS0gQHJldHVybiBib29sZWFuIG9rCgpsb2NhbCBmdW5jdGlvbiBpc191aW50KHYpCgogICAgcmV0dXJuIHR5cGUodikgPT0gJ251bWJlcicgYW5kIHYgPCBJTkZJTklURV9QT1MgYW5kIHYgPj0gMCBhbmQgZmxvb3IodikgPT0gdgoKZW5kCgoKCi0tLSBkdW1wCgotLS0gQHBhcmFtIHZhbCBhbnkKCi0tLSBAcGFyYW0gaW5kZW50IGludGVnZXIKCi0tLSBAcGFyYW0gcGFkZGluZyBpbnRlZ2VyCgotLS0gQHBhcmFtIGZpbHRlciBmdW5jdGlvbgoKLS0tIEBwYXJhbSB1ZGF0YQoKLS0tIEByZXR1cm4gc3RyaW5nCgpsb2NhbCBmdW5jdGlvbiBkdW1wKHZhbCwgaW5kZW50LCBwYWRkaW5nLCBmaWx0ZXIsIHVkYXRhKQoKICAgIGxvY2FsIHQgPSB0eXBlKHZhbCkKCgoKICAgIC0tIGNoZWNrIGluZGVudAoKICAgIGlmIGluZGVudCA9PSBuaWwgdGhlbgoKICAgICAgICBpbmRlbnQgPSBERUZBVUxUX0lOREVOVAoKICAgIGVsc2VpZiBub3QgaXNfdWludChpbmRlbnQpIHRoZW4KCiAgICAgICAgZXJyb3IoJ2luZGVudCBtdXN0IGJlIHVuc2lnbmVkIGludGVnZXInLCAyKQoKICAgIGVuZAoKCgogICAgLS0gY2hlY2sgcGFkZGluZwoKICAgIGlmIHBhZGRpbmcgPT0gbmlsIHRoZW4KCiAgICAgICAgcGFkZGluZyA9IDAKCiAgICBlbHNlaWYgbm90IGlzX3VpbnQocGFkZGluZykgdGhlbgoKICAgICAgICBlcnJvcigncGFkZGluZyBtdXN0IGJlIHVuc2lnbmVkIGludGVnZXInLCAyKQoKICAgIGVuZAoKCgogICAgLS0gY2hlY2sgZmlsdGVyCgogICAgaWYgZmlsdGVyID09IG5pbCB0aGVuCgogICAgICAgIGZpbHRlciA9IERFRkFVTFRfRklMVEVSCgogICAgZWxzZWlmIHR5cGUoZmlsdGVyKSB+PSAnZnVuY3Rpb24nIHRoZW4KCiAgICAgICAgZXJyb3IoJ2ZpbHRlciBtdXN0IGJlIGZ1bmN0aW9uJywgMikKCiAgICBlbmQKCgoKICAgIC0tIGR1bXAgdGFibGUKCiAgICBpZiB0ID09ICd0YWJsZScgdGhlbgoKICAgICAgICBsb2NhbCBpc3BhY2UgPSAnJwoKICAgICAgICBsb2NhbCBwc3BhY2UgPSAnJwoKCgogICAgICAgIGlmIGluZGVudCA+IDAgdGhlbgoKICAgICAgICAgICAgaXNwYWNlID0gc3RyZm9ybWF0KCclJyAuLiB0b3N0cmluZyhpbmRlbnQpIC4uICdzJywgJycpCgogICAgICAgIGVuZAoKCgogICAgICAgIGlmIHBhZGRpbmcgPiAwIHRoZW4KCiAgICAgICAgICAgIHBzcGFjZSA9IHN0cmZvcm1hdCgnJScgLi4gdG9zdHJpbmcocGFkZGluZykgLi4gJ3MnLCAnJykKCiAgICAgICAgZW5kCgoKCiAgICAgICAgcmV0dXJuIGR1bXB0YmwodmFsLCAxLCBwc3BhY2UsIGlzcGFjZSwgewoKICAgICAgICAgICAgTEYgPSBpc3BhY2UgPT0gJycgYW5kICcgJyBvciAnXG4nLAoKICAgICAgICAgICAgY2lyY3VsYXIgPSB7fSwKCiAgICAgICAgICAgIGZpbHRlciA9IGZpbHRlciwKCiAgICAgICAgICAgIHVkYXRhID0gdWRhdGEsCgogICAgICAgIH0pCgogICAgZW5kCgoKCiAgICAtLSBkdW1wIHZhbHVlCgogICAgbG9jYWwgdiwgbm9kdW1wID0gZmlsdGVyKHZhbCwgMCwgdCwgRk9SX1ZBTCwgbmlsLCB1ZGF0YSkKCiAgICBpZiBub2R1bXAgPT0gdHJ1ZSB0aGVuCgogICAgICAgIHJldHVybiB0b3N0cmluZyh2KQoKICAgIGVuZAoKICAgIHJldHVybiBzdHJmb3JtYXQoJyVxJywgdG9zdHJpbmcodikpCgplbmQKCgoKcmV0dXJuIGR1bXAAQuCtAQvSCGxvY2FsIHN0cmluZ2lmeSA9IHJlcXVpcmUoIi5zdHJpbmdpZnkiKQoKLS0gaGFuZGxlciBmb3IgZXZhbAoKcmV0dXJuIGZ1bmN0aW9uIChhbykKCiAgcmV0dXJuIGZ1bmN0aW9uIChtc2cpCgogICAgLS0gZXhlYyBleHByZXNzaW9uCgogICAgbG9jYWwgZXhwciA9IG1zZy5EYXRhCgogICAgbG9jYWwgZnVuYywgZXJyID0gbG9hZCgicmV0dXJuICIgLi4gZXhwciwgJ2FvcycsICd0JywgX0cpCgogICAgbG9jYWwgb3V0cHV0ID0gIiIKCiAgICBsb2NhbCBlID0gbmlsCgogICAgaWYgZXJyIHRoZW4KCiAgICAgIGZ1bmMsIGVyciA9IGxvYWQoZXhwciwgJ2FvcycsICd0JywgX0cpCgogICAgZW5kCgogICAgaWYgZnVuYyB0aGVuCgogICAgICBvdXRwdXQsIGUgPSBmdW5jKCkKCiAgICBlbHNlCgogICAgICBhby5vdXRib3guRXJyb3IgPSBlcnIKCiAgICAgIHJldHVybgoKICAgIGVuZAoKICAgIGlmIGUgdGhlbiAKCiAgICAgIGFvLm91dGJveC5FcnJvciA9IGUKCiAgICAgIHJldHVybiAKCiAgICBlbmQKCiAgICBpZiBIQU5ETEVSX1BSSU5UX0xPR1MgYW5kIG91dHB1dCB0aGVuCgogICAgICB0YWJsZS5pbnNlcnQoSEFORExFUl9QUklOVF9MT0dTLCB0eXBlKG91dHB1dCkgPT0gInRhYmxlIiBhbmQgc3RyaW5naWZ5LmZvcm1hdChvdXRwdXQpIG9yIHRvc3RyaW5nKG91dHB1dCkpCgogICAgZWxzZSAKCiAgICAgIC0tIHNldCByZXN1bHQgaW4gb3V0Ym94Lk91dHB1dCAoTGVmdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpCgogICAgICBhby5vdXRib3guT3V0cHV0ID0geyAgCgogICAgICAgIGpzb24gPSB0eXBlKG91dHB1dCkgPT0gInRhYmxlIiBhbmQgcGNhbGwoZnVuY3Rpb24gKCkgcmV0dXJuIGpzb24uZW5jb2RlKG91dHB1dCkgZW5kKSBhbmQgb3V0cHV0IG9yICJ1bmRlZmluZWQiLAoKICAgICAgICBkYXRhID0gewoKICAgICAgICAgIG91dHB1dCA9IHR5cGUob3V0cHV0KSA9PSAidGFibGUiIGFuZCBzdHJpbmdpZnkuZm9ybWF0KG91dHB1dCkgb3Igb3V0cHV0LAoKICAgICAgICAgIHByb21wdCA9IFByb21wdCgpCgogICAgICAgIH0sIAoKICAgICAgICBwcm9tcHQgPSBQcm9tcHQoKSAKCiAgICAgIH0KCgoKICAgIGVuZAoKICBlbmQgCgplbmQKAELAtgEL0gxsb2NhbCBfdXRpbHMgPSB7IF92ZXJzaW9uID0gIjAuMC4yIiB9CgoKCmxvY2FsIF8gPSByZXF1aXJlKCcudXRpbHMnKQoKbG9jYWwgYW8gPSByZXF1aXJlKCIuYW8iKQoKCgpmdW5jdGlvbiBfdXRpbHMuaGFzTWF0Y2hpbmdUYWcobmFtZSwgdmFsdWUpCgogIGFzc2VydCh0eXBlKG5hbWUpID09ICdzdHJpbmcnIGFuZCB0eXBlKHZhbHVlKSA9PSAnc3RyaW5nJywgJ2ludmFsaWQgYXJndW1lbnRzOiAobmFtZSA6IHN0cmluZywgdmFsdWUgOiBzdHJpbmcpJykKCgoKICByZXR1cm4gZnVuY3Rpb24gKG1zZykgCgogICAgcmV0dXJuIG1zZy5UYWdzW25hbWVdID09IHZhbHVlIAoKICBlbmQKCmVuZAoKCgpmdW5jdGlvbiBfdXRpbHMuaGFzTWF0Y2hpbmdUYWdPZihuYW1lLCB2YWx1ZXMpCgogIGFzc2VydCh0eXBlKG5hbWUpID09ICdzdHJpbmcnIGFuZCB0eXBlKHZhbHVlcykgPT0gJ3RhYmxlJywgJ2ludmFsaWQgYXJndW1lbnRzOiAobmFtZSA6IHN0cmluZywgdmFsdWVzIDogc3RyaW5nW10pJykKCiAgcmV0dXJuIGZ1bmN0aW9uIChtc2cpCgogICAgZm9yIF8sIHZhbHVlIGluIGlwYWlycyh2YWx1ZXMpIGRvCgogICAgICBsb2NhbCBwYXR0ZXJuUmVzdWx0ID0gSGFuZGxlcnMudXRpbHMuaGFzTWF0Y2hpbmdUYWcobmFtZSwgdmFsdWUpKG1zZykKCgoKICAgICAgaWYgcGF0dGVyblJlc3VsdCB+PSAwIGFuZCBwYXR0ZXJuUmVzdWx0IH49IGZhbHNlIGFuZCBwYXR0ZXJuUmVzdWx0IH49ICJza2lwIiB0aGVuCgogICAgICAgIHJldHVybiBwYXR0ZXJuUmVzdWx0CgogICAgICBlbmQKCiAgICBlbmQKCgoKICAgIHJldHVybiAwCgogIGVuZAoKZW5kCgoKCmZ1bmN0aW9uIF91dGlscy5oYXNNYXRjaGluZ0RhdGEodmFsdWUpCgogIGFzc2VydCh0eXBlKHZhbHVlKSA9PSAnc3RyaW5nJywgJ2ludmFsaWQgYXJndW1lbnRzOiAodmFsdWUgOiBzdHJpbmcpJykKCiAgcmV0dXJuIGZ1bmN0aW9uIChtc2cpCgogICAgcmV0dXJuIG1zZy5EYXRhID09IHZhbHVlCgogIGVuZAoKZW5kCgoKCmZ1bmN0aW9uIF91dGlscy5yZXBseShpbnB1dCkgCgogIGFzc2VydCh0eXBlKGlucHV0KSA9PSAndGFibGUnIG9yIHR5cGUoaW5wdXQpID09ICdzdHJpbmcnLCAnaW52YWxpZCBhcmd1bWVudHM6IChpbnB1dCA6IHRhYmxlIG9yIHN0cmluZyknKQoKICByZXR1cm4gZnVuY3Rpb24gKG1zZykKCiAgICBpZiB0eXBlKGlucHV0KSA9PSAnc3RyaW5nJyB0aGVuCgogICAgICBtc2cucmVwbHkoeyBEYXRhID0gaW5wdXR9KQoKICAgICAgcmV0dXJuCgogICAgZW5kCgogICAgbXNnLnJlcGx5KGlucHV0KQoKICBlbmQKCmVuZAoKCgpmdW5jdGlvbiBfdXRpbHMuY29udGludWUoZm4pCgogIGFzc2VydCh0eXBlKGZuKSA9PSAnZnVuY3Rpb24nLCAnaW52YWxpZCBhcmd1bWVudHM6IChmbiA6IGZ1bmN0aW9uKScpCgogIHJldHVybiBmdW5jdGlvbiAobXNnKQoKICAgIGxvY2FsIHBhdHRlcm5SZXN1bHQgPSBmbihtc2cpCgoKCiAgICBpZiBub3QgcGF0dGVyblJlc3VsdCBvciBwYXR0ZXJuUmVzdWx0ID09IDAgb3IgcGF0dGVyblJlc3VsdCA9PSAic2tpcCIgdGhlbgoKICAgICAgcmV0dXJuIHBhdHRlcm5SZXN1bHQKCiAgICBlbmQKCiAgICByZXR1cm4gMQoKICBlbmQKCmVuZAoKCgpyZXR1cm4gX3V0aWxzAEKgwwELx5MBbG9jYWwgc3RyaW5naWZ5ID0geyBfdmVyc2lvbiA9ICIwLjAuMSIgfQoKCgotLSBBTlNJIGNvbG9yIGNvZGVzCgpsb2NhbCBjb2xvcnMgPSB7CgogIHJlZCA9ICJcMjdbMzFtIiwKCiAgZ3JlZW4gPSAiXDI3WzMybSIsCgogIGJsdWUgPSAiXDI3WzM0bSIsCgogIHJlc2V0ID0gIlwyN1swbSIKCn0KCgoKZnVuY3Rpb24gc3RyaW5naWZ5LmlzU2ltcGxlQXJyYXkodGJsKQoKICBsb2NhbCBhcnJheUluZGV4ID0gMQoKICBmb3IgaywgdiBpbiBwYWlycyh0YmwpIGRvCgogICAgaWYgayB+PSBhcnJheUluZGV4IG9yICh0eXBlKHYpIH49ICJudW1iZXIiIGFuZCB0eXBlKHYpIH49ICJzdHJpbmciKSB0aGVuCgogICAgICByZXR1cm4gZmFsc2UKCiAgICBlbmQKCiAgICBhcnJheUluZGV4ID0gYXJyYXlJbmRleCArIDEKCiAgZW5kCgogIHJldHVybiB0cnVlCgplbmQKCgoKZnVuY3Rpb24gc3RyaW5naWZ5LmZvcm1hdCh0YmwsIGluZGVudCkKCiAgaW5kZW50ID0gaW5kZW50IG9yIDAKCiAgbG9jYWwgdG9JbmRlbnQgPSBzdHJpbmcucmVwKCIgIiwgaW5kZW50KQoKICBsb2NhbCB0b0luZGVudENoaWxkID0gc3RyaW5nLnJlcCgiICIsIGluZGVudCArIDIpCgoKCiAgbG9jYWwgcmVzdWx0ID0ge30KCiAgbG9jYWwgaXNBcnJheSA9IHRydWUKCiAgbG9jYWwgYXJyYXlJbmRleCA9IDEKCgoKICBpZiBzdHJpbmdpZnkuaXNTaW1wbGVBcnJheSh0YmwpIHRoZW4KCiAgICBmb3IgXywgdiBpbiBpcGFpcnModGJsKSBkbwoKICAgICAgaWYgdHlwZSh2KSA9PSAic3RyaW5nIiB0aGVuCgogICAgICAgIHYgPSBjb2xvcnMuZ3JlZW4gLi4gJyInIC4uIHYgLi4gJyInIC4uIGNvbG9ycy5yZXNldAoKICAgICAgZWxzZQoKICAgICAgICB2ID0gY29sb3JzLmJsdWUgLi4gdG9zdHJpbmcodikgLi4gY29sb3JzLnJlc2V0CgogICAgICBlbmQKCiAgICAgIHRhYmxlLmluc2VydChyZXN1bHQsIHYpCgogICAgZW5kCgogICAgcmV0dXJuICJ7ICIgLi4gdGFibGUuY29uY2F0KHJlc3VsdCwgIiwgIikgLi4gIiB9IgoKICBlbmQKCgoKICBmb3IgaywgdiBpbiBwYWlycyh0YmwpIGRvCgogICAgaWYgaXNBcnJheSB0aGVuCgogICAgICBpZiBrID09IGFycmF5SW5kZXggdGhlbgoKICAgICAgICBhcnJheUluZGV4ID0gYXJyYXlJbmRleCArIDEKCiAgICAgICAgaWYgdHlwZSh2KSA9PSAidGFibGUiIHRoZW4KCiAgICAgICAgICB2ID0gc3RyaW5naWZ5LmZvcm1hdCh2LCBpbmRlbnQgKyAyKQoKICAgICAgICBlbHNlaWYgdHlwZSh2KSA9PSAic3RyaW5nIiB0aGVuCgogICAgICAgICAgdiA9IGNvbG9ycy5ncmVlbiAuLiAnIicgLi4gdiAuLiAnIicgLi4gY29sb3JzLnJlc2V0CgogICAgICAgIGVsc2UKCiAgICAgICAgICB2ID0gY29sb3JzLmJsdWUgLi4gdG9zdHJpbmcodikgLi4gY29sb3JzLnJlc2V0CgogICAgICAgIGVuZAoKICAgICAgICB0YWJsZS5pbnNlcnQocmVzdWx0LCB0b0luZGVudENoaWxkIC4uIHYpCgogICAgICBlbHNlCgogICAgICAgIGlzQXJyYXkgPSBmYWxzZQoKICAgICAgICByZXN1bHQgPSB7fQoKICAgICAgZW5kCgogICAgZW5kCgogICAgaWYgbm90IGlzQXJyYXkgdGhlbgoKICAgICAgaWYgdHlwZSh2KSA9PSAidGFibGUiIHRoZW4KCiAgICAgICAgdiA9IHN0cmluZ2lmeS5mb3JtYXQodiwgaW5kZW50ICsgMikKCiAgICAgIGVsc2VpZiB0eXBlKHYpID09ICJzdHJpbmciIHRoZW4KCiAgICAgICAgdiA9IGNvbG9ycy5ncmVlbiAuLiAnIicgLi4gdiAuLiAnIicgLi4gY29sb3JzLnJlc2V0CgogICAgICBlbHNlCgogICAgICAgIHYgPSBjb2xvcnMuYmx1ZSAuLiB0b3N0cmluZyh2KSAuLiBjb2xvcnMucmVzZXQKCiAgICAgIGVuZAoKICAgICAgayA9IGNvbG9ycy5yZWQgLi4gayAuLiBjb2xvcnMucmVzZXQKCiAgICAgIHRhYmxlLmluc2VydChyZXN1bHQsIHRvSW5kZW50Q2hpbGQgLi4gayAuLiAiID0gIiAuLiB2KQoKICAgIGVuZAoKICBlbmQKCgoKICBsb2NhbCBwcmVmaXggPSBpc0FycmF5IGFuZCAie1xuIiBvciAie1xuICIKCiAgbG9jYWwgc3VmZml4ID0gaXNBcnJheSBhbmQgIlxuIiAuLiB0b0luZGVudCAuLiAiIH0iIG9yICJcbiIgLi4gdG9JbmRlbnQgLi4gIn0iCgogIGxvY2FsIHNlcGFyYXRvciA9IGlzQXJyYXkgYW5kICIsXG4iIG9yICIsXG4gIgoKICByZXR1cm4gcHJlZml4IC4uIHRhYmxlLmNvbmNhdChyZXN1bHQsIHNlcGFyYXRvcikgLi4gc3VmZml4CgplbmQKCgoKcmV0dXJuIHN0cmluZ2lmeQoAAAAAbG9jYWwgb2xkYW8gPSBhbyBvciB7fQoKbG9jYWwgYW8gPSB7CgogICAgX3ZlcnNpb24gPSAiMC4wLjYiLAoKICAgIGlkID0gb2xkYW8uaWQgb3IgIiIsCgogICAgX21vZHVsZSA9IG9sZGFvLl9tb2R1bGUgb3IgIiIsCgogICAgYXV0aG9yaXRpZXMgPSBvbGRhby5hdXRob3JpdGllcyBvciB7fSwKCiAgICByZWZlcmVuY2UgPSBvbGRhby5yZWZlcmVuY2Ugb3IgMCwKCiAgICBvdXRib3ggPSBvbGRhby5vdXRib3ggb3IKCiAgICAgICAge091dHB1dCA9IHt9LCBNZXNzYWdlcyA9IHt9LCBTcGF3bnMgPSB7fSwgQXNzaWdubWVudHMgPSB7fX0sCgogICAgbm9uRXh0cmFjdGFibGVUYWdzID0gewoKICAgICAgICAnRGF0YS1Qcm90b2NvbCcsICdWYXJpYW50JywgJ0Zyb20tUHJvY2VzcycsICdGcm9tLU1vZHVsZScsICdUeXBlJywKCiAgICAgICAgJ0Zyb20nLCAnT3duZXInLCAnQW5jaG9yJywgJ1RhcmdldCcsICdEYXRhJywgJ1RhZ3MnCgogICAgfSwKCiAgICBub25Gb3J3YXJkYWJsZVRhZ3MgPSB7CgogICAgICAgICdEYXRhLVByb3RvY29sJywgJ1ZhcmlhbnQnLCAnRnJvbS1Qcm9jZXNzJywgJ0Zyb20tTW9kdWxlJywgJ1R5cGUnLAoKICAgICAgICAnRnJvbScsICdPd25lcicsICdBbmNob3InLCAnVGFyZ2V0JywgJ1RhZ3MnLCAnVGFnQXJyYXknLCAnSGFzaC1DaGFpbicsCgogICAgICAgICdUaW1lc3RhbXAnLCAnTm9uY2UnLCAnRXBvY2gnLCAnU2lnbmF0dXJlJywgJ0ZvcndhcmRlZC1CeScsCgogICAgICAgICdQdXNoZWQtRm9yJywgJ1JlYWQtT25seScsICdDcm9uJywgJ0Jsb2NrLUhlaWdodCcsICdSZWZlcmVuY2UnLCAnSWQnLAoKICAgICAgICAnUmVwbHktVG8nCgogICAgfQoKfQoKCgpsb2NhbCBmdW5jdGlvbiBfaW5jbHVkZXMobGlzdCkKCiAgICByZXR1cm4gZnVuY3Rpb24oa2V5KQoKICAgICAgICBsb2NhbCBleGlzdHMgPSBmYWxzZQoKICAgICAgICBmb3IgXywgbGlzdEtleSBpbiBpcGFpcnMobGlzdCkgZG8KCiAgICAgICAgICAgIGlmIGtleSA9PSBsaXN0S2V5IHRoZW4KCiAgICAgICAgICAgICAgICBleGlzdHMgPSB0cnVlCgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCiAgICAgICAgaWYgbm90IGV4aXN0cyB0aGVuIHJldHVybiBmYWxzZSBlbmQKCiAgICAgICAgcmV0dXJuIHRydWUKCiAgICBlbmQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBpc0FycmF5KHRhYmxlKQoKICAgIGlmIHR5cGUodGFibGUpID09ICJ0YWJsZSIgdGhlbgoKICAgICAgICBsb2NhbCBtYXhJbmRleCA9IDAKCiAgICAgICAgZm9yIGssIHYgaW4gcGFpcnModGFibGUpIGRvCgogICAgICAgICAgICBpZiB0eXBlKGspIH49ICJudW1iZXIiIG9yIGsgPCAxIG9yIG1hdGguZmxvb3Ioaykgfj0gayB0aGVuCgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIC0tIElmIHRoZXJlJ3MgYSBub24taW50ZWdlciBrZXksIGl0J3Mgbm90IGFuIGFycmF5CgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIG1heEluZGV4ID0gbWF0aC5tYXgobWF4SW5kZXgsIGspCgogICAgICAgIGVuZAoKICAgICAgICAtLSBJZiB0aGUgaGlnaGVzdCBudW1lcmljIGluZGV4IGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIGl0J3MgYW4gYXJyYXkKCiAgICAgICAgcmV0dXJuIG1heEluZGV4ID09ICN0YWJsZQoKICAgIGVuZAoKICAgIHJldHVybiBmYWxzZQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHBhZFplcm8zMihudW0pIHJldHVybiBzdHJpbmcuZm9ybWF0KCIlMDMyZCIsIG51bSkgZW5kCgoKCmZ1bmN0aW9uIGFvLmNsb25lKG9iaiwgc2VlbikKCiAgICAtLSBIYW5kbGUgbm9uLXRhYmxlcyBhbmQgcHJldmlvdXNseS1zZWVuIHRhYmxlcy4KCiAgICBpZiB0eXBlKG9iaikgfj0gJ3RhYmxlJyB0aGVuIHJldHVybiBvYmogZW5kCgogICAgaWYgc2VlbiBhbmQgc2VlbltvYmpdIHRoZW4gcmV0dXJuIHNlZW5bb2JqXSBlbmQKCgoKICAgIC0tIE5ldyB0YWJsZTsgbWFyayBpdCBhcyBzZWVuIGFuZCBjb3B5IHJlY3Vyc2l2ZWx5LgoKICAgIGxvY2FsIHMgPSBzZWVuIG9yIHt9CgogICAgbG9jYWwgcmVzID0ge30KCiAgICBzW29ial0gPSByZXMKCiAgICBmb3IgaywgdiBpbiBwYWlycyhvYmopIGRvIHJlc1thby5jbG9uZShrLCBzKV0gPSBhby5jbG9uZSh2LCBzKSBlbmQKCiAgICByZXR1cm4gc2V0bWV0YXRhYmxlKHJlcywgZ2V0bWV0YXRhYmxlKG9iaikpCgplbmQKCgoKZnVuY3Rpb24gYW8ubm9ybWFsaXplKG1zZykKCiAgICBmb3IgXywgbyBpbiBpcGFpcnMobXNnLlRhZ3MpIGRvCgogICAgICAgIGlmIG5vdCBfaW5jbHVkZXMoYW8ubm9uRXh0cmFjdGFibGVUYWdzKShvLm5hbWUpIHRoZW4KCiAgICAgICAgICAgIG1zZ1tvLm5hbWVdID0gby52YWx1ZQoKICAgICAgICBlbmQKCiAgICBlbmQKCiAgICByZXR1cm4gbXNnCgplbmQKCgoKZnVuY3Rpb24gYW8uc2FuaXRpemUobXNnKQoKICAgIGxvY2FsIG5ld01zZyA9IGFvLmNsb25lKG1zZykKCgoKICAgIGZvciBrLCBfIGluIHBhaXJzKG5ld01zZykgZG8KCiAgICAgICAgaWYgX2luY2x1ZGVzKGFvLm5vbkZvcndhcmRhYmxlVGFncykoaykgdGhlbiBuZXdNc2dba10gPSBuaWwgZW5kCgogICAgZW5kCgoKCiAgICByZXR1cm4gbmV3TXNnCgplbmQKCgoKZnVuY3Rpb24gYW8uaW5pdChlbnYpCgogICAgaWYgYW8uaWQgPT0gIiIgdGhlbiBhby5pZCA9IGVudi5Qcm9jZXNzLklkIGVuZAoKCgogICAgaWYgYW8uX21vZHVsZSA9PSAiIiB0aGVuCgogICAgICAgIGZvciBfLCBvIGluIGlwYWlycyhlbnYuUHJvY2Vzcy5UYWdzKSBkbwoKICAgICAgICAgICAgaWYgby5uYW1lID09ICJNb2R1bGUiIHRoZW4gYW8uX21vZHVsZSA9IG8udmFsdWUgZW5kCgogICAgICAgIGVuZAoKICAgIGVuZAoKCgogICAgaWYgI2FvLmF1dGhvcml0aWVzIDwgMSB0aGVuCgogICAgICAgIGZvciBfLCBvIGluIGlwYWlycyhlbnYuUHJvY2Vzcy5UYWdzKSBkbwoKICAgICAgICAgICAgaWYgby5uYW1lID09ICJBdXRob3JpdHkiIHRoZW4KCiAgICAgICAgICAgICAgICB0YWJsZS5pbnNlcnQoYW8uYXV0aG9yaXRpZXMsIG8udmFsdWUpCgogICAgICAgICAgICBlbmQKCiAgICAgICAgZW5kCgogICAgZW5kCgoKCiAgICBhby5vdXRib3ggPSB7T3V0cHV0ID0ge30sIE1lc3NhZ2VzID0ge30sIFNwYXducyA9IHt9LCBBc3NpZ25tZW50cyA9IHt9fQoKICAgIGFvLmVudiA9IGVudgoKCgplbmQKCgoKZnVuY3Rpb24gYW8ubG9nKHR4dCkKCiAgICBpZiB0eXBlKGFvLm91dGJveC5PdXRwdXQpID09ICdzdHJpbmcnIHRoZW4KCiAgICAgICAgYW8ub3V0Ym94Lk91dHB1dCA9IHthby5vdXRib3guT3V0cHV0fQoKICAgIGVuZAoKICAgIHRhYmxlLmluc2VydChhby5vdXRib3guT3V0cHV0LCB0eHQpCgplbmQKCgoKLS0gY2xlYXJzIG91dGJveAoKZnVuY3Rpb24gYW8uY2xlYXJPdXRib3goKQoKICAgIGFvLm91dGJveCA9IHtPdXRwdXQgPSB7fSwgTWVzc2FnZXMgPSB7fSwgU3Bhd25zID0ge30sIEFzc2lnbm1lbnRzID0ge319CgplbmQKCgoKZnVuY3Rpb24gYW8uc2VuZChtc2cpCgogICAgYXNzZXJ0KHR5cGUobXNnKSA9PSAndGFibGUnLCAnbXNnIHNob3VsZCBiZSBhIHRhYmxlJykKCiAgICBhby5yZWZlcmVuY2UgPSBhby5yZWZlcmVuY2UgKyAxCgogICAgbG9jYWwgcmVmZXJlbmNlU3RyaW5nID0gdG9zdHJpbmcoYW8ucmVmZXJlbmNlKQoKCgogICAgbG9jYWwgbWVzc2FnZSA9IHsKCiAgICAgICAgVGFyZ2V0ID0gbXNnLlRhcmdldCwKCiAgICAgICAgRGF0YSA9IG1zZy5EYXRhLAoKICAgICAgICBBbmNob3IgPSBwYWRaZXJvMzIoYW8ucmVmZXJlbmNlKSwKCiAgICAgICAgVGFncyA9IHsKCiAgICAgICAgICAgIHtuYW1lID0gIkRhdGEtUHJvdG9jb2wiLCB2YWx1ZSA9ICJhbyJ9LAoKICAgICAgICAgICAge25hbWUgPSAiVmFyaWFudCIsIHZhbHVlID0gImFvLlROLjEifSwKCiAgICAgICAgICAgIHtuYW1lID0gIlR5cGUiLCB2YWx1ZSA9ICJNZXNzYWdlIn0sCgogICAgICAgICAgICB7bmFtZSA9ICJSZWZlcmVuY2UiLCB2YWx1ZSA9IHJlZmVyZW5jZVN0cmluZ30KCiAgICAgICAgfQoKICAgIH0KCgoKICAgIC0tIGlmIGN1c3RvbSB0YWdzIGluIHJvb3QgbW92ZSB0aGVtIHRvIHRhZ3MKCiAgICBmb3IgaywgdiBpbiBwYWlycyhtc2cpIGRvCgogICAgICAgIGlmIG5vdCBfaW5jbHVkZXMoeyJUYXJnZXQiLCAiRGF0YSIsICJBbmNob3IiLCAiVGFncyIsICJGcm9tIn0pKGspIHRoZW4KCiAgICAgICAgICAgIHRhYmxlLmluc2VydChtZXNzYWdlLlRhZ3MsIHtuYW1lID0gaywgdmFsdWUgPSB2fSkKCiAgICAgICAgZW5kCgogICAgZW5kCgoKCiAgICBpZiBtc2cuVGFncyB0aGVuCgogICAgICAgIGlmIGlzQXJyYXkobXNnLlRhZ3MpIHRoZW4KCiAgICAgICAgICAgIGZvciBfLCBvIGluIGlwYWlycyhtc2cuVGFncykgZG8KCiAgICAgICAgICAgICAgICB0YWJsZS5pbnNlcnQobWVzc2FnZS5UYWdzLCBvKQoKICAgICAgICAgICAgZW5kCgogICAgICAgIGVsc2UKCiAgICAgICAgICAgIGZvciBrLCB2IGluIHBhaXJzKG1zZy5UYWdzKSBkbwoKICAgICAgICAgICAgICAgIHRhYmxlLmluc2VydChtZXNzYWdlLlRhZ3MsIHtuYW1lID0gaywgdmFsdWUgPSB2fSkKCiAgICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCiAgICBlbmQKCgoKICAgIC0tIElmIHJ1bm5pbmcgaW4gYW4gZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgQU9TIEhhbmRsZXJzIG1vZHVsZSwgZG8gbm90IGFkZAoKICAgIC0tIHRoZSBvblJlcGx5IGFuZCByZWNlaXZlIGZ1bmN0aW9ucyB0byB0aGUgbWVzc2FnZS4KCiAgICBpZiBub3QgSGFuZGxlcnMgdGhlbiByZXR1cm4gbWVzc2FnZSBlbmQKCgoKICAgIC0tIGNsb25lIG1lc3NhZ2UgaW5mbyBhbmQgYWRkIHRvIG91dGJveAoKICAgIGxvY2FsIGV4dE1lc3NhZ2UgPSB7fQoKICAgIGZvciBrLCB2IGluIHBhaXJzKG1lc3NhZ2UpIGRvIGV4dE1lc3NhZ2Vba10gPSB2IGVuZAoKCgogICAgLS0gYWRkIG1lc3NhZ2UgdG8gb3V0Ym94CgogICAgdGFibGUuaW5zZXJ0KGFvLm91dGJveC5NZXNzYWdlcywgZXh0TWVzc2FnZSkKCgoKICAgIC0tIGFkZCBjYWxsYmFjayBmb3Igb25SZXBseSBoYW5kbGVyKHMpCgogICAgbWVzc2FnZS5vblJlcGx5ID0KCiAgICAgICAgZnVuY3Rpb24oLi4uKSAtLSBUYWtlcyBlaXRoZXIgKEFkZHJlc3NUaGF0V2lsbFJlcGx5LCBoYW5kbGVyKHMpKSBvciAoaGFuZGxlcihzKSkKCiAgICAgICAgICAgIGxvY2FsIGZyb20sIHJlc29sdmVyCgogICAgICAgICAgICBpZiBzZWxlY3QoIiMiLCAuLi4pID09IDIgdGhlbgoKICAgICAgICAgICAgICAgIGZyb20gPSBzZWxlY3QoMSwgLi4uKQoKICAgICAgICAgICAgICAgIHJlc29sdmVyID0gc2VsZWN0KDIsIC4uLikKCiAgICAgICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICBmcm9tID0gbWVzc2FnZS5UYXJnZXQKCiAgICAgICAgICAgICAgICByZXNvbHZlciA9IHNlbGVjdCgxLCAuLi4pCgogICAgICAgICAgICBlbmQKCgoKICAgICAgICAgICAgLS0gQWRkIGEgb25lLXRpbWUgY2FsbGJhY2sgdGhhdCBydW5zIHRoZSB1c2VyJ3MgKG1hdGNoaW5nKSByZXNvbHZlciBvbiByZXBseQoKICAgICAgICAgICAgSGFuZGxlcnMub25jZSh7RnJvbSA9IGZyb20sIFsiWC1SZWZlcmVuY2UiXSA9IHJlZmVyZW5jZVN0cmluZ30sCgogICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVyKQoKICAgICAgICBlbmQKCgoKICAgIG1lc3NhZ2UucmVjZWl2ZSA9IGZ1bmN0aW9uKC4uLikKCiAgICAgICAgbG9jYWwgZnJvbSA9IG1lc3NhZ2UuVGFyZ2V0CgogICAgICAgIGlmIHNlbGVjdCgiIyIsIC4uLikgPT0gMSB0aGVuIGZyb20gPSBzZWxlY3QoMSwgLi4uKSBlbmQKCiAgICAgICAgcmV0dXJuCgogICAgICAgICAgICBIYW5kbGVycy5yZWNlaXZlKHtGcm9tID0gZnJvbSwgWyJYLVJlZmVyZW5jZSJdID0gcmVmZXJlbmNlU3RyaW5nfSkKCiAgICBlbmQKCgoKICAgIHJldHVybiBtZXNzYWdlCgplbmQKCgoKZnVuY3Rpb24gYW8uc3Bhd24obW9kdWxlLCBtc2cpCgogICAgYXNzZXJ0KHR5cGUobW9kdWxlKSA9PSAic3RyaW5nIiwgIk1vZHVsZSBzb3VyY2UgaWQgaXMgcmVxdWlyZWQhIikKCiAgICBhc3NlcnQodHlwZShtc2cpID09ICd0YWJsZScsICdNZXNzYWdlIG11c3QgYmUgYSB0YWJsZScpCgogICAgLS0gaW5jIHNwYXduIHJlZmVyZW5jZQoKICAgIGFvLnJlZmVyZW5jZSA9IGFvLnJlZmVyZW5jZSArIDEKCiAgICBsb2NhbCBzcGF3blJlZiA9IHRvc3RyaW5nKGFvLnJlZmVyZW5jZSkKCgoKICAgIGxvY2FsIHNwYXduID0gewoKICAgICAgICBEYXRhID0gbXNnLkRhdGEgb3IgIk5PREFUQSIsCgogICAgICAgIEFuY2hvciA9IHBhZFplcm8zMihhby5yZWZlcmVuY2UpLAoKICAgICAgICBUYWdzID0gewoKICAgICAgICAgICAge25hbWUgPSAiRGF0YS1Qcm90b2NvbCIsIHZhbHVlID0gImFvIn0sCgogICAgICAgICAgICB7bmFtZSA9ICJWYXJpYW50IiwgdmFsdWUgPSAiYW8uVE4uMSJ9LAoKICAgICAgICAgICAge25hbWUgPSAiVHlwZSIsIHZhbHVlID0gIlByb2Nlc3MifSwKCiAgICAgICAgICAgIHtuYW1lID0gIkZyb20tUHJvY2VzcyIsIHZhbHVlID0gYW8uaWR9LAoKICAgICAgICAgICAge25hbWUgPSAiRnJvbS1Nb2R1bGUiLCB2YWx1ZSA9IGFvLl9tb2R1bGV9LAoKICAgICAgICAgICAge25hbWUgPSAiTW9kdWxlIiwgdmFsdWUgPSBtb2R1bGV9LAoKICAgICAgICAgICAge25hbWUgPSAiUmVmZXJlbmNlIiwgdmFsdWUgPSBzcGF3blJlZn0KCiAgICAgICAgfQoKICAgIH0KCgoKICAgIC0tIGlmIGN1c3RvbSB0YWdzIGluIHJvb3QgbW92ZSB0aGVtIHRvIHRhZ3MKCiAgICBmb3IgaywgdiBpbiBwYWlycyhtc2cpIGRvCgogICAgICAgIGlmIG5vdCBfaW5jbHVkZXMoeyJUYXJnZXQiLCAiRGF0YSIsICJBbmNob3IiLCAiVGFncyIsICJGcm9tIn0pKGspIHRoZW4KCiAgICAgICAgICAgIHRhYmxlLmluc2VydChzcGF3bi5UYWdzLCB7bmFtZSA9IGssIHZhbHVlID0gdn0pCgogICAgICAgIGVuZAoKICAgIGVuZAoKCgogICAgaWYgbXNnLlRhZ3MgdGhlbgoKICAgICAgICBpZiBpc0FycmF5KG1zZy5UYWdzKSB0aGVuCgogICAgICAgICAgICBmb3IgXywgbyBpbiBpcGFpcnMobXNnLlRhZ3MpIGRvCgogICAgICAgICAgICAgICAgdGFibGUuaW5zZXJ0KHNwYXduLlRhZ3MsIG8pCgogICAgICAgICAgICBlbmQKCiAgICAgICAgZWxzZQoKICAgICAgICAgICAgZm9yIGssIHYgaW4gcGFpcnMobXNnLlRhZ3MpIGRvCgogICAgICAgICAgICAgICAgdGFibGUuaW5zZXJ0KHNwYXduLlRhZ3MsIHtuYW1lID0gaywgdmFsdWUgPSB2fSkKCiAgICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCiAgICBlbmQKCgoKICAgIC0tIElmIHJ1bm5pbmcgaW4gYW4gZW52aXJvbm1lbnQgd2l0aG91dCB0aGUgQU9TIEhhbmRsZXJzIG1vZHVsZSwgZG8gbm90IGFkZAoKICAgIC0tIHRoZSBhZnRlciBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgdG8gdGhlIHNwYXduLgoKICAgIGlmIG5vdCBIYW5kbGVycyB0aGVuIHJldHVybiBzcGF3biBlbmQKCgoKICAgIC0tIGNsb25lIHNwYXduIGluZm8gYW5kIGFkZCB0byBvdXRib3gKCiAgICBsb2NhbCBleHRTcGF3biA9IHt9CgogICAgZm9yIGssIHYgaW4gcGFpcnMoc3Bhd24pIGRvIGV4dFNwYXduW2tdID0gdiBlbmQKCgoKICAgIHRhYmxlLmluc2VydChhby5vdXRib3guU3Bhd25zLCBleHRTcGF3bikKCgoKICAgIC0tIGFkZCAnYWZ0ZXInIGNhbGxiYWNrIHRvIHJldHVybmVkIHRhYmxlCgogICAgLS0gbG9jYWwgcmVzdWx0ID0ge30KCiAgICBzcGF3bi5vblJlcGx5ID0gZnVuY3Rpb24oY2FsbGJhY2spCgogICAgICAgIEhhbmRsZXJzLm9uY2UoewoKICAgICAgICAgICAgQWN0aW9uID0gIlNwYXduZWQiLAoKICAgICAgICAgICAgRnJvbSA9IGFvLmlkLAoKICAgICAgICAgICAgWyJSZWZlcmVuY2UiXSA9IHNwYXduUmVmCgogICAgICAgIH0sIGNhbGxiYWNrKQoKICAgIGVuZAoKCgogICAgc3Bhd24ucmVjZWl2ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIEhhbmRsZXJzLnJlY2VpdmUoewoKICAgICAgICAgICAgQWN0aW9uID0gIlNwYXduZWQiLAoKICAgICAgICAgICAgRnJvbSA9IGFvLmlkLAoKICAgICAgICAgICAgWyJSZWZlcmVuY2UiXSA9IHNwYXduUmVmCgogICAgICAgIH0pCgoKCiAgICBlbmQKCgoKICAgIHJldHVybiBzcGF3bgoKZW5kCgoKCmZ1bmN0aW9uIGFvLmFzc2lnbihhc3NpZ25tZW50KQoKICAgIGFzc2VydCh0eXBlKGFzc2lnbm1lbnQpID09ICd0YWJsZScsICdhc3NpZ25tZW50IHNob3VsZCBiZSBhIHRhYmxlJykKCiAgICBhc3NlcnQodHlwZShhc3NpZ25tZW50LlByb2Nlc3NlcykgPT0gJ3RhYmxlJywgJ1Byb2Nlc3NlcyBzaG91bGQgYmUgYSB0YWJsZScpCgogICAgYXNzZXJ0KHR5cGUoYXNzaWdubWVudC5NZXNzYWdlKSA9PSAic3RyaW5nIiwgIk1lc3NhZ2Ugc2hvdWxkIGJlIGEgc3RyaW5nIikKCiAgICB0YWJsZS5pbnNlcnQoYW8ub3V0Ym94LkFzc2lnbm1lbnRzLCBhc3NpZ25tZW50KQoKZW5kCgoKCi0tIFRoZSBkZWZhdWx0IHNlY3VyaXR5IG1vZGVsIG9mIEFPUyBwcm9jZXNzZXM6IFRydXN0IGFsbCBhbmQgKm9ubHkqIHRob3NlCgotLSBvbiB0aGUgYW8uYXV0aG9yaXRpZXMgbGlzdC4KCmZ1bmN0aW9uIGFvLmlzVHJ1c3RlZChtc2cpCgogICAgZm9yIF8sIGF1dGhvcml0eSBpbiBpcGFpcnMoYW8uYXV0aG9yaXRpZXMpIGRvCgogICAgICAgIGlmIG1zZy5Gcm9tID09IGF1dGhvcml0eSB0aGVuIHJldHVybiB0cnVlIGVuZAoKICAgICAgICBpZiBtc2cuT3duZXIgPT0gYXV0aG9yaXR5IHRoZW4gcmV0dXJuIHRydWUgZW5kCgogICAgZW5kCgogICAgcmV0dXJuIGZhbHNlCgplbmQKCgoKZnVuY3Rpb24gYW8ucmVzdWx0KHJlc3VsdCkKCiAgICAtLSBpZiBlcnJvciB0aGVuIG9ubHkgc2VuZCB0aGUgRXJyb3IgdG8gQ1UKCiAgICBpZiBhby5vdXRib3guRXJyb3Igb3IgcmVzdWx0LkVycm9yIHRoZW4KCiAgICAgICAgcmV0dXJuIHtFcnJvciA9IHJlc3VsdC5FcnJvciBvciBhby5vdXRib3guRXJyb3J9CgogICAgZW5kCgogICAgcmV0dXJuIHsKCiAgICAgICAgT3V0cHV0ID0gcmVzdWx0Lk91dHB1dCBvciBhby5vdXRib3guT3V0cHV0LAoKICAgICAgICBNZXNzYWdlcyA9IGFvLm91dGJveC5NZXNzYWdlcywKCiAgICAgICAgU3Bhd25zID0gYW8ub3V0Ym94LlNwYXducywKCiAgICAgICAgQXNzaWdubWVudHMgPSBhby5vdXRib3guQXNzaWdubWVudHMKCiAgICB9CgplbmQKCgoKcmV0dXJuIGFvCgAAAAAAAABsb2NhbCB1dGlscyA9IHsgX3ZlcnNpb24gPSAiMC4wLjUiIH0KCgoKZnVuY3Rpb24gdXRpbHMubWF0Y2hlc1BhdHRlcm4ocGF0dGVybiwgdmFsdWUsIG1zZykKCiAgLS0gSWYgdGhlIGtleSBpcyBub3QgaW4gdGhlIG1lc3NhZ2UsIHRoZW4gaXQgZG9lcyBub3QgbWF0Y2gKCiAgaWYobm90IHBhdHRlcm4pIHRoZW4KCiAgICByZXR1cm4gZmFsc2UKCiAgZW5kCgogIC0tIGlmIHRoZSBwYXR0ZXJuTWF0Y2hTcGVjIGlzIGEgd2lsZGNhcmQsIHRoZW4gaXQgYWx3YXlzIG1hdGNoZXMKCiAgaWYgcGF0dGVybiA9PSAnXycgdGhlbgoKICAgIHJldHVybiB0cnVlCgogIGVuZAoKICAtLSBpZiB0aGUgcGF0dGVybk1hdGNoU3BlYyBpcyBhIGZ1bmN0aW9uLCB0aGVuIGl0IGlzIGV4ZWN1dGVkIG9uIHRoZSB0YWcgdmFsdWUKCiAgaWYgdHlwZShwYXR0ZXJuKSA9PSAiZnVuY3Rpb24iIHRoZW4KCiAgICBpZiBwYXR0ZXJuKHZhbHVlLCBtc2cpIHRoZW4KCiAgICAgIHJldHVybiB0cnVlCgogICAgZWxzZQoKICAgICAgcmV0dXJuIGZhbHNlCgogICAgZW5kCgogIGVuZAoKICAKCiAgLS0gaWYgdGhlIHBhdHRlcm5NYXRjaFNwZWMgaXMgYSBzdHJpbmcsIGNoZWNrIGl0IGZvciBzcGVjaWFsIHN5bWJvbHMgKGxlc3MgYC1gIGFsb25lKQoKICAtLSBhbmQgZXhhY3Qgc3RyaW5nIG1hdGNoIG1vZGUKCiAgaWYgKHR5cGUocGF0dGVybikgPT0gJ3N0cmluZycpIHRoZW4KCiAgICBpZiBzdHJpbmcubWF0Y2gocGF0dGVybiwgIlslXiUkJSglKSUlJS4lWyVdJSolKyU/XSIpIHRoZW4KCiAgICAgIGlmIHN0cmluZy5tYXRjaCh2YWx1ZSwgcGF0dGVybikgdGhlbgoKICAgICAgICByZXR1cm4gdHJ1ZQoKICAgICAgZW5kCgogICAgZWxzZQoKICAgICAgaWYgdmFsdWUgPT0gcGF0dGVybiB0aGVuCgogICAgICAgIHJldHVybiB0cnVlCgogICAgICBlbmQKCiAgICBlbmQKCiAgZW5kCgoKCiAgLS0gaWYgdGhlIHBhdHRlcm4gaXMgYSB0YWJsZSwgcmVjdXJzaXZlbHkgY2hlY2sgaWYgYW55IG9mIGl0cyBzdWItcGF0dGVybnMgbWF0Y2gKCiAgaWYgdHlwZShwYXR0ZXJuKSA9PSAndGFibGUnIHRoZW4KCiAgICBmb3IgXywgc3ViUGF0dGVybiBpbiBwYWlycyhwYXR0ZXJuKSBkbwoKICAgICAgaWYgdXRpbHMubWF0Y2hlc1BhdHRlcm4oc3ViUGF0dGVybiwgdmFsdWUsIG1zZykgdGhlbgoKICAgICAgICByZXR1cm4gdHJ1ZQoKICAgICAgZW5kCgogICAgZW5kCgogIGVuZAoKCgogIHJldHVybiBmYWxzZQoKZW5kCgoKCmZ1bmN0aW9uIHV0aWxzLm1hdGNoZXNTcGVjKG1zZywgc3BlYykKCiAgaWYgdHlwZShzcGVjKSA9PSAnZnVuY3Rpb24nIHRoZW4KCiAgICByZXR1cm4gc3BlYyhtc2cpCgogIC0tIElmIHRoZSBzcGVjIGlzIGEgdGFibGUsIHN0ZXAgdGhyb3VnaCBldmVyeSBrZXkvdmFsdWUgcGFpciBpbiB0aGUgcGF0dGVybiBhbmQgY2hlY2sgaWYgdGhlIG1zZyBtYXRjaGVzCgogIC0tIFN1cHBvcnRlZCBwYXR0ZXJuIHR5cGVzOgoKICAtLSAgIC0gRXhhY3Qgc3RyaW5nIG1hdGNoCgogIC0tICAgLSBMdWEgZ21hdGNoIHN0cmluZwoKICAtLSAgIC0gJ18nICh3aWxkY2FyZDogTWVzc2FnZSBoYXMgdGFnLCBidXQgY2FuIGJlIGFueSB2YWx1ZSkKCiAgLS0gICAtIEZ1bmN0aW9uIGV4ZWN1dGlvbiBvbiB0aGUgdGFnLCBvcHRpb25hbGx5IHVzaW5nIHRoZSBtc2cgYXMgdGhlIHNlY29uZCBhcmd1bWVudAoKICAtLSAgIC0gVGFibGUgb2YgcGF0dGVybnMsIHdoZXJlIEFOWSBvZiB0aGUgc3ViLXBhdHRlcm5zIG1hdGNoaW5nIHRoZSB0YWcgd2lsbCByZXN1bHQgaW4gYSBtYXRjaAoKICBlbmQKCiAgaWYgdHlwZShzcGVjKSA9PSAndGFibGUnIHRoZW4KCiAgICBmb3Iga2V5LCBwYXR0ZXJuIGluIHBhaXJzKHNwZWMpIGRvCgogICAgICBpZiBub3QgbXNnW2tleV0gdGhlbgoKICAgICAgICByZXR1cm4gZmFsc2UKCiAgICAgIGVuZAoKICAgICAgaWYgbm90IHV0aWxzLm1hdGNoZXNQYXR0ZXJuKHBhdHRlcm4sIG1zZ1trZXldLCBtc2cpIHRoZW4KCiAgICAgICAgcmV0dXJuIGZhbHNlCgogICAgICBlbmQKCiAgICBlbmQKCiAgICByZXR1cm4gdHJ1ZQoKICBlbmQKCiAgaWYgdHlwZShzcGVjKSA9PSAnc3RyaW5nJyBhbmQgbXNnLkFjdGlvbiBhbmQgbXNnLkFjdGlvbiA9PSBzcGVjIHRoZW4KCiAgICByZXR1cm4gdHJ1ZQoKICBlbmQKCiAgcmV0dXJuIGZhbHNlCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gaXNBcnJheSh0YWJsZSkKCiAgaWYgdHlwZSh0YWJsZSkgPT0gInRhYmxlIiB0aGVuCgogICAgICBsb2NhbCBtYXhJbmRleCA9IDAKCiAgICAgIGZvciBrLCB2IGluIHBhaXJzKHRhYmxlKSBkbwoKICAgICAgICAgIGlmIHR5cGUoaykgfj0gIm51bWJlciIgb3IgayA8IDEgb3IgbWF0aC5mbG9vcihrKSB+PSBrIHRoZW4KCiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIC0tIElmIHRoZXJlJ3MgYSBub24taW50ZWdlciBrZXksIGl0J3Mgbm90IGFuIGFycmF5CgogICAgICAgICAgZW5kCgogICAgICAgICAgbWF4SW5kZXggPSBtYXRoLm1heChtYXhJbmRleCwgaykKCiAgICAgIGVuZAoKICAgICAgLS0gSWYgdGhlIGhpZ2hlc3QgbnVtZXJpYyBpbmRleCBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzLCBpdCdzIGFuIGFycmF5CgogICAgICByZXR1cm4gbWF4SW5kZXggPT0gI3RhYmxlCgogIGVuZAoKICByZXR1cm4gZmFsc2UKCmVuZAoKCgotLSBAcGFyYW0ge2Z1bmN0aW9ufSBmbgoKLS0gQHBhcmFtIHtudW1iZXJ9IGFyaXR5Cgp1dGlscy5jdXJyeSA9IGZ1bmN0aW9uIChmbiwgYXJpdHkpCgogIGFzc2VydCh0eXBlKGZuKSA9PSAiZnVuY3Rpb24iLCAiZnVuY3Rpb24gaXMgcmVxdWlyZWQgYXMgZmlyc3QgYXJndW1lbnQiKQoKICBhcml0eSA9IGFyaXR5IG9yIGRlYnVnLmdldGluZm8oZm4sICJ1IikubnBhcmFtcwoKICBpZiBhcml0eSA8IDIgdGhlbiByZXR1cm4gZm4gZW5kCgoKCiAgcmV0dXJuIGZ1bmN0aW9uICguLi4pCgogICAgbG9jYWwgYXJncyA9IHsuLi59CgoKCiAgICBpZiAjYXJncyA+PSBhcml0eSB0aGVuCgogICAgICByZXR1cm4gZm4odGFibGUudW5wYWNrKGFyZ3MpKQoKICAgIGVsc2UKCiAgICAgIHJldHVybiB1dGlscy5jdXJyeShmdW5jdGlvbiAoLi4uKQoKICAgICAgICByZXR1cm4gZm4odGFibGUudW5wYWNrKGFyZ3MpLCAgLi4uKQoKICAgICAgZW5kLCBhcml0eSAtICNhcmdzKQoKICAgIGVuZAoKICBlbmQKCmVuZAoKCgotLS0gQ29uY2F0IHR3byBBcnJheSBUYWJsZXMuCgotLSBAcGFyYW0ge3RhYmxlPEFycmF5Pn0gYQoKLS0gQHBhcmFtIHt0YWJsZTxBcnJheT59IGIKCnV0aWxzLmNvbmNhdCA9IHV0aWxzLmN1cnJ5KGZ1bmN0aW9uIChhLCBiKQoKICBhc3NlcnQodHlwZShhKSA9PSAidGFibGUiLCAiZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGFibGUgdGhhdCBpcyBhbiBhcnJheSIpCgogIGFzc2VydCh0eXBlKGIpID09ICJ0YWJsZSIsICJzZWNvbmQgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGFibGUgdGhhdCBpcyBhbiBhcnJheSIpCgogIGFzc2VydChpc0FycmF5KGEpLCAiZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGFibGUiKQoKICBhc3NlcnQoaXNBcnJheShiKSwgInNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYSB0YWJsZSIpCgoKCiAgbG9jYWwgcmVzdWx0ID0ge30KCiAgZm9yIGkgPSAxLCAjYSBkbwoKICAgICAgcmVzdWx0WyNyZXN1bHQgKyAxXSA9IGFbaV0KCiAgZW5kCgogIGZvciBpID0gMSwgI2IgZG8KCiAgICAgIHJlc3VsdFsjcmVzdWx0ICsgMV0gPSBiW2ldCgogIGVuZAoKICByZXR1cm4gcmVzdWx0CgogIC0tcmV0dXJuIHRhYmxlLmNvbmNhdChhLGIpCgplbmQsIDIpCgoKCi0tLSByZWR1Y2UgYXBwbGllcyBhIGZ1bmN0aW9uIHRvIGEgdGFibGUKCi0tIEBwYXJhbSB7ZnVuY3Rpb259IGZuCgotLSBAcGFyYW0ge2FueX0gaW5pdGlhbAoKLS0gQHBhcmFtIHt0YWJsZTxBcnJheT59IHQKCnV0aWxzLnJlZHVjZSA9IHV0aWxzLmN1cnJ5KGZ1bmN0aW9uIChmbiwgaW5pdGlhbCwgdCkKCiAgYXNzZXJ0KHR5cGUoZm4pID09ICJmdW5jdGlvbiIsICJmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgKHJlc3VsdCwgdmFsdWUsIGtleSkiKQoKICBhc3NlcnQodHlwZSh0KSA9PSAidGFibGUiIGFuZCBpc0FycmF5KHQpLCAidGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGFibGUgdGhhdCBpcyBhbiBhcnJheSIpCgogIGxvY2FsIHJlc3VsdCA9IGluaXRpYWwKCiAgZm9yIGssIHYgaW4gcGFpcnModCkgZG8KCiAgICBpZiByZXN1bHQgPT0gbmlsIHRoZW4KCiAgICAgIHJlc3VsdCA9IHYKCiAgICBlbHNlCgogICAgICByZXN1bHQgPSBmbihyZXN1bHQsIHYsIGspCgogICAgZW5kCgogIGVuZAoKICByZXR1cm4gcmVzdWx0CgplbmQsIDMpCgoKCi0tIEBwYXJhbSB7ZnVuY3Rpb259IGZuCgotLSBAcGFyYW0ge3RhYmxlPEFycmF5Pn0gZGF0YQoKdXRpbHMubWFwID0gdXRpbHMuY3VycnkoZnVuY3Rpb24gKGZuLCBkYXRhKQoKICBhc3NlcnQodHlwZShmbikgPT0gImZ1bmN0aW9uIiwgImZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHVuYXJ5IGZ1bmN0aW9uIikKCiAgYXNzZXJ0KHR5cGUoZGF0YSkgPT0gInRhYmxlIiBhbmQgaXNBcnJheShkYXRhKSwgInNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gQXJyYXkiKQoKCgogIGxvY2FsIGZ1bmN0aW9uIG1hcCAocmVzdWx0LCB2LCBrKQoKICAgIHJlc3VsdFtrXSA9IGZuKHYsIGspCgogICAgcmV0dXJuIHJlc3VsdAoKICBlbmQKCgoKICByZXR1cm4gdXRpbHMucmVkdWNlKG1hcCwge30sIGRhdGEpCgplbmQsIDIpCgoKCi0tIEBwYXJhbSB7ZnVuY3Rpb259IGZuCgotLSBAcGFyYW0ge3RhYmxlPEFycmF5Pn0gZGF0YQoKdXRpbHMuZmlsdGVyID0gdXRpbHMuY3VycnkoZnVuY3Rpb24gKGZuLCBkYXRhKQoKICBhc3NlcnQodHlwZShmbikgPT0gImZ1bmN0aW9uIiwgImZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHVuYXJ5IGZ1bmN0aW9uIikKCiAgYXNzZXJ0KHR5cGUoZGF0YSkgPT0gInRhYmxlIiBhbmQgaXNBcnJheShkYXRhKSwgInNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gQXJyYXkiKQoKCgogIGxvY2FsIGZ1bmN0aW9uIGZpbHRlciAocmVzdWx0LCB2LCBfaykKCiAgICBpZiBmbih2KSB0aGVuCgogICAgICB0YWJsZS5pbnNlcnQocmVzdWx0LCB2KQoKICAgIGVuZAoKICAgIHJldHVybiByZXN1bHQKCiAgZW5kCgoKCiAgcmV0dXJuIHV0aWxzLnJlZHVjZShmaWx0ZXIse30sIGRhdGEpCgplbmQsIDIpCgoKCi0tIEBwYXJhbSB7ZnVuY3Rpb259IGZuCgotLSBAcGFyYW0ge3RhYmxlPEFycmF5Pn0gdAoKdXRpbHMuZmluZCA9IHV0aWxzLmN1cnJ5KGZ1bmN0aW9uIChmbiwgdCkKCiAgYXNzZXJ0KHR5cGUoZm4pID09ICJmdW5jdGlvbiIsICJmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSB1bmFyeSBmdW5jdGlvbiIpCgogIGFzc2VydCh0eXBlKHQpID09ICJ0YWJsZSIsICJzZWNvbmQgYXJndW1lbnQgc2hvdWxkIGJlIGEgdGFibGUgdGhhdCBpcyBhbiBhcnJheSIpCgogIGZvciBfLCB2IGluIHBhaXJzKHQpIGRvCgogICAgaWYgZm4odikgdGhlbgoKICAgICAgcmV0dXJuIHYKCiAgICBlbmQKCiAgZW5kCgplbmQsIDIpCgoKCi0tIEBwYXJhbSB7c3RyaW5nfSBwcm9wTmFtZQoKLS0gQHBhcmFtIHtzdHJpbmd9IHZhbHVlIAoKLS0gQHBhcmFtIHt0YWJsZX0gb2JqZWN0Cgp1dGlscy5wcm9wRXEgPSB1dGlscy5jdXJyeShmdW5jdGlvbiAocHJvcE5hbWUsIHZhbHVlLCBvYmplY3QpCgogIGFzc2VydCh0eXBlKHByb3BOYW1lKSA9PSAic3RyaW5nIiwgImZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyIpCgogIC0tIGFzc2VydCh0eXBlKHZhbHVlKSA9PSAic3RyaW5nIiwgInNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmciKQoKICBhc3NlcnQodHlwZShvYmplY3QpID09ICJ0YWJsZSIsICJ0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgYSB0YWJsZTxvYmplY3Q+IikKCiAgCgogIHJldHVybiBvYmplY3RbcHJvcE5hbWVdID09IHZhbHVlCgplbmQsIDMpCgoKCi0tIEBwYXJhbSB7dGFibGU8QXJyYXk+fSBkYXRhCgp1dGlscy5yZXZlcnNlID0gZnVuY3Rpb24gKGRhdGEpCgogIGFzc2VydCh0eXBlKGRhdGEpID09ICJ0YWJsZSIsICJhcmd1bWVudCBuZWVkcyB0byBiZSBhIHRhYmxlIHRoYXQgaXMgYW4gYXJyYXkiKQoKICByZXR1cm4gdXRpbHMucmVkdWNlKAoKICAgIGZ1bmN0aW9uIChyZXN1bHQsIHYsIGkpCgogICAgICByZXN1bHRbI2RhdGEgLSBpICsgMV0gPSB2CgogICAgICByZXR1cm4gcmVzdWx0CgogICAgZW5kLAoKICAgIHt9LAoKICAgIGRhdGEKCiAgKQoKZW5kCgoKCi0tIEBwYXJhbSB7ZnVuY3Rpb259IC4uLiAKCnV0aWxzLmNvbXBvc2UgPSB1dGlscy5jdXJyeShmdW5jdGlvbiAoLi4uKQoKICBsb2NhbCBtdXRhdGlvbnMgPSB1dGlscy5yZXZlcnNlKHsuLi59KQoKCgogIHJldHVybiBmdW5jdGlvbiAodikKCiAgICBsb2NhbCByZXN1bHQgPSB2CgogICAgZm9yIF8sIGZuIGluIHBhaXJzKG11dGF0aW9ucykgZG8KCiAgICAgIGFzc2VydCh0eXBlKGZuKSA9PSAiZnVuY3Rpb24iLCAiZWFjaCBhcmd1bWVudCBuZWVkcyB0byBiZSBhIGZ1bmN0aW9uIikKCiAgICAgIHJlc3VsdCA9IGZuKHJlc3VsdCkKCiAgICBlbmQKCiAgICByZXR1cm4gcmVzdWx0CgogIGVuZAoKZW5kLCAyKQoKCgotLSBAcGFyYW0ge3N0cmluZ30gcHJvcE5hbWUKCi0tIEBwYXJhbSB7dGFibGV9IG9iamVjdAoKdXRpbHMucHJvcCA9IHV0aWxzLmN1cnJ5KGZ1bmN0aW9uIChwcm9wTmFtZSwgb2JqZWN0KSAKCiAgcmV0dXJuIG9iamVjdFtwcm9wTmFtZV0KCmVuZCwgMikKCgoKLS0gQHBhcmFtIHthbnl9IHZhbAoKLS0gQHBhcmFtIHt0YWJsZTxBcnJheT59IHQKCnV0aWxzLmluY2x1ZGVzID0gdXRpbHMuY3VycnkoZnVuY3Rpb24gKHZhbCwgdCkKCiAgYXNzZXJ0KHR5cGUodCkgPT0gInRhYmxlIiwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIGEgdGFibGUiKQoKICByZXR1cm4gdXRpbHMuZmluZChmdW5jdGlvbiAodikgcmV0dXJuIHYgPT0gdmFsIGVuZCwgdCkgfj0gbmlsCgplbmQsIDIpCgoKCi0tIEBwYXJhbSB7dGFibGV9IHQKCnV0aWxzLmtleXMgPSBmdW5jdGlvbiAodCkKCiAgYXNzZXJ0KHR5cGUodCkgPT0gInRhYmxlIiwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIGEgdGFibGUiKQoKICBsb2NhbCBrZXlzID0ge30KCiAgZm9yIGtleSBpbiBwYWlycyh0KSBkbwoKICAgIHRhYmxlLmluc2VydChrZXlzLCBrZXkpCgogIGVuZAoKICByZXR1cm4ga2V5cwoKZW5kCgoKCi0tIEBwYXJhbSB7dGFibGV9IHQKCnV0aWxzLnZhbHVlcyA9IGZ1bmN0aW9uICh0KQoKICBhc3NlcnQodHlwZSh0KSA9PSAidGFibGUiLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgYSB0YWJsZSIpCgogIGxvY2FsIHZhbHVlcyA9IHt9CgogIGZvciBfLCB2YWx1ZSBpbiBwYWlycyh0KSBkbwoKICAgIHRhYmxlLmluc2VydCh2YWx1ZXMsIHZhbHVlKQoKICBlbmQKCiAgcmV0dXJuIHZhbHVlcwoKZW5kCgoKCnJldHVybiB1dGlscwoAQvDWAgujlAMtLVtbLS0KCmx1YS1iaW50IC0gdjAuNS4xIC0gMjYvSnVuLzIwMjMKCkVkdWFyZG8gQmFydCAtIGVkdWI0cnRAZ21haWwuY29tCgpodHRwczovL2dpdGh1Yi5jb20vZWR1YmFydC9sdWEtYmludAoKCgpTbWFsbCBwb3J0YWJsZSBhcmJpdHJhcnktcHJlY2lzaW9uIGludGVnZXIgYXJpdGhtZXRpYyBsaWJyYXJ5IGluIHB1cmUgTHVhIGZvcgoKY29tcHV0aW5nIHdpdGggbGFyZ2UgaW50ZWdlcnMuCgoKCkRpZmZlcmVudCBmcm9tIG1vc3QgYXJiaXRyYXJ5LXByZWNpc2lvbiBpbnRlZ2VyIGxpYnJhcmllcyBpbiBwdXJlIEx1YSBvdXQgdGhlcmUgdGhpcyBvbmUKCnVzZXMgYW4gYXJyYXkgb2YgbHVhIGludGVnZXJzIGFzIHVuZGVybHlpbmcgZGF0YS10eXBlIGluIGl0cyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mCgp1c2luZyBzdHJpbmdzIG9yIGxhcmdlIHRhYmxlcywgdGhpcyBtYWtlIGl0IGVmZmljaWVudCBmb3Igd29ya2luZyB3aXRoIGZpeGVkIHdpZHRoIGludGVnZXJzCgphbmQgdG8gbWFrZSBiaXR3aXNlIG9wZXJhdGlvbnMuCgoKCiMjIERlc2lnbiBnb2FscwoKCgpUaGUgbWFpbiBkZXNpZ24gZ29hbCBvZiB0aGlzIGxpYnJhcnkgaXMgdG8gYmUgc21hbGwsIGNvcnJlY3QsIHNlbGYgY29udGFpbmVkIGFuZCB1c2UgZmV3CgpyZXNvdXJjZXMgd2hpbGUgcmV0YWluaW5nIGFjY2VwdGFibGUgcGVyZm9ybWFuY2UgYW5kIGZlYXR1cmUgY29tcGxldGVuZXNzLgoKCgpUaGUgbGlicmFyeSBpcyBkZXNpZ25lZCB0byBmb2xsb3cgcmVjZW50IEx1YSBpbnRlZ2VyIHNlbWFudGljcywgdGhpcyBtZWFucyB0aGF0CgppbnRlZ2VyIG92ZXJmbG93IHdhcnBzIGFyb3VuZCwKCnNpZ25lZCBpbnRlZ2VycyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdHdvLWNvbXBsZW1lbnQgYXJpdGhtZXRpYyBydWxlcywKCmludGVnZXIgZGl2aXNpb24gb3BlcmF0aW9ucyByb3VuZHMgdG93YXJkcyBtaW51cyBpbmZpbml0eSwKCmFueSBtaXhlZCBvcGVyYXRpb25zIHdpdGggZmxvYXQgbnVtYmVycyBwcm9tb3RlcyB0aGUgdmFsdWUgdG8gYSBmbG9hdCwKCmFuZCB0aGUgdXN1YWwgZGl2aXNpb24vcG93ZXIgb3BlcmF0aW9uIGFsd2F5cyBwcm9tb3RlcyB0byBmbG9hdHMuCgoKClRoZSBsaWJyYXJ5IGlzIGRlc2lnbmVkIHRvIGJlIHBvc3NpYmxlIHRvIHdvcmsgd2l0aCBvbmx5IHVuc2lnbmVkIGludGVnZXIgYXJpdGhtZXRpYwoKd2hlbiB1c2luZyB0aGUgcHJvcGVyIG1ldGhvZHMuCgoKCkFsbCB0aGUgbHVhIGFyaXRobWV0aWMgb3BlcmF0b3JzICgrLCAtLCAqLCAvLywgLywgJSkgYW5kIGJpdHdpc2Ugb3BlcmF0b3JzICgmLCB8LCB+LCA8PCwgPj4pCgphcmUgaW1wbGVtZW50ZWQgYXMgbWV0YW1ldGhvZHMuCgoKClRoZSBpbnRlZ2VyIHNpemUgbXVzdCBiZSBmaXhlZCBpbiBhZHZhbmNlIGFuZCB0aGUgbGlicmFyeSBpcyBkZXNpZ25lZCB0byBiZSBtb3JlIGVmZmljaWVudCB3aGVuCgp3b3JraW5nIHdpdGggaW50ZWdlcnMgb2Ygc2l6ZXMgYmV0d2VlbiA2NC00MDk2IGJpdHMuIElmIHlvdSBuZWVkIHRvIHdvcmsgd2l0aCByZWFsbHkgaHVnZSBudW1iZXJzCgp3aXRob3V0IHNpemUgcmVzdHJpY3Rpb25zIHRoZW4gdXNlIGFub3RoZXIgbGlicmFyeS4gVGhpcyBjaG9pY2UgaGFzIGJlZW4gbWFkZSB0byBoYXZlIG1vcmUgZWZmaWNpZW5jeQoKaW4gdGhhdCBzcGVjaWZpYyBzaXplIHJhbmdlLgoKCgojIyBVc2FnZQoKCgpGaXJzdCBvbiB5b3Ugc2hvdWxkIHJlcXVpcmUgdGhlIGJpbnQgZmlsZSBpbmNsdWRpbmcgaG93IG1hbnkgYml0cyB0aGUgYmludCBtb2R1bGUgd2lsbCB3b3JrIHdpdGgsCgpieSBjYWxsaW5nIHRoZSByZXR1cm5lZCBmdW5jdGlvbiBmcm9tIHRoZSByZXF1aXJlLCBmb3IgZXhhbXBsZToKCgoKYGBgbHVhCgpsb2NhbCBiaW50ID0gcmVxdWlyZSAnYmludCcoMTAyNCkKCmBgYAoKCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgYXJndW1lbnRzIHNlZSBAe25ld21vZHVsZX0uCgpUaGVuIHdoZW4geW91IG5lZWQgY3JlYXRlIGEgYmludCwgeW91IGNhbiB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgoKCgoqIEB7YmludC5mcm9tdWludGVnZXJ9IChjb252ZXJ0IGZyb20gbHVhIGludGVnZXJzLCBidXQgcmVhZCBhcyB1bnNpZ25lZCBpbnRlZ2VyKQoKKiBAe2JpbnQuZnJvbWludGVnZXJ9IChjb252ZXJ0IGZyb20gbHVhIGludGVnZXJzLCBwcmVzZXJ2aW5nIHRoZSBzaWduKQoKKiBAe2JpbnQuZnJvbWJhc2V9IChjb252ZXJ0IGZyb20gYXJiaXRyYXJ5IGJhc2VzLCBsaWtlIGhleGFkZWNpbWFsKQoKKiBAe2JpbnQuZnJvbXN0cmluZ30gKGNvbnZlcnQgZnJvbSBhcmJpdHJhcnkgc3RyaW5nLCBzdXBwb3J0IGJpbmFyeS9oZXhhZGVjaW1hbC9kZWNpbWFsKQoKKiBAe2JpbnQudHJ1bmN9IChjb252ZXJ0IGZyb20gbHVhIG51bWJlcnMsIHRydW5jYXRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCkKCiogQHtiaW50Lm5ld30gKGNvbnZlcnQgZnJvbSBhbnl0aGluZywgYXNzZXJ0cyBvbiBpbnZhbGlkIGludGVnZXJzKQoKKiBAe2JpbnQudG9iaW50fSAoY29udmVydCBmcm9tIGFueXRoaW5nLCByZXR1cm5zIG5pbCBvbiBpbnZhbGlkIGludGVnZXJzKQoKKiBAe2JpbnQucGFyc2V9IChjb252ZXJ0IGZyb20gYW55dGhpbmcsIHJldHVybnMgYSBsdWEgbnVtYmVyIGFzIGZhbGxiYWNrKQoKKiBAe2JpbnQuemVyb30KCiogQHtiaW50Lm9uZX0KCiogYGJpbnRgCgoKCllvdSBjYW4gYWxzbyBjYWxsIGBiaW50YCBhcyBpdCBpcyBhbiBhbGlhcyB0byBgYmludC5uZXdgLgoKSW4gZG91YnQgdXNlIEB7YmludC5uZXd9IHRvIGNyZWF0ZSBhIG5ldyBiaW50LgoKCgpUaGVuIHlvdSBjYW4gdXNlIGFsbCB0aGUgdXN1YWwgbHVhIG51bWVyaWMgb3BlcmF0aW9ucyBvbiBpdCwKCmFsbCB0aGUgYXJpdGhtZXRpYyBtZXRhbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQuCgpXaGVuIHlvdSBhcmUgZG9uZSBjb21wdXRpbmcgYW5kIG5lZWQgdG8gZ2V0IHRoZSByZXN1bHQsCgpnZXQgdGhlIG91dHB1dCBmcm9tIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKCgoKKiBAe2JpbnQudG91aW50ZWdlcn0gKGNvbnZlcnQgdG8gYSBsdWEgaW50ZWdlciwgd3JhcHMgYXJvdW5kIGFzIGFuIHVuc2lnbmVkIGludGVnZXIpCgoqIEB7YmludC50b2ludGVnZXJ9IChjb252ZXJ0IHRvIGEgbHVhIGludGVnZXIsIHdyYXBzIGFyb3VuZCwgcHJlc2VydmVzIHRoZSBzaWduKQoKKiBAe2JpbnQudG9udW1iZXJ9IChjb252ZXJ0IHRvIGx1YSBmbG9hdCwgbG9zaW5nIHByZWNpc2lvbikKCiogQHtiaW50LnRvYmFzZX0gKGNvbnZlcnQgdG8gYSBzdHJpbmcgaW4gYW55IGJhc2UpCgoqIEB7YmludC5fX3Rvc3RyaW5nfSAoY29udmVydCB0byBhIHN0cmluZyBpbiBiYXNlIDEwKQoKCgpUbyBvdXRwdXQgYSB2ZXJ5IGxhcmdlIGludGVnZXIgd2l0aCBubyBsb3NzIHlvdSBwcm9iYWJseSB3YW50IHRvIHVzZSBAe2JpbnQudG9iYXNlfQoKb3IgY2FsbCBgdG9zdHJpbmdgIHRvIGdldCBhIHN0cmluZyByZXByZXNlbnRhdGlvbi4KCgoKIyMgUHJlY2F1dGlvbnMKCgoKQWxsIGxpYnJhcnkgZnVuY3Rpb25zIGNhbiBiZSBtaXhlZCB3aXRoIGx1YSBudW1iZXJzLAoKdGhpcyBtYWtlcyBlYXN5IHRvIG1peCBvcGVyYXRpb25zIGJldHdlZW4gYmludHMgYW5kIGx1YSBudW1iZXJzLAoKaG93ZXZlciB0aGUgdXNlciBzaG91bGQgdGFrZSBjYXJlIGluIHNvbWUgc2l0dWF0aW9uczoKCgoKKiBEb24ndCBtaXggaW50ZWdlcnMgYW5kIGZsb2F0IG9wZXJhdGlvbnMgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIGludGVnZXJzIG9ubHkuCgoqIERvbid0IHVzZSB0aGUgcmVndWxhciBlcXVhbCBvcGVyYXRvciAoJz09JykgdG8gY29tcGFyZSB2YWx1ZXMgZnJvbSB0aGlzIGxpYnJhcnksCgp1bmxlc3MgeW91IGtub3cgaW4gYWR2YW5jZSB0aGF0IGJvdGggdmFsdWVzIGFyZSBvZiB0aGUgc2FtZSBwcmltaXRpdmUgdHlwZSwKCm90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UsIHVzZSBAe2JpbnQuZXF9IHRvIGJlIHNhZmUuCgoqIERvbid0IHBhc3MgZnJhY3Rpb25hbCBudW1iZXJzIHRvIGZ1bmN0aW9ucyB0aGF0IGFuIGludGVnZXIgaXMgZXhwZWN0ZWQKCiogRG9uJ3QgbWl4IG9wZXJhdGlvbnMgYmV0d2VlbiBiaW50IGNsYXNzZXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMgYXMgdGhpcyBpcyBub3Qgc3VwcG9ydGVkLCB0aGlzCgp3aWxsIHRocm93IGFzc2VydGlvbnMuCgoqIFJlbWVtYmVyIHRoYXQgY2FzdGluZyBiYWNrIHRvIGx1YSBpbnRlZ2VycyBvciBudW1iZXJzIHByZWNpc2lvbiBjYW4gYmUgbG9zdC4KCiogRm9yIGRpdmlkaW5nIHdoaWxlIHByZXNlcnZpbmcgaW50ZWdlcnMgdXNlIHRoZSBAe2JpbnQuX19pZGl2fSAodGhlICcvLycgb3BlcmF0b3IpLgoKKiBGb3IgZG9pbmcgcG93ZXIgb3BlcmF0aW9uIHByZXNlcnZpbmcgaW50ZWdlcnMgdXNlIHRoZSBAe2JpbnQuaXBvd30gZnVuY3Rpb24uCgoqIENvbmZpZ3VyZSB0aGUgcHJvcGVyIGludGVnZXIgc2l6ZSB5b3UgaW50ZW5kIHRvIHdvcmsgd2l0aCwgb3RoZXJ3aXNlIGxhcmdlIGludGVnZXJzIG1heSB3cmFwIGFyb3VuZC4KCgoKXV0KCgoKLS0gUmV0dXJucyBudW1iZXIgb2YgYml0cyBvZiB0aGUgaW50ZXJuYWwgbHVhIGludGVnZXIgdHlwZS4KCmxvY2FsIGZ1bmN0aW9uIGx1YWludGVnZXJfYml0c2l6ZSgpCgogIGxvY2FsIG4sIGkgPSAtMSwgMAoKICByZXBlYXQKCiAgICBuLCBpID0gbiA+PiAxNiwgaSArIDE2CgogIHVudGlsIG49PTAKCiAgcmV0dXJuIGkKCmVuZAoKCgpsb2NhbCBtYXRoX3R5cGUgPSBtYXRoLnR5cGUKCmxvY2FsIG1hdGhfZmxvb3IgPSBtYXRoLmZsb29yCgpsb2NhbCBtYXRoX2FicyA9IG1hdGguYWJzCgpsb2NhbCBtYXRoX2NlaWwgPSBtYXRoLmNlaWwKCmxvY2FsIG1hdGhfbW9kZiA9IG1hdGgubW9kZgoKbG9jYWwgbWF0aF9taW5pbnRlZ2VyID0gbWF0aC5taW5pbnRlZ2VyCgpsb2NhbCBtYXRoX21heGludGVnZXIgPSBtYXRoLm1heGludGVnZXIKCmxvY2FsIG1hdGhfbWF4ID0gbWF0aC5tYXgKCmxvY2FsIG1hdGhfbWluID0gbWF0aC5taW4KCmxvY2FsIHN0cmluZ19mb3JtYXQgPSBzdHJpbmcuZm9ybWF0Cgpsb2NhbCB0YWJsZV9pbnNlcnQgPSB0YWJsZS5pbnNlcnQKCmxvY2FsIHRhYmxlX2NvbmNhdCA9IHRhYmxlLmNvbmNhdAoKbG9jYWwgdGFibGVfdW5wYWNrID0gdGFibGUudW5wYWNrCgoKCmxvY2FsIG1lbW8gPSB7fQoKCgotLS0gQ3JlYXRlIGEgbmV3IGJpbnQgbW9kdWxlIHJlcHJlc2VudGluZyBpbnRlZ2VycyBvZiB0aGUgZGVzaXJlZCBiaXQgc2l6ZS4KCi0tIFRoaXMgaXMgdGhlIHJldHVybmVkIGZ1bmN0aW9uIHdoZW4gYHJlcXVpcmUgJ2JpbnQnYCBpcyBjYWxsZWQuCgotLSBAZnVuY3Rpb24gbmV3bW9kdWxlCgotLSBAcGFyYW0gYml0cyBOdW1iZXIgb2YgYml0cyBmb3IgdGhlIGludGVnZXIgcmVwcmVzZW50YXRpb24sIG11c3QgYmUgbXVsdGlwbGUgb2Ygd29yZGJpdHMgYW5kCgotLSBhdCBsZWFzdCA2NC4KCi0tIEBwYXJhbVtvcHRdIHdvcmRiaXRzIE51bWJlciBvZiB0aGUgYml0cyBmb3IgdGhlIGludGVybmFsIHdvcmQsCgotLSBkZWZhdWx0cyB0byBoYWxmIG9mIEx1YSdzIGludGVnZXIgc2l6ZS4KCmxvY2FsIGZ1bmN0aW9uIG5ld21vZHVsZShiaXRzLCB3b3JkYml0cykKCgoKbG9jYWwgaW50Yml0cyA9IGx1YWludGVnZXJfYml0c2l6ZSgpCgpiaXRzID0gYml0cyBvciAyNTYKCndvcmRiaXRzID0gd29yZGJpdHMgb3IgKGludGJpdHMgLy8gMikKCgoKLS0gTWVtb2l6ZSBiaW50IG1vZHVsZXMKCmxvY2FsIG1lbW9pbmRleCA9IGJpdHMgKiA2NCArIHdvcmRiaXRzCgppZiBtZW1vW21lbW9pbmRleF0gdGhlbgoKICByZXR1cm4gbWVtb1ttZW1vaW5kZXhdCgplbmQKCgoKLS0gVmFsaWRhdGUKCmFzc2VydChiaXRzICUgd29yZGJpdHMgPT0gMCwgJ2JpdHNpemUgaXMgbm90IG11bHRpcGxlIG9mIHdvcmQgYml0c2l6ZScpCgphc3NlcnQoMip3b3JkYml0cyA8PSBpbnRiaXRzLCAnd29yZCBiaXRzaXplIG11c3QgYmUgaGFsZiBvZiB0aGUgbHVhIGludGVnZXIgYml0c2l6ZScpCgphc3NlcnQoYml0cyA+PSA2NCwgJ2JpdHNpemUgbXVzdCBiZSA+PSA2NCcpCgphc3NlcnQod29yZGJpdHMgPj0gOCwgJ3dvcmRiaXRzIG11c3QgYmUgYXQgbGVhc3QgOCcpCgphc3NlcnQoYml0cyAlIDggPT0gMCwgJ2JpdHNpemUgbXVzdCBiZSBtdWx0aXBsZSBvZiA4JykKCgoKLS0gQ3JlYXRlIGJpbnQgbW9kdWxlCgpsb2NhbCBiaW50ID0ge30KCmJpbnQuX19pbmRleCA9IGJpbnQKCgoKLS0tIE51bWJlciBvZiBiaXRzIHJlcHJlc2VudGluZyBhIGJpbnQgaW5zdGFuY2UuCgpiaW50LmJpdHMgPSBiaXRzCgoKCi0tIENvbnN0YW50cyB1c2VkIGludGVybmFsbHkKCmxvY2FsIEJJTlRfQklUUyA9IGJpdHMKCmxvY2FsIEJJTlRfQllURVMgPSBiaXRzIC8vIDgKCmxvY2FsIEJJTlRfV09SREJJVFMgPSB3b3JkYml0cwoKbG9jYWwgQklOVF9TSVpFID0gQklOVF9CSVRTIC8vIEJJTlRfV09SREJJVFMKCmxvY2FsIEJJTlRfV09SRE1BWCA9ICgxIDw8IEJJTlRfV09SREJJVFMpIC0gMQoKbG9jYWwgQklOVF9XT1JETVNCID0gKDEgPDwgKEJJTlRfV09SREJJVFMgLSAxKSkKCmxvY2FsIEJJTlRfTEVQQUNLRk1UID0gJzwnLi4oJ0knLi4od29yZGJpdHMgLy8gOCkpOnJlcChCSU5UX1NJWkUpCgpsb2NhbCBCSU5UX01BVEhNSU5JTlRFR0VSLCBCSU5UX01BVEhNQVhJTlRFR0VSCgpsb2NhbCBCSU5UX01JTklOVEVHRVIKCgoKLS0tIENyZWF0ZSBhIG5ldyBiaW50IHdpdGggMCB2YWx1ZS4KCmZ1bmN0aW9uIGJpbnQuemVybygpCgogIGxvY2FsIHggPSBzZXRtZXRhdGFibGUoe30sIGJpbnQpCgogIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgeFtpXSA9IDAKCiAgZW5kCgogIHJldHVybiB4CgplbmQKCmxvY2FsIGJpbnRfemVybyA9IGJpbnQuemVybwoKCgotLS0gQ3JlYXRlIGEgbmV3IGJpbnQgd2l0aCAxIHZhbHVlLgoKZnVuY3Rpb24gYmludC5vbmUoKQoKICBsb2NhbCB4ID0gc2V0bWV0YXRhYmxlKHt9LCBiaW50KQoKICB4WzFdID0gMQoKICBmb3IgaT0yLEJJTlRfU0laRSBkbwoKICAgIHhbaV0gPSAwCgogIGVuZAoKICByZXR1cm4geAoKZW5kCgpsb2NhbCBiaW50X29uZSA9IGJpbnQub25lCgoKCi0tIENvbnZlcnQgYSB2YWx1ZSB0byBhIGx1YSBpbnRlZ2VyIHdpdGhvdXQgbG9zaW5nIHByZWNpc2lvbi4KCmxvY2FsIGZ1bmN0aW9uIHRvaW50ZWdlcih4KQoKICB4ID0gdG9udW1iZXIoeCkKCiAgbG9jYWwgdHkgPSBtYXRoX3R5cGUoeCkKCiAgaWYgdHkgPT0gJ2Zsb2F0JyB0aGVuCgogICAgbG9jYWwgZmxvb3J4ID0gbWF0aF9mbG9vcih4KQoKICAgIGlmIGZsb29yeCA9PSB4IHRoZW4KCiAgICAgIHggPSBmbG9vcngKCiAgICAgIHR5ID0gbWF0aF90eXBlKHgpCgogICAgZW5kCgogIGVuZAoKICBpZiB0eSA9PSAnaW50ZWdlcicgdGhlbgoKICAgIHJldHVybiB4CgogIGVuZAoKZW5kCgoKCi0tLSBDcmVhdGUgYSBiaW50IGZyb20gYW4gdW5zaWduZWQgaW50ZWdlci4KCi0tIFRyZWF0cyBzaWduZWQgaW50ZWdlcnMgYXMgYW4gdW5zaWduZWQgaW50ZWdlci4KCi0tIEBwYXJhbSB4IEEgdmFsdWUgdG8gaW5pdGlhbGl6ZSBmcm9tIGNvbnZlcnRpYmxlIHRvIGEgbHVhIGludGVnZXIuCgotLSBAcmV0dXJuIEEgbmV3IGJpbnQgb3IgbmlsIGluIGNhc2UgdGhlIGlucHV0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBhbiBpbnRlZ2VyLgoKLS0gQHNlZSBiaW50LmZyb21pbnRlZ2VyCgpmdW5jdGlvbiBiaW50LmZyb211aW50ZWdlcih4KQoKICB4ID0gdG9pbnRlZ2VyKHgpCgogIGlmIHggdGhlbgoKICAgIGlmIHggPT0gMSB0aGVuCgogICAgICByZXR1cm4gYmludF9vbmUoKQoKICAgIGVsc2VpZiB4ID09IDAgdGhlbgoKICAgICAgcmV0dXJuIGJpbnRfemVybygpCgogICAgZW5kCgogICAgbG9jYWwgbiA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgICAgbltpXSA9IHggJiBCSU5UX1dPUkRNQVgKCiAgICAgIHggPSB4ID4+IEJJTlRfV09SREJJVFMKCiAgICBlbmQKCiAgICByZXR1cm4gbgoKICBlbmQKCmVuZAoKbG9jYWwgYmludF9mcm9tdWludGVnZXIgPSBiaW50LmZyb211aW50ZWdlcgoKCgotLS0gQ3JlYXRlIGEgYmludCBmcm9tIGEgc2lnbmVkIGludGVnZXIuCgotLSBAcGFyYW0geCBBIHZhbHVlIHRvIGluaXRpYWxpemUgZnJvbSBjb252ZXJ0aWJsZSB0byBhIGx1YSBpbnRlZ2VyLgoKLS0gQHJldHVybiBBIG5ldyBiaW50IG9yIG5pbCBpbiBjYXNlIHRoZSBpbnB1dCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gaW50ZWdlci4KCi0tIEBzZWUgYmludC5mcm9tdWludGVnZXIKCmZ1bmN0aW9uIGJpbnQuZnJvbWludGVnZXIoeCkKCiAgeCA9IHRvaW50ZWdlcih4KQoKICBpZiB4IHRoZW4KCiAgICBpZiB4ID09IDEgdGhlbgoKICAgICAgcmV0dXJuIGJpbnRfb25lKCkKCiAgICBlbHNlaWYgeCA9PSAwIHRoZW4KCiAgICAgIHJldHVybiBiaW50X3plcm8oKQoKICAgIGVuZAoKICAgIGxvY2FsIG5lZyA9IGZhbHNlCgogICAgaWYgeCA8IDAgdGhlbgoKICAgICAgeCA9IG1hdGhfYWJzKHgpCgogICAgICBuZWcgPSB0cnVlCgogICAgZW5kCgogICAgbG9jYWwgbiA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgICAgbltpXSA9IHggJiBCSU5UX1dPUkRNQVgKCiAgICAgIHggPSB4ID4+IEJJTlRfV09SREJJVFMKCiAgICBlbmQKCiAgICBpZiBuZWcgdGhlbgoKICAgICAgbjpfdW5tKCkKCiAgICBlbmQKCiAgICByZXR1cm4gbgoKICBlbmQKCmVuZAoKbG9jYWwgYmludF9mcm9taW50ZWdlciA9IGJpbnQuZnJvbWludGVnZXIKCgoKbG9jYWwgYmFzZXN0ZXBzID0ge30KCgoKLS0gQ29tcHV0ZSB0aGUgcmVhZCBzdGVwIGZvciBmcm9tYmFzZSBmdW5jdGlvbgoKbG9jYWwgZnVuY3Rpb24gZ2V0YmFzZXN0ZXAoYmFzZSkKCiAgbG9jYWwgc3RlcCA9IGJhc2VzdGVwc1tiYXNlXQoKICBpZiBzdGVwIHRoZW4KCiAgICByZXR1cm4gc3RlcAoKICBlbmQKCiAgc3RlcCA9IDAKCiAgbG9jYWwgZG1heCA9IDEKCiAgbG9jYWwgbGltaXQgPSBtYXRoX21heGludGVnZXIgLy8gYmFzZQoKICByZXBlYXQKCiAgICBzdGVwID0gc3RlcCArIDEKCiAgICBkbWF4ID0gZG1heCAqIGJhc2UKCiAgdW50aWwgZG1heCA+PSBsaW1pdAoKICBiYXNlc3RlcHNbYmFzZV0gPSBzdGVwCgogIHJldHVybiBzdGVwCgplbmQKCgoKLS0gQ29tcHV0ZSBwb3dlciB3aXRoIGx1YSBpbnRlZ2Vycy4KCmxvY2FsIGZ1bmN0aW9uIGlwb3coeSwgeCwgbikKCiAgaWYgbiA9PSAxIHRoZW4KCiAgICByZXR1cm4geSAqIHgKCiAgZWxzZWlmIG4gJiAxID09IDAgdGhlbiAtLWV2ZW4KCiAgICByZXR1cm4gaXBvdyh5LCB4ICogeCwgbiAvLyAyKQoKICBlbmQKCiAgcmV0dXJuIGlwb3coeCAqIHksIHggKiB4LCAobi0xKSAvLyAyKQoKZW5kCgoKCi0tLSBDcmVhdGUgYSBiaW50IGZyb20gYSBzdHJpbmcgb2YgdGhlIGRlc2lyZWQgYmFzZS4KCi0tIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gYmUgY29udmVydGVkIGZyb20sCgotLSBtdXN0IGhhdmUgb25seSBhbHBoYW51bWVyaWMgYW5kICcrLScgY2hhcmFjdGVycy4KCi0tIEBwYXJhbVtvcHRdIGJhc2UgQmFzZSB0aGF0IHRoZSBudW1iZXIgaXMgcmVwcmVzZW50ZWQsIGRlZmF1bHRzIHRvIDEwLgoKLS0gTXVzdCBiZSBhdCBsZWFzdCAyIGFuZCBhdCBtb3N0IDM2LgoKLS0gQHJldHVybiBBIG5ldyBiaW50IG9yIG5pbCBpbiBjYXNlIHRoZSBjb252ZXJzaW9uIGZhaWxlZC4KCmZ1bmN0aW9uIGJpbnQuZnJvbWJhc2UocywgYmFzZSkKCiAgaWYgdHlwZShzKSB+PSAnc3RyaW5nJyB0aGVuCgogICAgcmV0dXJuCgogIGVuZAoKICBiYXNlID0gYmFzZSBvciAxMAoKICBpZiBub3QgKGJhc2UgPj0gMiBhbmQgYmFzZSA8PSAzNikgdGhlbgoKICAgIC0tIG51bWJlciBiYXNlIGlzIHRvbyBsYXJnZQoKICAgIHJldHVybgoKICBlbmQKCiAgbG9jYWwgc3RlcCA9IGdldGJhc2VzdGVwKGJhc2UpCgogIGlmICNzIDwgc3RlcCB0aGVuCgogICAgLS0gc3RyaW5nIGlzIHNtYWxsLCB1c2UgdG9udW1iZXIgKGZhc3RlcikKCiAgICByZXR1cm4gYmludF9mcm9taW50ZWdlcih0b251bWJlcihzLCBiYXNlKSkKCiAgZW5kCgogIGxvY2FsIHNpZ24sIGludCA9IHM6bG93ZXIoKTptYXRjaCgnXihbKy1dPykoJXcrKSQnKQoKICBpZiBub3QgKHNpZ24gYW5kIGludCkgdGhlbgoKICAgIC0tIGludmFsaWQgaW50ZWdlciBzdHJpbmcgcmVwcmVzZW50YXRpb24KCiAgICByZXR1cm4KCiAgZW5kCgogIGxvY2FsIG4gPSBiaW50X3plcm8oKQoKICBmb3IgaT0xLCNpbnQsc3RlcCBkbwoKICAgIGxvY2FsIHBhcnQgPSBpbnQ6c3ViKGksaStzdGVwLTEpCgogICAgbG9jYWwgZCA9IHRvbnVtYmVyKHBhcnQsIGJhc2UpCgogICAgaWYgbm90IGQgdGhlbgoKICAgICAgLS0gaW52YWxpZCBpbnRlZ2VyIHN0cmluZyByZXByZXNlbnRhdGlvbgoKICAgICAgcmV0dXJuCgogICAgZW5kCgogICAgaWYgaSA+IDEgdGhlbgoKICAgICAgbiA9IG4gKiBpcG93KDEsIGJhc2UsICNwYXJ0KQoKICAgIGVuZAoKICAgIGlmIGQgfj0gMCB0aGVuCgogICAgICBuOl9hZGQoZCkKCiAgICBlbmQKCiAgZW5kCgogIGlmIHNpZ24gPT0gJy0nIHRoZW4KCiAgICBuOl91bm0oKQoKICBlbmQKCiAgcmV0dXJuIG4KCmVuZAoKbG9jYWwgYmludF9mcm9tYmFzZSA9IGJpbnQuZnJvbWJhc2UKCgoKLS0tIENyZWF0ZSBhIG5ldyBiaW50IGZyb20gYSBzdHJpbmcuCgotLSBUaGUgc3RyaW5nIGNhbiBieSBhIGRlY2ltYWwgbnVtYmVyLCBiaW5hcnkgbnVtYmVyIHByZWZpeGVkIHdpdGggJzBiJyBvciBoZXhhZGVjaW1hbCBudW1iZXIgcHJlZml4ZWQgd2l0aCAnMHgnLgoKLS0gQHBhcmFtIHMgQSBzdHJpbmcgY29udmVydGlibGUgdG8gYSBiaW50LgoKLS0gQHJldHVybiBBIG5ldyBiaW50IG9yIG5pbCBpbiBjYXNlIHRoZSBjb252ZXJzaW9uIGZhaWxlZC4KCi0tIEBzZWUgYmludC5mcm9tYmFzZQoKZnVuY3Rpb24gYmludC5mcm9tc3RyaW5nKHMpCgogIGlmIHR5cGUocykgfj0gJ3N0cmluZycgdGhlbgoKICAgIHJldHVybgoKICBlbmQKCiAgaWYgczpmaW5kKCdeWystXT9bMC05XSskJykgdGhlbgoKICAgIHJldHVybiBiaW50X2Zyb21iYXNlKHMsIDEwKQoKICBlbHNlaWYgczpmaW5kKCdeWystXT8wW3hYXVswLTlhLWZBLUZdKyQnKSB0aGVuCgogICAgcmV0dXJuIGJpbnRfZnJvbWJhc2Uoczpnc3ViKCcwW3hYXScsICcnLCAxKSwgMTYpCgogIGVsc2VpZiBzOmZpbmQoJ15bKy1dPzBbYkJdWzAxXSskJykgdGhlbgoKICAgIHJldHVybiBiaW50X2Zyb21iYXNlKHM6Z3N1YignMFtiQl0nLCAnJywgMSksIDIpCgogIGVuZAoKZW5kCgpsb2NhbCBiaW50X2Zyb21zdHJpbmcgPSBiaW50LmZyb21zdHJpbmcKCgoKLS0tIENyZWF0ZSBhIG5ldyBiaW50IGZyb20gYSBidWZmZXIgb2YgbGl0dGxlLWVuZGlhbiBieXRlcy4KCi0tIEBwYXJhbSBidWZmZXIgQnVmZmVyIG9mIGJ5dGVzLCBleHRyYSBieXRlcyBhcmUgdHJpbW1lZCBmcm9tIHRoZSByaWdodCwgbWlzc2luZyBieXRlcyBhcmUgcGFkZGVkIHRvIHRoZSByaWdodC4KCi0tIEByYWlzZSBBbiBhc3NlcnQgaXMgdGhyb3duIGluIGNhc2UgYnVmZmVyIGlzIG5vdCBhbiBzdHJpbmcuCgotLSBAcmV0dXJuIEEgYmludC4KCmZ1bmN0aW9uIGJpbnQuZnJvbWxlKGJ1ZmZlcikKCiAgYXNzZXJ0KHR5cGUoYnVmZmVyKSA9PSAnc3RyaW5nJywgJ2J1ZmZlciBpcyBub3QgYSBzdHJpbmcnKQoKICBpZiAjYnVmZmVyID4gQklOVF9CWVRFUyB0aGVuIC0tIHRyaW0gZXh0cmEgYnl0ZXMgZnJvbSB0aGUgcmlnaHQKCiAgICBidWZmZXIgPSBidWZmZXI6c3ViKDEsIEJJTlRfQllURVMpCgogIGVsc2VpZiAjYnVmZmVyIDwgQklOVF9CWVRFUyB0aGVuIC0tIGFkZCBtaXNzaW5nIGJ5dGVzIHRvIHRoZSByaWdodAoKICAgIGJ1ZmZlciA9IGJ1ZmZlci4uKCdceDAwJyk6cmVwKEJJTlRfQllURVMgLSAjYnVmZmVyKQoKICBlbmQKCiAgcmV0dXJuIHNldG1ldGF0YWJsZSh7QklOVF9MRVBBQ0tGTVQ6dW5wYWNrKGJ1ZmZlcil9LCBiaW50KQoKZW5kCgoKCi0tLSBDcmVhdGUgYSBuZXcgYmludCBmcm9tIGEgYnVmZmVyIG9mIGJpZy1lbmRpYW4gYnl0ZXMuCgotLSBAcGFyYW0gYnVmZmVyIEJ1ZmZlciBvZiBieXRlcywgZXh0cmEgYnl0ZXMgYXJlIHRyaW1tZWQgZnJvbSB0aGUgbGVmdCwgbWlzc2luZyBieXRlcyBhcmUgcGFkZGVkIHRvIHRoZSBsZWZ0LgoKLS0gQHJhaXNlIEFuIGFzc2VydCBpcyB0aHJvd24gaW4gY2FzZSBidWZmZXIgaXMgbm90IGFuIHN0cmluZy4KCi0tIEByZXR1cm4gQSBiaW50LgoKZnVuY3Rpb24gYmludC5mcm9tYmUoYnVmZmVyKQoKICBhc3NlcnQodHlwZShidWZmZXIpID09ICdzdHJpbmcnLCAnYnVmZmVyIGlzIG5vdCBhIHN0cmluZycpCgogIGlmICNidWZmZXIgPiBCSU5UX0JZVEVTIHRoZW4gLS0gdHJpbSBleHRyYSBieXRlcyBmcm9tIHRoZSBsZWZ0CgogICAgYnVmZmVyID0gYnVmZmVyOnN1YigtQklOVF9CWVRFUywgI2J1ZmZlcikKCiAgZWxzZWlmICNidWZmZXIgPCBCSU5UX0JZVEVTIHRoZW4gLS0gYWRkIG1pc3NpbmcgYnl0ZXMgdG8gdGhlIGxlZnQKCiAgICBidWZmZXIgPSAoJ1x4MDAnKTpyZXAoQklOVF9CWVRFUyAtICNidWZmZXIpLi5idWZmZXIKCiAgZW5kCgogIHJldHVybiBzZXRtZXRhdGFibGUoe0JJTlRfTEVQQUNLRk1UOnVucGFjayhidWZmZXI6cmV2ZXJzZSgpKX0sIGJpbnQpCgplbmQKCgoKLS0tIENyZWF0ZSBhIG5ldyBiaW50IGZyb20gYSB2YWx1ZS4KCi0tIEBwYXJhbSB4IEEgdmFsdWUgY29udmVydGlibGUgdG8gYSBiaW50IChzdHJpbmcsIG51bWJlciBvciBhbm90aGVyIGJpbnQpLgoKLS0gQHJldHVybiBBIG5ldyBiaW50LCBndWFyYW50ZWVkIHRvIGJlIGEgbmV3IHJlZmVyZW5jZSBpbiBjYXNlIG5lZWRlZC4KCi0tIEByYWlzZSBBbiBhc3NlcnQgaXMgdGhyb3duIGluIGNhc2UgeCBpcyBub3QgY29udmVydGlibGUgdG8gYSBiaW50LgoKLS0gQHNlZSBiaW50LnRvYmludAoKLS0gQHNlZSBiaW50LnBhcnNlCgpmdW5jdGlvbiBiaW50Lm5ldyh4KQoKICBpZiBnZXRtZXRhdGFibGUoeCkgfj0gYmludCB0aGVuCgogICAgbG9jYWwgdHkgPSB0eXBlKHgpCgogICAgaWYgdHkgPT0gJ251bWJlcicgdGhlbgoKICAgICAgeCA9IGJpbnRfZnJvbWludGVnZXIoeCkKCiAgICBlbHNlaWYgdHkgPT0gJ3N0cmluZycgdGhlbgoKICAgICAgeCA9IGJpbnRfZnJvbXN0cmluZyh4KQoKICAgIGVuZAoKICAgIGFzc2VydCh4LCAndmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGEgYmludCcpCgogICAgcmV0dXJuIHgKCiAgZW5kCgogIC0tIHJldHVybiBhIGNsb25lCgogIGxvY2FsIG4gPSBzZXRtZXRhdGFibGUoe30sIGJpbnQpCgogIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgbltpXSA9IHhbaV0KCiAgZW5kCgogIHJldHVybiBuCgplbmQKCmxvY2FsIGJpbnRfbmV3ID0gYmludC5uZXcKCgoKLS0tIENvbnZlcnQgYSB2YWx1ZSB0byBhIGJpbnQgaWYgcG9zc2libGUuCgotLSBAcGFyYW0geCBBIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCAoc3RyaW5nLCBudW1iZXIgb3IgYW5vdGhlciBiaW50KS4KCi0tIEBwYXJhbVtvcHRdIGNsb25lIEEgYm9vbGVhbiB0aGF0IHRlbGxzIGlmIGEgbmV3IGJpbnQgcmVmZXJlbmNlIHNob3VsZCBiZSByZXR1cm5lZC4KCi0tIERlZmF1bHRzIHRvIGZhbHNlLgoKLS0gQHJldHVybiBBIGJpbnQgb3IgbmlsIGluIGNhc2UgdGhlIGNvbnZlcnNpb24gZmFpbGVkLgoKLS0gQHNlZSBiaW50Lm5ldwoKLS0gQHNlZSBiaW50LnBhcnNlCgpmdW5jdGlvbiBiaW50LnRvYmludCh4LCBjbG9uZSkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIGlmIG5vdCBjbG9uZSB0aGVuCgogICAgICByZXR1cm4geAoKICAgIGVuZAoKICAgIC0tIHJldHVybiBhIGNsb25lCgogICAgbG9jYWwgbiA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgICAgbltpXSA9IHhbaV0KCiAgICBlbmQKCiAgICByZXR1cm4gbgoKICBlbmQKCiAgbG9jYWwgdHkgPSB0eXBlKHgpCgogIGlmIHR5ID09ICdudW1iZXInIHRoZW4KCiAgICByZXR1cm4gYmludF9mcm9taW50ZWdlcih4KQoKICBlbHNlaWYgdHkgPT0gJ3N0cmluZycgdGhlbgoKICAgIHJldHVybiBiaW50X2Zyb21zdHJpbmcoeCkKCiAgZW5kCgplbmQKCmxvY2FsIHRvYmludCA9IGJpbnQudG9iaW50CgoKCi0tLSBDb252ZXJ0IGEgdmFsdWUgdG8gYSBiaW50IGlmIHBvc3NpYmxlIG90aGVyd2lzZSB0byBhIGx1YSBudW1iZXIuCgotLSBVc2VmdWwgdG8gcHJlcGFyZSB2YWx1ZXMgdGhhdCB5b3UgYXJlIHVuc3VyZSBpZiBpdCdzIGdvaW5nIHRvIGJlIGFuIGludGVnZXIgb3IgZmxvYXQuCgotLSBAcGFyYW0geCBBIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCAoc3RyaW5nLCBudW1iZXIgb3IgYW5vdGhlciBiaW50KS4KCi0tIEBwYXJhbVtvcHRdIGNsb25lIEEgYm9vbGVhbiB0aGF0IHRlbGxzIGlmIGEgbmV3IGJpbnQgcmVmZXJlbmNlIHNob3VsZCBiZSByZXR1cm5lZC4KCi0tIERlZmF1bHRzIHRvIGZhbHNlLgoKLS0gQHJldHVybiBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIG9yIG5pbCBpbiBjYXNlIHRoZSBjb252ZXJzaW9uIGZhaWxlZC4KCi0tIEBzZWUgYmludC5uZXcKCi0tIEBzZWUgYmludC50b2JpbnQKCmZ1bmN0aW9uIGJpbnQucGFyc2UoeCwgY2xvbmUpCgogIGxvY2FsIGkgPSB0b2JpbnQoeCwgY2xvbmUpCgogIGlmIGkgdGhlbgoKICAgIHJldHVybiBpCgogIGVuZAoKICByZXR1cm4gdG9udW1iZXIoeCkKCmVuZAoKbG9jYWwgYmludF9wYXJzZSA9IGJpbnQucGFyc2UKCgoKLS0tIENvbnZlcnQgYSBiaW50IHRvIGFuIHVuc2lnbmVkIGludGVnZXIuCgotLSBOb3RlIHRoYXQgbGFyZ2UgdW5zaWduZWQgaW50ZWdlcnMgbWF5IGJlIHJlcHJlc2VudGVkIGFzIG5lZ2F0aXZlcyBpbiBsdWEgaW50ZWdlcnMuCgotLSBOb3RlIHRoYXQgbHVhIGNhbm5vdCByZXByZXNlbnQgdmFsdWVzIGxhcmdlciB0aGFuIDY0IGJpdHMsCgotLSBpbiB0aGF0IGNhc2UgaW50ZWdlciB2YWx1ZXMgd3JhcCBhcm91bmQuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBudW1iZXIgdG8gYmUgY29udmVydGVkIGludG8gYW4gdW5zaWduZWQgaW50ZWdlci4KCi0tIEByZXR1cm4gQW4gaW50ZWdlciBvciBuaWwgaW4gY2FzZSB0aGUgaW5wdXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGludGVnZXIuCgotLSBAc2VlIGJpbnQudG9pbnRlZ2VyCgpmdW5jdGlvbiBiaW50LnRvdWludGVnZXIoeCkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIGxvY2FsIG4gPSAwCgogICAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICAgIG4gPSBuIHwgKHhbaV0gPDwgKEJJTlRfV09SREJJVFMgKiAoaSAtIDEpKSkKCiAgICBlbmQKCiAgICByZXR1cm4gbgoKICBlbmQKCiAgcmV0dXJuIHRvaW50ZWdlcih4KQoKZW5kCgoKCi0tLSBDb252ZXJ0IGEgYmludCB0byBhIHNpZ25lZCBpbnRlZ2VyLgoKLS0gSXQgd29ya3MgYnkgdGFraW5nIGFic29sdXRlIHZhbHVlcyB0aGVuIGFwcGx5aW5nIHRoZSBzaWduIGJpdCBpbiBjYXNlIG5lZWRlZC4KCi0tIE5vdGUgdGhhdCBsdWEgY2Fubm90IHJlcHJlc2VudCB2YWx1ZXMgbGFyZ2VyIHRoYW4gNjQgYml0cywKCi0tIGluIHRoYXQgY2FzZSBpbnRlZ2VyIHZhbHVlcyB3cmFwIGFyb3VuZC4KCi0tIEBwYXJhbSB4IEEgYmludCBvciB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgaW50byBhbiB1bnNpZ25lZCBpbnRlZ2VyLgoKLS0gQHJldHVybiBBbiBpbnRlZ2VyIG9yIG5pbCBpbiBjYXNlIHRoZSBpbnB1dCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gaW50ZWdlci4KCi0tIEBzZWUgYmludC50b3VpbnRlZ2VyCgpmdW5jdGlvbiBiaW50LnRvaW50ZWdlcih4KQoKICBpZiBnZXRtZXRhdGFibGUoeCkgPT0gYmludCB0aGVuCgogICAgbG9jYWwgbiA9IDAKCiAgICBsb2NhbCBuZWcgPSB4OmlzbmVnKCkKCiAgICBpZiBuZWcgdGhlbgoKICAgICAgeCA9IC14CgogICAgZW5kCgogICAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICAgIG4gPSBuIHwgKHhbaV0gPDwgKEJJTlRfV09SREJJVFMgKiAoaSAtIDEpKSkKCiAgICBlbmQKCiAgICBpZiBuZWcgdGhlbgoKICAgICAgbiA9IC1uCgogICAgZW5kCgogICAgcmV0dXJuIG4KCiAgZW5kCgogIHJldHVybiB0b2ludGVnZXIoeCkKCmVuZAoKbG9jYWwgYmludF90b2ludGVnZXIgPSBiaW50LnRvaW50ZWdlcgoKCgpsb2NhbCBmdW5jdGlvbiBiaW50X2Fzc2VydF90b2ludGVnZXIoeCkKCiAgeCA9IGJpbnRfdG9pbnRlZ2VyKHgpCgogIGlmIG5vdCB4IHRoZW4KCiAgICBlcnJvcigndmFsdWUgaGFzIG5vIGludGVnZXIgcmVwcmVzZW50YXRpb24nKQoKICBlbmQKCiAgcmV0dXJuIHgKCmVuZAoKCgotLS0gQ29udmVydCBhIGJpbnQgdG8gYSBsdWEgZmxvYXQgaW4gY2FzZSBpbnRlZ2VyIHdvdWxkIHdyYXAgYXJvdW5kIG9yIGx1YSBpbnRlZ2VyIG90aGVyd2lzZS4KCi0tIERpZmZlcmVudCBmcm9tIEB7YmludC50b2ludGVnZXJ9IHRoZSBvcGVyYXRpb24gZG9lcyBub3Qgd3JhcCBhcm91bmQgaW50ZWdlcnMsCgotLSBidXQgZGlnaXRzIHByZWNpc2lvbiBhcmUgbG9zdCBpbiB0aGUgcHJvY2VzcyBvZiBjb252ZXJ0aW5nIHRvIGEgZmxvYXQuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgdmFsdWUgdG8gYmUgY29udmVydGVkIGludG8gYSBsdWEgbnVtYmVyLgoKLS0gQHJldHVybiBBIGx1YSBudW1iZXIgb3IgbmlsIGluIGNhc2UgdGhlIGlucHV0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBhIG51bWJlci4KCi0tIEBzZWUgYmludC50b2ludGVnZXIKCmZ1bmN0aW9uIGJpbnQudG9udW1iZXIoeCkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIGlmIHggPD0gQklOVF9NQVRITUFYSU5URUdFUiBhbmQgeCA+PSBCSU5UX01BVEhNSU5JTlRFR0VSIHRoZW4KCiAgICAgIHJldHVybiB4OnRvaW50ZWdlcigpCgogICAgZW5kCgogICAgcmV0dXJuIHRvbnVtYmVyKHRvc3RyaW5nKHgpKQoKICBlbmQKCiAgcmV0dXJuIHRvbnVtYmVyKHgpCgplbmQKCmxvY2FsIGJpbnRfdG9udW1iZXIgPSBiaW50LnRvbnVtYmVyCgoKCi0tIENvbXB1dGUgYmFzZSBsZXR0ZXJzIHRvIHVzZSBpbiBiaW50LnRvYmFzZQoKbG9jYWwgQkFTRV9MRVRURVJTID0ge30KCmRvCgogIGZvciBpPTEsMzYgZG8KCiAgICBCQVNFX0xFVFRFUlNbaS0xXSA9ICgnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jyk6c3ViKGksaSkKCiAgZW5kCgplbmQKCgoKLS0tIENvbnZlcnQgYSBiaW50IHRvIGEgc3RyaW5nIGluIHRoZSBkZXNpcmVkIGJhc2UuCgotLSBAcGFyYW0geCBUaGUgYmludCB0byBiZSBjb252ZXJ0ZWQgZnJvbS4KCi0tIEBwYXJhbVtvcHRdIGJhc2UgQmFzZSB0byBiZSByZXByZXNlbnRlZCwgZGVmYXVsdHMgdG8gMTAuCgotLSBNdXN0IGJlIGF0IGxlYXN0IDIgYW5kIGF0IG1vc3QgMzYuCgotLSBAcGFyYW1bb3B0XSB1bnNpZ25lZCBXaGV0aGVyIHRvIG91dHB1dCBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLgoKLS0gRGVmYXVsdHMgdG8gZmFsc2UgZm9yIGJhc2UgMTAgYW5kIHRydWUgZm9yIG90aGVycy4KCi0tIFdoZW4gdW5zaWduZWQgaXMgZmFsc2UgdGhlIHN5bWJvbCAnLScgaXMgcHJlcGVuZGVkIGluIG5lZ2F0aXZlIHZhbHVlcy4KCi0tIEByZXR1cm4gQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBpbnB1dC4KCi0tIEByYWlzZSBBbiBhc3NlcnQgaXMgdGhyb3duIGluIGNhc2UgdGhlIGJhc2UgaXMgaW52YWxpZC4KCmZ1bmN0aW9uIGJpbnQudG9iYXNlKHgsIGJhc2UsIHVuc2lnbmVkKQoKICB4ID0gdG9iaW50KHgpCgogIGlmIG5vdCB4IHRoZW4KCiAgICAtLSB4IGlzIGEgZnJhY3Rpb25hbCBmbG9hdCBvciBzb21ldGhpbmcgZWxzZQoKICAgIHJldHVybgoKICBlbmQKCiAgYmFzZSA9IGJhc2Ugb3IgMTAKCiAgaWYgbm90IChiYXNlID49IDIgYW5kIGJhc2UgPD0gMzYpIHRoZW4KCiAgICAtLSBudW1iZXIgYmFzZSBpcyB0b28gbGFyZ2UKCiAgICByZXR1cm4KCiAgZW5kCgogIGlmIHVuc2lnbmVkID09IG5pbCB0aGVuCgogICAgdW5zaWduZWQgPSBiYXNlIH49IDEwCgogIGVuZAoKICBsb2NhbCBpc3huZWcgPSB4OmlzbmVnKCkKCiAgaWYgKGJhc2UgPT0gMTAgYW5kIG5vdCB1bnNpZ25lZCkgb3IgKGJhc2UgPT0gMTYgYW5kIHVuc2lnbmVkIGFuZCBub3QgaXN4bmVnKSB0aGVuCgogICAgaWYgeCA8PSBCSU5UX01BVEhNQVhJTlRFR0VSIGFuZCB4ID49IEJJTlRfTUFUSE1JTklOVEVHRVIgdGhlbgoKICAgICAgLS0gaW50ZWdlciBpcyBzbWFsbCwgdXNlIHRvc3RyaW5nIG9yIHN0cmluZy5mb3JtYXQgKGZhc3RlcikKCiAgICAgIGxvY2FsIG4gPSB4OnRvaW50ZWdlcigpCgogICAgICBpZiBiYXNlID09IDEwIHRoZW4KCiAgICAgICAgcmV0dXJuIHRvc3RyaW5nKG4pCgogICAgICBlbHNlaWYgdW5zaWduZWQgdGhlbgoKICAgICAgICByZXR1cm4gc3RyaW5nX2Zvcm1hdCgnJXgnLCBuKQoKICAgICAgZW5kCgogICAgZW5kCgogIGVuZAoKICBsb2NhbCBzcyA9IHt9CgogIGxvY2FsIG5lZyA9IG5vdCB1bnNpZ25lZCBhbmQgaXN4bmVnCgogIHggPSBuZWcgYW5kIHg6YWJzKCkgb3IgYmludF9uZXcoeCkKCiAgbG9jYWwgeGlzemVybyA9IHg6aXN6ZXJvKCkKCiAgaWYgeGlzemVybyB0aGVuCgogICAgcmV0dXJuICcwJwoKICBlbmQKCiAgLS0gY2FsY3VsYXRlIGJhc2Vwb3cKCiAgbG9jYWwgc3RlcCA9IDAKCiAgbG9jYWwgYmFzZXBvdyA9IDEKCiAgbG9jYWwgbGltaXQgPSAoQklOVF9XT1JETVNCIC0gMSkgLy8gYmFzZQoKICByZXBlYXQKCiAgICBzdGVwID0gc3RlcCArIDEKCiAgICBiYXNlcG93ID0gYmFzZXBvdyAqIGJhc2UKCiAgdW50aWwgYmFzZXBvdyA+PSBsaW1pdAoKICAtLSBzZXJpYWxpemUgYmFzZSBkaWdpdHMKCiAgbG9jYWwgc2l6ZSA9IEJJTlRfU0laRQoKICBsb2NhbCB4ZCwgY2FycnksIGQKCiAgcmVwZWF0CgogICAgLS0gc2luZ2xlIHdvcmQgZGl2aXNpb24KCiAgICBjYXJyeSA9IDAKCiAgICB4aXN6ZXJvID0gdHJ1ZQoKICAgIGZvciBpPXNpemUsMSwtMSBkbwoKICAgICAgY2FycnkgPSBjYXJyeSB8IHhbaV0KCiAgICAgIGQsIHhkID0gY2FycnkgLy8gYmFzZXBvdywgY2FycnkgJSBiYXNlcG93CgogICAgICBpZiB4aXN6ZXJvIGFuZCBkIH49IDAgdGhlbgoKICAgICAgICBzaXplID0gaQoKICAgICAgICB4aXN6ZXJvID0gZmFsc2UKCiAgICAgIGVuZAoKICAgICAgeFtpXSA9IGQKCiAgICAgIGNhcnJ5ID0geGQgPDwgQklOVF9XT1JEQklUUwoKICAgIGVuZAoKICAgIC0tIGRpZ2l0IGRpdmlzaW9uCgogICAgZm9yIF89MSxzdGVwIGRvCgogICAgICB4ZCwgZCA9IHhkIC8vIGJhc2UsIHhkICUgYmFzZQoKICAgICAgaWYgeGlzemVybyBhbmQgeGQgPT0gMCBhbmQgZCA9PSAwIHRoZW4KCiAgICAgICAgLS0gc3RvcCBvbiBsZWFkaW5nIHplcm9zCgogICAgICAgIGJyZWFrCgogICAgICBlbmQKCiAgICAgIHRhYmxlX2luc2VydChzcywgMSwgQkFTRV9MRVRURVJTW2RdKQoKICAgIGVuZAoKICB1bnRpbCB4aXN6ZXJvCgogIGlmIG5lZyB0aGVuCgogICAgdGFibGVfaW5zZXJ0KHNzLCAxLCAnLScpCgogIGVuZAoKICByZXR1cm4gdGFibGVfY29uY2F0KHNzKQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGJpbnRfYXNzZXJ0X2NvbnZlcnQoeCkKCiAgcmV0dXJuIGFzc2VydCh0b2JpbnQoeCksICd2YWx1ZSBoYXMgbm90IGludGVnZXIgcmVwcmVzZW50YXRpb24nKQoKZW5kCgoKCi0tLSBDb252ZXJ0IGEgYmludCB0byBhIGJ1ZmZlciBvZiBsaXR0bGUtZW5kaWFuIGJ5dGVzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGx1YSBpbnRlZ2VyLgoKLS0gQHBhcmFtW29wdF0gdHJpbSBJZiB0cnVlLCB6ZXJvIGJ5dGVzIG9uIHRoZSByaWdodCBhcmUgdHJpbW1lZC4KCi0tIEByZXR1cm4gQSBidWZmZXIgb2YgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSBpbnB1dC4KCi0tIEByYWlzZSBBc3NlcnRzIGluIGNhc2UgaW5wdXQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGFuIGludGVnZXIuCgpmdW5jdGlvbiBiaW50LnRvbGUoeCwgdHJpbSkKCiAgeCA9IGJpbnRfYXNzZXJ0X2NvbnZlcnQoeCkKCiAgbG9jYWwgcyA9IEJJTlRfTEVQQUNLRk1UOnBhY2sodGFibGVfdW5wYWNrKHgpKQoKICBpZiB0cmltIHRoZW4KCiAgICBzID0gczpnc3ViKCdceDAwKyQnLCAnJykKCiAgICBpZiBzID09ICcnIHRoZW4KCiAgICAgIHMgPSAnXHgwMCcKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiBzCgplbmQKCgoKLS0tIENvbnZlcnQgYSBiaW50IHRvIGEgYnVmZmVyIG9mIGJpZy1lbmRpYW4gYnl0ZXMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgbHVhIGludGVnZXIuCgotLSBAcGFyYW1bb3B0XSB0cmltIElmIHRydWUsIHplcm8gYnl0ZXMgb24gdGhlIGxlZnQgYXJlIHRyaW1tZWQuCgotLSBAcmV0dXJuIEEgYnVmZmVyIG9mIGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgaW5wdXQuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0IGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhbiBpbnRlZ2VyLgoKZnVuY3Rpb24gYmludC50b2JlKHgsIHRyaW0pCgogIHggPSBiaW50X2Fzc2VydF9jb252ZXJ0KHgpCgogIGxvY2FsIHMgPSBCSU5UX0xFUEFDS0ZNVDpwYWNrKHRhYmxlX3VucGFjayh4KSk6cmV2ZXJzZSgpCgogIGlmIHRyaW0gdGhlbgoKICAgIHMgPSBzOmdzdWIoJ15ceDAwKycsICcnKQoKICAgIGlmIHMgPT0gJycgdGhlbgoKICAgICAgcyA9ICdceDAwJwoKICAgIGVuZAoKICBlbmQKCiAgcmV0dXJuIHMKCmVuZAoKCgotLS0gQ2hlY2sgaWYgYSBudW1iZXIgaXMgMCBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBudW1iZXIuCgpmdW5jdGlvbiBiaW50LmlzemVybyh4KQoKICBpZiBnZXRtZXRhdGFibGUoeCkgPT0gYmludCB0aGVuCgogICAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICAgIGlmIHhbaV0gfj0gMCB0aGVuCgogICAgICAgIHJldHVybiBmYWxzZQoKICAgICAgZW5kCgogICAgZW5kCgogICAgcmV0dXJuIHRydWUKCiAgZW5kCgogIHJldHVybiB4ID09IDAKCmVuZAoKCgotLS0gQ2hlY2sgaWYgYSBudW1iZXIgaXMgMSBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBudW1iZXIuCgpmdW5jdGlvbiBiaW50Lmlzb25lKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICBpZiB4WzFdIH49IDEgdGhlbgoKICAgICAgcmV0dXJuIGZhbHNlCgogICAgZW5kCgogICAgZm9yIGk9MixCSU5UX1NJWkUgZG8KCiAgICAgIGlmIHhbaV0gfj0gMCB0aGVuCgogICAgICAgIHJldHVybiBmYWxzZQoKICAgICAgZW5kCgogICAgZW5kCgogICAgcmV0dXJuIHRydWUKCiAgZW5kCgogIHJldHVybiB4ID09IDEKCmVuZAoKCgotLS0gQ2hlY2sgaWYgYSBudW1iZXIgaXMgLTEgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyLgoKZnVuY3Rpb24gYmludC5pc21pbnVzb25lKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgICAgaWYgeFtpXSB+PSBCSU5UX1dPUkRNQVggdGhlbgoKICAgICAgICByZXR1cm4gZmFsc2UKCiAgICAgIGVuZAoKICAgIGVuZAoKICAgIHJldHVybiB0cnVlCgogIGVuZAoKICByZXR1cm4geCA9PSAtMQoKZW5kCgpsb2NhbCBiaW50X2lzbWludXNvbmUgPSBiaW50LmlzbWludXNvbmUKCgoKLS0tIENoZWNrIGlmIHRoZSBpbnB1dCBpcyBhIGJpbnQuCgotLSBAcGFyYW0geCBBbnkgbHVhIHZhbHVlLgoKZnVuY3Rpb24gYmludC5pc2JpbnQoeCkKCiAgcmV0dXJuIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50CgplbmQKCgoKLS0tIENoZWNrIGlmIHRoZSBpbnB1dCBpcyBhIGx1YSBpbnRlZ2VyIG9yIGEgYmludC4KCi0tIEBwYXJhbSB4IEFueSBsdWEgdmFsdWUuCgpmdW5jdGlvbiBiaW50LmlzaW50ZWdyYWwoeCkKCiAgcmV0dXJuIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IG9yIG1hdGhfdHlwZSh4KSA9PSAnaW50ZWdlcicKCmVuZAoKCgotLS0gQ2hlY2sgaWYgdGhlIGlucHV0IGlzIGEgYmludCBvciBhIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geCBBbnkgbHVhIHZhbHVlLgoKZnVuY3Rpb24gYmludC5pc251bWVyaWMoeCkKCiAgcmV0dXJuIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IG9yIHR5cGUoeCkgPT0gJ251bWJlcicKCmVuZAoKCgotLS0gR2V0IHRoZSBudW1iZXIgdHlwZSBvZiB0aGUgaW5wdXQgKGJpbnQsIGludGVnZXIgb3IgZmxvYXQpLgoKLS0gQHBhcmFtIHggQW55IGx1YSB2YWx1ZS4KCi0tIEByZXR1cm4gUmV0dXJucyAiYmludCIgZm9yIGJpbnRzLCAiaW50ZWdlciIgZm9yIGx1YSBpbnRlZ2VycywKCi0tICJmbG9hdCIgZnJvbSBsdWEgZmxvYXRzIG9yIG5pbCBvdGhlcndpc2UuCgpmdW5jdGlvbiBiaW50LnR5cGUoeCkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIHJldHVybiAnYmludCcKCiAgZW5kCgogIHJldHVybiBtYXRoX3R5cGUoeCkKCmVuZAoKCgotLS0gQ2hlY2sgaWYgYSBudW1iZXIgaXMgbmVnYXRpdmUgY29uc2lkZXJpbmcgYmludHMuCgotLSBaZXJvIGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgYmUgbmVnYXRpdmUgZm9yIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGEgbHVhIG51bWJlci4KCmZ1bmN0aW9uIGJpbnQuaXNuZWcoeCkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIHJldHVybiB4W0JJTlRfU0laRV0gJiBCSU5UX1dPUkRNU0Igfj0gMAoKICBlbmQKCiAgcmV0dXJuIHggPCAwCgplbmQKCmxvY2FsIGJpbnRfaXNuZWcgPSBiaW50LmlzbmVnCgoKCi0tLSBDaGVjayBpZiBhIG51bWJlciBpcyBwb3NpdGl2ZSBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBudW1iZXIuCgpmdW5jdGlvbiBiaW50LmlzcG9zKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICByZXR1cm4gbm90IHg6aXNuZWcoKSBhbmQgbm90IHg6aXN6ZXJvKCkKCiAgZW5kCgogIHJldHVybiB4ID4gMAoKZW5kCgoKCi0tLSBDaGVjayBpZiBhIG51bWJlciBpcyBldmVuIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGEgbHVhIG51bWJlci4KCmZ1bmN0aW9uIGJpbnQuaXNldmVuKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICByZXR1cm4geFsxXSAmIDEgPT0gMAoKICBlbmQKCiAgcmV0dXJuIG1hdGhfYWJzKHgpICUgMiA9PSAwCgplbmQKCgoKLS0tIENoZWNrIGlmIGEgbnVtYmVyIGlzIG9kZCBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBudW1iZXIuCgpmdW5jdGlvbiBiaW50Lmlzb2RkKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICByZXR1cm4geFsxXSAmIDEgPT0gMQoKICBlbmQKCiAgcmV0dXJuIG1hdGhfYWJzKHgpICUgMiA9PSAxCgplbmQKCgoKLS0tIENyZWF0ZSBhIG5ldyBiaW50IHdpdGggdGhlIG1heGltdW0gcG9zc2libGUgaW50ZWdlciB2YWx1ZS4KCmZ1bmN0aW9uIGJpbnQubWF4aW50ZWdlcigpCgogIGxvY2FsIHggPSBzZXRtZXRhdGFibGUoe30sIGJpbnQpCgogIGZvciBpPTEsQklOVF9TSVpFLTEgZG8KCiAgICB4W2ldID0gQklOVF9XT1JETUFYCgogIGVuZAoKICB4W0JJTlRfU0laRV0gPSBCSU5UX1dPUkRNQVggfiBCSU5UX1dPUkRNU0IKCiAgcmV0dXJuIHgKCmVuZAoKCgotLS0gQ3JlYXRlIGEgbmV3IGJpbnQgd2l0aCB0aGUgbWluaW11bSBwb3NzaWJsZSBpbnRlZ2VyIHZhbHVlLgoKZnVuY3Rpb24gYmludC5taW5pbnRlZ2VyKCkKCiAgbG9jYWwgeCA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgZm9yIGk9MSxCSU5UX1NJWkUtMSBkbwoKICAgIHhbaV0gPSAwCgogIGVuZAoKICB4W0JJTlRfU0laRV0gPSBCSU5UX1dPUkRNU0IKCiAgcmV0dXJuIHgKCmVuZAoKCgotLS0gQml0d2lzZSBsZWZ0IHNoaWZ0IGEgYmludCBpbiBvbmUgYml0IChpbi1wbGFjZSkuCgpmdW5jdGlvbiBiaW50Ol9zaGxvbmUoKQoKICBsb2NhbCB3b3JkYml0c20xID0gQklOVF9XT1JEQklUUyAtIDEKCiAgZm9yIGk9QklOVF9TSVpFLDIsLTEgZG8KCiAgICBzZWxmW2ldID0gKChzZWxmW2ldIDw8IDEpIHwgKHNlbGZbaS0xXSA+PiB3b3JkYml0c20xKSkgJiBCSU5UX1dPUkRNQVgKCiAgZW5kCgogIHNlbGZbMV0gPSAoc2VsZlsxXSA8PCAxKSAmIEJJTlRfV09SRE1BWAoKICByZXR1cm4gc2VsZgoKZW5kCgoKCi0tLSBCaXR3aXNlIHJpZ2h0IHNoaWZ0IGEgYmludCBpbiBvbmUgYml0IChpbi1wbGFjZSkuCgpmdW5jdGlvbiBiaW50Ol9zaHJvbmUoKQoKICBsb2NhbCB3b3JkYml0c20xID0gQklOVF9XT1JEQklUUyAtIDEKCiAgZm9yIGk9MSxCSU5UX1NJWkUtMSBkbwoKICAgIHNlbGZbaV0gPSAoKHNlbGZbaV0gPj4gMSkgfCAoc2VsZltpKzFdIDw8IHdvcmRiaXRzbTEpKSAmIEJJTlRfV09SRE1BWAoKICBlbmQKCiAgc2VsZltCSU5UX1NJWkVdID0gc2VsZltCSU5UX1NJWkVdID4+IDEKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLSBCaXR3aXNlIGxlZnQgc2hpZnQgd29yZHMgb2YgYSBiaW50IChpbi1wbGFjZSkuIFVzZWQgb25seSBpbnRlcm5hbGx5LgoKZnVuY3Rpb24gYmludDpfc2hsd29yZHMobikKCiAgZm9yIGk9QklOVF9TSVpFLG4rMSwtMSBkbwoKICAgIHNlbGZbaV0gPSBzZWxmW2kgLSBuXQoKICBlbmQKCiAgZm9yIGk9MSxuIGRvCgogICAgc2VsZltpXSA9IDAKCiAgZW5kCgogIHJldHVybiBzZWxmCgplbmQKCgoKLS0gQml0d2lzZSByaWdodCBzaGlmdCB3b3JkcyBvZiBhIGJpbnQgKGluLXBsYWNlKS4gVXNlZCBvbmx5IGludGVybmFsbHkuCgpmdW5jdGlvbiBiaW50Ol9zaHJ3b3JkcyhuKQoKICBpZiBuIDwgQklOVF9TSVpFIHRoZW4KCiAgICBmb3IgaT0xLEJJTlRfU0laRS1uIGRvCgogICAgICBzZWxmW2ldID0gc2VsZltpICsgbl0KCiAgICBlbmQKCiAgICBmb3IgaT1CSU5UX1NJWkUtbisxLEJJTlRfU0laRSBkbwoKICAgICAgc2VsZltpXSA9IDAKCiAgICBlbmQKCiAgZWxzZQoKICAgIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgICBzZWxmW2ldID0gMAoKICAgIGVuZAoKICBlbmQKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLS0gSW5jcmVtZW50IGEgYmludCBieSBvbmUgKGluLXBsYWNlKS4KCmZ1bmN0aW9uIGJpbnQ6X2luYygpCgogIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgbG9jYWwgdG1wID0gc2VsZltpXQoKICAgIGxvY2FsIHYgPSAodG1wICsgMSkgJiBCSU5UX1dPUkRNQVgKCiAgICBzZWxmW2ldID0gdgoKICAgIGlmIHYgPiB0bXAgdGhlbgoKICAgICAgYnJlYWsKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiBzZWxmCgplbmQKCgoKLS0tIEluY3JlbWVudCBhIG51bWJlciBieSBvbmUgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIHRvIGluY3JlbWVudC4KCmZ1bmN0aW9uIGJpbnQuaW5jKHgpCgogIGxvY2FsIGl4ID0gdG9iaW50KHgsIHRydWUpCgogIGlmIGl4IHRoZW4KCiAgICByZXR1cm4gaXg6X2luYygpCgogIGVuZAoKICByZXR1cm4geCArIDEKCmVuZAoKCgotLS0gRGVjcmVtZW50IGEgYmludCBieSBvbmUgKGluLXBsYWNlKS4KCmZ1bmN0aW9uIGJpbnQ6X2RlYygpCgogIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgbG9jYWwgdG1wID0gc2VsZltpXQoKICAgIGxvY2FsIHYgPSAodG1wIC0gMSkgJiBCSU5UX1dPUkRNQVgKCiAgICBzZWxmW2ldID0gdgoKICAgIGlmIHYgPD0gdG1wIHRoZW4KCiAgICAgIGJyZWFrCgogICAgZW5kCgogIGVuZAoKICByZXR1cm4gc2VsZgoKZW5kCgoKCi0tLSBEZWNyZW1lbnQgYSBudW1iZXIgYnkgb25lIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGEgbHVhIG51bWJlciB0byBkZWNyZW1lbnQuCgpmdW5jdGlvbiBiaW50LmRlYyh4KQoKICBsb2NhbCBpeCA9IHRvYmludCh4LCB0cnVlKQoKICBpZiBpeCB0aGVuCgogICAgcmV0dXJuIGl4Ol9kZWMoKQoKICBlbmQKCiAgcmV0dXJuIHggLSAxCgplbmQKCgoKLS0tIEFzc2lnbiBhIGJpbnQgdG8gYSBuZXcgdmFsdWUgKGluLXBsYWNlKS4KCi0tIEBwYXJhbSB5IEEgdmFsdWUgdG8gYmUgY29waWVkIGZyb20uCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludDpfYXNzaWduKHkpCgogIHkgPSBiaW50X2Fzc2VydF9jb252ZXJ0KHkpCgogIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgc2VsZltpXSA9IHlbaV0KCiAgZW5kCgogIHJldHVybiBzZWxmCgplbmQKCgoKLS0tIFRha2UgYWJzb2x1dGUgb2YgYSBiaW50IChpbi1wbGFjZSkuCgpmdW5jdGlvbiBiaW50Ol9hYnMoKQoKICBpZiBzZWxmOmlzbmVnKCkgdGhlbgoKICAgIHNlbGY6X3VubSgpCgogIGVuZAoKICByZXR1cm4gc2VsZgoKZW5kCgoKCi0tLSBUYWtlIGFic29sdXRlIG9mIGEgbnVtYmVyIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGEgbHVhIG51bWJlciB0byB0YWtlIHRoZSBhYnNvbHV0ZS4KCmZ1bmN0aW9uIGJpbnQuYWJzKHgpCgogIGxvY2FsIGl4ID0gdG9iaW50KHgsIHRydWUpCgogIGlmIGl4IHRoZW4KCiAgICByZXR1cm4gaXg6X2FicygpCgogIGVuZAoKICByZXR1cm4gbWF0aF9hYnMoeCkKCmVuZAoKbG9jYWwgYmludF9hYnMgPSBiaW50LmFicwoKCgotLS0gVGFrZSB0aGUgZmxvb3Igb2YgYSBudW1iZXIgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIHRvIHBlcmZvcm0gdGhlIGZsb29yIG9wZXJhdGlvbi4KCmZ1bmN0aW9uIGJpbnQuZmxvb3IoeCkKCiAgaWYgZ2V0bWV0YXRhYmxlKHgpID09IGJpbnQgdGhlbgoKICAgIHJldHVybiBiaW50X25ldyh4KQoKICBlbmQKCiAgcmV0dXJuIGJpbnRfbmV3KG1hdGhfZmxvb3IodG9udW1iZXIoeCkpKQoKZW5kCgoKCi0tLSBUYWtlIGNlaWwgb2YgYSBudW1iZXIgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIHRvIHBlcmZvcm0gdGhlIGNlaWwgb3BlcmF0aW9uLgoKZnVuY3Rpb24gYmludC5jZWlsKHgpCgogIGlmIGdldG1ldGF0YWJsZSh4KSA9PSBiaW50IHRoZW4KCiAgICByZXR1cm4gYmludF9uZXcoeCkKCiAgZW5kCgogIHJldHVybiBiaW50X25ldyhtYXRoX2NlaWwodG9udW1iZXIoeCkpKQoKZW5kCgoKCi0tLSBXcmFwIGFyb3VuZCBiaXRzIG9mIGFuIGludGVnZXIgKGRpc2NhcmRpbmcgbGVmdCBiaXRzKSBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBpbnRlZ2VyLgoKLS0gQHBhcmFtIHkgTnVtYmVyIG9mIHJpZ2h0IGJpdHMgdG8gcHJlc2VydmUuCgpmdW5jdGlvbiBiaW50LmJ3cmFwKHgsIHkpCgogIHggPSBiaW50X2Fzc2VydF9jb252ZXJ0KHgpCgogIGlmIHkgPD0gMCB0aGVuCgogICAgcmV0dXJuIGJpbnRfemVybygpCgogIGVsc2VpZiB5IDwgQklOVF9CSVRTIHRoZW4KCiAgICByZXR1cm4geCAmIChiaW50X29uZSgpIDw8IHkpOl9kZWMoKQoKICBlbmQKCiAgcmV0dXJuIGJpbnRfbmV3KHgpCgplbmQKCgoKLS0tIFJvdGF0ZSBsZWZ0IGludGVnZXIgeCBieSB5IGJpdHMgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgaW50ZWdlci4KCi0tIEBwYXJhbSB5IE51bWJlciBvZiBiaXRzIHRvIHJvdGF0ZS4KCmZ1bmN0aW9uIGJpbnQuYnJvbCh4LCB5KQoKICB4LCB5ID0gYmludF9hc3NlcnRfY29udmVydCh4KSwgYmludF9hc3NlcnRfdG9pbnRlZ2VyKHkpCgogIGlmIHkgPiAwIHRoZW4KCiAgICByZXR1cm4gKHggPDwgeSkgfCAoeCA+PiAoQklOVF9CSVRTIC0geSkpCgogIGVsc2VpZiB5IDwgMCB0aGVuCgogICAgaWYgeSB+PSBtYXRoX21pbmludGVnZXIgdGhlbgoKICAgICAgcmV0dXJuIHg6YnJvcigteSkKCiAgICBlbHNlCgogICAgICB4OmJyb3IoLSh5KzEpKQoKICAgICAgeDpicm9yKDEpCgogICAgZW5kCgogIGVuZAoKICByZXR1cm4geAoKZW5kCgoKCi0tLSBSb3RhdGUgcmlnaHQgaW50ZWdlciB4IGJ5IHkgYml0cyBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IEEgYmludCBvciBhIGx1YSBpbnRlZ2VyLgoKLS0gQHBhcmFtIHkgTnVtYmVyIG9mIGJpdHMgdG8gcm90YXRlLgoKZnVuY3Rpb24gYmludC5icm9yKHgsIHkpCgogIHgsIHkgPSBiaW50X2Fzc2VydF9jb252ZXJ0KHgpLCBiaW50X2Fzc2VydF90b2ludGVnZXIoeSkKCiAgaWYgeSA+IDAgdGhlbgoKICAgIHJldHVybiAoeCA+PiB5KSB8ICh4IDw8IChCSU5UX0JJVFMgLSB5KSkKCiAgZWxzZWlmIHkgPCAwIHRoZW4KCiAgICBpZiB5IH49IG1hdGhfbWluaW50ZWdlciB0aGVuCgogICAgICByZXR1cm4geDpicm9sKC15KQoKICAgIGVsc2UKCiAgICAgIHg6YnJvbCgtKHkrMSkpCgogICAgICB4OmJyb2woMSkKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiB4CgplbmQKCgoKLS0tIFRydW5jYXRlIGEgbnVtYmVyIHRvIGEgYmludC4KCi0tIEZsb2F0cyBudW1iZXJzIGFyZSB0cnVuY2F0ZWQsIHRoYXQgaXMsIHRoZSBmcmFjdGlvbmFsIHBvcnQgaXMgZGlzY2FyZGVkLgoKLS0gQHBhcmFtIHggQSBudW1iZXIgdG8gdHJ1bmNhdGUuCgotLSBAcmV0dXJuIEEgbmV3IGJpbnQgb3IgbmlsIGluIGNhc2UgdGhlIGlucHV0IGRvZXMgbm90IGZpdCBpbiBhIGJpbnQgb3IgaXMgbm90IGEgbnVtYmVyLgoKZnVuY3Rpb24gYmludC50cnVuYyh4KQoKICBpZiBnZXRtZXRhdGFibGUoeCkgfj0gYmludCB0aGVuCgogICAgeCA9IHRvbnVtYmVyKHgpCgogICAgaWYgeCB0aGVuCgogICAgICBsb2NhbCB0eSA9IG1hdGhfdHlwZSh4KQoKICAgICAgaWYgdHkgPT0gJ2Zsb2F0JyB0aGVuCgogICAgICAgIC0tIHRydW5jYXRlIHRvIGludGVnZXIKCiAgICAgICAgeCA9IG1hdGhfbW9kZih4KQoKICAgICAgZW5kCgogICAgICByZXR1cm4gYmludF9mcm9taW50ZWdlcih4KQoKICAgIGVuZAoKICAgIHJldHVybgoKICBlbmQKCiAgcmV0dXJuIGJpbnRfbmV3KHgpCgplbmQKCgoKLS0tIFRha2UgbWF4aW11bSBiZXR3ZWVuIHR3byBudW1iZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGx1YSBudW1iZXIgdG8gY29tcGFyZS4KCi0tIEBwYXJhbSB5IEEgYmludCBvciBsdWEgbnVtYmVyIHRvIGNvbXBhcmUuCgotLSBAcmV0dXJuIEEgYmludCBvciBhIGx1YSBudW1iZXIuIEd1YXJhbnRlZXMgdG8gcmV0dXJuIGEgbmV3IGJpbnQgZm9yIGludGVnZXIgdmFsdWVzLgoKZnVuY3Rpb24gYmludC5tYXgoeCwgeSkKCiAgbG9jYWwgaXgsIGl5ID0gdG9iaW50KHgpLCB0b2JpbnQoeSkKCiAgaWYgaXggYW5kIGl5IHRoZW4KCiAgICByZXR1cm4gYmludF9uZXcoaXggPiBpeSBhbmQgaXggb3IgaXkpCgogIGVuZAoKICByZXR1cm4gYmludF9wYXJzZShtYXRoX21heCh4LCB5KSkKCmVuZAoKCgotLS0gVGFrZSBtaW5pbXVtIGJldHdlZW4gdHdvIG51bWJlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgbHVhIG51bWJlciB0byBjb21wYXJlLgoKLS0gQHBhcmFtIHkgQSBiaW50IG9yIGx1YSBudW1iZXIgdG8gY29tcGFyZS4KCi0tIEByZXR1cm4gQSBiaW50IG9yIGEgbHVhIG51bWJlci4gR3VhcmFudGVlcyB0byByZXR1cm4gYSBuZXcgYmludCBmb3IgaW50ZWdlciB2YWx1ZXMuCgpmdW5jdGlvbiBiaW50Lm1pbih4LCB5KQoKICBsb2NhbCBpeCwgaXkgPSB0b2JpbnQoeCksIHRvYmludCh5KQoKICBpZiBpeCBhbmQgaXkgdGhlbgoKICAgIHJldHVybiBiaW50X25ldyhpeCA8IGl5IGFuZCBpeCBvciBpeSkKCiAgZW5kCgogIHJldHVybiBiaW50X3BhcnNlKG1hdGhfbWluKHgsIHkpKQoKZW5kCgoKCi0tLSBBZGQgYW4gaW50ZWdlciB0byBhIGJpbnQgKGluLXBsYWNlKS4KCi0tIEBwYXJhbSB5IEFuIGludGVnZXIgdG8gYmUgYWRkZWQuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludDpfYWRkKHkpCgogIHkgPSBiaW50X2Fzc2VydF9jb252ZXJ0KHkpCgogIGxvY2FsIGNhcnJ5ID0gMAoKICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgIGxvY2FsIHRtcCA9IHNlbGZbaV0gKyB5W2ldICsgY2FycnkKCiAgICBjYXJyeSA9IHRtcCA+PiBCSU5UX1dPUkRCSVRTCgogICAgc2VsZltpXSA9IHRtcCAmIEJJTlRfV09SRE1BWAoKICBlbmQKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLS0gQWRkIHR3byBudW1iZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGEgbHVhIG51bWJlciB0byBiZSBhZGRlZC4KCi0tIEBwYXJhbSB5IEEgYmludCBvciBhIGx1YSBudW1iZXIgdG8gYmUgYWRkZWQuCgpmdW5jdGlvbiBiaW50Ll9fYWRkKHgsIHkpCgogIGxvY2FsIGl4LCBpeSA9IHRvYmludCh4KSwgdG9iaW50KHkpCgogIGlmIGl4IGFuZCBpeSB0aGVuCgogICAgbG9jYWwgeiA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgICBsb2NhbCBjYXJyeSA9IDAKCiAgICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgICAgbG9jYWwgdG1wID0gaXhbaV0gKyBpeVtpXSArIGNhcnJ5CgogICAgICBjYXJyeSA9IHRtcCA+PiBCSU5UX1dPUkRCSVRTCgogICAgICB6W2ldID0gdG1wICYgQklOVF9XT1JETUFYCgogICAgZW5kCgogICAgcmV0dXJuIHoKCiAgZW5kCgogIHJldHVybiBiaW50X3RvbnVtYmVyKHgpICsgYmludF90b251bWJlcih5KQoKZW5kCgoKCi0tLSBTdWJ0cmFjdCBhbiBpbnRlZ2VyIGZyb20gYSBiaW50IChpbi1wbGFjZSkuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHRvIHN1YnRyYWN0LgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCmZ1bmN0aW9uIGJpbnQ6X3N1Yih5KQoKICB5ID0gYmludF9hc3NlcnRfY29udmVydCh5KQoKICBsb2NhbCBib3Jyb3cgPSAwCgogIGxvY2FsIHdvcmRtYXhwMSA9IEJJTlRfV09SRE1BWCArIDEKCiAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICBsb2NhbCByZXMgPSBzZWxmW2ldICsgd29yZG1heHAxIC0geVtpXSAtIGJvcnJvdwoKICAgIHNlbGZbaV0gPSByZXMgJiBCSU5UX1dPUkRNQVgKCiAgICBib3Jyb3cgPSAocmVzID4+IEJJTlRfV09SREJJVFMpIH4gMQoKICBlbmQKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLS0gU3VidHJhY3QgdHdvIG51bWJlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIHRvIGJlIHN1YnRyYWN0ZWQgZnJvbS4KCi0tIEBwYXJhbSB5IEEgYmludCBvciBhIGx1YSBudW1iZXIgdG8gc3VidHJhY3QuCgpmdW5jdGlvbiBiaW50Ll9fc3ViKHgsIHkpCgogIGxvY2FsIGl4LCBpeSA9IHRvYmludCh4KSwgdG9iaW50KHkpCgogIGlmIGl4IGFuZCBpeSB0aGVuCgogICAgbG9jYWwgeiA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgICBsb2NhbCBib3Jyb3cgPSAwCgogICAgbG9jYWwgd29yZG1heHAxID0gQklOVF9XT1JETUFYICsgMQoKICAgIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgICBsb2NhbCByZXMgPSBpeFtpXSArIHdvcmRtYXhwMSAtIGl5W2ldIC0gYm9ycm93CgogICAgICB6W2ldID0gcmVzICYgQklOVF9XT1JETUFYCgogICAgICBib3Jyb3cgPSAocmVzID4+IEJJTlRfV09SREJJVFMpIH4gMQoKICAgIGVuZAoKICAgIHJldHVybiB6CgogIGVuZAoKICByZXR1cm4gYmludF90b251bWJlcih4KSAtIGJpbnRfdG9udW1iZXIoeSkKCmVuZAoKCgotLS0gTXVsdGlwbHkgdHdvIG51bWJlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBIGJpbnQgb3IgYSBsdWEgbnVtYmVyIHRvIG11bHRpcGx5LgoKLS0gQHBhcmFtIHkgQSBiaW50IG9yIGEgbHVhIG51bWJlciB0byBtdWx0aXBseS4KCmZ1bmN0aW9uIGJpbnQuX19tdWwoeCwgeSkKCiAgbG9jYWwgaXgsIGl5ID0gdG9iaW50KHgpLCB0b2JpbnQoeSkKCiAgaWYgaXggYW5kIGl5IHRoZW4KCiAgICBsb2NhbCB6ID0gYmludF96ZXJvKCkKCiAgICBsb2NhbCBzaXplcDEgPSBCSU5UX1NJWkUrMQoKICAgIGxvY2FsIHMgPSBzaXplcDEKCiAgICBsb2NhbCBlID0gMAoKICAgIGZvciBpPTEsQklOVF9TSVpFIGRvCgogICAgICBpZiBpeFtpXSB+PSAwIG9yIGl5W2ldIH49IDAgdGhlbgoKICAgICAgICBlID0gbWF0aF9tYXgoZSwgaSkKCiAgICAgICAgcyA9IG1hdGhfbWluKHMsIGkpCgogICAgICBlbmQKCiAgICBlbmQKCiAgICBmb3IgaT1zLGUgZG8KCiAgICAgIGZvciBqPXMsbWF0aF9taW4oc2l6ZXAxLWksZSkgZG8KCiAgICAgICAgbG9jYWwgYSA9IGl4W2ldICogaXlbal0KCiAgICAgICAgaWYgYSB+PSAwIHRoZW4KCiAgICAgICAgICBsb2NhbCBjYXJyeSA9IDAKCiAgICAgICAgICBmb3Igaz1pK2otMSxCSU5UX1NJWkUgZG8KCiAgICAgICAgICAgIGxvY2FsIHRtcCA9IHpba10gKyAoYSAmIEJJTlRfV09SRE1BWCkgKyBjYXJyeQoKICAgICAgICAgICAgY2FycnkgPSB0bXAgPj4gQklOVF9XT1JEQklUUwoKICAgICAgICAgICAgeltrXSA9IHRtcCAmIEJJTlRfV09SRE1BWAoKICAgICAgICAgICAgYSA9IGEgPj4gQklOVF9XT1JEQklUUwoKICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCiAgICAgIGVuZAoKICAgIGVuZAoKICAgIHJldHVybiB6CgogIGVuZAoKICByZXR1cm4gYmludF90b251bWJlcih4KSAqIGJpbnRfdG9udW1iZXIoeSkKCmVuZAoKCgotLS0gQ2hlY2sgaWYgYmludHMgYXJlIGVxdWFsLgoKLS0gQHBhcmFtIHggQSBiaW50IHRvIGNvbXBhcmUuCgotLSBAcGFyYW0geSBBIGJpbnQgdG8gY29tcGFyZS4KCmZ1bmN0aW9uIGJpbnQuX19lcSh4LCB5KQoKICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgIGlmIHhbaV0gfj0geVtpXSB0aGVuCgogICAgICByZXR1cm4gZmFsc2UKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiB0cnVlCgplbmQKCgoKLS0tIENoZWNrIGlmIG51bWJlcnMgYXJlIGVxdWFsIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQSBiaW50IG9yIGx1YSBudW1iZXIgdG8gY29tcGFyZS4KCi0tIEBwYXJhbSB5IEEgYmludCBvciBsdWEgbnVtYmVyIHRvIGNvbXBhcmUuCgpmdW5jdGlvbiBiaW50LmVxKHgsIHkpCgogIGxvY2FsIGl4LCBpeSA9IHRvYmludCh4KSwgdG9iaW50KHkpCgogIGlmIGl4IGFuZCBpeSB0aGVuCgogICAgcmV0dXJuIGl4ID09IGl5CgogIGVuZAoKICByZXR1cm4geCA9PSB5CgplbmQKCmxvY2FsIGJpbnRfZXEgPSBiaW50LmVxCgoKCmxvY2FsIGZ1bmN0aW9uIGZpbmRsZWZ0Yml0KHgpCgogIGZvciBpPUJJTlRfU0laRSwxLC0xIGRvCgogICAgbG9jYWwgdiA9IHhbaV0KCiAgICBpZiB2IH49IDAgdGhlbgoKICAgICAgbG9jYWwgaiA9IDAKCiAgICAgIHJlcGVhdAoKICAgICAgICB2ID0gdiA+PiAxCgogICAgICAgIGogPSBqICsgMQoKICAgICAgdW50aWwgdiA9PSAwCgogICAgICByZXR1cm4gKGktMSkqQklOVF9XT1JEQklUUyArIGogLSAxLCBpCgogICAgZW5kCgogIGVuZAoKZW5kCgoKCi0tIFNpbmdsZSB3b3JkIGRpdmlzaW9uIG1vZHVsdXMKCmxvY2FsIGZ1bmN0aW9uIHN1ZGl2bW9kKG51bWUsIGRlbm8pCgogIGxvY2FsIHJlbWEKCiAgbG9jYWwgY2FycnkgPSAwCgogIGZvciBpPUJJTlRfU0laRSwxLC0xIGRvCgogICAgY2FycnkgPSBjYXJyeSB8IG51bWVbaV0KCiAgICBudW1lW2ldID0gY2FycnkgLy8gZGVubwoKICAgIHJlbWEgPSBjYXJyeSAlIGRlbm8KCiAgICBjYXJyeSA9IHJlbWEgPDwgQklOVF9XT1JEQklUUwoKICBlbmQKCiAgcmV0dXJuIHJlbWEKCmVuZAoKCgotLS0gUGVyZm9ybSB1bnNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbiBiZXR3ZWVuIHR3byBpbnRlZ2VycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIFRoaXMgaXMgZWZmZWN0aXZlbHkgdGhlIHNhbWUgb2YgQHtiaW50LnVkaXZ9IGFuZCBAe2JpbnQudW1vZH0uCgotLSBAcGFyYW0geCBUaGUgbnVtZXJhdG9yLCBtdXN0IGJlIGEgYmludCBvciBhIGx1YSBpbnRlZ2VyLgoKLS0gQHBhcmFtIHkgVGhlIGRlbm9taW5hdG9yLCBtdXN0IGJlIGEgYmludCBvciBhIGx1YSBpbnRlZ2VyLgoKLS0gQHJldHVybiBUaGUgcXVvdGllbnQgZm9sbG93aW5nIHRoZSByZW1haW5kZXIsIGJvdGggYmludHMuCgotLSBAcmFpc2UgQXNzZXJ0cyBvbiBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvCgotLSBvciBpZiBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCi0tIEBzZWUgYmludC51ZGl2CgotLSBAc2VlIGJpbnQudW1vZAoKZnVuY3Rpb24gYmludC51ZGl2bW9kKHgsIHkpCgogIGxvY2FsIG51bWUgPSBiaW50X25ldyh4KQoKICBsb2NhbCBkZW5vID0gYmludF9hc3NlcnRfY29udmVydCh5KQoKICAtLSBjb21wdXRlIGlmIGhpZ2ggYml0cyBvZiBkZW5vbWluYXRvciBhcmUgYWxsIHplcm9zCgogIGxvY2FsIGlzaGlnaHplcm8gPSB0cnVlCgogIGZvciBpPTIsQklOVF9TSVpFIGRvCgogICAgaWYgZGVub1tpXSB+PSAwIHRoZW4KCiAgICAgIGlzaGlnaHplcm8gPSBmYWxzZQoKICAgICAgYnJlYWsKCiAgICBlbmQKCiAgZW5kCgogIGlmIGlzaGlnaHplcm8gdGhlbgoKICAgIC0tIHRyeSB0byBkaXZpZGUgYnkgYSBzaW5nbGUgd29yZCAob3B0aW1pemF0aW9uKQoKICAgIGxvY2FsIGxvdyA9IGRlbm9bMV0KCiAgICBhc3NlcnQobG93IH49IDAsICdhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvJykKCiAgICBpZiBsb3cgPT0gMSB0aGVuCgogICAgICAtLSBkZW5vbWluYXRvciBpcyBvbmUKCiAgICAgIHJldHVybiBudW1lLCBiaW50X3plcm8oKQoKICAgIGVsc2VpZiBsb3cgPD0gKEJJTlRfV09SRE1TQiAtIDEpIHRoZW4KCiAgICAgIC0tIGNhbiBkbyBzaW5nbGUgd29yZCBkaXZpc2lvbgoKICAgICAgbG9jYWwgcmVtYSA9IHN1ZGl2bW9kKG51bWUsIGxvdykKCiAgICAgIHJldHVybiBudW1lLCBiaW50X2Zyb211aW50ZWdlcihyZW1hKQoKICAgIGVuZAoKICBlbmQKCiAgaWYgbnVtZTp1bHQoZGVubykgdGhlbgoKICAgIC0tIGRlbm9taW5hdG9yIGlzIGdyZWF0ZXIgdGhhbiBudW1lcmF0b3IKCiAgICByZXR1cm4gYmludF96ZXJvKCksIG51bWUKCiAgZW5kCgogIC0tIGFsaWduIGxlZnRtb3N0IGRpZ2l0cyBpbiBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yCgogIGxvY2FsIGRlbm9sYml0ID0gZmluZGxlZnRiaXQoZGVubykKCiAgbG9jYWwgbnVtZWxiaXQsIG51bWVzaXplID0gZmluZGxlZnRiaXQobnVtZSkKCiAgbG9jYWwgYml0ID0gbnVtZWxiaXQgLSBkZW5vbGJpdAoKICBkZW5vID0gZGVubyA8PCBiaXQKCiAgbG9jYWwgd29yZG1heHAxID0gQklOVF9XT1JETUFYICsgMQoKICBsb2NhbCB3b3JkYml0c20xID0gQklOVF9XT1JEQklUUyAtIDEKCiAgbG9jYWwgZGVub3NpemUgPSBudW1lc2l6ZQoKICBsb2NhbCBxdW90ID0gYmludF96ZXJvKCkKCiAgd2hpbGUgYml0ID49IDAgZG8KCiAgICAtLSBjb21wdXRlIGRlbm9taW5hdG9yIDw9IG51bWVyYXRvcgoKICAgIGxvY2FsIGxlID0gdHJ1ZQoKICAgIGxvY2FsIHNpemUgPSBtYXRoX21heChudW1lc2l6ZSwgZGVub3NpemUpCgogICAgZm9yIGk9c2l6ZSwxLC0xIGRvCgogICAgICBsb2NhbCBhLCBiID0gZGVub1tpXSwgbnVtZVtpXQoKICAgICAgaWYgYSB+PSBiIHRoZW4KCiAgICAgICAgbGUgPSBhIDwgYgoKICAgICAgICBicmVhawoKICAgICAgZW5kCgogICAgZW5kCgogICAgLS0gaWYgdGhlIHBvcnRpb24gb2YgdGhlIG51bWVyYXRvciBhYm92ZSB0aGUgZGVub21pbmF0b3IgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRvIHRoZSBkZW5vbWluYXRvcgoKICAgIGlmIGxlIHRoZW4KCiAgICAgIC0tIHN1YnRyYWN0IGRlbm9taW5hdG9yIGZyb20gdGhlIHBvcnRpb24gb2YgdGhlIG51bWVyYXRvcgoKICAgICAgbG9jYWwgYm9ycm93ID0gMAoKICAgICAgZm9yIGk9MSxzaXplIGRvCgogICAgICAgIGxvY2FsIHJlcyA9IG51bWVbaV0gKyB3b3JkbWF4cDEgLSBkZW5vW2ldIC0gYm9ycm93CgogICAgICAgIG51bWVbaV0gPSByZXMgJiBCSU5UX1dPUkRNQVgKCiAgICAgICAgYm9ycm93ID0gKHJlcyA+PiBCSU5UX1dPUkRCSVRTKSB+IDEKCiAgICAgIGVuZAoKICAgICAgLS0gY29uY2F0ZW5hdGUgMSB0byB0aGUgcmlnaHQgYml0IG9mIHRoZSBxdW90aWVudAoKICAgICAgbG9jYWwgaSA9IChiaXQgLy8gQklOVF9XT1JEQklUUykgKyAxCgogICAgICBxdW90W2ldID0gcXVvdFtpXSB8ICgxIDw8IChiaXQgJSBCSU5UX1dPUkRCSVRTKSkKCiAgICBlbmQKCiAgICAtLSBzaGlmdCByaWdodCB0aGUgZGVub21pbmF0b3IgaW4gb25lIGJpdAoKICAgIGZvciBpPTEsZGVub3NpemUtMSBkbwoKICAgICAgZGVub1tpXSA9ICgoZGVub1tpXSA+PiAxKSB8IChkZW5vW2krMV0gPDwgd29yZGJpdHNtMSkpICYgQklOVF9XT1JETUFYCgogICAgZW5kCgogICAgbG9jYWwgbGFzdGRlbm93b3JkID0gZGVub1tkZW5vc2l6ZV0gPj4gMQoKICAgIGRlbm9bZGVub3NpemVdID0gbGFzdGRlbm93b3JkCgogICAgLS0gcmVjYWxjdWxhdGUgZGVub21pbmF0b3Igc2l6ZSAob3B0aW1pemF0aW9uKQoKICAgIGlmIGxhc3RkZW5vd29yZCA9PSAwIHRoZW4KCiAgICAgIHdoaWxlIGRlbm9bZGVub3NpemVdID09IDAgZG8KCiAgICAgICAgZGVub3NpemUgPSBkZW5vc2l6ZSAtIDEKCiAgICAgIGVuZAoKICAgICAgaWYgZGVub3NpemUgPT0gMCB0aGVuCgogICAgICAgIGJyZWFrCgogICAgICBlbmQKCiAgICBlbmQKCiAgICAtLSBkZWNyZW1lbnQgY3VycmVudCBzZXQgYml0IGZvciB0aGUgcXVvdGllbnQKCiAgICBiaXQgPSBiaXQgLSAxCgogIGVuZAoKICAtLSB0aGUgcmVtYWluaW5nIG51bWVyYXRvciBpcyB0aGUgcmVtYWluZGVyCgogIHJldHVybiBxdW90LCBudW1lCgplbmQKCmxvY2FsIGJpbnRfdWRpdm1vZCA9IGJpbnQudWRpdm1vZAoKCgotLS0gUGVyZm9ybSB1bnNpZ25lZCBkaXZpc2lvbiBiZXR3ZWVuIHR3byBpbnRlZ2VycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIEBwYXJhbSB4IFRoZSBudW1lcmF0b3IsIG11c3QgYmUgYSBiaW50IG9yIGEgbHVhIGludGVnZXIuCgotLSBAcGFyYW0geSBUaGUgZGVub21pbmF0b3IsIG11c3QgYmUgYSBiaW50IG9yIGEgbHVhIGludGVnZXIuCgotLSBAcmV0dXJuIFRoZSBxdW90aWVudCwgYSBiaW50LgoKLS0gQHJhaXNlIEFzc2VydHMgb24gYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwoKLS0gb3IgaWYgaW5wdXRzIGFyZSBub3QgY29udmVydGlibGUgdG8gaW50ZWdlcnMuCgpmdW5jdGlvbiBiaW50LnVkaXYoeCwgeSkKCiAgcmV0dXJuIChiaW50X3VkaXZtb2QoeCwgeSkpCgplbmQKCgoKLS0tIFBlcmZvcm0gdW5zaWduZWQgaW50ZWdlciBtb2R1bG8gb3BlcmF0aW9uIGJldHdlZW4gdHdvIGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggVGhlIG51bWVyYXRvciwgbXVzdCBiZSBhIGJpbnQgb3IgYSBsdWEgaW50ZWdlci4KCi0tIEBwYXJhbSB5IFRoZSBkZW5vbWluYXRvciwgbXVzdCBiZSBhIGJpbnQgb3IgYSBsdWEgaW50ZWdlci4KCi0tIEByZXR1cm4gVGhlIHJlbWFpbmRlciwgYSBiaW50LgoKLS0gQHJhaXNlIEFzc2VydHMgb24gYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwoKLS0gb3IgaWYgdGhlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludC51bW9kKHgsIHkpCgogIGxvY2FsIF8sIHJlbWEgPSBiaW50X3VkaXZtb2QoeCwgeSkKCiAgcmV0dXJuIHJlbWEKCmVuZAoKbG9jYWwgYmludF91bW9kID0gYmludC51bW9kCgoKCi0tLSBQZXJmb3JtIGludGVnZXIgdHJ1bmNhdGUgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb24gYmV0d2VlbiB0d28gbnVtYmVycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIFRoaXMgaXMgZWZmZWN0aXZlbHkgdGhlIHNhbWUgb2YgQHtiaW50LnRkaXZ9IGFuZCBAe2JpbnQudG1vZH0uCgotLSBAcGFyYW0geCBUaGUgbnVtZXJhdG9yLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEBwYXJhbSB5IFRoZSBkZW5vbWluYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmV0dXJuIFRoZSBxdW90aWVudCBmb2xsb3dpbmcgdGhlIHJlbWFpbmRlciwgYm90aCBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmFpc2UgQXNzZXJ0cyBvbiBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvIG9yIG9uIGRpdmlzaW9uIG92ZXJmbG93LgoKLS0gQHNlZSBiaW50LnRkaXYKCi0tIEBzZWUgYmludC50bW9kCgpmdW5jdGlvbiBiaW50LnRkaXZtb2QoeCwgeSkKCiAgbG9jYWwgYXgsIGF5ID0gYmludF9hYnMoeCksIGJpbnRfYWJzKHkpCgogIGxvY2FsIGl4LCBpeSA9IHRvYmludChheCksIHRvYmludChheSkKCiAgbG9jYWwgcXVvdCwgcmVtYQoKICBpZiBpeCBhbmQgaXkgdGhlbgoKICAgIGFzc2VydChub3QgKGJpbnRfZXEoeCwgQklOVF9NSU5JTlRFR0VSKSBhbmQgYmludF9pc21pbnVzb25lKHkpKSwgJ2RpdmlzaW9uIG92ZXJmbG93JykKCiAgICBxdW90LCByZW1hID0gYmludF91ZGl2bW9kKGl4LCBpeSkKCiAgZWxzZQoKICAgIHF1b3QsIHJlbWEgPSBheCAvLyBheSwgYXggJSBheQoKICBlbmQKCiAgbG9jYWwgaXN4bmVnLCBpc3luZWcgPSBiaW50X2lzbmVnKHgpLCBiaW50X2lzbmVnKHkpCgogIGlmIGlzeG5lZyB+PSBpc3luZWcgdGhlbgoKICAgIHF1b3QgPSAtcXVvdAoKICBlbmQKCiAgaWYgaXN4bmVnIHRoZW4KCiAgICByZW1hID0gLXJlbWEKCiAgZW5kCgogIHJldHVybiBxdW90LCByZW1hCgplbmQKCmxvY2FsIGJpbnRfdGRpdm1vZCA9IGJpbnQudGRpdm1vZAoKCgotLS0gUGVyZm9ybSB0cnVuY2F0ZSBkaXZpc2lvbiBiZXR3ZWVuIHR3byBudW1iZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gVHJ1bmNhdGUgZGl2aXNpb24gaXMgYSBkaXZpc2lvbiB0aGF0IHJvdW5kcyB0aGUgcXVvdGllbnQgdG93YXJkcyB6ZXJvLgoKLS0gQHBhcmFtIHggVGhlIG51bWVyYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geSBUaGUgZGVub21pbmF0b3IsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHJldHVybiBUaGUgcXVvdGllbnQsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHJhaXNlIEFzc2VydHMgb24gYXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybyBvciBvbiBkaXZpc2lvbiBvdmVyZmxvdy4KCmZ1bmN0aW9uIGJpbnQudGRpdih4LCB5KQoKICByZXR1cm4gKGJpbnRfdGRpdm1vZCh4LCB5KSkKCmVuZAoKCgotLS0gUGVyZm9ybSBpbnRlZ2VyIHRydW5jYXRlIG1vZHVsbyBvcGVyYXRpb24gYmV0d2VlbiB0d28gbnVtYmVycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIFRoZSBvcGVyYXRpb24gaXMgZGVmaW5lZCBhcyB0aGUgcmVtYWluZGVyIG9mIHRoZSB0cnVuY2F0ZSBkaXZpc2lvbgoKLS0gKGRpdmlzaW9uIHRoYXQgcm91bmRzIHRoZSBxdW90aWVudCB0b3dhcmRzIHplcm8pLgoKLS0gQHBhcmFtIHggVGhlIG51bWVyYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geSBUaGUgZGVub21pbmF0b3IsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHJldHVybiBUaGUgcmVtYWluZGVyLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEByYWlzZSBBc3NlcnRzIG9uIGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8gb3Igb24gZGl2aXNpb24gb3ZlcmZsb3cuCgpmdW5jdGlvbiBiaW50LnRtb2QoeCwgeSkKCiAgbG9jYWwgXywgcmVtYSA9IGJpbnRfdGRpdm1vZCh4LCB5KQoKICByZXR1cm4gcmVtYQoKZW5kCgoKCi0tLSBQZXJmb3JtIGludGVnZXIgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb24gYmV0d2VlbiB0d28gbnVtYmVycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIFRoaXMgaXMgZWZmZWN0aXZlbHkgdGhlIHNhbWUgb2YgQHtiaW50Ll9faWRpdn0gYW5kIEB7YmludC5fX21vZH0uCgotLSBAcGFyYW0geCBUaGUgbnVtZXJhdG9yLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEBwYXJhbSB5IFRoZSBkZW5vbWluYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmV0dXJuIFRoZSBxdW90aWVudCBmb2xsb3dpbmcgdGhlIHJlbWFpbmRlciwgYm90aCBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmFpc2UgQXNzZXJ0cyBvbiBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvLgoKLS0gQHNlZSBiaW50Ll9faWRpdgoKLS0gQHNlZSBiaW50Ll9fbW9kCgpmdW5jdGlvbiBiaW50LmlkaXZtb2QoeCwgeSkKCiAgbG9jYWwgaXgsIGl5ID0gdG9iaW50KHgpLCB0b2JpbnQoeSkKCiAgaWYgaXggYW5kIGl5IHRoZW4KCiAgICBsb2NhbCBpc251bWVuZWcgPSBpeFtCSU5UX1NJWkVdICYgQklOVF9XT1JETVNCIH49IDAKCiAgICBsb2NhbCBpc2Rlbm9uZWcgPSBpeVtCSU5UX1NJWkVdICYgQklOVF9XT1JETVNCIH49IDAKCiAgICBpZiBpc251bWVuZWcgdGhlbgoKICAgICAgaXggPSAtaXgKCiAgICBlbmQKCiAgICBpZiBpc2Rlbm9uZWcgdGhlbgoKICAgICAgaXkgPSAtaXkKCiAgICBlbmQKCiAgICBsb2NhbCBxdW90LCByZW1hID0gYmludF91ZGl2bW9kKGl4LCBpeSkKCiAgICBpZiBpc251bWVuZWcgfj0gaXNkZW5vbmVnIHRoZW4KCiAgICAgIHF1b3Q6X3VubSgpCgogICAgICAtLSByb3VuZCBxdW90aWVudCB0b3dhcmRzIG1pbnVzIGluZmluaXR5CgogICAgICBpZiBub3QgcmVtYTppc3plcm8oKSB0aGVuCgogICAgICAgIHF1b3Q6X2RlYygpCgogICAgICAgIC0tIGFkanVzdCB0aGUgcmVtYWluZGVyCgogICAgICAgIGlmIGlzbnVtZW5lZyBhbmQgbm90IGlzZGVub25lZyB0aGVuCgogICAgICAgICAgcmVtYTpfdW5tKCk6X2FkZCh5KQoKICAgICAgICBlbHNlaWYgaXNkZW5vbmVnIGFuZCBub3QgaXNudW1lbmVnIHRoZW4KCiAgICAgICAgICByZW1hOl9hZGQoeSkKCiAgICAgICAgZW5kCgogICAgICBlbmQKCiAgICBlbHNlaWYgaXNudW1lbmVnIHRoZW4KCiAgICAgIC0tIGFkanVzdCB0aGUgcmVtYWluZGVyCgogICAgICByZW1hOl91bm0oKQoKICAgIGVuZAoKICAgIHJldHVybiBxdW90LCByZW1hCgogIGVuZAoKICBsb2NhbCBueCwgbnkgPSBiaW50X3RvbnVtYmVyKHgpLCBiaW50X3RvbnVtYmVyKHkpCgogIHJldHVybiBueCAvLyBueSwgbnggJSBueQoKZW5kCgpsb2NhbCBiaW50X2lkaXZtb2QgPSBiaW50LmlkaXZtb2QKCgoKLS0tIFBlcmZvcm0gZmxvb3IgZGl2aXNpb24gYmV0d2VlbiB0d28gbnVtYmVycyBjb25zaWRlcmluZyBiaW50cy4KCi0tIEZsb29yIGRpdmlzaW9uIGlzIGEgZGl2aXNpb24gdGhhdCByb3VuZHMgdGhlIHF1b3RpZW50IHRvd2FyZHMgbWludXMgaW5maW5pdHksCgotLSByZXN1bHRpbmcgaW4gdGhlIGZsb29yIG9mIHRoZSBkaXZpc2lvbiBvZiBpdHMgb3BlcmFuZHMuCgotLSBAcGFyYW0geCBUaGUgbnVtZXJhdG9yLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEBwYXJhbSB5IFRoZSBkZW5vbWluYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmV0dXJuIFRoZSBxdW90aWVudCwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcmFpc2UgQXNzZXJ0cyBvbiBhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvLgoKZnVuY3Rpb24gYmludC5fX2lkaXYoeCwgeSkKCiAgbG9jYWwgaXgsIGl5ID0gdG9iaW50KHgpLCB0b2JpbnQoeSkKCiAgaWYgaXggYW5kIGl5IHRoZW4KCiAgICBsb2NhbCBpc251bWVuZWcgPSBpeFtCSU5UX1NJWkVdICYgQklOVF9XT1JETVNCIH49IDAKCiAgICBsb2NhbCBpc2Rlbm9uZWcgPSBpeVtCSU5UX1NJWkVdICYgQklOVF9XT1JETVNCIH49IDAKCiAgICBpZiBpc251bWVuZWcgdGhlbgoKICAgICAgaXggPSAtaXgKCiAgICBlbmQKCiAgICBpZiBpc2Rlbm9uZWcgdGhlbgoKICAgICAgaXkgPSAtaXkKCiAgICBlbmQKCiAgICBsb2NhbCBxdW90LCByZW1hID0gYmludF91ZGl2bW9kKGl4LCBpeSkKCiAgICBpZiBpc251bWVuZWcgfj0gaXNkZW5vbmVnIHRoZW4KCiAgICAgIHF1b3Q6X3VubSgpCgogICAgICAtLSByb3VuZCBxdW90aWVudCB0b3dhcmRzIG1pbnVzIGluZmluaXR5CgogICAgICBpZiBub3QgcmVtYTppc3plcm8oKSB0aGVuCgogICAgICAgIHF1b3Q6X2RlYygpCgogICAgICBlbmQKCiAgICBlbmQKCiAgICByZXR1cm4gcXVvdCwgcmVtYQoKICBlbmQKCiAgcmV0dXJuIGJpbnRfdG9udW1iZXIoeCkgLy8gYmludF90b251bWJlcih5KQoKZW5kCgoKCi0tLSBQZXJmb3JtIGRpdmlzaW9uIGJldHdlZW4gdHdvIG51bWJlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBUaGlzIGFsd2F5cyBjYXN0cyBpbnB1dHMgdG8gZmxvYXRzLCBmb3IgaW50ZWdlciBkaXZpc2lvbiBvbmx5IHVzZSBAe2JpbnQuX19pZGl2fS4KCi0tIEBwYXJhbSB4IFRoZSBudW1lcmF0b3IsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHBhcmFtIHkgVGhlIGRlbm9taW5hdG9yLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEByZXR1cm4gVGhlIHF1b3RpZW50LCBhIGx1YSBudW1iZXIuCgpmdW5jdGlvbiBiaW50Ll9fZGl2KHgsIHkpCgogIHJldHVybiBiaW50X3RvbnVtYmVyKHgpIC8gYmludF90b251bWJlcih5KQoKZW5kCgoKCi0tLSBQZXJmb3JtIGludGVnZXIgZmxvb3IgbW9kdWxvIG9wZXJhdGlvbiBiZXR3ZWVuIHR3byBudW1iZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gVGhlIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGFzIHRoZSByZW1haW5kZXIgb2YgdGhlIGZsb29yIGRpdmlzaW9uCgotLSAoZGl2aXNpb24gdGhhdCByb3VuZHMgdGhlIHF1b3RpZW50IHRvd2FyZHMgbWludXMgaW5maW5pdHkpLgoKLS0gQHBhcmFtIHggVGhlIG51bWVyYXRvciwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geSBUaGUgZGVub21pbmF0b3IsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHJldHVybiBUaGUgcmVtYWluZGVyLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEByYWlzZSBBc3NlcnRzIG9uIGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8uCgpmdW5jdGlvbiBiaW50Ll9fbW9kKHgsIHkpCgogIGxvY2FsIF8sIHJlbWEgPSBiaW50X2lkaXZtb2QoeCwgeSkKCiAgcmV0dXJuIHJlbWEKCmVuZAoKCgotLS0gUGVyZm9ybSBpbnRlZ2VyIHBvd2VyIGJldHdlZW4gdHdvIGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gSWYgeSBpcyBuZWdhdGl2ZSB0aGVuIHBvdyBpcyBwZXJmb3JtZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlci4KCi0tIEBwYXJhbSB4IFRoZSBiYXNlLCBhbiBpbnRlZ2VyLgoKLS0gQHBhcmFtIHkgVGhlIGV4cG9uZW50LCBhbiBpbnRlZ2VyLgoKLS0gQHJldHVybiBUaGUgcmVzdWx0IG9mIHRoZSBwb3cgb3BlcmF0aW9uLCBhIGJpbnQuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKLS0gQHNlZSBiaW50Ll9fcG93CgotLSBAc2VlIGJpbnQudXBvd21vZAoKZnVuY3Rpb24gYmludC5pcG93KHgsIHkpCgogIHkgPSBiaW50X2Fzc2VydF9jb252ZXJ0KHkpCgogIGlmIHk6aXN6ZXJvKCkgdGhlbgoKICAgIHJldHVybiBiaW50X29uZSgpCgogIGVsc2VpZiB5Omlzb25lKCkgdGhlbgoKICAgIHJldHVybiBiaW50X25ldyh4KQoKICBlbmQKCiAgLS0gY29tcHV0ZSBleHBvbmVudGlhdGlvbiBieSBzcXVhcmluZwoKICB4LCB5ID0gYmludF9uZXcoeCksICBiaW50X25ldyh5KQoKICBsb2NhbCB6ID0gYmludF9vbmUoKQoKICByZXBlYXQKCiAgICBpZiB5OmlzZXZlbigpIHRoZW4KCiAgICAgIHggPSB4ICogeAoKICAgICAgeTpfc2hyb25lKCkKCiAgICBlbHNlCgogICAgICB6ID0geCAqIHoKCiAgICAgIHggPSB4ICogeAoKICAgICAgeTpfZGVjKCk6X3Nocm9uZSgpCgogICAgZW5kCgogIHVudGlsIHk6aXNvbmUoKQoKICByZXR1cm4geCAqIHoKCmVuZAoKCgotLS0gUGVyZm9ybSBpbnRlZ2VyIHBvd2VyIGJldHdlZW4gdHdvIHVuc2lnbmVkIGludGVnZXJzIG92ZXIgYSBtb2R1bHVzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggVGhlIGJhc2UsIGFuIGludGVnZXIuCgotLSBAcGFyYW0geSBUaGUgZXhwb25lbnQsIGFuIGludGVnZXIuCgotLSBAcGFyYW0gbSBUaGUgbW9kdWx1cywgYW4gaW50ZWdlci4KCi0tIEByZXR1cm4gVGhlIHJlc3VsdCBvZiB0aGUgcG93IG9wZXJhdGlvbiwgYSBiaW50LgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCi0tIEBzZWUgYmludC5fX3BvdwoKLS0gQHNlZSBiaW50Lmlwb3cKCmZ1bmN0aW9uIGJpbnQudXBvd21vZCh4LCB5LCBtKQoKICBtID0gYmludF9hc3NlcnRfY29udmVydChtKQoKICBpZiBtOmlzb25lKCkgdGhlbgoKICAgIHJldHVybiBiaW50X3plcm8oKQoKICBlbmQKCiAgeCwgeSA9IGJpbnRfbmV3KHgpLCAgYmludF9uZXcoeSkKCiAgbG9jYWwgeiA9IGJpbnRfb25lKCkKCiAgeCA9IGJpbnRfdW1vZCh4LCBtKQoKICB3aGlsZSBub3QgeTppc3plcm8oKSBkbwoKICAgIGlmIHk6aXNvZGQoKSB0aGVuCgogICAgICB6ID0gYmludF91bW9kKHoqeCwgbSkKCiAgICBlbmQKCiAgICB5Ol9zaHJvbmUoKQoKICAgIHggPSBiaW50X3Vtb2QoeCp4LCBtKQoKICBlbmQKCiAgcmV0dXJuIHoKCmVuZAoKCgotLS0gUGVyZm9ybSBudW1lcmljIHBvd2VyIGJldHdlZW4gdHdvIG51bWJlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBUaGlzIGFsd2F5cyBjYXN0cyBpbnB1dHMgdG8gZmxvYXRzLCBmb3IgaW50ZWdlciBwb3dlciBvbmx5IHVzZSBAe2JpbnQuaXBvd30uCgotLSBAcGFyYW0geCBUaGUgYmFzZSwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geSBUaGUgZXhwb25lbnQsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHJldHVybiBUaGUgcmVzdWx0IG9mIHRoZSBwb3cgb3BlcmF0aW9uLCBhIGx1YSBudW1iZXIuCgotLSBAc2VlIGJpbnQuaXBvdwoKZnVuY3Rpb24gYmludC5fX3Bvdyh4LCB5KQoKICByZXR1cm4gYmludF90b251bWJlcih4KSBeIGJpbnRfdG9udW1iZXIoeSkKCmVuZAoKCgotLS0gQml0d2lzZSBsZWZ0IHNoaWZ0IGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQW4gaW50ZWdlciB0byBwZXJmb3JtIHRoZSBiaXR3aXNlIHNoaWZ0LgoKLS0gQHBhcmFtIHkgQW4gaW50ZWdlciB3aXRoIHRoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdC4KCi0tIEByZXR1cm4gVGhlIHJlc3VsdCBvZiBzaGlmdCBvcGVyYXRpb24sIGEgYmludC4KCi0tIEByYWlzZSBBc3NlcnRzIGluIGNhc2UgaW5wdXRzIGFyZSBub3QgY29udmVydGlibGUgdG8gaW50ZWdlcnMuCgpmdW5jdGlvbiBiaW50Ll9fc2hsKHgsIHkpCgogIHgsIHkgPSBiaW50X25ldyh4KSwgYmludF9hc3NlcnRfdG9pbnRlZ2VyKHkpCgogIGlmIHkgPT0gbWF0aF9taW5pbnRlZ2VyIG9yIG1hdGhfYWJzKHkpID49IEJJTlRfQklUUyB0aGVuCgogICAgcmV0dXJuIGJpbnRfemVybygpCgogIGVuZAoKICBpZiB5IDwgMCB0aGVuCgogICAgcmV0dXJuIHggPj4gLXkKCiAgZW5kCgogIGxvY2FsIG52YWxzID0geSAvLyBCSU5UX1dPUkRCSVRTCgogIGlmIG52YWxzIH49IDAgdGhlbgoKICAgIHg6X3NobHdvcmRzKG52YWxzKQoKICAgIHkgPSB5IC0gbnZhbHMgKiBCSU5UX1dPUkRCSVRTCgogIGVuZAoKICBpZiB5IH49IDAgdGhlbgoKICAgIGxvY2FsIHdvcmRiaXRzbXkgPSBCSU5UX1dPUkRCSVRTIC0geQoKICAgIGZvciBpPUJJTlRfU0laRSwyLC0xIGRvCgogICAgICB4W2ldID0gKCh4W2ldIDw8IHkpIHwgKHhbaS0xXSA+PiB3b3JkYml0c215KSkgJiBCSU5UX1dPUkRNQVgKCiAgICBlbmQKCiAgICB4WzFdID0gKHhbMV0gPDwgeSkgJiBCSU5UX1dPUkRNQVgKCiAgZW5kCgogIHJldHVybiB4CgplbmQKCgoKLS0tIEJpdHdpc2UgcmlnaHQgc2hpZnQgaW50ZWdlcnMgY29uc2lkZXJpbmcgYmludHMuCgotLSBAcGFyYW0geCBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gdGhlIGJpdHdpc2Ugc2hpZnQuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHdpdGggdGhlIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0LgoKLS0gQHJldHVybiBUaGUgcmVzdWx0IG9mIHNoaWZ0IG9wZXJhdGlvbiwgYSBiaW50LgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCmZ1bmN0aW9uIGJpbnQuX19zaHIoeCwgeSkKCiAgeCwgeSA9IGJpbnRfbmV3KHgpLCBiaW50X2Fzc2VydF90b2ludGVnZXIoeSkKCiAgaWYgeSA9PSBtYXRoX21pbmludGVnZXIgb3IgbWF0aF9hYnMoeSkgPj0gQklOVF9CSVRTIHRoZW4KCiAgICByZXR1cm4gYmludF96ZXJvKCkKCiAgZW5kCgogIGlmIHkgPCAwIHRoZW4KCiAgICByZXR1cm4geCA8PCAteQoKICBlbmQKCiAgbG9jYWwgbnZhbHMgPSB5IC8vIEJJTlRfV09SREJJVFMKCiAgaWYgbnZhbHMgfj0gMCB0aGVuCgogICAgeDpfc2hyd29yZHMobnZhbHMpCgogICAgeSA9IHkgLSBudmFscyAqIEJJTlRfV09SREJJVFMKCiAgZW5kCgogIGlmIHkgfj0gMCB0aGVuCgogICAgbG9jYWwgd29yZGJpdHNteSA9IEJJTlRfV09SREJJVFMgLSB5CgogICAgZm9yIGk9MSxCSU5UX1NJWkUtMSBkbwoKICAgICAgeFtpXSA9ICgoeFtpXSA+PiB5KSB8ICh4W2krMV0gPDwgd29yZGJpdHNteSkpICYgQklOVF9XT1JETUFYCgogICAgZW5kCgogICAgeFtCSU5UX1NJWkVdID0geFtCSU5UX1NJWkVdID4+IHkKCiAgZW5kCgogIHJldHVybiB4CgplbmQKCgoKLS0tIEJpdHdpc2UgQU5EIGJpbnRzIChpbi1wbGFjZSkuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gYml0d2lzZSBBTkQuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludDpfYmFuZCh5KQoKICB5ID0gYmludF9hc3NlcnRfY29udmVydCh5KQoKICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgIHNlbGZbaV0gPSBzZWxmW2ldICYgeVtpXQoKICBlbmQKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLS0gQml0d2lzZSBBTkQgdHdvIGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQW4gaW50ZWdlciB0byBwZXJmb3JtIGJpdHdpc2UgQU5ELgoKLS0gQHBhcmFtIHkgQW4gaW50ZWdlciB0byBwZXJmb3JtIGJpdHdpc2UgQU5ELgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCmZ1bmN0aW9uIGJpbnQuX19iYW5kKHgsIHkpCgogIHJldHVybiBiaW50X25ldyh4KTpfYmFuZCh5KQoKZW5kCgoKCi0tLSBCaXR3aXNlIE9SIGJpbnRzIChpbi1wbGFjZSkuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gYml0d2lzZSBPUi4KCi0tIEByYWlzZSBBc3NlcnRzIGluIGNhc2UgaW5wdXRzIGFyZSBub3QgY29udmVydGlibGUgdG8gaW50ZWdlcnMuCgpmdW5jdGlvbiBiaW50Ol9ib3IoeSkKCiAgeSA9IGJpbnRfYXNzZXJ0X2NvbnZlcnQoeSkKCiAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICBzZWxmW2ldID0gc2VsZltpXSB8IHlbaV0KCiAgZW5kCgogIHJldHVybiBzZWxmCgplbmQKCgoKLS0tIEJpdHdpc2UgT1IgdHdvIGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQW4gaW50ZWdlciB0byBwZXJmb3JtIGJpdHdpc2UgT1IuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gYml0d2lzZSBPUi4KCi0tIEByYWlzZSBBc3NlcnRzIGluIGNhc2UgaW5wdXRzIGFyZSBub3QgY29udmVydGlibGUgdG8gaW50ZWdlcnMuCgpmdW5jdGlvbiBiaW50Ll9fYm9yKHgsIHkpCgogIHJldHVybiBiaW50X25ldyh4KTpfYm9yKHkpCgplbmQKCgoKLS0tIEJpdHdpc2UgWE9SIGJpbnRzIChpbi1wbGFjZSkuCgotLSBAcGFyYW0geSBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gYml0d2lzZSBYT1IuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludDpfYnhvcih5KQoKICB5ID0gYmludF9hc3NlcnRfY29udmVydCh5KQoKICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgIHNlbGZbaV0gPSBzZWxmW2ldIH4geVtpXQoKICBlbmQKCiAgcmV0dXJuIHNlbGYKCmVuZAoKCgotLS0gQml0d2lzZSBYT1IgdHdvIGludGVnZXJzIGNvbnNpZGVyaW5nIGJpbnRzLgoKLS0gQHBhcmFtIHggQW4gaW50ZWdlciB0byBwZXJmb3JtIGJpdHdpc2UgWE9SLgoKLS0gQHBhcmFtIHkgQW4gaW50ZWdlciB0byBwZXJmb3JtIGJpdHdpc2UgWE9SLgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCmZ1bmN0aW9uIGJpbnQuX19ieG9yKHgsIHkpCgogIHJldHVybiBiaW50X25ldyh4KTpfYnhvcih5KQoKZW5kCgoKCi0tLSBCaXR3aXNlIE5PVCBhIGJpbnQgKGluLXBsYWNlKS4KCmZ1bmN0aW9uIGJpbnQ6X2Jub3QoKQoKICBmb3IgaT0xLEJJTlRfU0laRSBkbwoKICAgIHNlbGZbaV0gPSAofnNlbGZbaV0pICYgQklOVF9XT1JETUFYCgogIGVuZAoKICByZXR1cm4gc2VsZgoKZW5kCgoKCi0tLSBCaXR3aXNlIE5PVCBhIGJpbnQuCgotLSBAcGFyYW0geCBBbiBpbnRlZ2VyIHRvIHBlcmZvcm0gYml0d2lzZSBOT1QuCgotLSBAcmFpc2UgQXNzZXJ0cyBpbiBjYXNlIGlucHV0cyBhcmUgbm90IGNvbnZlcnRpYmxlIHRvIGludGVnZXJzLgoKZnVuY3Rpb24gYmludC5fX2Jub3QoeCkKCiAgbG9jYWwgeSA9IHNldG1ldGF0YWJsZSh7fSwgYmludCkKCiAgZm9yIGk9MSxCSU5UX1NJWkUgZG8KCiAgICB5W2ldID0gKH54W2ldKSAmIEJJTlRfV09SRE1BWAoKICBlbmQKCiAgcmV0dXJuIHkKCmVuZAoKCgotLS0gTmVnYXRlIGEgYmludCAoaW4tcGxhY2UpLiBUaGlzIGVmZmVjdGl2ZWx5IGFwcGxpZXMgdHdvJ3MgY29tcGxlbWVudHMuCgpmdW5jdGlvbiBiaW50Ol91bm0oKQoKICByZXR1cm4gc2VsZjpfYm5vdCgpOl9pbmMoKQoKZW5kCgoKCi0tLSBOZWdhdGUgYSBiaW50LiBUaGlzIGVmZmVjdGl2ZWx5IGFwcGxpZXMgdHdvJ3MgY29tcGxlbWVudHMuCgotLSBAcGFyYW0geCBBIGJpbnQgdG8gcGVyZm9ybSBuZWdhdGlvbi4KCmZ1bmN0aW9uIGJpbnQuX191bm0oeCkKCiAgcmV0dXJuICh+eCk6X2luYygpCgplbmQKCgoKLS0tIENvbXBhcmUgaWYgaW50ZWdlciB4IGlzIGxlc3MgdGhhbiB5IGNvbnNpZGVyaW5nIGJpbnRzICh1bnNpZ25lZCB2ZXJzaW9uKS4KCi0tIEBwYXJhbSB4IExlZnQgaW50ZWdlciB0byBjb21wYXJlLgoKLS0gQHBhcmFtIHkgUmlnaHQgaW50ZWdlciB0byBjb21wYXJlLgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCi0tIEBzZWUgYmludC5fX2x0CgpmdW5jdGlvbiBiaW50LnVsdCh4LCB5KQoKICB4LCB5ID0gYmludF9hc3NlcnRfY29udmVydCh4KSwgYmludF9hc3NlcnRfY29udmVydCh5KQoKICBmb3IgaT1CSU5UX1NJWkUsMSwtMSBkbwoKICAgIGxvY2FsIGEsIGIgPSB4W2ldLCB5W2ldCgogICAgaWYgYSB+PSBiIHRoZW4KCiAgICAgIHJldHVybiBhIDwgYgoKICAgIGVuZAoKICBlbmQKCiAgcmV0dXJuIGZhbHNlCgplbmQKCgoKLS0tIENvbXBhcmUgaWYgYmludCB4IGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiB5IGNvbnNpZGVyaW5nIGJpbnRzICh1bnNpZ25lZCB2ZXJzaW9uKS4KCi0tIEBwYXJhbSB4IExlZnQgaW50ZWdlciB0byBjb21wYXJlLgoKLS0gQHBhcmFtIHkgUmlnaHQgaW50ZWdlciB0byBjb21wYXJlLgoKLS0gQHJhaXNlIEFzc2VydHMgaW4gY2FzZSBpbnB1dHMgYXJlIG5vdCBjb252ZXJ0aWJsZSB0byBpbnRlZ2Vycy4KCi0tIEBzZWUgYmludC5fX2xlCgpmdW5jdGlvbiBiaW50LnVsZSh4LCB5KQoKICB4LCB5ID0gYmludF9hc3NlcnRfY29udmVydCh4KSwgYmludF9hc3NlcnRfY29udmVydCh5KQoKICBmb3IgaT1CSU5UX1NJWkUsMSwtMSBkbwoKICAgIGxvY2FsIGEsIGIgPSB4W2ldLCB5W2ldCgogICAgaWYgYSB+PSBiIHRoZW4KCiAgICAgIHJldHVybiBhIDwgYgoKICAgIGVuZAoKICBlbmQKCiAgcmV0dXJuIHRydWUKCmVuZAoKCgotLS0gQ29tcGFyZSBpZiBudW1iZXIgeCBpcyBsZXNzIHRoYW4geSBjb25zaWRlcmluZyBiaW50cyBhbmQgc2lnbnMuCgotLSBAcGFyYW0geCBMZWZ0IHZhbHVlIHRvIGNvbXBhcmUsIGEgYmludCBvciBsdWEgbnVtYmVyLgoKLS0gQHBhcmFtIHkgUmlnaHQgdmFsdWUgdG8gY29tcGFyZSwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAc2VlIGJpbnQudWx0CgpmdW5jdGlvbiBiaW50Ll9fbHQoeCwgeSkKCiAgbG9jYWwgaXgsIGl5ID0gdG9iaW50KHgpLCB0b2JpbnQoeSkKCiAgaWYgaXggYW5kIGl5IHRoZW4KCiAgICBsb2NhbCB4bmVnID0gaXhbQklOVF9TSVpFXSAmIEJJTlRfV09SRE1TQiB+PSAwCgogICAgbG9jYWwgeW5lZyA9IGl5W0JJTlRfU0laRV0gJiBCSU5UX1dPUkRNU0Igfj0gMAoKICAgIGlmIHhuZWcgPT0geW5lZyB0aGVuCgogICAgICBmb3IgaT1CSU5UX1NJWkUsMSwtMSBkbwoKICAgICAgICBsb2NhbCBhLCBiID0gaXhbaV0sIGl5W2ldCgogICAgICAgIGlmIGEgfj0gYiB0aGVuCgogICAgICAgICAgcmV0dXJuIGEgPCBiCgogICAgICAgIGVuZAoKICAgICAgZW5kCgogICAgICByZXR1cm4gZmFsc2UKCiAgICBlbmQKCiAgICByZXR1cm4geG5lZyBhbmQgbm90IHluZWcKCiAgZW5kCgogIHJldHVybiBiaW50X3RvbnVtYmVyKHgpIDwgYmludF90b251bWJlcih5KQoKZW5kCgoKCi0tLSBDb21wYXJlIGlmIG51bWJlciB4IGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiB5IGNvbnNpZGVyaW5nIGJpbnRzIGFuZCBzaWducy4KCi0tIEBwYXJhbSB4IExlZnQgdmFsdWUgdG8gY29tcGFyZSwgYSBiaW50IG9yIGx1YSBudW1iZXIuCgotLSBAcGFyYW0geSBSaWdodCB2YWx1ZSB0byBjb21wYXJlLCBhIGJpbnQgb3IgbHVhIG51bWJlci4KCi0tIEBzZWUgYmludC51bGUKCmZ1bmN0aW9uIGJpbnQuX19sZSh4LCB5KQoKICBsb2NhbCBpeCwgaXkgPSB0b2JpbnQoeCksIHRvYmludCh5KQoKICBpZiBpeCBhbmQgaXkgdGhlbgoKICAgIGxvY2FsIHhuZWcgPSBpeFtCSU5UX1NJWkVdICYgQklOVF9XT1JETVNCIH49IDAKCiAgICBsb2NhbCB5bmVnID0gaXlbQklOVF9TSVpFXSAmIEJJTlRfV09SRE1TQiB+PSAwCgogICAgaWYgeG5lZyA9PSB5bmVnIHRoZW4KCiAgICAgIGZvciBpPUJJTlRfU0laRSwxLC0xIGRvCgogICAgICAgIGxvY2FsIGEsIGIgPSBpeFtpXSwgaXlbaV0KCiAgICAgICAgaWYgYSB+PSBiIHRoZW4KCiAgICAgICAgICByZXR1cm4gYSA8IGIKCiAgICAgICAgZW5kCgogICAgICBlbmQKCiAgICAgIHJldHVybiB0cnVlCgogICAgZW5kCgogICAgcmV0dXJuIHhuZWcgYW5kIG5vdCB5bmVnCgogIGVuZAoKICByZXR1cm4gYmludF90b251bWJlcih4KSA8PSBiaW50X3RvbnVtYmVyKHkpCgplbmQKCgoKLS0tIENvbnZlcnQgYSBiaW50IHRvIGEgc3RyaW5nIG9uIGJhc2UgMTAuCgotLSBAc2VlIGJpbnQudG9iYXNlCgpmdW5jdGlvbiBiaW50Ol9fdG9zdHJpbmcoKQoKICByZXR1cm4gc2VsZjp0b2Jhc2UoMTApCgplbmQKCgoKLS0gQWxsb3cgY3JlYXRpbmcgYmludHMgYnkgY2FsbGluZyBiaW50IGl0c2VsZgoKc2V0bWV0YXRhYmxlKGJpbnQsIHsKCiAgX19jYWxsID0gZnVuY3Rpb24oXywgeCkKCiAgICByZXR1cm4gYmludF9uZXcoeCkKCiAgZW5kCgp9KQoKCgpCSU5UX01BVEhNSU5JTlRFR0VSLCBCSU5UX01BVEhNQVhJTlRFR0VSID0gYmludF9uZXcobWF0aC5taW5pbnRlZ2VyKSwgYmludF9uZXcobWF0aC5tYXhpbnRlZ2VyKQoKQklOVF9NSU5JTlRFR0VSID0gYmludC5taW5pbnRlZ2VyKCkKCm1lbW9bbWVtb2luZGV4XSA9IGJpbnQKCgoKcmV0dXJuIGJpbnQKCgoKZW5kCgoKCnJldHVybiBuZXdtb2R1bGUAQqDrBQvheGxvY2FsIE4gPSA2MjQKCmxvY2FsIE0gPSAzOTcKCmxvY2FsIE1BVFJJWF9BID0gMHg5OTA4YjBkZgoKbG9jYWwgVVBQRVJfTUFTSyA9IDB4ODAwMDAwMDAKCmxvY2FsIExPV0VSX01BU0sgPSAweDdmZmZmZmZmCgoKCi0tIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkCgpsb2NhbCBmdW5jdGlvbiBpbml0X2dlbnJhbmQobywgcykKCiAgICBvLm10WzBdID0gcyAmIDB4ZmZmZmZmZmYKCiAgICBmb3IgaSA9IDEsIE4gLSAxIGRvCgogICAgICAgIG8ubXRbaV0gPSAoMTgxMjQzMzI1MyAqIChvLm10W2kgLSAxXSB+IChvLm10W2kgLSAxXSA+PiAzMCkpKSArIGkKCiAgICAgICAgLS0gU2VlIEtudXRoIFRBT0NQIFZvbDIuIDNyZCBFZC4gUC4xMDYgZm9yIG11bHRpcGxpZXIuCgogICAgICAgIC0tIEluIHRoZSBwcmV2aW91cyB2ZXJzaW9ucywgTVNCcyBvZiB0aGUgc2VlZCBhZmZlY3QKCiAgICAgICAgLS0gb25seSBNU0JzIG9mIHRoZSBhcnJheSBtdFtdLgoKICAgICAgICAtLSAyMDAyLzAxLzA5IG1vZGlmaWVkIGJ5IE1ha290byBNYXRzdW1vdG8KCiAgICAgICAgby5tdFtpXSA9IG8ubXRbaV0gJiAweGZmZmZmZmZmCgogICAgICAgIC0tIGZvciA+MzIgYml0IG1hY2hpbmVzCgogICAgZW5kCgogICAgby5tdGkgPSBOCgplbmQKCgoKLS0gZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZhbAoKbG9jYWwgZnVuY3Rpb24gZ2VucmFuZF9pbnQzMihvKQoKICAgIGxvY2FsIHkKCiAgICBsb2NhbCBtYWcwMSA9IHt9IC0tIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEKCiAgICBtYWcwMVswXSA9IDB4MAoKICAgIG1hZzAxWzFdID0gTUFUUklYX0EKCiAgICBpZiBvLm10aSA+PSBOIHRoZW4gIC0tIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUKCiAgICAgICAgaWYgby5tdGkgPT0gTiArIDEgdGhlbiAtLSBpZiBpbml0X2dlbnJhbmQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLAoKICAgICAgICAgICAgaW5pdF9nZW5yYW5kKG8sIDU0ODkpICAgLS0gYSBkZWZhdWx0IGluaXRpYWwgc2VlZCBpcyB1c2VkCgogICAgICAgIGVuZAoKICAgICAgICBmb3Iga2sgPSAwLCBOIC0gTSAtIDEgZG8KCiAgICAgICAgICAgIHkgPSAoby5tdFtra10gJiBVUFBFUl9NQVNLKSB8IChvLm10W2trICsgMV0gJiBMT1dFUl9NQVNLKQoKICAgICAgICAgICAgby5tdFtra10gPSBvLm10W2trICsgTV0gfiAoeSA+PiAxKSB+IG1hZzAxW3kgJiAweDFdCgogICAgICAgIGVuZAoKICAgICAgICBmb3Iga2sgPSBOIC0gTSwgTiAtIDIgZG8KCiAgICAgICAgICAgIHkgPSAoby5tdFtra10gJiBVUFBFUl9NQVNLKSB8IChvLm10W2trICsgMV0gJiBMT1dFUl9NQVNLKQoKICAgICAgICAgICAgby5tdFtra10gPSBvLm10W2trICsgKE0gLSBOKV0gfiAoeSA+PiAxKSB+IG1hZzAxW3kgJiAweDFdCgogICAgICAgIGVuZAoKICAgICAgICB5ID0gKG8ubXRbTiAtIDFdICYgVVBQRVJfTUFTSykgfCAoby5tdFswXSAmIExPV0VSX01BU0spCgogICAgICAgIG8ubXRbTiAtIDFdID0gby5tdFtNIC0gMV0gfiAoeSA+PiAxKSB+IG1hZzAxW3kgJiAweDFdCgoKCiAgICAgICAgby5tdGkgPSAwCgogICAgZW5kCgoKCiAgICB5ID0gby5tdFtvLm10aV0KCiAgICBvLm10aSA9IG8ubXRpICsgMQoKCgogICAgLS0gVGVtcGVyaW5nCgogICAgeSA9IHkgfiAoeSA+PiAxMSkKCiAgICB5ID0geSB+ICgoeSA8PCA3KSAmIDB4OWQyYzU2ODApCgogICAgeSA9IHkgfiAoKHkgPDwgMTUpICYgMHhlZmM2MDAwMCkKCiAgICB5ID0geSB+ICh5ID4+IDE4KQoKCgogICAgcmV0dXJuIHkKCmVuZAoKCgpsb2NhbCBNZXJzZW5uZVR3aXN0ZXIgPSB7fQoKTWVyc2VubmVUd2lzdGVyLm10ID0ge30KCk1lcnNlbm5lVHdpc3Rlci5tdGkgPSBOICsgMQoKCgoKCmxvY2FsIFJhbmRvbSA9IHt9CgoKCi0tIHNldCBuZXcgcmFuZG9tIHNlZWQKCmZ1bmN0aW9uIFJhbmRvbS5zZWVkKHNlZWQpCgogICAgaW5pdF9nZW5yYW5kKE1lcnNlbm5lVHdpc3Rlciwgc2VlZCkKCmVuZAoKCgotLSBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDEpLXJlYWwtaW50ZXJ2YWwKCmZ1bmN0aW9uIFJhbmRvbS5yYW5kb20oKQoKICAgIHJldHVybiBnZW5yYW5kX2ludDMyKE1lcnNlbm5lVHdpc3RlcikgKiAoMS4wIC8gNDI5NDk2NzI5Ni4wKQoKZW5kCgoKCi0tW1sKCnJldHVybiBhIHJhbmRvbSBpbnRlZ2VyCgpOT1RFIHRoZSBtaW4gYW5kIG1heCBhcmUgSU5DTFVERUQgaW4gdGhlIHJhbmdlLgoKdGhlIG1heCBpbnRlZ2VyIGluIGx1YSBpcyBtYXRoLm1heGludGVnZXIKCnRoZSBtaW4gaXMgbWF0aC5taW5pbnRlZ2VyCgpdXQoKZnVuY3Rpb24gUmFuZG9tLmludGVnZXIobWluLCBtYXgpCgogICAgYXNzZXJ0KG1heCA+PSBtaW4sICJtYXggbXVzdCBiaWdnZXIgdGhhbiBtaW4iKQoKICAgIHJldHVybiBtYXRoLmZsb29yKFJhbmRvbS5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSArIG1pbikKCmVuZAoKCgpyZXR1cm4gUmFuZG9tAAAAAGxvY2FsIGhhbmRsZXJzID0geyBfdmVyc2lvbiA9ICIwLjAuNSIgfQoKbG9jYWwgY29yb3V0aW5lID0gcmVxdWlyZSgnY29yb3V0aW5lJykKCmxvY2FsIHV0aWxzID0gcmVxdWlyZSgnLnV0aWxzJykKCgoKaGFuZGxlcnMudXRpbHMgPSByZXF1aXJlKCcuaGFuZGxlcnMtdXRpbHMnKQoKLS0gaWYgdXBkYXRlIHdlIG5lZWQgdG8ga2VlcCBkZWZpbmVkIGhhbmRsZXJzCgppZiBIYW5kbGVycyB0aGVuCgogIGhhbmRsZXJzLmxpc3QgPSBIYW5kbGVycy5saXN0IG9yIHt9CgogIGhhbmRsZXJzLmNvcm91dGluZXMgPSBIYW5kbGVycy5jb3JvdXRpbmVzIG9yIHt9CgplbHNlCgogIGhhbmRsZXJzLmxpc3QgPSB7fQoKICBoYW5kbGVycy5jb3JvdXRpbmVzID0ge30KCgoKZW5kCgpoYW5kbGVycy5vbmNlTm9uY2UgPSAwCgoKCgoKbG9jYWwgZnVuY3Rpb24gZmluZEluZGV4QnlQcm9wKGFycmF5LCBwcm9wLCB2YWx1ZSkKCiAgZm9yIGluZGV4LCBvYmplY3QgaW4gaXBhaXJzKGFycmF5KSBkbwoKICAgIGlmIG9iamVjdFtwcm9wXSA9PSB2YWx1ZSB0aGVuCgogICAgICByZXR1cm4gaW5kZXgKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiBuaWwKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBhc3NlcnRBZGRBcmdzKG5hbWUsIHBhdHRlcm4sIGhhbmRsZSwgbWF4UnVucykKCiAgYXNzZXJ0KAoKICAgIHR5cGUobmFtZSkgPT0gJ3N0cmluZycgYW5kCgogICAgKHR5cGUocGF0dGVybikgPT0gJ2Z1bmN0aW9uJyBvciB0eXBlKHBhdHRlcm4pID09ICd0YWJsZScgb3IgdHlwZShwYXR0ZXJuKSA9PSAnc3RyaW5nJyksCgogICAgJ0ludmFsaWQgYXJndW1lbnRzIGdpdmVuLiBFeHBlY3RlZDogXG4nIC4uCgogICAgJ1x0bmFtZSA6IHN0cmluZywgJyAuLgoKICAgICdcdHBhdHRlcm4gOiBBY3Rpb24gOiBzdHJpbmcgfCBNc2dNYXRjaCA6IHRhYmxlLFxuJyAuLgoKICAgICdcdFx0ZnVuY3Rpb24obXNnOiBNZXNzYWdlKSA6IHstMSA9IGJyZWFrLCAwID0gc2tpcCwgMSA9IGNvbnRpbnVlfSxcbicgLi4KCiAgICAnXHRoYW5kbGUobXNnIDogTWVzc2FnZSkgOiB2b2lkKSB8IFJlc29sdmVyLFxuJyAuLgoKICAgICdcdE1heFJ1bnM/IDogbnVtYmVyIHwgImluZiIgfCBuaWwnKQoKZW5kCgoKCmZ1bmN0aW9uIGhhbmRsZXJzLmdlbmVyYXRlUmVzb2x2ZXIocmVzb2x2ZVNwZWMpCgogIHJldHVybiBmdW5jdGlvbihtc2cpCgogICAgLS0gSWYgdGhlIHJlc29sdmVyIGlzIGEgc2luZ2xlIGZ1bmN0aW9uLCBjYWxsIGl0LgoKICAgIC0tIEVsc2UsIGZpbmQgdGhlIGZpcnN0IG1hdGNoaW5nIHBhdHRlcm4gKGJ5IGl0cyBtYXRjaFNwZWMpLCBhbmQgZXhlYy4KCiAgICBpZiB0eXBlKHJlc29sdmVTcGVjKSA9PSAiZnVuY3Rpb24iIHRoZW4KCiAgICAgIHJldHVybiByZXNvbHZlU3BlYyhtc2cpCgogICAgZWxzZQoKICAgICAgICBmb3IgbWF0Y2hTcGVjLCBmdW5jIGluIHBhaXJzKHJlc29sdmVTcGVjKSBkbwoKICAgICAgICAgICAgaWYgdXRpbHMubWF0Y2hlc1NwZWMobXNnLCBtYXRjaFNwZWMpIHRoZW4KCiAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyhtc2cpCgogICAgICAgICAgICBlbmQKCiAgICAgICAgZW5kCgogICAgZW5kCgogIGVuZAoKZW5kCgoKCi0tIFJldHVybnMgdGhlIG5leHQgbWVzc2FnZSB0aGF0IG1hdGNoZXMgdGhlIHBhdHRlcm4KCi0tIFRoaXMgZnVuY3Rpb24gdXNlcyBMdWEncyBjb3JvdXRpbmVzIHVuZGVyLXRoZS1ob29kIHRvIGFkZCBhIGhhbmRsZXIsIHBhdXNlLAoKLS0gYW5kIHRoZW4gcmVzdW1lIHRoZSBjdXJyZW50IGNvcm91dGluZS4gVGhpcyBhbGxvd3MgdXMgdG8gZWZmZWN0aXZlbHkgYmxvY2sKCi0tIHByb2Nlc3Npbmcgb2Ygb25lIG1lc3NhZ2UgdW50aWwgYW5vdGhlciBpcyByZWNlaXZlZCB0aGF0IG1hdGNoZXMgdGhlIHBhdHRlcm4uCgpmdW5jdGlvbiBoYW5kbGVycy5yZWNlaXZlKHBhdHRlcm4pCgogIGxvY2FsIHNlbGYgPSBjb3JvdXRpbmUucnVubmluZygpCgogIGhhbmRsZXJzLm9uY2UocGF0dGVybiwgZnVuY3Rpb24gKG1zZykKCiAgICAgIGNvcm91dGluZS5yZXN1bWUoc2VsZiwgbXNnKQoKICBlbmQpCgogIHJldHVybiBjb3JvdXRpbmUueWllbGQocGF0dGVybikKCmVuZAoKCgpmdW5jdGlvbiBoYW5kbGVycy5vbmNlKC4uLikKCiAgbG9jYWwgbmFtZSwgcGF0dGVybiwgaGFuZGxlCgogIGlmIHNlbGVjdCgiIyIsIC4uLikgPT0gMyB0aGVuCgogICAgbmFtZSA9IHNlbGVjdCgxLCAuLi4pCgogICAgcGF0dGVybiA9IHNlbGVjdCgyLCAuLi4pCgogICAgaGFuZGxlID0gc2VsZWN0KDMsIC4uLikKCiAgZWxzZQoKICAgIG5hbWUgPSAiX29uY2VfIiAuLiB0b3N0cmluZyhoYW5kbGVycy5vbmNlTm9uY2UpCgogICAgaGFuZGxlcnMub25jZU5vbmNlID0gaGFuZGxlcnMub25jZU5vbmNlICsgMQoKICAgIHBhdHRlcm4gPSBzZWxlY3QoMSwgLi4uKQoKICAgIGhhbmRsZSA9IHNlbGVjdCgyLCAuLi4pCgogIGVuZAoKICBoYW5kbGVycy5hZGQobmFtZSwgcGF0dGVybiwgaGFuZGxlLCAxKQoKZW5kCgoKCmZ1bmN0aW9uIGhhbmRsZXJzLmFkZCguLi4pCgogIGxvY2FsIG5hbWUsIHBhdHRlcm4sIGhhbmRsZSwgbWF4UnVucwoKICBsb2NhbCBhcmdzID0gc2VsZWN0KCIjIiwgLi4uKQoKICBpZiBhcmdzID09IDIgdGhlbgoKICAgIG5hbWUgPSBzZWxlY3QoMSwgLi4uKQoKICAgIHBhdHRlcm4gPSBzZWxlY3QoMSwgLi4uKQoKICAgIGhhbmRsZSA9IHNlbGVjdCgyLCAuLi4pCgogICAgbWF4UnVucyA9IG5pbAoKICBlbHNlaWYgYXJncyA9PSAzIHRoZW4KCiAgICBuYW1lID0gc2VsZWN0KDEsIC4uLikKCiAgICBwYXR0ZXJuID0gc2VsZWN0KDIsIC4uLikKCiAgICBoYW5kbGUgPSBzZWxlY3QoMywgLi4uKQoKICAgIG1heFJ1bnMgPSBuaWwKCiAgZWxzZSAKCiAgICBuYW1lID0gc2VsZWN0KDEsIC4uLikKCiAgICBwYXR0ZXJuID0gc2VsZWN0KDIsIC4uLikKCiAgICBoYW5kbGUgPSBzZWxlY3QoMywgLi4uKQoKICAgIG1heFJ1bnMgPSBzZWxlY3QoNCwgLi4uKQoKICBlbmQKCiAgYXNzZXJ0QWRkQXJncyhuYW1lLCBwYXR0ZXJuLCBoYW5kbGUsIG1heFJ1bnMpCgogIAoKICBoYW5kbGUgPSBoYW5kbGVycy5nZW5lcmF0ZVJlc29sdmVyKGhhbmRsZSkKCiAgCgogIC0tIHVwZGF0ZSBleGlzdGluZyBoYW5kbGVyIGJ5IG5hbWUKCiAgbG9jYWwgaWR4ID0gZmluZEluZGV4QnlQcm9wKGhhbmRsZXJzLmxpc3QsICJuYW1lIiwgbmFtZSkKCiAgaWYgaWR4IH49IG5pbCBhbmQgaWR4ID4gMCB0aGVuCgogICAgLS0gZm91bmQgdXBkYXRlCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLnBhdHRlcm4gPSBwYXR0ZXJuCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLmhhbmRsZSA9IGhhbmRsZQoKICAgIGhhbmRsZXJzLmxpc3RbaWR4XS5tYXhSdW5zID0gbWF4UnVucwoKICBlbHNlCgogICAgLS0gbm90IGZvdW5kIHRoZW4gYWRkICAgIAoKICAgIHRhYmxlLmluc2VydChoYW5kbGVycy5saXN0LCB7IHBhdHRlcm4gPSBwYXR0ZXJuLCBoYW5kbGUgPSBoYW5kbGUsIG5hbWUgPSBuYW1lLCBtYXhSdW5zID0gbWF4UnVucyB9KQoKCgogIGVuZAoKICByZXR1cm4gI2hhbmRsZXJzLmxpc3QKCmVuZAoKCgpmdW5jdGlvbiBoYW5kbGVycy5hcHBlbmQoLi4uKQoKICBsb2NhbCBuYW1lLCBwYXR0ZXJuLCBoYW5kbGUsIG1heFJ1bnMKCiAgbG9jYWwgYXJncyA9IHNlbGVjdCgiIyIsIC4uLikKCiAgaWYgYXJncyA9PSAyIHRoZW4KCiAgICBuYW1lID0gc2VsZWN0KDEsIC4uLikKCiAgICBwYXR0ZXJuID0gc2VsZWN0KDEsIC4uLikKCiAgICBoYW5kbGUgPSBzZWxlY3QoMiwgLi4uKQoKICAgIG1heFJ1bnMgPSBuaWwKCiAgZWxzZWlmIGFyZ3MgPT0gMyB0aGVuCgogICAgbmFtZSA9IHNlbGVjdCgxLCAuLi4pCgogICAgcGF0dGVybiA9IHNlbGVjdCgyLCAuLi4pCgogICAgaGFuZGxlID0gc2VsZWN0KDMsIC4uLikKCiAgICBtYXhSdW5zID0gbmlsCgogIGVsc2UgCgogICAgbmFtZSA9IHNlbGVjdCgxLCAuLi4pCgogICAgcGF0dGVybiA9IHNlbGVjdCgyLCAuLi4pCgogICAgaGFuZGxlID0gc2VsZWN0KDMsIC4uLikKCiAgICBtYXhSdW5zID0gc2VsZWN0KDQsIC4uLikKCiAgZW5kCgogIGFzc2VydEFkZEFyZ3MobmFtZSwgcGF0dGVybiwgaGFuZGxlLCBtYXhSdW5zKQoKICAKCiAgaGFuZGxlID0gaGFuZGxlcnMuZ2VuZXJhdGVSZXNvbHZlcihoYW5kbGUpCgogIC0tIHVwZGF0ZSBleGlzdGluZyBoYW5kbGVyIGJ5IG5hbWUKCiAgbG9jYWwgaWR4ID0gZmluZEluZGV4QnlQcm9wKGhhbmRsZXJzLmxpc3QsICJuYW1lIiwgbmFtZSkKCiAgaWYgaWR4IH49IG5pbCBhbmQgaWR4ID4gMCB0aGVuCgogICAgLS0gZm91bmQgdXBkYXRlCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLnBhdHRlcm4gPSBwYXR0ZXJuCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLmhhbmRsZSA9IGhhbmRsZQoKICAgIGhhbmRsZXJzLmxpc3RbaWR4XS5tYXhSdW5zID0gbWF4UnVucwoKICBlbHNlCgogICAgCgogICAgdGFibGUuaW5zZXJ0KGhhbmRsZXJzLmxpc3QsIHsgcGF0dGVybiA9IHBhdHRlcm4sIGhhbmRsZSA9IGhhbmRsZSwgbmFtZSA9IG5hbWUsIG1heFJ1bnMgPSBtYXhSdW5zIH0pCgogIGVuZAoKCgogIAoKZW5kCgoKCmZ1bmN0aW9uIGhhbmRsZXJzLnByZXBlbmQoLi4uKQoKICBsb2NhbCBuYW1lLCBwYXR0ZXJuLCBoYW5kbGUsIG1heFJ1bnMKCiAgbG9jYWwgYXJncyA9IHNlbGVjdCgiIyIsIC4uLikKCiAgaWYgYXJncyA9PSAyIHRoZW4KCiAgICBuYW1lID0gc2VsZWN0KDEsIC4uLikKCiAgICBwYXR0ZXJuID0gc2VsZWN0KDEsIC4uLikKCiAgICBoYW5kbGUgPSBzZWxlY3QoMiwgLi4uKQoKICAgIG1heFJ1bnMgPSBuaWwKCiAgZWxzZWlmIGFyZ3MgPT0gMyB0aGVuCgogICAgbmFtZSA9IHNlbGVjdCgxLCAuLi4pCgogICAgcGF0dGVybiA9IHNlbGVjdCgyLCAuLi4pCgogICAgaGFuZGxlID0gc2VsZWN0KDMsIC4uLikKCiAgICBtYXhSdW5zID0gbmlsCgogIGVsc2UgCgogICAgbmFtZSA9IHNlbGVjdCgxLCAuLi4pCgogICAgcGF0dGVybiA9IHNlbGVjdCgyLCAuLi4pCgogICAgaGFuZGxlID0gc2VsZWN0KDMsIC4uLikKCiAgICBtYXhSdW5zID0gc2VsZWN0KDQsIC4uLikKCiAgZW5kCgogIGFzc2VydEFkZEFyZ3MobmFtZSwgcGF0dGVybiwgaGFuZGxlLCBtYXhSdW5zKQoKCgogIGhhbmRsZSA9IGhhbmRsZXJzLmdlbmVyYXRlUmVzb2x2ZXIoaGFuZGxlKQoKCgogIC0tIHVwZGF0ZSBleGlzdGluZyBoYW5kbGVyIGJ5IG5hbWUKCiAgbG9jYWwgaWR4ID0gZmluZEluZGV4QnlQcm9wKGhhbmRsZXJzLmxpc3QsICJuYW1lIiwgbmFtZSkKCiAgaWYgaWR4IH49IG5pbCBhbmQgaWR4ID4gMCB0aGVuCgogICAgLS0gZm91bmQgdXBkYXRlCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLnBhdHRlcm4gPSBwYXR0ZXJuCgogICAgaGFuZGxlcnMubGlzdFtpZHhdLmhhbmRsZSA9IGhhbmRsZQoKICAgIGhhbmRsZXJzLmxpc3RbaWR4XS5tYXhSdW5zID0gbWF4UnVucwoKICBlbHNlICAKCiAgICB0YWJsZS5pbnNlcnQoaGFuZGxlcnMubGlzdCwgMSwgeyBwYXR0ZXJuID0gcGF0dGVybiwgaGFuZGxlID0gaGFuZGxlLCBuYW1lID0gbmFtZSwgbWF4UnVucyA9IG1heFJ1bnMgfSkKCiAgZW5kCgoKCiAgCgplbmQKCgoKZnVuY3Rpb24gaGFuZGxlcnMuYmVmb3JlKGhhbmRsZU5hbWUpCgogIGFzc2VydCh0eXBlKGhhbmRsZU5hbWUpID09ICdzdHJpbmcnLCAnSGFuZGxlciBuYW1lIE1VU1QgYmUgYSBzdHJpbmcnKQoKCgogIGxvY2FsIGlkeCA9IGZpbmRJbmRleEJ5UHJvcChoYW5kbGVycy5saXN0LCAibmFtZSIsIGhhbmRsZU5hbWUpCgogIHJldHVybiB7CgogICAgYWRkID0gZnVuY3Rpb24gKG5hbWUsIHBhdHRlcm4sIGhhbmRsZSwgbWF4UnVucykgCgogICAgICBhc3NlcnRBZGRBcmdzKG5hbWUsIHBhdHRlcm4sIGhhbmRsZSwgbWF4UnVucykKCiAgICAgIAoKICAgICAgaGFuZGxlID0gaGFuZGxlcnMuZ2VuZXJhdGVSZXNvbHZlcihoYW5kbGUpCgogICAgICAKCiAgICAgIGlmIGlkeCB0aGVuCgogICAgICAgIHRhYmxlLmluc2VydChoYW5kbGVycy5saXN0LCBpZHgsIHsgcGF0dGVybiA9IHBhdHRlcm4sIGhhbmRsZSA9IGhhbmRsZSwgbmFtZSA9IG5hbWUsIG1heFJ1bnMgPSBtYXhSdW5zIH0pCgogICAgICBlbmQKCiAgICAgIAoKICAgIGVuZAoKICB9CgplbmQKCgoKZnVuY3Rpb24gaGFuZGxlcnMuYWZ0ZXIoaGFuZGxlTmFtZSkKCiAgYXNzZXJ0KHR5cGUoaGFuZGxlTmFtZSkgPT0gJ3N0cmluZycsICdIYW5kbGVyIG5hbWUgTVVTVCBiZSBhIHN0cmluZycpCgogIGxvY2FsIGlkeCA9IGZpbmRJbmRleEJ5UHJvcChoYW5kbGVycy5saXN0LCAibmFtZSIsIGhhbmRsZU5hbWUpCgogIHJldHVybiB7CgogICAgYWRkID0gZnVuY3Rpb24gKG5hbWUsIHBhdHRlcm4sIGhhbmRsZSwgbWF4UnVucykKCiAgICAgIGFzc2VydEFkZEFyZ3MobmFtZSwgcGF0dGVybiwgaGFuZGxlLCBtYXhSdW5zKQoKICAgICAgCgogICAgICBoYW5kbGUgPSBoYW5kbGVycy5nZW5lcmF0ZVJlc29sdmVyKGhhbmRsZSkKCiAgICAgIAoKICAgICAgaWYgaWR4IHRoZW4KCiAgICAgICAgdGFibGUuaW5zZXJ0KGhhbmRsZXJzLmxpc3QsIGlkeCArIDEsIHsgcGF0dGVybiA9IHBhdHRlcm4sIGhhbmRsZSA9IGhhbmRsZSwgbmFtZSA9IG5hbWUsIG1heFJ1bnMgPSBtYXhSdW5zIH0pCgogICAgICBlbmQKCiAgICAgIAoKICAgIGVuZAoKICB9CgoKCmVuZAoKCgpmdW5jdGlvbiBoYW5kbGVycy5yZW1vdmUobmFtZSkKCiAgYXNzZXJ0KHR5cGUobmFtZSkgPT0gJ3N0cmluZycsICduYW1lIE1VU1QgYmUgc3RyaW5nJykKCiAgaWYgI2hhbmRsZXJzLmxpc3QgPT0gMSBhbmQgaGFuZGxlcnMubGlzdFsxXS5uYW1lID09IG5hbWUgdGhlbgoKICAgIGhhbmRsZXJzLmxpc3QgPSB7fQoKICAgIAoKICBlbmQKCgoKICBsb2NhbCBpZHggPSBmaW5kSW5kZXhCeVByb3AoaGFuZGxlcnMubGlzdCwgIm5hbWUiLCBuYW1lKQoKICB0YWJsZS5yZW1vdmUoaGFuZGxlcnMubGlzdCwgaWR4KQoKICAKCmVuZAoKCgotLS0gcmV0dXJuIDAgdG8gbm90IGNhbGwgaGFuZGxlciwgLTEgdG8gYnJlYWsgYWZ0ZXIgaGFuZGxlciBpcyBjYWxsZWQsIDEgdG8gY29udGludWUKCmZ1bmN0aW9uIGhhbmRsZXJzLmV2YWx1YXRlKG1zZywgZW52KQoKICBsb2NhbCBoYW5kbGVkID0gZmFsc2UKCiAgYXNzZXJ0KHR5cGUobXNnKSA9PSAndGFibGUnLCAnbXNnIGlzIG5vdCB2YWxpZCcpCgogIGFzc2VydCh0eXBlKGVudikgPT0gJ3RhYmxlJywgJ2VudiBpcyBub3QgdmFsaWQnKQoKICAKCiAgZm9yIF8sIG8gaW4gaXBhaXJzKGhhbmRsZXJzLmxpc3QpIGRvCgogICAgaWYgby5uYW1lIH49ICJfZGVmYXVsdCIgdGhlbgoKICAgICAgbG9jYWwgbWF0Y2ggPSB1dGlscy5tYXRjaGVzU3BlYyhtc2csIG8ucGF0dGVybikKCiAgICAgIGlmIG5vdCAodHlwZShtYXRjaCkgPT0gJ251bWJlcicgb3IgdHlwZShtYXRjaCkgPT0gJ3N0cmluZycgb3IgdHlwZShtYXRjaCkgPT0gJ2Jvb2xlYW4nKSB0aGVuCgogICAgICAgIGVycm9yKCJQYXR0ZXJuIHJlc3VsdCBpcyBub3QgdmFsaWQsIGl0IE1VU1QgYmUgc3RyaW5nLCBudW1iZXIsIG9yIGJvb2xlYW4iKQoKICAgICAgZW5kCgogICAgICAKCiAgICAgIC0tIGhhbmRsZSBib29sZWFuIHJldHVybnMKCiAgICAgIGlmIHR5cGUobWF0Y2gpID09ICJib29sZWFuIiBhbmQgbWF0Y2ggPT0gdHJ1ZSB0aGVuCgogICAgICAgIG1hdGNoID0gLTEKCiAgICAgIGVsc2VpZiB0eXBlKG1hdGNoKSA9PSAiYm9vbGVhbiIgYW5kIG1hdGNoID09IGZhbHNlIHRoZW4KCiAgICAgICAgbWF0Y2ggPSAwCgogICAgICBlbmQKCgoKICAgICAgLS0gaGFuZGxlIHN0cmluZyByZXR1cm5zCgogICAgICBpZiB0eXBlKG1hdGNoKSA9PSAic3RyaW5nIiB0aGVuCgogICAgICAgIGlmIG1hdGNoID09ICJjb250aW51ZSIgdGhlbgoKICAgICAgICAgIG1hdGNoID0gMQoKICAgICAgICBlbHNlaWYgbWF0Y2ggPT0gImJyZWFrIiB0aGVuCgogICAgICAgICAgbWF0Y2ggPSAtMQoKICAgICAgICBlbHNlCgogICAgICAgICAgbWF0Y2ggPSAwCgogICAgICAgIGVuZAoKICAgICAgZW5kCgoKCiAgICAgIGlmIG1hdGNoIH49IDAgdGhlbgoKICAgICAgICBpZiBtYXRjaCA8IDAgdGhlbgoKICAgICAgICAgIGhhbmRsZWQgPSB0cnVlCgogICAgICAgIGVuZAoKICAgICAgICAtLSBlYWNoIGhhbmRsZSBmdW5jdGlvbiBjYW4gYWNjZXB0LCB0aGUgbXNnLCBlbnYKCiAgICAgICAgbG9jYWwgc3RhdHVzLCBlcnIgPSBwY2FsbChvLmhhbmRsZSwgbXNnLCBlbnYpCgogICAgICAgIGlmIG5vdCBzdGF0dXMgdGhlbgoKICAgICAgICAgIGVycm9yKGVycikKCiAgICAgICAgZW5kCgogICAgICAgIC0tIHJlbW92ZSBoYW5kbGVyIGlmIG1heFJ1bnMgaXMgcmVhY2hlZC4gbWF4UnVucyBjYW4gYmUgZWl0aGVyIGEgbnVtYmVyIG9yICJpbmYiCgogICAgICAgIGlmIG8ubWF4UnVucyB+PSBuaWwgYW5kIG8ubWF4UnVucyB+PSAiaW5mIiB0aGVuCgogICAgICAgICAgby5tYXhSdW5zID0gby5tYXhSdW5zIC0gMQoKICAgICAgICAgIGlmIG8ubWF4UnVucyA9PSAwIHRoZW4KCiAgICAgICAgICAgIGhhbmRsZXJzLnJlbW92ZShvLm5hbWUpCgogICAgICAgICAgZW5kCgogICAgICAgIGVuZAoKICAgICAgZW5kCgogICAgICBpZiBtYXRjaCA8IDAgdGhlbgoKICAgICAgICByZXR1cm4gaGFuZGxlZAoKICAgICAgZW5kCgogICAgZW5kCgogIGVuZAoKICAtLSBkbyBkZWZhdWx0CgogIGlmIG5vdCBoYW5kbGVkIHRoZW4KCiAgICBsb2NhbCBpZHggPSBmaW5kSW5kZXhCeVByb3AoaGFuZGxlcnMubGlzdCwgIm5hbWUiLCAiX2RlZmF1bHQiKQoKICAgIGhhbmRsZXJzLmxpc3RbaWR4XS5oYW5kbGUobXNnLGVudikKCiAgZW5kCgplbmQKCgoKcmV0dXJuIGhhbmRsZXJzAAAKCmxvY2FsIEFzc2lnbm1lbnQgPSB7IF92ZXJzaW9uID0gIjAuMS4wIiB9Cgpsb2NhbCB1dGlscyA9IHJlcXVpcmUoJy51dGlscycpCgoKCi0tIEltcGxlbWVudCBhc3NpZ25hYmxlIHBvbHlmaWxscyBvbiBfYW8KCmZ1bmN0aW9uIEFzc2lnbm1lbnQuaW5pdCAoYW8pCgogIGxvY2FsIGZ1bmN0aW9uIGZpbmRJbmRleEJ5UHJvcChhcnJheSwgcHJvcCwgdmFsdWUpCgogICAgZm9yIGluZGV4LCBvYmplY3QgaW4gaXBhaXJzKGFycmF5KSBkbwoKICAgICAgaWYgb2JqZWN0W3Byb3BdID09IHZhbHVlIHRoZW4gcmV0dXJuIGluZGV4IGVuZAoKICAgIGVuZAoKCgogICAgcmV0dXJuIG5pbAoKICBlbmQKCgoKICBhby5hc3NpZ25hYmxlcyA9IGFvLmFzc2lnbmFibGVzIG9yIHt9CgoKCiAgLS0gQWRkIHRoZSBNYXRjaFNwZWMgdG8gdGhlIGFvLmFzc2lnbmFibGVzIHRhYmxlLiBBIG9wdGlvbmFsIG5hbWUgbWF5IGJlIHByb3ZpZGVkLgoKICAtLSBUaGlzIGltcGxpZXMgdGhhdCBhby5hc3NpZ25hYmxlcyBtYXkgaGF2ZSBib3RoIG51bWJlciBhbmQgc3RyaW5nIGluZGljZXMuCgogIC0tCgogIC0tIEB0cGFyYW0gP3N0cmluZ3xudW1iZXJ8YW55IG5hbWVPck1hdGNoU3BlYyBUaGUgbmFtZSBvZiB0aGUgTWF0Y2hTcGVjCgogIC0tICAgICAgICB0byBiZSBhZGRlZCB0byBhby5hc3NpZ25hYmxlcy4gaWYgYSBNYXRjaFNwZWMgaXMgcHJvdmlkZWQsIHRoZW4KCiAgLS0gICAgICAgIG5vIG5hbWUgaXMgaW5jbHVkZWQKCiAgLS0gQHRwYXJhbSA/YW55IG1hdGNoU3BlYyBUaGUgTWF0Y2hTcGVjIHRvIGJlIGFkZGVkIHRvIGFvLmFzc2lnbmFibGVzLiBPbmx5IHByb3ZpZGVkCgogIC0tICAgICAgICBpZiBpdHMgbmFtZSBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlcgoKICAtLSBAdHJldHVybiA/c3RyaW5nfG51bWJlciBuYW1lIFRoZSBuYW1lIG9mIHRoZSBNYXRjaFNwZWMsIGVpdGhlciBhcyBwcm92aWRlZAoKICAtLSAgICAgICAgICBhcyBhbiBhcmd1bWVudCBvciBhcyBpbmNyZW1lbnRlZAoKICBhby5hZGRBc3NpZ25hYmxlID0gYW8uYWRkQXNzaWduYWJsZSBvciBmdW5jdGlvbiAoLi4uKQoKICAgIGxvY2FsIG5hbWUgPSBuaWwKCiAgICBsb2NhbCBtYXRjaFNwZWMgPSBuaWwKCgoKICAgIGxvY2FsIGlkeCA9IG5pbAoKCgogICAgLS0gSW5pdGlhbGl6ZSB0aGUgcGFyYW1ldGVycyBiYXNlZCBvbiBhcmd1bWVudHMKCiAgICBpZiBzZWxlY3QoIiMiLCAuLi4pID09IDEgdGhlbgoKICAgICAgbWF0Y2hTcGVjID0gc2VsZWN0KDEsIC4uLikKCiAgICBlbHNlCgogICAgICBuYW1lID0gc2VsZWN0KDEsIC4uLikKCiAgICAgIG1hdGNoU3BlYyA9IHNlbGVjdCgyLCAuLi4pCgogICAgICBhc3NlcnQodHlwZShuYW1lKSA9PSAnc3RyaW5nJywgJ01hdGNoU3BlYyBuYW1lIE1VU1QgYmUgYSBzdHJpbmcnKQoKICAgIGVuZAoKCgogICAgaWYgbmFtZSB0aGVuIGlkeCA9IGZpbmRJbmRleEJ5UHJvcChhby5hc3NpZ25hYmxlcywgIm5hbWUiLCBuYW1lKSBlbmQKCgoKICAgIGlmIGlkeCB+PSBuaWwgYW5kIGlkeCA+IDAgdGhlbgoKICAgICAgLS0gZm91bmQgdXBkYXRlCgogICAgICBhby5hc3NpZ25hYmxlc1tpZHhdLnBhdHRlcm4gPSBtYXRjaFNwZWMKCiAgICBlbHNlCgogICAgICAtLSBhcHBlbmQgdGhlIG5ldyBhc3NpZ25hYmxlLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkgbmlsIG5hbWUKCiAgICAgIHRhYmxlLmluc2VydChhby5hc3NpZ25hYmxlcywgeyBwYXR0ZXJuID0gbWF0Y2hTcGVjLCBuYW1lID0gbmFtZSB9KQoKICAgIGVuZAoKICBlbmQKCgoKICAtLSBSZW1vdmUgdGhlIE1hdGNoU3BlYywgZWl0aGVyIGJ5IG5hbWUgb3IgYnkgaW5kZXgKCiAgLS0gSWYgdGhlIG5hbWUgaXMgbm90IGZvdW5kLCBvciBpZiB0aGUgaW5kZXggZG9lcyBub3QgZXhpc3QsIHRoZW4gZG8gbm90aGluZy4KCiAgLS0KCiAgLS0gQHRwYXJhbSBzdHJpbmd8bnVtYmVyIG5hbWUgVGhlIG5hbWUgb3IgaW5kZXggb2YgdGhlIE1hdGNoU3BlYyB0byBiZSByZW1vdmVkCgogIC0tIEB0cmV0dXJuIG5pbCBuaWwKCiAgYW8ucmVtb3ZlQXNzaWduYWJsZSA9IGFvLnJlbW92ZUFzc2lnbmFibGUgb3IgZnVuY3Rpb24gKG5hbWUpCgogICAgbG9jYWwgaWR4ID0gbmlsCgoKCiAgICBpZiB0eXBlKG5hbWUpID09ICdzdHJpbmcnIHRoZW4gaWR4ID0gZmluZEluZGV4QnlQcm9wKGFvLmFzc2lnbmFibGVzLCAibmFtZSIsIG5hbWUpCgogICAgZWxzZQoKICAgICAgYXNzZXJ0KHR5cGUobmFtZSkgPT0gJ251bWJlcicsICdpbmRleCBNVVNUIGJlIGEgbnVtYmVyJykKCiAgICAgIGlkeCA9IG5hbWUKCiAgICBlbmQKCgoKICAgIGlmIGlkeCA9PSBuaWwgb3IgaWR4IDw9IDAgb3IgaWR4ID4gI2FvLmFzc2lnbmFibGVzIHRoZW4gcmV0dXJuIGVuZAoKCgogICAgdGFibGUucmVtb3ZlKGFvLmFzc2lnbmFibGVzLCBpZHgpCgogIGVuZAoKCgogIC0tIFJldHVybiB3aGV0aGVyIHRoZSBtc2cgaXMgYW4gYXNzaWdubWVudCBvciBub3QuIFRoaXMKCiAgLS0gY2FuIGJlIGRldGVybWluZWQgYnkgc2ltcGx5IGNoZWNrIHdoZXRoZXIgdGhlIG1zZydzIFRhcmdldCBpcwoKICAtLSBUaGlzIHByb2Nlc3MnIGlkCgogIC0tCgogIC0tIEBwYXJhbSBtc2cgVGhlIG1zZyB0byBiZSBjaGVja2VkCgogIC0tIEB0cmV0dXJuIGJvb2xlYW4gaXNBc3NpZ25tZW50CgogIGFvLmlzQXNzaWdubWVudCA9IGFvLmlzQXNzaWdubWVudCBvciBmdW5jdGlvbiAobXNnKSByZXR1cm4gbXNnLlRhcmdldCB+PSBhby5pZCBlbmQKCgoKICAtLSBDaGVjayB3aGV0aGVyIHRoZSBtc2cgbWF0Y2hlcyBhbnkgYXNzaWduYWJsZSBNYXRjaFNwZWMuCgogIC0tIElmIG5vdCBhc3NpZ25hYmxlcyBhcmUgY29uZmlndXJlZCwgdGhlIG1zZyBpcyBkZWVtZWQgbm90IGFzc2lnbmFibGUsIGJ5IGRlZmF1bHQuCgogIC0tCgogIC0tIEBwYXJhbSBtc2cgVGhlIG1zZyB0byBiZSBjaGVja2VkCgogIC0tIEB0cmV0dXJuIGJvb2xlYW4gaXNBc3NpZ25hYmxlCgogIGFvLmlzQXNzaWduYWJsZSA9IGFvLmlzQXNzaWduYWJsZSBvciBmdW5jdGlvbiAobXNnKQoKICAgIGZvciBfLCBhc3NpZ25hYmxlIGluIHBhaXJzKGFvLmFzc2lnbmFibGVzKSBkbwoKICAgICAgaWYgdXRpbHMubWF0Y2hlc1NwZWMobXNnLCBhc3NpZ25hYmxlLnBhdHRlcm4pIHRoZW4gcmV0dXJuIHRydWUgZW5kCgogICAgZW5kCgoKCiAgICAtLSBJZiBhc3NpZ25hYmxlcyBpcyBlbXB0eSwgdGhlIHRoZSBhYm92ZSBsb29wIHdpbGwgbm9vcCwKCiAgICAtLSBhbmQgdGhpcyBleHByZXNzaW9uIHdpbGwgZXhlY3V0ZS4KCiAgICAtLQoKICAgIC0tIEluIG90aGVyIHdvcmRzLCBhbGwgbXNncyBhcmUgbm90IGFzc2lnbmFibGUsIGJ5IGRlZmF1bHQuCgogICAgcmV0dXJuIGZhbHNlCgogIGVuZAoKZW5kCgoKCnJldHVybiBBc3NpZ25tZW50Ci0tIGRlZmF1bHQgaGFuZGxlciBmb3IgYW9zCgpyZXR1cm4gZnVuY3Rpb24gKGluc2VydEluYm94KQoKICByZXR1cm4gZnVuY3Rpb24gKG1zZykKCiAgICAtLSBBZGQgTWVzc2FnZSB0byBJbmJveAoKICAgIGluc2VydEluYm94KG1zZykKCgoKICAgIGxvY2FsIHR4dCA9IENvbG9ycy5ncmF5IC4uICJOZXcgTWVzc2FnZSBGcm9tICIgLi4gQ29sb3JzLmdyZWVuIC4uIAoKICAgIChtc2cuRnJvbSBhbmQgKG1zZy5Gcm9tOnN1YigxLDMpIC4uICIuLi4iIC4uIG1zZy5Gcm9tOnN1YigtMykpIG9yICJ1bmtub3duIikgLi4gQ29sb3JzLmdyYXkgLi4gIjogIgoKICAgIGlmIG1zZy5BY3Rpb24gdGhlbgoKICAgICAgdHh0ID0gdHh0IC4uIENvbG9ycy5ncmF5IC4uIChtc2cuQWN0aW9uIGFuZCAoIkFjdGlvbiA9ICIgLi4gQ29sb3JzLmJsdWUgLi4gbXNnLkFjdGlvbjpzdWIoMSwyMCkpIG9yICIiKSAuLiBDb2xvcnMucmVzZXQKCiAgICBlbHNlCgogICAgICBsb2NhbCBkYXRhID0gbXNnLkRhdGEKCiAgICAgIGlmIHR5cGUoZGF0YSkgPT0gJ3RhYmxlJyB0aGVuCgogICAgICAgIGRhdGEgPSByZXF1aXJlKCdqc29uJykuZW5jb2RlKGRhdGEpCgogICAgICBlbmQKCiAgICAgIHR4dCA9IHR4dCAuLiBDb2xvcnMuZ3JheSAuLiAiRGF0YSA9ICIgLi4gQ29sb3JzLmJsdWUgLi4gKGRhdGEgYW5kIGRhdGE6c3ViKDEsMjApIG9yICIiKSAuLiBDb2xvcnMucmVzZXQKCiAgICBlbmQKCiAgICAtLSBQcmludCB0byBPdXRwdXQKCiAgICBwcmludCh0eHQpCgogIGVuZAoKCgplbmQAQpDkBgvTOS0tW1sKCgoKIGJhc2U2NCAtLSB2MS41LjMgcHVibGljIGRvbWFpbiBMdWEgYmFzZTY0IGVuY29kZXIvZGVjb2RlcgoKIG5vIHdhcnJhbnR5IGltcGxpZWQ7IHVzZSBhdCB5b3VyIG93biByaXNrCgoKCiBOZWVkcyBiaXQzMi5leHRyYWN0IGZ1bmN0aW9uLiBJZiBub3QgcHJlc2VudCBpdCdzIGltcGxlbWVudGVkIHVzaW5nIEJpdE9wCgogb3IgTHVhIDUuMyBuYXRpdmUgYml0IG9wZXJhdG9ycy4gRm9yIEx1YSA1LjEgZmFsbGJhY2tzIHRvIHB1cmUgTHVhCgogaW1wbGVtZW50YXRpb24gaW5zcGlyZWQgYnkgUmljaSBMYWtlJ3MgcG9zdDoKCiAgIGh0dHA6Ly9yaWNpbGFrZS5ibG9nc3BvdC5jby51ay8yMDA3LzEwL2l0ZXJhdGluZy1iaXRzLWluLWx1YS5odG1sCgoKCiBhdXRob3I6IElseWEgS29sYmluIChpc2tvbGJpbkBnbWFpbC5jb20pCgogdXJsOiBnaXRodWIuY29tL2lza29sYmluL2xiYXNlNjQKCgoKIENPTVBBVElCSUxJVFkKCgoKIEx1YSA1LjErLCBMdWFKSVQKCgoKIExJQ0VOU0UKCgoKIFNlZSBlbmQgb2YgZmlsZSBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KCgoKLS1dXQoKCgoKCmxvY2FsIGJhc2U2NCA9IHt9CgoKCmxvY2FsIGV4dHJhY3QgPSBfRy5iaXQzMiBhbmQgX0cuYml0MzIuZXh0cmFjdCAtLSBMdWEgNS4yL0x1YSA1LjMgaW4gY29tcGF0aWJpbGl0eSBtb2RlCgppZiBub3QgZXh0cmFjdCB0aGVuCgoJaWYgX0cuYml0IHRoZW4gLS0gTHVhSklUCgoJCWxvY2FsIHNobCwgc2hyLCBiYW5kID0gX0cuYml0LmxzaGlmdCwgX0cuYml0LnJzaGlmdCwgX0cuYml0LmJhbmQKCgkJZXh0cmFjdCA9IGZ1bmN0aW9uKCB2LCBmcm9tLCB3aWR0aCApCgoJCQlyZXR1cm4gYmFuZCggc2hyKCB2LCBmcm9tICksIHNobCggMSwgd2lkdGggKSAtIDEgKQoKCQllbmQKCgllbHNlaWYgX0cuX1ZFUlNJT04gPT0gIkx1YSA1LjEiIHRoZW4KCgkJZXh0cmFjdCA9IGZ1bmN0aW9uKCB2LCBmcm9tLCB3aWR0aCApCgoJCQlsb2NhbCB3ID0gMAoKCQkJbG9jYWwgZmxhZyA9IDJeZnJvbQoKCQkJZm9yIGkgPSAwLCB3aWR0aC0xIGRvCgoJCQkJbG9jYWwgZmxhZzIgPSBmbGFnICsgZmxhZwoKCQkJCWlmIHYgJSBmbGFnMiA+PSBmbGFnIHRoZW4KCgkJCQkJdyA9IHcgKyAyXmkKCgkJCQllbmQKCgkJCQlmbGFnID0gZmxhZzIKCgkJCWVuZAoKCQkJcmV0dXJuIHcKCgkJZW5kCgoJZWxzZSAtLSBMdWEgNS4zKwoKCQlleHRyYWN0ID0gbG9hZFtbcmV0dXJuIGZ1bmN0aW9uKCB2LCBmcm9tLCB3aWR0aCApCgoJCQlyZXR1cm4gKCB2ID4+IGZyb20gKSAmICgoMSA8PCB3aWR0aCkgLSAxKQoKCQllbmRdXSgpCgoJZW5kCgplbmQKCgoKCgpmdW5jdGlvbiBiYXNlNjQubWFrZWVuY29kZXIoIHM2MiwgczYzLCBzcGFkICkKCglsb2NhbCBlbmNvZGVyID0ge30KCglmb3IgYjY0Y29kZSwgY2hhciBpbiBwYWlyc3tbMF09J0EnLCdCJywnQycsJ0QnLCdFJywnRicsJ0cnLCdIJywnSScsJ0onLAoKCQknSycsJ0wnLCdNJywnTicsJ08nLCdQJywnUScsJ1InLCdTJywnVCcsJ1UnLCdWJywnVycsJ1gnLCdZJywKCgkJJ1onLCdhJywnYicsJ2MnLCdkJywnZScsJ2YnLCdnJywnaCcsJ2knLCdqJywnaycsJ2wnLCdtJywnbicsCgoJCSdvJywncCcsJ3EnLCdyJywncycsJ3QnLCd1JywndicsJ3cnLCd4JywneScsJ3onLCcwJywnMScsJzInLAoKCQknMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsczYyIG9yICcrJyxzNjMgb3InLycsc3BhZCBvcic9J30gZG8KCgkJZW5jb2RlcltiNjRjb2RlXSA9IGNoYXI6Ynl0ZSgpCgoJZW5kCgoJcmV0dXJuIGVuY29kZXIKCmVuZAoKCgpmdW5jdGlvbiBiYXNlNjQubWFrZWRlY29kZXIoIHM2MiwgczYzLCBzcGFkICkKCglsb2NhbCBkZWNvZGVyID0ge30KCglmb3IgYjY0Y29kZSwgY2hhcmNvZGUgaW4gcGFpcnMoIGJhc2U2NC5tYWtlZW5jb2RlciggczYyLCBzNjMsIHNwYWQgKSkgZG8KCgkJZGVjb2RlcltjaGFyY29kZV0gPSBiNjRjb2RlCgoJZW5kCgoJcmV0dXJuIGRlY29kZXIKCmVuZAoKCgpsb2NhbCBERUZBVUxUX0VOQ09ERVIgPSBiYXNlNjQubWFrZWVuY29kZXIoKQoKbG9jYWwgREVGQVVMVF9ERUNPREVSID0gYmFzZTY0Lm1ha2VkZWNvZGVyKCkKCgoKbG9jYWwgY2hhciwgY29uY2F0ID0gc3RyaW5nLmNoYXIsIHRhYmxlLmNvbmNhdAoKCgpmdW5jdGlvbiBiYXNlNjQuZW5jb2RlKCBzdHIsIGVuY29kZXIsIHVzZWNhY2hpbmcgKQoKCWVuY29kZXIgPSBlbmNvZGVyIG9yIERFRkFVTFRfRU5DT0RFUgoKCWxvY2FsIHQsIGssIG4gPSB7fSwgMSwgI3N0cgoKCWxvY2FsIGxhc3RuID0gbiAlIDMKCglsb2NhbCBjYWNoZSA9IHt9CgoJZm9yIGkgPSAxLCBuLWxhc3RuLCAzIGRvCgoJCWxvY2FsIGEsIGIsIGMgPSBzdHI6Ynl0ZSggaSwgaSsyICkKCgkJbG9jYWwgdiA9IGEqMHgxMDAwMCArIGIqMHgxMDAgKyBjCgoJCWxvY2FsIHMKCgkJaWYgdXNlY2FjaGluZyB0aGVuCgoJCQlzID0gY2FjaGVbdl0KCgkJCWlmIG5vdCBzIHRoZW4KCgkJCQlzID0gY2hhcihlbmNvZGVyW2V4dHJhY3QodiwxOCw2KV0sIGVuY29kZXJbZXh0cmFjdCh2LDEyLDYpXSwgZW5jb2RlcltleHRyYWN0KHYsNiw2KV0sIGVuY29kZXJbZXh0cmFjdCh2LDAsNildKQoKCQkJCWNhY2hlW3ZdID0gcwoKCQkJZW5kCgoJCWVsc2UKCgkJCXMgPSBjaGFyKGVuY29kZXJbZXh0cmFjdCh2LDE4LDYpXSwgZW5jb2RlcltleHRyYWN0KHYsMTIsNildLCBlbmNvZGVyW2V4dHJhY3Qodiw2LDYpXSwgZW5jb2RlcltleHRyYWN0KHYsMCw2KV0pCgoJCWVuZAoKCQl0W2tdID0gcwoKCQlrID0gayArIDEKCgllbmQKCglpZiBsYXN0biA9PSAyIHRoZW4KCgkJbG9jYWwgYSwgYiA9IHN0cjpieXRlKCBuLTEsIG4gKQoKCQlsb2NhbCB2ID0gYSoweDEwMDAwICsgYioweDEwMAoKCQl0W2tdID0gY2hhcihlbmNvZGVyW2V4dHJhY3QodiwxOCw2KV0sIGVuY29kZXJbZXh0cmFjdCh2LDEyLDYpXSwgZW5jb2RlcltleHRyYWN0KHYsNiw2KV0sIGVuY29kZXJbNjRdKQoKCWVsc2VpZiBsYXN0biA9PSAxIHRoZW4KCgkJbG9jYWwgdiA9IHN0cjpieXRlKCBuICkqMHgxMDAwMAoKCQl0W2tdID0gY2hhcihlbmNvZGVyW2V4dHJhY3QodiwxOCw2KV0sIGVuY29kZXJbZXh0cmFjdCh2LDEyLDYpXSwgZW5jb2Rlcls2NF0sIGVuY29kZXJbNjRdKQoKCWVuZAoKCXJldHVybiBjb25jYXQoIHQgKQoKZW5kCgoKCmZ1bmN0aW9uIGJhc2U2NC5kZWNvZGUoIGI2NCwgZGVjb2RlciwgdXNlY2FjaGluZyApCgoJZGVjb2RlciA9IGRlY29kZXIgb3IgREVGQVVMVF9ERUNPREVSCgoJbG9jYWwgcGF0dGVybiA9ICdbXiV3JSslLyU9XScKCglpZiBkZWNvZGVyIHRoZW4KCgkJbG9jYWwgczYyLCBzNjMKCgkJZm9yIGNoYXJjb2RlLCBiNjRjb2RlIGluIHBhaXJzKCBkZWNvZGVyICkgZG8KCgkJCWlmIGI2NGNvZGUgPT0gNjIgdGhlbiBzNjIgPSBjaGFyY29kZQoKCQkJZWxzZWlmIGI2NGNvZGUgPT0gNjMgdGhlbiBzNjMgPSBjaGFyY29kZQoKCQkJZW5kCgoJCWVuZAoKCQlwYXR0ZXJuID0gKCdbXiUldyUlJXMlJSVzJSU9XScpOmZvcm1hdCggY2hhcihzNjIpLCBjaGFyKHM2MykgKQoKCWVuZAoKCWI2NCA9IGI2NDpnc3ViKCBwYXR0ZXJuLCAnJyApCgoJbG9jYWwgY2FjaGUgPSB1c2VjYWNoaW5nIGFuZCB7fQoKCWxvY2FsIHQsIGsgPSB7fSwgMQoKCWxvY2FsIG4gPSAjYjY0CgoJbG9jYWwgcGFkZGluZyA9IGI2NDpzdWIoLTIpID09ICc9PScgYW5kIDIgb3IgYjY0OnN1YigtMSkgPT0gJz0nIGFuZCAxIG9yIDAKCglmb3IgaSA9IDEsIHBhZGRpbmcgPiAwIGFuZCBuLTQgb3IgbiwgNCBkbwoKCQlsb2NhbCBhLCBiLCBjLCBkID0gYjY0OmJ5dGUoIGksIGkrMyApCgoJCWxvY2FsIHMKCgkJaWYgdXNlY2FjaGluZyB0aGVuCgoJCQlsb2NhbCB2MCA9IGEqMHgxMDAwMDAwICsgYioweDEwMDAwICsgYyoweDEwMCArIGQKCgkJCXMgPSBjYWNoZVt2MF0KCgkJCWlmIG5vdCBzIHRoZW4KCgkJCQlsb2NhbCB2ID0gZGVjb2RlclthXSoweDQwMDAwICsgZGVjb2RlcltiXSoweDEwMDAgKyBkZWNvZGVyW2NdKjB4NDAgKyBkZWNvZGVyW2RdCgoJCQkJcyA9IGNoYXIoIGV4dHJhY3QodiwxNiw4KSwgZXh0cmFjdCh2LDgsOCksIGV4dHJhY3QodiwwLDgpKQoKCQkJCWNhY2hlW3YwXSA9IHMKCgkJCWVuZAoKCQllbHNlCgoJCQlsb2NhbCB2ID0gZGVjb2RlclthXSoweDQwMDAwICsgZGVjb2RlcltiXSoweDEwMDAgKyBkZWNvZGVyW2NdKjB4NDAgKyBkZWNvZGVyW2RdCgoJCQlzID0gY2hhciggZXh0cmFjdCh2LDE2LDgpLCBleHRyYWN0KHYsOCw4KSwgZXh0cmFjdCh2LDAsOCkpCgoJCWVuZAoKCQl0W2tdID0gcwoKCQlrID0gayArIDEKCgllbmQKCglpZiBwYWRkaW5nID09IDEgdGhlbgoKCQlsb2NhbCBhLCBiLCBjID0gYjY0OmJ5dGUoIG4tMywgbi0xICkKCgkJbG9jYWwgdiA9IGRlY29kZXJbYV0qMHg0MDAwMCArIGRlY29kZXJbYl0qMHgxMDAwICsgZGVjb2RlcltjXSoweDQwCgoJCXRba10gPSBjaGFyKCBleHRyYWN0KHYsMTYsOCksIGV4dHJhY3Qodiw4LDgpKQoKCWVsc2VpZiBwYWRkaW5nID09IDIgdGhlbgoKCQlsb2NhbCBhLCBiID0gYjY0OmJ5dGUoIG4tMywgbi0yICkKCgkJbG9jYWwgdiA9IGRlY29kZXJbYV0qMHg0MDAwMCArIGRlY29kZXJbYl0qMHgxMDAwCgoJCXRba10gPSBjaGFyKCBleHRyYWN0KHYsMTYsOCkpCgoJZW5kCgoJcmV0dXJuIGNvbmNhdCggdCApCgplbmQKCgoKcmV0dXJuIGJhc2U2NAoKCgotLVtbCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoaXMgc29mdHdhcmUgaXMgYXZhaWxhYmxlIHVuZGVyIDIgbGljZW5zZXMgLS0gY2hvb3NlIHdoaWNoZXZlciB5b3UgcHJlZmVyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBTFRFUk5BVElWRSBBIC0gTUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOCBJbHlhIEtvbGJpbgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgoKdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KCnRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8KCnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCgpvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8KCnNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbAoKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQoKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgoKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCgpTT0ZUV0FSRS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQUxURVJOQVRJVkUgQiAtIFB1YmxpYyBEb21haW4gKHd3dy51bmxpY2Vuc2Uub3JnKQoKVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi4KCkFueW9uZSBpcyBmcmVlIHRvIGNvcHksIG1vZGlmeSwgcHVibGlzaCwgdXNlLCBjb21waWxlLCBzZWxsLCBvciBkaXN0cmlidXRlIHRoaXMKCnNvZnR3YXJlLCBlaXRoZXIgaW4gc291cmNlIGNvZGUgZm9ybSBvciBhcyBhIGNvbXBpbGVkIGJpbmFyeSwgZm9yIGFueSBwdXJwb3NlLAoKY29tbWVyY2lhbCBvciBub24tY29tbWVyY2lhbCwgYW5kIGJ5IGFueSBtZWFucy4KCkluIGp1cmlzZGljdGlvbnMgdGhhdCByZWNvZ25pemUgY29weXJpZ2h0IGxhd3MsIHRoZSBhdXRob3Igb3IgYXV0aG9ycyBvZiB0aGlzCgpzb2Z0d2FyZSBkZWRpY2F0ZSBhbnkgYW5kIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlIHNvZnR3YXJlIHRvIHRoZSBwdWJsaWMKCmRvbWFpbi4gV2UgbWFrZSB0aGlzIGRlZGljYXRpb24gZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBwdWJsaWMgYXQgbGFyZ2UgYW5kIHRvCgp0aGUgZGV0cmltZW50IG9mIG91ciBoZWlycyBhbmQgc3VjY2Vzc29ycy4gV2UgaW50ZW5kIHRoaXMgZGVkaWNhdGlvbiB0byBiZSBhbgoKb3ZlcnQgYWN0IG9mIHJlbGlucXVpc2htZW50IGluIHBlcnBldHVpdHkgb2YgYWxsIHByZXNlbnQgYW5kIGZ1dHVyZSByaWdodHMgdG8KCnRoaXMgc29mdHdhcmUgdW5kZXIgY29weXJpZ2h0IGxhdy4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQoKQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KCkFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KCldJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLV1dAELwnQcLlVFsb2NhbCBwcmV0dHkgPSByZXF1aXJlKCcucHJldHR5JykKCmxvY2FsIGJhc2U2NCA9IHJlcXVpcmUoJy5iYXNlNjQnKQoKbG9jYWwganNvbiA9IHJlcXVpcmUoJ2pzb24nKQoKbG9jYWwgY2hhbmNlID0gcmVxdWlyZSgnLmNoYW5jZScpCgpsb2NhbCBjcnlwdG8gPSByZXF1aXJlKCcuY3J5cHRvLmluaXQnKQoKbG9jYWwgY29yb3V0aW5lID0gcmVxdWlyZSgnY29yb3V0aW5lJykKCgoKQ29sb3JzID0gewoKICByZWQgPSAiXDI3WzMxbSIsCgogIGdyZWVuID0gIlwyN1szMm0iLAoKICBibHVlID0gIlwyN1szNG0iLAoKICByZXNldCA9ICJcMjdbMG0iLAoKICBncmF5ID0gIlwyN1s5MG0iCgp9CgoKCkJlbGwgPSAiXHgwNyIKCgoKRHVtcCA9IHJlcXVpcmUoJy5kdW1wJykKClV0aWxzID0gcmVxdWlyZSgnLnV0aWxzJykKCkhhbmRsZXJzID0gcmVxdWlyZSgnLmhhbmRsZXJzJykKCmxvY2FsIHN0cmluZ2lmeSA9IHJlcXVpcmUoIi5zdHJpbmdpZnkiKQoKbG9jYWwgYXNzaWdubWVudCA9IHJlcXVpcmUoJy5hc3NpZ25tZW50JykKCmFvID0gbmlsCgppZiBfRy5wYWNrYWdlLmxvYWRlZFsnLmFvJ10gdGhlbgoKICBhbyA9IHJlcXVpcmUoJy5hbycpCgplbHNlaWYgX0cucGFja2FnZS5sb2FkZWRbJ2FvJ10gdGhlbgoKICBhbyA9IHJlcXVpcmUoJ2FvJykKCmVuZAoKLS0gSW1wbGVtZW50IGFzc2lnbmFibGUgcG9seWZpbGxzIG9uIF9hbwoKYXNzaWdubWVudC5pbml0KGFvKQoKCgpsb2NhbCBwcm9jZXNzID0geyBfdmVyc2lvbiA9ICIyLjAuMCIgfQoKbG9jYWwgbWF4SW5ib3hDb3VudCA9IDEwMDAwCgoKCi0tIHdyYXAgYW8uc2VuZCBhbmQgYW8uc3Bhd24gZm9yIG1hZ2ljIHRhYmxlCgpsb2NhbCBhb3NlbmQgPSBhby5zZW5kIAoKbG9jYWwgYW9zcGF3biA9IGFvLnNwYXduCgphby5zZW5kID0gZnVuY3Rpb24gKG1zZykKCiAgaWYgbXNnLkRhdGEgYW5kIHR5cGUobXNnLkRhdGEpID09ICd0YWJsZScgdGhlbgoKICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbicKCiAgICBtc2cuRGF0YSA9IHJlcXVpcmUoJ2pzb24nKS5lbmNvZGUobXNnLkRhdGEpCgogIGVuZAoKICByZXR1cm4gYW9zZW5kKG1zZykKCmVuZAoKYW8uc3Bhd24gPSBmdW5jdGlvbiAobW9kdWxlLCBtc2cpIAoKICBpZiBtc2cuRGF0YSBhbmQgdHlwZShtc2cuRGF0YSkgPT0gJ3RhYmxlJyB0aGVuCgogICAgbXNnWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJwoKICAgIG1zZy5EYXRhID0gcmVxdWlyZSgnanNvbicpLmVuY29kZShtc2cuRGF0YSkKCiAgZW5kCgogIHJldHVybiBhb3NwYXduKG1vZHVsZSwgbXNnKQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHJlbW92ZUxhc3RUaHJlZUxpbmVzKGlucHV0KQoKICBsb2NhbCBsaW5lcyA9IHt9CgogIGZvciBsaW5lIGluIGlucHV0OmdtYXRjaCgiKFteXG5dKilcbj8iKSBkbwoKICAgICAgdGFibGUuaW5zZXJ0KGxpbmVzLCBsaW5lKQoKICBlbmQKCgoKICAtLSBSZW1vdmUgdGhlIGxhc3QgdGhyZWUgbGluZXMKCiAgZm9yIGkgPSAxLCAzIGRvCgogICAgICB0YWJsZS5yZW1vdmUobGluZXMpCgogIGVuZAoKCgogIC0tIENvbmNhdGVuYXRlIHRoZSByZW1haW5pbmcgbGluZXMKCiAgcmV0dXJuIHRhYmxlLmNvbmNhdChsaW5lcywgIlxuIikKCmVuZAoKCgoKCmxvY2FsIGZ1bmN0aW9uIGluc2VydEluYm94KG1zZykKCiAgdGFibGUuaW5zZXJ0KEluYm94LCBtc2cpCgogIGlmICNJbmJveCA+IG1heEluYm94Q291bnQgdGhlbgoKICAgIGxvY2FsIG92ZXJmbG93ID0gI0luYm94IC0gbWF4SW5ib3hDb3VudCAKCiAgICBmb3IgaSA9IDEsb3ZlcmZsb3cgZG8KCiAgICAgIHRhYmxlLnJlbW92ZShJbmJveCwgMSkKCiAgICBlbmQKCiAgZW5kIAoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGZpbmRPYmplY3QoYXJyYXksIGtleSwgdmFsdWUpCgogIGZvciBpLCBvYmplY3QgaW4gaXBhaXJzKGFycmF5KSBkbwoKICAgIGlmIG9iamVjdFtrZXldID09IHZhbHVlIHRoZW4KCiAgICAgIHJldHVybiBvYmplY3QKCiAgICBlbmQKCiAgZW5kCgogIHJldHVybiBuaWwKCmVuZAoKCgpmdW5jdGlvbiBUYWIobXNnKQoKICBsb2NhbCBpbnB1dHMgPSB7fQoKICBmb3IgXywgbyBpbiBpcGFpcnMobXNnLlRhZ3MpIGRvCgogICAgaWYgbm90IGlucHV0c1tvLm5hbWVdIHRoZW4KCiAgICAgIGlucHV0c1tvLm5hbWVdID0gby52YWx1ZQoKICAgIGVuZAoKICBlbmQKCiAgcmV0dXJuIGlucHV0cwoKZW5kCgoKCmZ1bmN0aW9uIFByb21wdCgpCgogIHJldHVybiBDb2xvcnMuZ3JlZW4gLi4gTmFtZSAuLiBDb2xvcnMuZ3JheQoKICAgIC4uICJAIiAuLiBDb2xvcnMuYmx1ZSAuLiAiYW9zLSIgLi4gcHJvY2Vzcy5fdmVyc2lvbiAuLiBDb2xvcnMuZ3JheQoKICAgIC4uICJbSW5ib3g6IiAuLiBDb2xvcnMucmVkIC4uIHRvc3RyaW5nKCNJbmJveCkgLi4gQ29sb3JzLmdyYXkKCiAgICAuLiAiXSIgLi4gQ29sb3JzLnJlc2V0IC4uICI+ICIKCmVuZAoKCgpmdW5jdGlvbiBwcmludChhKQoKICBpZiB0eXBlKGEpID09ICJ0YWJsZSIgdGhlbgoKICAgIGEgPSBzdHJpbmdpZnkuZm9ybWF0KGEpCgogIGVuZAoKICAKCiAgbG9jYWwgZGF0YSA9IGEKCiAgaWYgYW8ub3V0Ym94Lk91dHB1dC5kYXRhIHRoZW4KCiAgICBkYXRhID0gIGFvLm91dGJveC5PdXRwdXQuZGF0YSAuLiAiXG4iIC4uIGEKCiAgZW5kCgogIGFvLm91dGJveC5PdXRwdXQgPSB7IGRhdGEgPSBkYXRhLCBwcm9tcHQgPSBQcm9tcHQoKSwgcHJpbnQgPSB0cnVlIH0KCgoKICAtLSBPbmx5IHN1cHBvcnRlZCBmb3IgbmV3ZXIgdmVyc2lvbiBvZiBBT1MKCiAgaWYgSEFORExFUl9QUklOVF9MT0dTIHRoZW4gCgogICAgdGFibGUuaW5zZXJ0KEhBTkRMRVJfUFJJTlRfTE9HUywgYSkKCiAgICByZXR1cm4gbmlsCgogIGVuZAoKCgogIHJldHVybiB0b3N0cmluZyhhKQoKZW5kCgoKCmZ1bmN0aW9uIFNlbmQobXNnKQoKICBpZiBub3QgbXNnLlRhcmdldCB0aGVuCgogICAgcHJpbnQoIldBUk46IE5vIHRhcmdldCBzcGVjaWZpZWQgZm9yIG1lc3NhZ2UuIERhdGEgd2lsbCBiZSBzdG9yZWQsIGJ1dCBubyBwcm9jZXNzIHdpbGwgcmVjZWl2ZSBpdC4iKQoKICBlbmQKCiAgbG9jYWwgcmVzdWx0ID0gYW8uc2VuZChtc2cpCgogIHJldHVybiB7CgogICAgb3V0cHV0ID0gIk1lc3NhZ2UgYWRkZWQgdG8gb3V0Ym94IiwKCiAgICByZWNlaXZlID0gcmVzdWx0LnJlY2VpdmUsCgogICAgb25SZXBseSA9IHJlc3VsdC5vblJlcGx5CgogIH0KCmVuZAoKCgpmdW5jdGlvbiBTcGF3biguLi4pCgogIGxvY2FsIG1vZHVsZSwgc3Bhd25Nc2cKCgoKICBpZiBzZWxlY3QoIiMiLCAuLi4pID09IDEgdGhlbgoKICAgIHNwYXduTXNnID0gc2VsZWN0KDEsIC4uLikKCiAgICBtb2R1bGUgPSBhby5fbW9kdWxlCgogIGVsc2UKCiAgICBtb2R1bGUgPSBzZWxlY3QoMSwgLi4uKQoKICAgIHNwYXduTXNnID0gc2VsZWN0KDIsIC4uLikKCiAgZW5kCgoKCiAgaWYgbm90IHNwYXduTXNnIHRoZW4KCiAgICBzcGF3bk1zZyA9IHt9CgogIGVuZAoKICBsb2NhbCByZXN1bHQgPSBhby5zcGF3bihtb2R1bGUsIHNwYXduTXNnKQoKICByZXR1cm4gewoKICAgIG91dHB1dCA9ICJTcGF3biBwcm9jZXNzIHJlcXVlc3QgYWRkZWQgdG8gb3V0Ym94IiwKCiAgICBhZnRlciA9IHJlc3VsdC5hZnRlciwKCiAgICByZWNlaXZlID0gcmVzdWx0LnJlY2VpdmUKCiAgfSAgCgplbmQKCgoKZnVuY3Rpb24gUmVjZWl2ZShtYXRjaCkKCiAgcmV0dXJuIEhhbmRsZXJzLnJlY2VpdmUobWF0Y2gpCgplbmQKCgoKZnVuY3Rpb24gQXNzaWduKGFzc2lnbm1lbnQpCgogIGlmIG5vdCBhby5hc3NpZ24gdGhlbgoKICAgIHByaW50KCJBc3NpZ24gaXMgbm90IGltcGxlbWVudGVkLiIpCgogICAgcmV0dXJuICJBc3NpZ24gaXMgbm90IGltcGxlbWVudGVkLiIKCiAgZW5kCgogIGFvLmFzc2lnbihhc3NpZ25tZW50KQoKICBwcmludCgiQXNzaWdubWVudCBhZGRlZCB0byBvdXRib3guIikKCiAgcmV0dXJuICdBc3NpZ25tZW50IGFkZGVkIHRvIG91dGJveC4nCgplbmQKCgoKU2VlZGVkID0gU2VlZGVkIG9yIGZhbHNlCgoKCi0tIHRoaXMgaXMgYSB0ZW1wb3JhcnkgYXBwcm9hY2guLi4KCmxvY2FsIGZ1bmN0aW9uIHN0cmluZ1RvU2VlZChzKQoKICBsb2NhbCBzZWVkID0gMAoKICBmb3IgaSA9IDEsICNzIGRvCgogICAgICBsb2NhbCBjaGFyID0gc3RyaW5nLmJ5dGUocywgaSkKCiAgICAgIHNlZWQgPSBzZWVkICsgY2hhcgoKICBlbmQKCiAgcmV0dXJuIHNlZWQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBpbml0aWFsaXplU3RhdGUobXNnLCBlbnYpCgogIGlmIG5vdCBTZWVkZWQgdGhlbgoKICAgIC0tbWF0aC5yYW5kb21zZWVkKDEyMzQpCgogICAgY2hhbmNlLnNlZWQodG9udW1iZXIobXNnWydCbG9jay1IZWlnaHQnXSAuLiBzdHJpbmdUb1NlZWQobXNnLk93bmVyIC4uIG1zZy5Nb2R1bGUgLi4gbXNnLklkKSkpCgogICAgbWF0aC5yYW5kb20gPSBmdW5jdGlvbiAoLi4uKQoKICAgICAgbG9jYWwgYXJncyA9IHsuLi59CgogICAgICBsb2NhbCBuID0gI2FyZ3MKCiAgICAgIGlmIG4gPT0gMCB0aGVuCgogICAgICAgIHJldHVybiBjaGFuY2UucmFuZG9tKCkKCiAgICAgIGVuZAoKICAgICAgaWYgbiA9PSAxIHRoZW4KCiAgICAgICAgcmV0dXJuIGNoYW5jZS5pbnRlZ2VyKDEsIGFyZ3NbMV0pCgogICAgICBlbmQKCiAgICAgIGlmIG4gPT0gMiB0aGVuCgogICAgICAgIHJldHVybiBjaGFuY2UuaW50ZWdlcihhcmdzWzFdLCBhcmdzWzJdKQoKICAgICAgZW5kCgogICAgICByZXR1cm4gY2hhbmNlLnJhbmRvbSgpCgogICAgZW5kCgogICAgU2VlZGVkID0gdHJ1ZQoKICBlbmQKCiAgRXJyb3JzID0gRXJyb3JzIG9yIHt9CgogIEluYm94ID0gSW5ib3ggb3Ige30KCgoKICAtLSB0ZW1wb3JhcnkgZml4IGZvciBTcGF3bgoKICBpZiBub3QgT3duZXIgdGhlbgoKICAgIGxvY2FsIF9mcm9tID0gZmluZE9iamVjdChlbnYuUHJvY2Vzcy5UYWdzLCAibmFtZSIsICJGcm9tLVByb2Nlc3MiKQoKICAgIGlmIF9mcm9tIHRoZW4KCiAgICAgIE93bmVyID0gX2Zyb20udmFsdWUKCiAgICBlbHNlCgogICAgICBPd25lciA9IG1zZy5Gcm9tCgogICAgZW5kCgogIGVuZAoKCgogIGlmIG5vdCBOYW1lIHRoZW4KCiAgICBsb2NhbCBhb3NOYW1lID0gZmluZE9iamVjdChlbnYuUHJvY2Vzcy5UYWdzLCAibmFtZSIsICJOYW1lIikKCiAgICBpZiBhb3NOYW1lIHRoZW4KCiAgICAgIE5hbWUgPSBhb3NOYW1lLnZhbHVlCgogICAgZWxzZQoKICAgICAgTmFtZSA9ICdhb3MnCgogICAgZW5kCgogIGVuZAoKCgplbmQKCgoKZnVuY3Rpb24gVmVyc2lvbigpCgogIHByaW50KCJ2ZXJzaW9uOiAiIC4uIHByb2Nlc3MuX3ZlcnNpb24pCgplbmQKCgoKZnVuY3Rpb24gcHJvY2Vzcy5oYW5kbGUobXNnLCBfKQoKCgogIGVudiA9IG5pbAoKICBpZiBfLlByb2Nlc3MgdGhlbgoKICAgIGVudiA9IF8KCiAgZWxzZQoKICAgIGVudiA9IF8uZW52CgogIGVuZAoKCgogIGFvLmluaXQoZW52KQoKICAtLSByZWxvY2F0ZSBjdXN0b20gdGFncyB0byByb290IG1lc3NhZ2UKCiAgbXNnID0gYW8ubm9ybWFsaXplKG1zZykKCiAgLS0gc2V0IHByb2Nlc3MgaWQKCiAgYW8uaWQgPSBhby5lbnYuUHJvY2Vzcy5JZAoKICBpbml0aWFsaXplU3RhdGUobXNnLCBhby5lbnYpCgogIEhBTkRMRVJfUFJJTlRfTE9HUyA9IHt9CgogIAoKICAtLSBzZXQgb3MudGltZSB0byByZXR1cm4gbXNnLlRpbWVzdGFtcAoKICBvcy50aW1lID0gZnVuY3Rpb24gKCkgcmV0dXJuIG1zZy5UaW1lc3RhbXAgZW5kCgoKCiAgLS0gdGFnaWZ5IG1zZwoKICBtc2cuVGFnQXJyYXkgPSBtc2cuVGFncwoKICBtc2cuVGFncyA9IFRhYihtc2cpCgogIC0tIHRhZ2lmeSBQcm9jZXNzCgogIGFvLmVudi5Qcm9jZXNzLlRhZ0FycmF5ID0gYW8uZW52LlByb2Nlc3MuVGFncwoKICBhby5lbnYuUHJvY2Vzcy5UYWdzID0gVGFiKGFvLmVudi5Qcm9jZXNzKQoKICAtLSBtYWdpYyB0YWJsZSAtIGlmIENvbnRlbnQtVHlwZSA9PSBhcHBsaWNhdGlvbi9qc29uIC0gZGVjb2RlIG1zZy5EYXRhIHRvIGEgVGFibGUKCiAgaWYgbXNnLlRhZ3NbJ0NvbnRlbnQtVHlwZSddIGFuZCBtc2cuVGFnc1snQ29udGVudC1UeXBlJ10gPT0gJ2FwcGxpY2F0aW9uL2pzb24nIHRoZW4KCiAgICBtc2cuRGF0YSA9IHJlcXVpcmUoJ2pzb24nKS5kZWNvZGUobXNnLkRhdGEgb3IgInt9IikKCiAgZW5kCgogIC0tIGluaXQgRXJyb3JzCgogIEVycm9ycyA9IEVycm9ycyBvciB7fQoKICAtLSBjbGVhciBPdXRib3gKCiAgYW8uY2xlYXJPdXRib3goKQoKCgogIC0tIE9ubHkgdHJ1c3QgbWVzc2FnZXMgZnJvbSBhIHNpZ25lZCBvd25lciBvciBhbiBBdXRob3JpdHkKCiAgaWYgbXNnLkZyb20gfj0gbXNnLk93bmVyIGFuZCBub3QgYW8uaXNUcnVzdGVkKG1zZykgdGhlbgoKICAgIFNlbmQoe1RhcmdldCA9IG1zZy5Gcm9tLCBEYXRhID0gIk1lc3NhZ2UgaXMgbm90IHRydXN0ZWQgYnkgdGhpcyBwcm9jZXNzISJ9KQoKICAgIHByaW50KCdNZXNzYWdlIGlzIG5vdCB0cnVzdGVkISBGcm9tOiAnIC4uIG1zZy5Gcm9tIC4uICcgLSBPd25lcjogJyAuLiBtc2cuT3duZXIpCgogICAgcmV0dXJuIGFvLnJlc3VsdCh7IH0pIAoKICBlbmQKCgoKICBpZiBhby5pc0Fzc2lnbm1lbnQobXNnKSBhbmQgbm90IGFvLmlzQXNzaWduYWJsZShtc2cpIHRoZW4KCiAgICBTZW5kKHtUYXJnZXQgPSBtc2cuRnJvbSwgRGF0YSA9ICJBc3NpZ25tZW50IGlzIG5vdCB0cnVzdGVkIGJ5IHRoaXMgcHJvY2VzcyEifSkKCiAgICBwcmludCgnQXNzaWdubWVudCBpcyBub3QgdHJ1c3RlZCEgRnJvbTogJyAuLiBtc2cuRnJvbSAuLiAnIC0gT3duZXI6ICcgLi4gbXNnLk93bmVyKQoKICAgIHJldHVybiBhby5yZXN1bHQoeyB9KQoKICBlbmQKCgoKICBIYW5kbGVycy5hZGQoIl9ldmFsIiwKCiAgICBmdW5jdGlvbiAobXNnKQoKICAgICAgcmV0dXJuIG1zZy5BY3Rpb24gPT0gIkV2YWwiIGFuZCBPd25lciA9PSBtc2cuRnJvbQoKICAgIGVuZCwKCiAgICByZXF1aXJlKCcuZXZhbCcpKGFvKQoKICApCgogIEhhbmRsZXJzLmFwcGVuZCgiX2RlZmF1bHQiLCBmdW5jdGlvbiAoKSByZXR1cm4gdHJ1ZSBlbmQsIHJlcXVpcmUoJy5kZWZhdWx0JykoaW5zZXJ0SW5ib3gpKQoKICAtLSBjYWxsIGV2YWx1YXRlIGZyb20gaGFuZGxlcnMgcGFzc2luZyBlbnYKCiAgbXNnLnJlcGx5ID0KCiAgICBmdW5jdGlvbihyZXBseU1zZykKCiAgICAgIHJlcGx5TXNnLlRhcmdldCA9IG1zZ1siUmVwbHktVG8iXSBvciAocmVwbHlNc2cuVGFyZ2V0IG9yIG1zZy5Gcm9tKQoKICAgICAgcmVwbHlNc2dbIlgtUmVmZXJlbmNlIl0gPSBtc2dbIlgtUmVmZXJlbmNlIl0gb3IgbXNnLlJlZmVyZW5jZQoKICAgICAgcmVwbHlNc2dbIlgtT3JpZ2luIl0gPSBtc2dbIlgtT3JpZ2luIl0gb3IgbmlsCgoKCiAgICAgIHJldHVybiBhby5zZW5kKHJlcGx5TXNnKQoKICAgIGVuZAoKICAKCiAgbXNnLmZvcndhcmQgPQoKICAgIGZ1bmN0aW9uKHRhcmdldCwgZm9yd2FyZE1zZykKCiAgICAgIC0tIENsb25lIHRoZSBtZXNzYWdlIGFuZCBhZGQgZm9yd2FyZE1zZyB0YWdzCgogICAgICBsb2NhbCBuZXdNc2cgPSAgYW8uc2FuaXRpemUobXNnKQoKICAgICAgZm9yd2FyZE1zZyA9IGZvcndhcmRNc2cgb3Ige30KCgoKICAgICAgZm9yIGssdiBpbiBwYWlycyhmb3J3YXJkTXNnKSBkbwoKICAgICAgICBuZXdNc2dba10gPSB2CgogICAgICBlbmQKCgoKICAgICAgLS0gU2V0IGZvcndhcmQtc3BlY2lmaWMgdGFncwoKICAgICAgbmV3TXNnLlRhcmdldCA9IHRhcmdldAoKICAgICAgbmV3TXNnWyJSZXBseS1UbyJdID0gbXNnWyJSZXBseS1UbyJdIG9yIG1zZy5Gcm9tCgogICAgICBuZXdNc2dbIlgtUmVmZXJlbmNlIl0gPSBtc2dbIlgtUmVmZXJlbmNlIl0gb3IgbXNnLlJlZmVyZW5jZQoKICAgICAgbmV3TXNnWyJYLU9yaWdpbiJdID0gbXNnWyJYLU9yaWdpbiJdIG9yIG1zZy5Gcm9tCgogICAgICAtLSBjbGVhciBmdW5jdGlvbnMKCiAgICAgIG5ld01zZy5yZXBseSA9IG5pbAoKICAgICAgbmV3TXNnLmZvcndhcmQgPSBuaWwgCgogICAgICAKCiAgICAgIGFvLnNlbmQobmV3TXNnKQoKICAgIGVuZAoKCgogIGxvY2FsIGNvID0gY29yb3V0aW5lLmNyZWF0ZSgKCiAgICBmdW5jdGlvbigpCgogICAgICByZXR1cm4gcGNhbGwoSGFuZGxlcnMuZXZhbHVhdGUsIG1zZywgYW8uZW52KQoKICAgIGVuZAoKICApCgogIGxvY2FsIF8sIHN0YXR1cywgcmVzdWx0ID0gY29yb3V0aW5lLnJlc3VtZShjbykKCgoKICAtLSBNYWtlIHN1cmUgd2UgaGF2ZSBhIHJlZmVyZW5jZSB0byB0aGUgY29yb3V0aW5lIGlmIGl0IHdpbGwgd2FrZSB1cC4KCiAgLS0gU2ltdWx0YW5lb3VzbHksIHBydW5lIGFueSBkZWFkIGNvcm91dGluZXMgc28gdGhhdCB0aGV5IGNhbiBiZQoKICAtLSBmcmVlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCgogIHRhYmxlLmluc2VydChIYW5kbGVycy5jb3JvdXRpbmVzLCBjbykKCiAgZm9yIGksIHggaW4gaXBhaXJzKEhhbmRsZXJzLmNvcm91dGluZXMpIGRvCgogICAgaWYgY29yb3V0aW5lLnN0YXR1cyh4KSA9PSAiZGVhZCIgdGhlbgoKICAgICAgdGFibGUucmVtb3ZlKEhhbmRsZXJzLmNvcm91dGluZXMsIGkpCgogICAgZW5kCgogIGVuZAoKCgogIGlmIG5vdCBzdGF0dXMgdGhlbgoKICAgIGlmIChtc2cuQWN0aW9uID09ICJFdmFsIikgdGhlbgoKICAgICAgdGFibGUuaW5zZXJ0KEVycm9ycywgcmVzdWx0KQoKICAgICAgbG9jYWwgcHJpbnREYXRhID0gdGFibGUuY29uY2F0KEhBTkRMRVJfUFJJTlRfTE9HUywgIlxuIikKCiAgICAgIHJldHVybiB7IEVycm9yID0gcHJpbnREYXRhIC4uICdcblxuJyAuLiByZXN1bHQgfQoKICAgIGVuZCAKCiAgICAtLXRhYmxlLmluc2VydChFcnJvcnMsIHJlc3VsdCkKCiAgICAtLWFvLm91dGJveC5PdXRwdXQuZGF0YSA9ICIiCgogICAgaWYgbXNnLkFjdGlvbiB0aGVuCgogICAgICBwcmludChDb2xvcnMucmVkIC4uICJFcnJvciIgLi4gQ29sb3JzLmdyYXkgLi4gIiBoYW5kbGluZyBtZXNzYWdlIHdpdGggQWN0aW9uID0gIiAuLiBtc2cuQWN0aW9uICAuLiBDb2xvcnMucmVzZXQpCgogICAgZWxzZQoKICAgICAgcHJpbnQoQ29sb3JzLnJlZCAuLiAiRXJyb3IiIC4uIENvbG9ycy5ncmF5IC4uICIgaGFuZGxpbmcgbWVzc2FnZSAiIC4uIENvbG9ycy5yZXNldCkKCiAgICBlbmQKCiAgICBwcmludChDb2xvcnMuZ3JlZW4gLi4gcmVzdWx0IC4uIENvbG9ycy5yZXNldCkKCiAgICBwcmludCgiXG4iIC4uIENvbG9ycy5ncmF5IC4uIHJlbW92ZUxhc3RUaHJlZUxpbmVzKGRlYnVnLnRyYWNlYmFjaygpKSAuLiBDb2xvcnMucmVzZXQpCgogICAgcmV0dXJuIGFvLnJlc3VsdCh7IE1lc3NhZ2VzID0ge30sIFNwYXducyA9IHt9LCBBc3NpZ25tZW50cyA9IHt9IH0pCgogIGVuZAoKCgogIGlmIG1zZy5BY3Rpb24gPT0gIkV2YWwiIHRoZW4KCiAgICBsb2NhbCByZXNwb25zZSA9IGFvLnJlc3VsdCh7IAoKICAgICAgT3V0cHV0ID0gewoKICAgICAgICBkYXRhID0gdGFibGUuY29uY2F0KEhBTkRMRVJfUFJJTlRfTE9HUywgIlxuIiksCgogICAgICAgIHByb21wdCA9IFByb21wdCgpLAoKICAgICAgICB0ZXN0ID0gRHVtcChIQU5ETEVSX1BSSU5UX0xPR1MpCgogICAgICB9CgogICAgfSkKCiAgICBIQU5ETEVSX1BSSU5UX0xPR1MgPSB7fSAtLSBjbGVhciBsb2dzCgogICAgcmV0dXJuIHJlc3BvbnNlCgogIGVsc2UKCiAgICBsb2NhbCByZXNwb25zZSA9IGFvLnJlc3VsdCh7IE91dHB1dCA9IHsgZGF0YSA9IHRhYmxlLmNvbmNhdChIQU5ETEVSX1BSSU5UX0xPR1MsICJcbiIpLCBwcm9tcHQgPSBQcm9tcHQoKSwgcHJpbnQgPSB0cnVlIH0gfSkKCiAgICBIQU5ETEVSX1BSSU5UX0xPR1MgPSB7fSAtLSBjbGVhciBsb2dzCgogICAgcmV0dXJuIHJlc3BvbnNlCgogIGVuZAoKZW5kCgoKCnJldHVybiBwcm9jZXNzCgAAAABsb2NhbCB1dGlsID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmluaXQiKQoKbG9jYWwgZGlnZXN0ID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3QuaW5pdCIpCgpsb2NhbCBjaXBoZXIgPSByZXF1aXJlKCIuY3J5cHRvLmNpcGhlci5pbml0IikKCmxvY2FsIG1hYyA9IHJlcXVpcmUoIi5jcnlwdG8ubWFjLmluaXQiKQoKbG9jYWwga2RmID0gcmVxdWlyZSgiLmNyeXB0by5rZGYuaW5pdCIpCgoKCmxvY2FsIGNyeXB0byA9IHsKCiAgICBfdmVyc2lvbiA9ICIwLjAuMSIsCgogICAgZGlnZXN0ID0gZGlnZXN0LAoKICAgIHV0aWxzID0gdXRpbCwKCiAgICBjaXBoZXIgPSBjaXBoZXIsCgogICAgcmFuZG9tID0gY2lwaGVyLmlzc2FjLnJhbmRvbSwKCiAgICBtYWMgPSBtYWMsCgogICAga2RmID0ga2RmLAoKfTsKCgoKcmV0dXJuIGNyeXB0bwAAAGxvY2FsIFBCS0RGMiA9IHJlcXVpcmUoIi5jcnlwdG8ua2RmLnBia2RmMiIpCgoKCmxvY2FsIGtkZiA9IHsKCiAgICBfdmVyc2lvbiA9ICIwLjAuMSIsCgogICAgcGJrZGYyID0gUEJLREYyLnBia2RmMiwKCn07CgoKCnJldHVybiBrZGYAQpDvBwvVHWxvY2FsIEJpdCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5iaXQiKTsKCmxvY2FsIEFycmF5ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmFycmF5Iik7Cgpsb2NhbCBTdHJlYW0gPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuc3RyZWFtIik7Cgpsb2NhbCBITUFDID0gcmVxdWlyZSgiLmNyeXB0by5tYWMuaG1hYyIpCgoKCmxvY2FsIFNIQTEgPSByZXF1aXJlKCIuY3J5cHRvLmRpZ2VzdC5zaGExIik7Cgpsb2NhbCBTSEEyXzI1NiA9IHJlcXVpcmUoIi5jcnlwdG8uZGlnZXN0LnNoYTJfMjU2Iik7CgoKCmxvY2FsIEFORCA9IEJpdC5iYW5kOwoKbG9jYWwgUlNISUZUID0gQml0LnJzaGlmdDsKCgoKbG9jYWwgd29yZDJieXRlcyA9IGZ1bmN0aW9uKHdvcmQpCgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjM7CgogICAgYjMgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjIgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjEgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjAgPSBBTkQod29yZCwgMHhGRik7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzOwoKZW5kCgoKCmxvY2FsIFBCS0RGMiA9IGZ1bmN0aW9uKCkKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwgYmxvY2tMZW4gPSAxNjsKCiAgICBsb2NhbCBkS2V5TGVuID0gMjU2OwoKICAgIGxvY2FsIGl0ZXJhdGlvbnMgPSA0MDk2OwoKCgogICAgbG9jYWwgc2FsdDsKCiAgICBsb2NhbCBwYXNzd29yZDsKCgoKCgogICAgbG9jYWwgUFJGOwoKCgogICAgbG9jYWwgZEtleTsKCgoKCgogICAgcHVibGljLnNldEJsb2NrTGVuID0gZnVuY3Rpb24obGVuKQoKICAgICAgICBibG9ja0xlbiA9IGxlbjsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRES2V5TGVuID0gZnVuY3Rpb24obGVuKQoKICAgICAgICBkS2V5TGVuID0gbGVuCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0SXRlcmF0aW9ucyA9IGZ1bmN0aW9uKGl0ZXIpCgogICAgICAgIGl0ZXJhdGlvbnMgPSBpdGVyOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldFNhbHQgPSBmdW5jdGlvbihzYWx0Qnl0ZXMpCgogICAgICAgIHNhbHQgPSBzYWx0Qnl0ZXM7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UGFzc3dvcmQgPSBmdW5jdGlvbihwYXNzd29yZEJ5dGVzKQoKICAgICAgICBwYXNzd29yZCA9IHBhc3N3b3JkQnl0ZXM7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UFJGID0gZnVuY3Rpb24ocHJmKQoKICAgICAgICBQUkYgPSBwcmY7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBsb2NhbCBidWlsZEJsb2NrID0gZnVuY3Rpb24oaSkKCiAgICAgICAgbG9jYWwgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKGkpOwoKICAgICAgICBsb2NhbCBpaSA9IHtiMCwgYjEsIGIyLCBiM307CgogICAgICAgIGxvY2FsIHMgPSBBcnJheS5jb25jYXQoc2FsdCwgaWkpOwoKCgogICAgICAgIGxvY2FsIG91dCA9IHt9OwoKCgogICAgICAgIFBSRi5zZXRLZXkocGFzc3dvcmQpOwoKICAgICAgICBmb3IgYyA9IDEsIGl0ZXJhdGlvbnMgZG8KCiAgICAgICAgICAgIFBSRi5pbml0KCkKCiAgICAgICAgICAgICAgICAudXBkYXRlKFN0cmVhbS5mcm9tQXJyYXkocykpOwoKCgogICAgICAgICAgICBzID0gUFJGLmZpbmlzaCgpLmFzQnl0ZXMoKTsKCiAgICAgICAgICAgIGlmKGMgPiAxKSB0aGVuCgogICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgcyk7CgogICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgb3V0ID0gczsKCiAgICAgICAgICAgIGVuZAoKICAgICAgICBlbmQKCgoKICAgICAgICByZXR1cm4gb3V0OwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgYmxvY2tzID0gbWF0aC5jZWlsKGRLZXlMZW4gLyBibG9ja0xlbik7CgoKCiAgICAgICAgZEtleSA9IHt9OwoKCgogICAgICAgIGZvciBiID0gMSwgYmxvY2tzIGRvCgogICAgICAgICAgICBsb2NhbCBibG9jayA9IGJ1aWxkQmxvY2soYik7CgogICAgICAgICAgICBkS2V5ID0gQXJyYXkuY29uY2F0KGRLZXksIGJsb2NrKTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgaWYoQXJyYXkuc2l6ZShkS2V5KSA+IGRLZXlMZW4pIHRoZW4gZEtleSA9IEFycmF5LnRydW5jYXRlKGRLZXksIGRLZXlMZW4pOyBlbmQKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBkS2V5OwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gQXJyYXkudG9IZXgoZEtleSk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBBcnJheS50b1N0cmluZyhkS2V5KTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgplbmQKCgoKLS0tIEBjbGFzcyBBcnJheSA6IHRhYmxlCgoKCi0tLSBQQktERjIga2V5IGRlcml2YXRpb24gZnVuY3Rpb24KCi0tLSBAcGFyYW0gcGFzc3dvcmQgKEFycmF5KSAtIFRoZSBwYXNzd29yZCB0byBkZXJpdmUgdGhlIGtleSBmcm9tCgotLS0gQHBhcmFtIHNhbHQgKEFycmF5KSAtIFRoZSBzYWx0IHRvIHVzZQoKLS0tIEBwYXJhbSBpdGVyYXRpb25zIG51bWJlciAtIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBwZXJmb3JtCgotLS0gQHBhcmFtIGtleUxlbiBudW1iZXIgLSBUaGUgbGVuZ3RoIG9mIHRoZSBrZXkgdG8gZGVyaXZlCgotLS0gQHBhcmFtIGRpZ2VzdD8gc3RyaW5nIC0gVGhlIGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIChzaGExLCBzaGEyNTYpLiBEZWZhdWx0cyB0byBzaGExLgoKLS0tIEByZXR1cm5zIHN0cmluZyAtIFRoZSBkZXJpdmVkIGtleQoKbG9jYWwgcGJrZGYyID0gZnVuY3Rpb24ocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleUxlbiwgZGlnZXN0KQoKICAgIGxvY2FsIERpZ2VzdCA9IG5pbAoKICAgIGlmIGRpZ2VzdCA9PSAic2hhMSIgdGhlbgoKICAgICAgICBEaWdlc3QgPSBTSEExLlNIQTEKCiAgICBlbHNlaWYgZGlnZXN0ID09ICJzaGEyNTYiIHRoZW4KCiAgICAgICAgRGlnZXN0ID0gU0hBMl8yNTYuU0hBMl8yNTYKCiAgICBlbHNlaWYgZGlnZXN0ID09IG5pbCB0aGVuCgogICAgICAgIERpZ2VzdCA9IFNIQTEuU0hBMQoKICAgIGVsc2UKCiAgICAgICAgZXJyb3IoIlVuc3VwcG9ydGVkIGFsZ29yaXRobTogIiAuLiBkaWdlc3QpCgogICAgZW5kCgoKCiAgICBsb2NhbCBwcmYgPSBITUFDLkhNQUMoKS5zZXRCbG9ja1NpemUoNjQpLnNldERpZ2VzdChEaWdlc3QpOwoKCgogICAgbG9jYWwgcmVzID0gUEJLREYyKCkKCiAgICAgICAgICAgIC5zZXRQUkYocHJmKQoKICAgICAgICAgICAgLnNldEJsb2NrTGVuKDE2KQoKICAgICAgICAgICAgLnNldERLZXlMZW4oa2V5TGVuKQoKICAgICAgICAgICAgLnNldEl0ZXJhdGlvbnMoaXRlcmF0aW9ucykKCiAgICAgICAgICAgIC5zZXRTYWx0KHNhbHQpCgogICAgICAgICAgICAuc2V0UGFzc3dvcmQocGFzc3dvcmQpCgogICAgICAgICAgICAuZmluaXNoKCkKCgoKICAgIHJldHVybiByZXMKCmVuZAoKCgpyZXR1cm4gewoKICAgIFBCS0RGMiA9IFBCS0RGMiwKCiAgICBwYmtkZjIgPSBwYmtkZjIKCn07AELwjAgL9QJsb2NhbCBCaXQgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYml0IikKCmxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIikKCmxvY2FsIFN0cmVhbSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5zdHJlYW0iKQoKbG9jYWwgSGV4ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmhleCIpCgpsb2NhbCBBcnJheSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5hcnJheSIpCgoKCmxvY2FsIHV0aWwgPSB7CgogICAgX3ZlcnNpb24gPSAiMC4wLjEiLAoKICAgIGJpdCA9IEJpdCwKCiAgICBxdWV1ZSA9IFF1ZXVlLAoKICAgIHN0cmVhbSA9IFN0cmVhbSwKCiAgICBoZXggPSBIZXgsCgogICAgYXJyYXkgPSBBcnJheSwKCn0KCgoKcmV0dXJuIHV0aWwKAELwjwgLwYsDbG9jYWwgb2ssIGUKCm9rID0gbmlsCgppZiBub3Qgb2sgdGhlbgoKICAgIG9rLCBlID0gcGNhbGwocmVxdWlyZSwgImJpdCIpIC0tIHRoZSBMdWFKSVQgb25lID8KCmVuZAoKaWYgbm90IG9rIHRoZW4KCiAgICBvaywgZSA9IHBjYWxsKHJlcXVpcmUsICJiaXQzMiIpIC0tIEx1YSA1LjIKCmVuZAoKaWYgbm90IG9rIHRoZW4KCiAgICBvaywgZSA9IHBjYWxsKHJlcXVpcmUsICJiaXQubnVtYmVybHVhIikgLS0gZm9yIEx1YSA1LjEsIGh0dHBzOi8vZ2l0aHViLmNvbS90c3QyMDA1L2x1YS1iaXQtbnVtYmVybHVhLwoKZW5kCgppZiBub3Qgb2sgdGhlbgoKICAgIGVycm9yKCJubyBiaXR3aXNlIHN1cHBvcnQgZm91bmQiLCAyKQoKZW5kCgphc3NlcnQodHlwZShlKSA9PSAidGFibGUiLCAiaW52YWxpZCBiaXQgbW9kdWxlIikKCgoKLS0gV29ya2Fyb3VuZCB0byBzdXBwb3J0IEx1YSA1LjIgYml0MzIgQVBJIHdpdGggdGhlIEx1YUpJVCBiaXQgb25lCgppZiBlLnJvbCBhbmQgbm90IGUubHJvdGF0ZSB0aGVuCgogICAgZS5scm90YXRlID0gZS5yb2wKCmVuZAoKaWYgZS5yb3IgYW5kIG5vdCBlLnJyb3RhdGUgdGhlbgoKICAgIGUucnJvdGF0ZSA9IGUucm9yCgplbmQKCgoKLS0gV29ya2Fyb3VuZCB0byBzdXBwb3J0IGluY29tcGxldGUgYml0IG9wZXJhdGlvbnMgc2V0CgppZiBub3QgZS5yb3IgYW5kIG5vdCBlLnJyb3RhdGUgdGhlbgoKICAgIGxvY2FsIHJvciA9IGZ1bmN0aW9uKGIsIG4pCgogICAgICAgIHJldHVybiBlLmJvcihlLnJzaGlmdChiLCBuKSwgZS5sc2hpZnQoYiwgMzIgLSBuKSkKCiAgICBlbmQKCgoKICAgIGUucm9yID0gcm9yCgogICAgZS5ycm90YXRlID0gcm9yCgplbmQKCgoKaWYgbm90IGUucm9sIGFuZCBub3QgZS5scm90YXRlIHRoZW4KCiAgICBsb2NhbCByb2wgPSBmdW5jdGlvbihiLCBuKQoKICAgICAgICByZXR1cm4gZS5ib3IoZS5sc2hpZnQoYiwgbiksIGUucnNoaWZ0KGIsIDMyIC0gbikpCgogICAgZW5kCgoKCiAgICBlLnJvbCA9IHJvbAoKICAgIGUubHJvdGF0ZSA9IHJvbAoKZW5kCgoKCnJldHVybiBlAAAAAAAKCmxvY2FsIEJpdCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5iaXQiKTsKCmxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIik7CgoKCmxvY2FsIFhPUiA9IEJpdC5ieG9yOwoKCgpsb2NhbCBBcnJheSA9IHt9OwoKCgpBcnJheS5zaXplID0gZnVuY3Rpb24oYXJyYXkpCgogICAgcmV0dXJuICNhcnJheTsKCmVuZAoKCgpBcnJheS5mcm9tU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nKQoKICAgIGxvY2FsIGJ5dGVzID0ge307CgoKCiAgICBsb2NhbCBpID0gMTsKCiAgICBsb2NhbCBieXRlID0gc3RyaW5nLmJ5dGUoc3RyaW5nLCBpKTsKCiAgICB3aGlsZSBieXRlIH49IG5pbCBkbwoKICAgICAgICBieXRlc1tpXSA9IGJ5dGU7CgogICAgICAgIGkgPSBpICsgMTsKCiAgICAgICAgYnl0ZSA9IHN0cmluZy5ieXRlKHN0cmluZywgaSk7CgogICAgZW5kCgoKCiAgICByZXR1cm4gYnl0ZXM7CgoKCmVuZAoKCgpBcnJheS50b1N0cmluZyA9IGZ1bmN0aW9uKGJ5dGVzKQoKICAgIGxvY2FsIGNoYXJzID0ge307CgogICAgbG9jYWwgaSA9IDE7CgoKCiAgICBsb2NhbCBieXRlID0gYnl0ZXNbaV07CgogICAgd2hpbGUgYnl0ZSB+PSBuaWwgZG8KCiAgICAgICAgY2hhcnNbaV0gPSBzdHJpbmcuY2hhcihieXRlKTsKCiAgICAgICAgaSA9IGkgKyAxOwoKICAgICAgICBieXRlID0gYnl0ZXNbaV07CgogICAgZW5kCgoKCiAgICByZXR1cm4gdGFibGUuY29uY2F0KGNoYXJzLCAiIik7CgplbmQKCgoKQXJyYXkuZnJvbVN0cmVhbSA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCBhcnJheSA9IHt9OwoKICAgIGxvY2FsIGkgPSAxOwoKCgogICAgbG9jYWwgYnl0ZSA9IHN0cmVhbSgpOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIGFycmF5W2ldID0gYnl0ZTsKCiAgICAgICAgaSA9IGkgKyAxOwoKICAgICAgICBieXRlID0gc3RyZWFtKCk7CgogICAgZW5kCgoKCiAgICByZXR1cm4gYXJyYXk7CgplbmQKCgoKQXJyYXkucmVhZEZyb21RdWV1ZSA9IGZ1bmN0aW9uKHF1ZXVlLCBzaXplKQoKICAgIGxvY2FsIGFycmF5ID0ge307CgoKCiAgICBmb3IgaSA9IDEsIHNpemUgZG8KCiAgICAgICAgYXJyYXlbaV0gPSBxdWV1ZS5wb3AoKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBhcnJheTsKCmVuZAoKCgpBcnJheS53cml0ZVRvUXVldWUgPSBmdW5jdGlvbihxdWV1ZSwgYXJyYXkpCgogICAgbG9jYWwgc2l6ZSA9IEFycmF5LnNpemUoYXJyYXkpOwoKCgogICAgZm9yIGkgPSAxLCBzaXplIGRvCgogICAgICAgIHF1ZXVlLnB1c2goYXJyYXlbaV0pOwoKICAgIGVuZAoKZW5kCgoKCkFycmF5LnRvU3RyZWFtID0gZnVuY3Rpb24oYXJyYXkpCgogICAgbG9jYWwgcXVldWUgPSBRdWV1ZSgpOwoKICAgIGxvY2FsIGkgPSAxOwoKCgogICAgbG9jYWwgYnl0ZSA9IGFycmF5W2ldOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIHF1ZXVlLnB1c2goYnl0ZSk7CgogICAgICAgIGkgPSBpICsgMTsKCiAgICAgICAgYnl0ZSA9IGFycmF5W2ldOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHF1ZXVlLnBvcDsKCmVuZAoKCgoKCmxvY2FsIGZyb21IZXhUYWJsZSA9IHt9OwoKZm9yIGkgPSAwLCAyNTUgZG8KCiAgICBmcm9tSGV4VGFibGVbc3RyaW5nLmZvcm1hdCgiJTAyWCIsIGkpXSA9IGk7CgogICAgZnJvbUhleFRhYmxlW3N0cmluZy5mb3JtYXQoIiUwMngiLCBpKV0gPSBpOwoKZW5kCgoKCkFycmF5LmZyb21IZXggPSBmdW5jdGlvbihoZXgpCgogICAgbG9jYWwgYXJyYXkgPSB7fTsKCgoKICAgIGZvciBpID0gMSwgc3RyaW5nLmxlbihoZXgpIC8gMiBkbwoKICAgICAgICBsb2NhbCBoID0gc3RyaW5nLnN1YihoZXgsIGkgKiAyIC0gMSwgaSAqIDIpOwoKICAgICAgICBhcnJheVtpXSA9IGZyb21IZXhUYWJsZVtoXTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBhcnJheTsKCmVuZAoKCgoKCmxvY2FsIHRvSGV4VGFibGUgPSB7fTsKCmZvciBpID0gMCwgMjU1IGRvCgogICAgdG9IZXhUYWJsZVtpXSA9IHN0cmluZy5mb3JtYXQoIiUwMlgiLCBpKTsKCmVuZAoKCgpBcnJheS50b0hleCA9IGZ1bmN0aW9uKGFycmF5KQoKICAgIGxvY2FsIGhleCA9IHt9OwoKICAgIGxvY2FsIGkgPSAxOwoKCgogICAgbG9jYWwgYnl0ZSA9IGFycmF5W2ldOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIGhleFtpXSA9IHRvSGV4VGFibGVbYnl0ZV07CgogICAgICAgIGkgPSBpICsgMTsKCiAgICAgICAgYnl0ZSA9IGFycmF5W2ldOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHRhYmxlLmNvbmNhdChoZXgsICIiKTsKCgoKZW5kCgoKCkFycmF5LmNvbmNhdCA9IGZ1bmN0aW9uKGEsIGIpCgogICAgbG9jYWwgY29uY2F0ID0ge307CgogICAgbG9jYWwgb3V0ID0gMTsKCgoKICAgIGxvY2FsIGkgPSAxOwoKICAgIGxvY2FsIGJ5dGUgPSBhW2ldOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIGNvbmNhdFtvdXRdID0gYnl0ZTsKCiAgICAgICAgaSA9IGkgKyAxOwoKICAgICAgICBvdXQgPSBvdXQgKyAxOwoKICAgICAgICBieXRlID0gYVtpXTsKCiAgICBlbmQKCgoKICAgIGkgPSAxOwoKICAgIGJ5dGUgPSBiW2ldOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIGNvbmNhdFtvdXRdID0gYnl0ZTsKCiAgICAgICAgaSA9IGkgKyAxOwoKICAgICAgICBvdXQgPSBvdXQgKyAxOwoKICAgICAgICBieXRlID0gYltpXTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBjb25jYXQ7CgplbmQKCgoKQXJyYXkudHJ1bmNhdGUgPSBmdW5jdGlvbihhLCBuZXdTaXplKQoKICAgIGxvY2FsIHggPSB7fTsKCgoKICAgIGZvciBpID0gMSwgbmV3U2l6ZSBkbwoKICAgICAgICB4W2ldID0gYVtpXTsKCiAgICBlbmQKCgoKICAgIHJldHVybiB4OwoKZW5kCgoKCkFycmF5LlhPUiA9IGZ1bmN0aW9uKGEsIGIpCgogICAgbG9jYWwgeCA9IHt9OwoKCgogICAgZm9yIGssIHYgaW4gcGFpcnMoYSkgZG8KCiAgICAgICAgeFtrXSA9IFhPUih2LCBiW2tdKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiB4OwoKZW5kCgoKCkFycmF5LnN1YnN0aXR1dGUgPSBmdW5jdGlvbihpbnB1dCwgc2JveCkKCiAgICBsb2NhbCBvdXQgPSB7fTsKCgoKICAgIGZvciBrLCB2IGluIHBhaXJzKGlucHV0KSBkbwoKICAgICAgICBvdXRba10gPSBzYm94W3ZdOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIG91dDsKCmVuZAoKCgpBcnJheS5wZXJtdXRlID0gZnVuY3Rpb24oaW5wdXQsIHBib3gpCgogICAgbG9jYWwgb3V0ID0ge307CgoKCiAgICBmb3IgaywgdiBpbiBwYWlycyhwYm94KSBkbwoKICAgICAgICBvdXRba10gPSBpbnB1dFt2XTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKQXJyYXkuY29weSA9IGZ1bmN0aW9uKGlucHV0KQoKICAgIGxvY2FsIG91dCA9IHt9OwoKCgogICAgZm9yIGssIHYgaW4gcGFpcnMoaW5wdXQpIGRvCgogICAgICAgIG91dFtrXSA9IHY7CgogICAgZW5kCgogICAgcmV0dXJuIG91dDsKCmVuZAoKCgpBcnJheS5zbGljZSA9IGZ1bmN0aW9uKGlucHV0LCBzdGFydCwgc3RvcCkKCiAgICBsb2NhbCBvdXQgPSB7fTsKCgoKICAgIGlmIHN0YXJ0ID09IG5pbCB0aGVuCgogICAgICAgIHN0YXJ0ID0gMQoKICAgIGVsc2VpZiBzdGFydCA8IDAgdGhlbgoKICAgICAgICBzdGFydCA9ICNpbnB1dCArIHN0YXJ0ICsgMQoKICAgIGVuZAoKICAgIGlmIHN0b3AgPT0gbmlsIHRoZW4KCiAgICAgICAgc3RvcCA9ICNpbnB1dAoKICAgIGVsc2VpZiBzdG9wIDwgMCB0aGVuCgogICAgICAgIHN0b3AgPSAjaW5wdXQgKyBzdG9wICsgMQoKICAgIGVuZAoKCgogICAgZm9yIGkgPSBzdGFydCwgc3RvcCBkbwoKICAgICAgICB0YWJsZS5pbnNlcnQob3V0LCBpbnB1dFtpXSkKCiAgICBlbmQKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKcmV0dXJuIEFycmF5OwAAAAAKCi0tLSBDb252ZXJ0cyBhIHN0cmluZyB0byBpdHMgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24uCgotLS0gQHBhcmFtIHMgc3RyaW5nIFRoZSBpbnB1dCBzdHJpbmcuCgotLS0gQHBhcmFtIGxuPyBudW1iZXIgLSBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcGVyIGxpbmUuIElmIG5vdCBwcm92aWRlZCwgdGhlIG91dHB1dCB3aWxsIGJlIGEgc2luZ2xlIGxpbmUuCgotLS0gQHBhcmFtIHNlcD8gc3RyaW5nIC0gVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVhY2ggcGFpciBvZiBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuCgotLS0gQHJldHVybiBzdHJpbmcgVGhlIC0gaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHN0cmluZy4KCmxvY2FsIGZ1bmN0aW9uIHN0cmluZ1RvSGV4KHMsIGxuLCBzZXApCgoJaWYgI3MgPT0gMCB0aGVuIHJldHVybiAiIiBlbmQKCglpZiBub3QgbG4gdGhlbgoKCQlyZXR1cm4gKHM6Z3N1YignLicsCgoJCQlmdW5jdGlvbihjKSByZXR1cm4gc3RyaW5nLmZvcm1hdCgnJTAyeCcsIHN0cmluZy5ieXRlKGMpKSBlbmQKCgkJKSkKCgllbmQKCglzZXAgPSBzZXAgb3IgIiIKCglsb2NhbCB0ID0ge30KCglmb3IgaSA9IDEsICNzIC0gMSBkbwoKCQl0WyN0ICsgMV0gPSBzdHJpbmcuZm9ybWF0KCIlMDJ4JXMiLCBzOmJ5dGUoaSksCgoJCQkoaSAlIGxuID09IDApIGFuZCAnXG4nIG9yIHNlcCkKCgllbmQKCgl0WyN0ICsgMV0gPSBzdHJpbmcuZm9ybWF0KCIlMDJ4IiwgczpieXRlKCNzKSkKCglyZXR1cm4gdGFibGUuY29uY2F0KHQpCgplbmQKCgoKLS0tIENvbnZlcnRzIGEgaGV4IGVuY29kZWQgc3RyaW5nIHRvIGl0cyBjb3JyZXNwb25kaW5nIGRlY29kZWQgc3RyaW5nLgoKLS0tIElmIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgYHVuc2FmZWAgaXMgZGVmaW5lZCwgaXQgYXNzdW1lcyB0aGF0IHRoZSBoZXggc3RyaW5nIGlzIHdlbGwtZm9ybWVkCgotLS0gKG5vIGNoZWNrcywgbm8gd2hpdGVzcGFjZSByZW1vdmFsKS4gQnkgZGVmYXVsdCwgaXQgcmVtb3ZlcyB3aGl0ZXNwYWNlIChpbmNsdWRpbmcgbmV3bGluZXMpCgotLS0gYW5kIGNoZWNrcyB0aGF0IHRoZSBoZXggc3RyaW5nIGlzIHdlbGwtZm9ybWVkLgoKLS0tIEBwYXJhbSBocyAoc3RyaW5nKSBUaGUgaGV4IGVuY29kZWQgc3RyaW5nIHRvIGJlIGRlY29kZWQuCgotLS0gQHBhcmFtIHVuc2FmZSAoYm9vbGVhbikgW29wdGlvbmFsXSBJZiB0cnVlLCBhc3N1bWVzIHRoZSBoZXggc3RyaW5nIGlzIHdlbGwtZm9ybWVkLgoKLS0tIEByZXR1cm4gKHN0cmluZykgVGhlIGRlY29kZWQgc3RyaW5nLgoKbG9jYWwgZnVuY3Rpb24gaGV4VG9TdHJpbmcoaHMsIHVuc2FmZSkKCglsb2NhbCB0b251bWJlciA9IHRvbnVtYmVyCgoJaWYgbm90IHVuc2FmZSB0aGVuCgoJCWhzID0gc3RyaW5nLmdzdWIoaHMsICIlcysiLCAiIikgLS0gcmVtb3ZlIHdoaXRlc3BhY2VzCgoJCWlmIHN0cmluZy5maW5kKGhzLCAnW14wLTlBLVphLXpdJykgb3IgI2hzICUgMiB+PSAwIHRoZW4KCgkJCWVycm9yKCJpbnZhbGlkIGhleCBzdHJpbmciKQoKCQllbmQKCgllbmQKCglsb2NhbCBjb3VudCA9ICBzdHJpbmcuZ3N1YihocywgJygleCV4KScsZnVuY3Rpb24oYykgcmV0dXJuIHN0cmluZy5jaGFyKHRvbnVtYmVyKGMsIDE2KSkgZW5kKQoKCXJldHVybiBjb3VudAoKZW5kCgoKCnJldHVybiB7CgoJc3RyaW5nVG9IZXggPSBzdHJpbmdUb0hleCwKCgloZXhUb1N0cmluZyA9IGhleFRvU3RyaW5nLAoKfWxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIik7CgoKCmxvY2FsIFN0cmVhbSA9IHt9OwoKCgoKClN0cmVhbS5mcm9tU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nKQoKICAgIGxvY2FsIGkgPSAwOwoKICAgIHJldHVybiBmdW5jdGlvbigpCgogICAgICAgIGkgPSBpICsgMTsKCiAgICAgICAgcmV0dXJuIHN0cmluZy5ieXRlKHN0cmluZywgaSk7CgogICAgZW5kCgplbmQKCgoKCgpTdHJlYW0udG9TdHJpbmcgPSBmdW5jdGlvbihzdHJlYW0pCgogICAgbG9jYWwgYXJyYXkgPSB7fTsKCiAgICBsb2NhbCBpID0gMTsKCgoKICAgIGxvY2FsIGJ5dGUgPSBzdHJlYW0oKTsKCiAgICB3aGlsZSBieXRlIH49IG5pbCBkbwoKICAgICAgICBhcnJheVtpXSA9IHN0cmluZy5jaGFyKGJ5dGUpOwoKICAgICAgICBpID0gaSArIDE7CgogICAgICAgIGJ5dGUgPSBzdHJlYW0oKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiB0YWJsZS5jb25jYXQoYXJyYXkpOwoKZW5kCgoKCgoKU3RyZWFtLmZyb21BcnJheSA9IGZ1bmN0aW9uKGFycmF5KQoKICAgIGxvY2FsIHF1ZXVlID0gUXVldWUoKTsKCiAgICBsb2NhbCBpID0gMTsKCgoKICAgIGxvY2FsIGJ5dGUgPSBhcnJheVtpXTsKCiAgICB3aGlsZSBieXRlIH49IG5pbCBkbwoKICAgICAgICBxdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICBpID0gaSArIDE7CgogICAgICAgIGJ5dGUgPSBhcnJheVtpXTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBxdWV1ZS5wb3A7CgplbmQKCgoKCgpTdHJlYW0udG9BcnJheSA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCBhcnJheSA9IHt9OwoKICAgIGxvY2FsIGkgPSAxOwoKCgogICAgbG9jYWwgYnl0ZSA9IHN0cmVhbSgpOwoKICAgIHdoaWxlIGJ5dGUgfj0gbmlsIGRvCgogICAgICAgIGFycmF5W2ldID0gYnl0ZTsKCiAgICAgICAgaSA9IGkgKyAxOwoKICAgICAgICBieXRlID0gc3RyZWFtKCk7CgogICAgZW5kCgoKCiAgICByZXR1cm4gYXJyYXk7CgplbmQKCgoKCgpsb2NhbCBmcm9tSGV4VGFibGUgPSB7fTsKCmZvciBpID0gMCwgMjU1IGRvCgogICAgZnJvbUhleFRhYmxlW3N0cmluZy5mb3JtYXQoIiUwMlgiLCBpKV0gPSBpOwoKICAgIGZyb21IZXhUYWJsZVtzdHJpbmcuZm9ybWF0KCIlMDJ4IiwgaSldID0gaTsKCmVuZAoKCgpTdHJlYW0uZnJvbUhleCA9IGZ1bmN0aW9uKGhleCkKCiAgICBsb2NhbCBxdWV1ZSA9IFF1ZXVlKCk7CgoKCiAgICBmb3IgaSA9IDEsIHN0cmluZy5sZW4oaGV4KSAvIDIgZG8KCiAgICAgICAgbG9jYWwgaCA9IHN0cmluZy5zdWIoaGV4LCBpICogMiAtIDEsIGkgKiAyKTsKCiAgICAgICAgcXVldWUucHVzaChmcm9tSGV4VGFibGVbaF0pOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHF1ZXVlLnBvcDsKCmVuZAoKCgoKCgoKbG9jYWwgdG9IZXhUYWJsZSA9IHt9OwoKZm9yIGkgPSAwLCAyNTUgZG8KCiAgICB0b0hleFRhYmxlW2ldID0gc3RyaW5nLmZvcm1hdCgiJTAyWCIsIGkpOwoKZW5kCgoKClN0cmVhbS50b0hleCA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCBoZXggPSB7fTsKCiAgICBsb2NhbCBpID0gMTsKCgoKICAgIGxvY2FsIGJ5dGUgPSBzdHJlYW0oKTsKCiAgICB3aGlsZSBieXRlIH49IG5pbCBkbwoKICAgICAgICBoZXhbaV0gPSB0b0hleFRhYmxlW2J5dGVdOwoKICAgICAgICBpID0gaSArIDE7CgogICAgICAgIGJ5dGUgPSBzdHJlYW0oKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiB0YWJsZS5jb25jYXQoaGV4KTsKCmVuZAoKCgpyZXR1cm4gU3RyZWFtOwAAAAAAbG9jYWwgUXVldWUgPSBmdW5jdGlvbigpCgogICAgbG9jYWwgcXVldWUgPSB7fTsKCiAgICBsb2NhbCB0YWlsID0gMDsKCiAgICBsb2NhbCBoZWFkID0gMDsKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgcHVibGljLnB1c2ggPSBmdW5jdGlvbihvYmopCgogICAgICAgIHF1ZXVlW2hlYWRdID0gb2JqOwoKICAgICAgICBoZWFkID0gaGVhZCArIDE7CgogICAgICAgIHJldHVybjsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5wb3AgPSBmdW5jdGlvbigpCgogICAgICAgIGlmIHRhaWwgPCBoZWFkCgogICAgICAgIHRoZW4KCiAgICAgICAgICAgIGxvY2FsIG9iaiA9IHF1ZXVlW3RhaWxdOwoKICAgICAgICAgICAgcXVldWVbdGFpbF0gPSBuaWw7CgogICAgICAgICAgICB0YWlsID0gdGFpbCArIDE7CgogICAgICAgICAgICByZXR1cm4gb2JqOwoKICAgICAgICBlbHNlCgogICAgICAgICAgICByZXR1cm4gbmlsOwoKICAgICAgICBlbmQKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zaXplID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gaGVhZCAtIHRhaWw7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZ2V0SGVhZCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGhlYWQ7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZ2V0VGFpbCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIHRhaWw7CgogICAgZW5kCgoKCiAgICBwdWJsaWMucmVzZXQgPSBmdW5jdGlvbigpCgogICAgICAgIHF1ZXVlID0ge307CgogICAgICAgIGhlYWQgPSAwOwoKICAgICAgICB0YWlsID0gMDsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgplbmQKCgoKcmV0dXJuIFF1ZXVlO2xvY2FsIE1EMiA9IHJlcXVpcmUoIi5jcnlwdG8uZGlnZXN0Lm1kMiIpCgpsb2NhbCBNRDQgPSByZXF1aXJlKCIuY3J5cHRvLmRpZ2VzdC5tZDQiKQoKbG9jYWwgTUQ1ID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3QubWQ1IikKCmxvY2FsIFNIQTEgPSByZXF1aXJlKCIuY3J5cHRvLmRpZ2VzdC5zaGExIikKCmxvY2FsIFNIQTJfMjU2ID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3Quc2hhMl8yNTYiKQoKbG9jYWwgU0hBMl81MTIgPSByZXF1aXJlKCIuY3J5cHRvLmRpZ2VzdC5zaGEyXzUxMiIpCgpsb2NhbCBTSEEzID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3Quc2hhMyIpCgpsb2NhbCBCbGFrZTJiID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3QuYmxha2UyYiIpCgoKCgoKbG9jYWwgZGlnZXN0ID0gewoKICAgIF92ZXJzaW9uID0gIjAuMC4xIiwKCiAgICBtZDIgPSBNRDIsCgogICAgbWQ0ID0gTUQ0LAoKICAgIG1kNSA9IE1ENSwKCiAgICBzaGExID0gU0hBMS5zaGExLAoKICAgIHNoYTJfMjU2ID0gU0hBMl8yNTYuc2hhMl8yNTYsCgogICAgc2hhMl81MTIgPSBTSEEyXzUxMiwKCiAgICBzaGEzXzI1NiA9IFNIQTMuc2hhM18yNTYsCgogICAgc2hhM181MTIgPSBTSEEzLnNoYTNfNTEyLAoKICAgIGtlY2NhazI1NiA9IFNIQTMua2VjY2FrMjU2LAoKICAgIGtlY2NhazUxMiA9IFNIQTMua2VjY2FrNTEyLAoKICAgIGJsYWtlMmIgPSBCbGFrZTJiCgp9CgoKCgoKCgoKCnJldHVybiBkaWdlc3QKAAAAAABsb2NhbCBIZXggPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuaGV4IikKCgoKbG9jYWwgazUxMiA9IHsKCjB4NDI4YTJmOThkNzI4YWUyMiwweDcxMzc0NDkxMjNlZjY1Y2QsMHhiNWMwZmJjZmVjNGQzYjJmLDB4ZTliNWRiYTU4MTg5ZGJiYywKCjB4Mzk1NmMyNWJmMzQ4YjUzOCwweDU5ZjExMWYxYjYwNWQwMTksMHg5MjNmODJhNGFmMTk0ZjliLDB4YWIxYzVlZDVkYTZkODExOCwKCjB4ZDgwN2FhOThhMzAzMDI0MiwweDEyODM1YjAxNDU3MDZmYmUsMHgyNDMxODViZTRlZTRiMjhjLDB4NTUwYzdkYzNkNWZmYjRlMiwKCjB4NzJiZTVkNzRmMjdiODk2ZiwweDgwZGViMWZlM2IxNjk2YjEsMHg5YmRjMDZhNzI1YzcxMjM1LDB4YzE5YmYxNzRjZjY5MjY5NCwKCjB4ZTQ5YjY5YzE5ZWYxNGFkMiwweGVmYmU0Nzg2Mzg0ZjI1ZTMsMHgwZmMxOWRjNjhiOGNkNWI1LDB4MjQwY2ExY2M3N2FjOWM2NSwKCjB4MmRlOTJjNmY1OTJiMDI3NSwweDRhNzQ4NGFhNmVhNmU0ODMsMHg1Y2IwYTlkY2JkNDFmYmQ0LDB4NzZmOTg4ZGE4MzExNTNiNSwKCjB4OTgzZTUxNTJlZTY2ZGZhYiwweGE4MzFjNjZkMmRiNDMyMTAsMHhiMDAzMjdjODk4ZmIyMTNmLDB4YmY1OTdmYzdiZWVmMGVlNCwKCjB4YzZlMDBiZjMzZGE4OGZjMiwweGQ1YTc5MTQ3OTMwYWE3MjUsMHgwNmNhNjM1MWUwMDM4MjZmLDB4MTQyOTI5NjcwYTBlNmU3MCwKCjB4MjdiNzBhODU0NmQyMmZmYywweDJlMWIyMTM4NWMyNmM5MjYsMHg0ZDJjNmRmYzVhYzQyYWVkLDB4NTMzODBkMTM5ZDk1YjNkZiwKCjB4NjUwYTczNTQ4YmFmNjNkZSwweDc2NmEwYWJiM2M3N2IyYTgsMHg4MWMyYzkyZTQ3ZWRhZWU2LDB4OTI3MjJjODUxNDgyMzUzYiwKCjB4YTJiZmU4YTE0Y2YxMDM2NCwweGE4MWE2NjRiYmM0MjMwMDEsMHhjMjRiOGI3MGQwZjg5NzkxLDB4Yzc2YzUxYTMwNjU0YmUzMCwKCjB4ZDE5MmU4MTlkNmVmNTIxOCwweGQ2OTkwNjI0NTU2NWE5MTAsMHhmNDBlMzU4NTU3NzEyMDJhLDB4MTA2YWEwNzAzMmJiZDFiOCwKCjB4MTlhNGMxMTZiOGQyZDBjOCwweDFlMzc2YzA4NTE0MWFiNTMsMHgyNzQ4Nzc0Y2RmOGVlYjk5LDB4MzRiMGJjYjVlMTliNDhhOCwKCjB4MzkxYzBjYjNjNWM5NWE2MywweDRlZDhhYTRhZTM0MThhY2IsMHg1YjljY2E0Zjc3NjNlMzczLDB4NjgyZTZmZjNkNmIyYjhhMywKCjB4NzQ4ZjgyZWU1ZGVmYjJmYywweDc4YTU2MzZmNDMxNzJmNjAsMHg4NGM4NzgxNGExZjBhYjcyLDB4OGNjNzAyMDgxYTY0MzllYywKCjB4OTBiZWZmZmEyMzYzMWUyOCwweGE0NTA2Y2ViZGU4MmJkZTksMHhiZWY5YTNmN2IyYzY3OTE1LDB4YzY3MTc4ZjJlMzcyNTMyYiwKCjB4Y2EyNzNlY2VlYTI2NjE5YywweGQxODZiOGM3MjFjMGMyMDcsMHhlYWRhN2RkNmNkZTBlYjFlLDB4ZjU3ZDRmN2ZlZTZlZDE3OCwKCjB4MDZmMDY3YWE3MjE3NmZiYSwweDBhNjM3ZGM1YTJjODk4YTYsMHgxMTNmOTgwNGJlZjkwZGFlLDB4MWI3MTBiMzUxMzFjNDcxYiwKCjB4MjhkYjc3ZjUyMzA0N2Q4NCwweDMyY2FhYjdiNDBjNzI0OTMsMHgzYzllYmUwYTE1YzliZWJjLDB4NDMxZDY3YzQ5YzEwMGQ0YywKCjB4NGNjNWQ0YmVjYjNlNDJiNiwweDU5N2YyOTljZmM2NTdlMmEsMHg1ZmNiNmZhYjNhZDZmYWVjLDB4NmM0NDE5OGM0YTQ3NTgxNwoKfQoKCgpsb2NhbCBmdW5jdGlvbiBwYWQxMjgobXNnLCBsZW4pCgoJbG9jYWwgZXh0cmEgPSAxMjggLSAoKGxlbiArIDEgKyA4KSAlIDEyOCkKCglsZW4gPSBzdHJpbmcucGFjaygiPkk4IiwgbGVuICogOCkKCgltc2cgPSBtc2cgLi4gIlwxMjgiIC4uIHN0cmluZy5yZXAoIlwwIiwgZXh0cmEpIC4uIGxlbgoKCWFzc2VydCgjbXNnICUgMTI4ID09IDApCgoJcmV0dXJuIG1zZwoKZW5kCgoKCmxvY2FsIHd3NTEyID0ge30KCgoKLS0tIFNIQS01MTIgaGFzaCBmdW5jdGlvbi4KCi0tLSBAcGFyYW0gbXNnIHN0cmluZyAtIFRoZSBtZXNzYWdlIHRvIGhhc2guCgotLS0gQHJldHVybnMgdGFibGUgLSBBIHRhYmxlIGNvbnRhaW5pbmcgdGhlIGhhc2ggaW4gYnl0ZXMsIHN0cmluZywgYW5kIGhleCBmb3JtYXRzLgoKbG9jYWwgZnVuY3Rpb24gc2hhNTEyIChtc2cpCgoJbXNnID0gcGFkMTI4KG1zZywgI21zZykKCglsb2NhbCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBoNywgaDggPSAKCgkJMHg2YTA5ZTY2N2YzYmNjOTA4LCAweGJiNjdhZTg1ODRjYWE3M2IsCgoJCTB4M2M2ZWYzNzJmZTk0ZjgyYiwgMHhhNTRmZjUzYTVmMWQzNmYxLAoKCQkweDUxMGU1MjdmYWRlNjgyZDEsIDB4OWIwNTY4OGMyYjNlNmMxZiwKCgkJMHgxZjgzZDlhYmZiNDFiZDZiLCAweDViZTBjZDE5MTM3ZTIxNzkKCglsb2NhbCBrID0gazUxMgoKCWxvY2FsIHcgPSB3dzUxMgoKCWxvY2FsIG1sZW4gPSAjbXNnCgoKCglmb3IgaSA9IDEsIG1sZW4sIDEyOCBkbwoKCQl3WzFdLCB3WzJdLCB3WzNdLCB3WzRdLCB3WzVdLCB3WzZdLCB3WzddLCB3WzhdLCAKCgkJd1s5XSwgd1sxMF0sIHdbMTFdLCB3WzEyXSwgd1sxM10sIHdbMTRdLCB3WzE1XSwgd1sxNl0KCgkJPSBzdHJpbmcudW5wYWNrKCI+aThpOGk4aThpOGk4aThpOGk4aThpOGk4aThpOGk4aTgiLCBtc2csIGkpCgoJCS0tIG1peCBtc2cgYmxvY2sgaW4gc3RhdGUKCgoKCQlmb3IgaiA9IDE3LCA4MCBkbwoKCQkJbG9jYWwgYSA9IHdbai0xNV0KCgkJCWxvY2FsIGIgPSB3W2otMl0KCgkJCXdbal0gPSAoYSA+PiAxIH4gYSA+PiA3IH4gYSA+PiA4IH4gYSA8PCA1NiB+IGEgPDwgNjMpCgoJCQkgICsgKGIgPj4gNiB+IGIgPj4gMTkgfiBiID4+IDYxIH4gYiA8PCAzIH4gYiA8PCA0NSkgCgoJCQkgICsgd1tqLTddICsgd1tqLTE2XQoKCQllbmQKCgkJbG9jYWwgYSwgYiwgYywgZCwgZSwgZiwgZywgaCA9IGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGg3LCBoOAoKCQktLSBtYWluIHN0YXRlIHBlcm11dGF0aW9uCgoJCWZvciBqID0gMSwgODAgZG8KCgkJCWxvY2FsIHogPSAoZSA+PiAxNCB+IGUgPj4gMTggfiBlID4+IDQxIH4gZSA8PCAyMyAKCgkJCQkgICB+IGUgPDwgNDYgfiBlIDw8IDUwKSAKCgkJCQkrIChnIH4gZSAmIChmIH4gZykpICsgaCArIGtbal0gKyB3W2pdCgoJCQloID0gZwoKCQkJZyA9IGYKCgkJCWYgPSBlCgoJCQllID0geiArIGQKCgkJCWQgPSBjCgoJCQljID0gYgoKCQkJYiA9IGEKCgkJCWEgPSB6ICsgKChhIH4gYykgJiBkIH4gYSAmIGMpIAoKCQkJICAgICAgKyAoYSA+PiAyOCB+IGEgPj4gMzQgfiBhID4+IDM5IH4gYSA8PCAyNSAKCgkJCQl+IGEgPDwgMzAgfiBhIDw8IDM2KQoKCQllbmQKCgkJaDEgPSBoMSArIGEKCgkJaDIgPSBoMiArIGIgCgoJCWgzID0gaDMgKyBjIAoKCQloNCA9IGg0ICsgZCAKCgkJaDUgPSBoNSArIGUgCgoJCWg2ID0gaDYgKyBmIAoKCQloNyA9IGg3ICsgZyAKCgkJaDggPSBoOCArIGggCgoJZW5kCgoKCglsb2NhbCBwdWJsaWMgPSB7fQoKCgoJcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgoJCXJldHVybiB7IGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGg3LCBoOH0KCgllbmQKCgoKCXB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCgkJcmV0dXJuIHN0cmluZy5wYWNrKCI+aThpOGk4aThpOGk4aThpOCIsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGg3LCBoOCkKCgllbmQKCgoKCXB1YmxpYy5hc0hleCA9IGZ1bmN0aW9uKCkKCgkJcmV0dXJuIEhleC5zdHJpbmdUb0hleChzdHJpbmcucGFjaygiPmk4aThpOGk4aThpOGk4aTgiLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBoNywgaDgpKQoKCWVuZAoKCgoJcmV0dXJuIHB1YmxpYwoKZW5kCgoKCnJldHVybiBzaGE1MTIKAAAAAAAAAABsb2NhbCBIZXggPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuaGV4Iik7CgoKCgoKbG9jYWwgZnVuY3Rpb24gUk9UUjY0KHgsIG4pCgogICAgcmV0dXJuICh4ID4+IG4pIHwgKHggPDwgKDY0LW4pKQoKZW5kCgoKCi0tIEcgTWl4aW5nIGZ1bmN0aW9uLgoKCgpsb2NhbCBmdW5jdGlvbiBHKHYsIGEsIGIsIGMsIGQsIHgsIHkpCgoJdlthXSA9IHZbYV0gKyB2W2JdICsgeAoKCXZbZF0gPSBST1RSNjQodltkXSB+IHZbYV0sIDMyKQoKCXZbY10gPSB2W2NdICsgdltkXQoKCXZbYl0gPSBST1RSNjQodltiXSB+IHZbY10sIDI0KQoKCXZbYV0gPSB2W2FdICsgdltiXSArIHkKCgl2W2RdID0gUk9UUjY0KHZbZF0gfiB2W2FdLCAxNikKCgl2W2NdID0gdltjXSArIHZbZF0KCgl2W2JdID0gUk9UUjY0KHZbYl0gfiB2W2NdLCA2MykKCmVuZAoKCgotLSAgSW5pdGlhbGl6YXRpb24gVmVjdG9yLgoKbG9jYWwgaXYgPSB7CgogICAgMHg2YTA5ZTY2N2YzYmNjOTA4LCAweGJiNjdhZTg1ODRjYWE3M2IsCgogICAgMHgzYzZlZjM3MmZlOTRmODJiLCAweGE1NGZmNTNhNWYxZDM2ZjEsCgogICAgMHg1MTBlNTI3ZmFkZTY4MmQxLCAweDliMDU2ODhjMmIzZTZjMWYsCgogICAgMHgxZjgzZDlhYmZiNDFiZDZiLCAweDViZTBjZDE5MTM3ZTIxNzkKCn0KCgoKbG9jYWwgc2lnbWEgPSB7CgoJLS0gYXJyYXkgaW5kZXggc3RhcnQgYXQgMSBpbiBMdWEsCgoJLS0gPT4gYWxsIHRoZSBwZXJtdXRhdGlvbiB2YWx1ZXMgYXJlIGluY3JlbWVudGVkIGJ5IG9uZQoKCXsgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYgfSwKCgl7IDE1LCAxMSwgNSwgOSwgMTAsIDE2LCAxNCwgNywgMiwgMTMsIDEsIDMsIDEyLCA4LCA2LCA0IH0sCgoJeyAxMiwgOSwgMTMsIDEsIDYsIDMsIDE2LCAxNCwgMTEsIDE1LCA0LCA3LCA4LCAyLCAxMCwgNSB9LAoKCXsgOCwgMTAsIDQsIDIsIDE0LCAxMywgMTIsIDE1LCAzLCA3LCA2LCAxMSwgNSwgMSwgMTYsIDkgfSwKCgl7IDEwLCAxLCA2LCA4LCAzLCA1LCAxMSwgMTYsIDE1LCAyLCAxMiwgMTMsIDcsIDksIDQsIDE0IH0sCgoJeyAzLCAxMywgNywgMTEsIDEsIDEyLCA5LCA0LCA1LCAxNCwgOCwgNiwgMTYsIDE1LCAyLCAxMCB9LAoKCXsgMTMsIDYsIDIsIDE2LCAxNSwgMTQsIDUsIDExLCAxLCA4LCA3LCA0LCAxMCwgMywgOSwgMTIgfSwKCgl7IDE0LCAxMiwgOCwgMTUsIDEzLCAyLCA0LCAxMCwgNiwgMSwgMTYsIDUsIDksIDcsIDMsIDExIH0sCgoJeyA3LCAxNiwgMTUsIDEwLCAxMiwgNCwgMSwgOSwgMTMsIDMsIDE0LCA4LCAyLCA1LCAxMSwgNiB9LAoKCXsgMTEsIDMsIDksIDUsIDgsIDcsIDIsIDYsIDE2LCAxMiwgMTAsIDE1LCA0LCAxMywgMTQsIDEgfSwKCgl7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2IH0sCgoJeyAxNSwgMTEsIDUsIDksIDEwLCAxNiwgMTQsIDcsIDIsIDEzLCAxLCAzLCAxMiwgOCwgNiwgNCB9Cgp9CgoKCgoKbG9jYWwgZnVuY3Rpb24gY29tcHJlc3MoY3R4LCBsYXN0KQoKCS0tIENvbXByZXNzaW9uIGZ1bmN0aW9uLiAibGFzdCIgZmxhZyBpbmRpY2F0ZXMgbGFzdCBibG9jay4KCglsb2NhbCB2LCBtID0ge30sIHt9IC0tIGJvdGggdiBhbmQgbSBhcmUgdTY0WzE2XQoKCWZvciBpID0gMSwgOCBkbwoKCQl2W2ldID0gY3R4LmhbaV0KCgkJdltpKzhdID0gaXZbaV0KCgllbmQKCgl2WzEzXSA9IHZbMTNdIH4gY3R4LnRbMV0gIC0tIGxvdyA2NCBiaXRzIG9mIG9mZnNldAoKCXZbMTRdID0gdlsxNF0gfiBjdHgudFsyXSAgLS0gaGlnaCA2NCBiaXRzCgoJaWYgbGFzdCB0aGVuIHZbMTVdID0gfnZbMTVdIGVuZAoKCWZvciBpID0gMCwgMTUgZG8gLS0gZ2V0IGxpdHRsZS1lbmRpYW4gd29yZHMKCgkJbVtpKzFdID0gc3RyaW5nLnVucGFjaygiPEk4IiwgY3R4LmIsIGkqOCsxKSAtLWNvcHkgYiBhcyBhIHNlcSBvZiB1NjQKCgllbmQKCgoKCWZvciBpID0gMSwgMTIgZG8gLS0gdHdlbHZlIHJvdW5kcwoKCQlHKHYsIDEsIDUsIDksIDEzLCBtW3NpZ21hW2ldWyAxXV0sIG1bc2lnbWFbaV1bIDJdXSkKCgkJRyh2LCAyLCA2LDEwLCAxNCwgbVtzaWdtYVtpXVsgM11dLCBtW3NpZ21hW2ldWyA0XV0pCgoJCUcodiwgMywgNywxMSwgMTUsIG1bc2lnbWFbaV1bIDVdXSwgbVtzaWdtYVtpXVsgNl1dKQoKCQlHKHYsIDQsIDgsMTIsIDE2LCBtW3NpZ21hW2ldWyA3XV0sIG1bc2lnbWFbaV1bIDhdXSkKCgkJRyh2LCAxLCA2LDExLCAxNiwgbVtzaWdtYVtpXVsgOV1dLCBtW3NpZ21hW2ldWzEwXV0pCgoJCUcodiwgMiwgNywxMiwgMTMsIG1bc2lnbWFbaV1bMTFdXSwgbVtzaWdtYVtpXVsxMl1dKQoKCQlHKHYsIDMsIDgsIDksIDE0LCBtW3NpZ21hW2ldWzEzXV0sIG1bc2lnbWFbaV1bMTRdXSkKCgkJRyh2LCA0LCA1LDEwLCAxNSwgbVtzaWdtYVtpXVsxNV1dLCBtW3NpZ21hW2ldWzE2XV0pCgoKCgllbmQKCgoKCWZvciBpID0gMSwgOCBkbwoKCQljdHguaFtpXSA9IGN0eC5oW2ldIH4gdltpXSB+IHZbaSArIDhdCgoJZW5kCgplbmQKCgoKbG9jYWwgdXBkYXRlICAtLSAodXBkYXRlIGlzIHVzZWQgaW4gaW5pdCgpIGJlbG93LCBidXQgZGVmaW5lZCBhZnRlcikKCgoKbG9jYWwgZnVuY3Rpb24gaW5pdChvdXRsZW4sIGtleSkKCgktLSBpbml0aWFsaXplIHRoZSBibGFrZSBmdW5jdGlvbgoKCS0tIDEgPD0gb3V0bGVuIDw9IDY0IGdpdmVzIHRoZSBkaWdlc3Qgc2l6ZSBpbiBieXRlcy4gZGVmYXVsdHMgdG8gNjQKCgktLSBrZXk6IG9wdGlvbmFsIHNlY3JldCBrZXkgKGFsc28gPD0gNjQgYnl0ZXMpLiBkZWZhdWx0cyB0byBubyBrZXkKCgktLSByZXR1cm4gdGhlIGluaXRpYWxpemVkIGNvbnRleHQKCglvdXRsZW4gPSBvdXRsZW4gb3IgNjQKCglrZXkgPSBrZXkgb3IgIiIKCglsb2NhbCBrZXlsZW4gPSAja2V5CgoJaWYgb3V0bGVuIDwgMSBvciBvdXRsZW4gPiA2NCBvciAoa2V5IGFuZCAja2V5ID4gNjQpIHRoZW4KCgkJcmV0dXJuIG5pbCwgImlsbGVnYWwgcGFyYW1ldGVycyIKCgllbmQKCglsb2NhbCBjdHggPSB7aD17fSwgdD17fSwgYz0xLCBvdXRsZW49b3V0bGVufSAtLSB0aGUgYmxha2UyIGNvbnRleHQKCgktLSBub3RlOiBjdHguYyBpcyB0aGUgaW5kZXggb2YgMXN0IGJ5dGUgZnJlZSBpbiBpbnB1dCBidWZmZXIgKGN0eC5iKQoKCS0tIGl0IGlzIG5vdCB1c2VkIGluIHRoaXMgaW1wbGVtZW50YXRpb24KCglmb3IgaSA9IDEsIDggZG8gY3R4LmhbaV0gPSBpdltpXSBlbmQgIC0tIHN0YXRlLCAicGFyYW0gYmxvY2siCgoJY3R4LmhbMV0gPSBjdHguaFsxXSB+IDB4MDEwMTAwMDAgfiAoa2V5bGVuIDw8IDgpIH4gb3V0bGVuCgoJY3R4LnRbMV0gPSAwICAgLS1pbnB1dCBjb3VudCBsb3cgd29yZAoKCWN0eC50WzJdID0gMCAgIC0taW5wdXQgY291bnQgaGlnaCB3b3JkCgoJLS0gemVybyBpbnB1dCBibG9jawoKCWN0eC5iID0gIiIKCglpZiBrZXlsZW4gPiAwIHRoZW4KCgkJdXBkYXRlKGN0eCwga2V5KQoKCQktLSBjdHguYyA9IDEyOCAtLSAgcGFkIGIgd2l0aCB6ZXJvIGJ5dGVzCgoJCWN0eC5iID0gY3R4LmIgLi4gc3RyaW5nLnJlcCgnXDAnLCAxMjggLSAjY3R4LmIpCgoJCWFzc2VydCgjY3R4LmIgPT0gMTI4KQoKCWVuZAoKCXJldHVybiBjdHgKCmVuZAoKCgp1cGRhdGUgPSBmdW5jdGlvbihjdHgsIGRhdGEpCgoJLS0gYnVmZmVyIG1ndCBjYW5ub3QgYmUgZG9uZSB0aGUgQyB3YXkuLgoKCWxvY2FsIGJsbiwgcmxuLCBpbG4KCglsb2NhbCBpID0gMSAtLSBpbmRleCBvZiAxc3QgYnl0ZSB0byBwcm9jZXNzIGluIGRhdGEKCgl3aGlsZSB0cnVlIGRvCgoJCWJsbiA9ICNjdHguYiAgLS0gY3VycmVudCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGlucHV0IGJ1ZmZlcgoKCQlhc3NlcnQoYmxuIDw9IDEyOCkKCgkJaWYgYmxuID09IDEyOCB0aGVuIC0tY3R4LmIgaXMgZnVsbDsgcHJvY2VzcyBpdC4KCgkJCS0tIGFkZCBjb3VudGVycwoKCQkJY3R4LnRbMV0gPSBjdHgudFsxXSArIDEyOAoKCQkJLS0gd2FybmluZzogdGhpcyBpcyBhIHNpZ25lZCA2NGJpdCBhZGRpdGlvbgoKCQkJLS0gaGVyZSBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRvdGFsIGlucHV0IGlzIGxlc3MKCgkJCS0tIHRoYW4gMl42MyBieXRlcyAodGhpcyBzaG91bGQgYmUgZW5vdWdoIGZvciBhCgoJCQktLSBwdXJlIEx1YSBpbXBsZW1lbnRhdGlvbiEpID0+IGN0eC50WzFdIG92ZXJmbG93IGlzIGlnbm9yZWQuCgoJCQljb21wcmVzcyhjdHgsIGZhbHNlKSAgIC0tIGZhbHNlIG1lYW5zIG5vdCBsYXN0CgoJCQljdHguYiA9ICIiIC0tIGVtcHR5IGJ1ZmZlcgoKCQllbHNlIC0tIGN0eC5iIGlzIG5vdCBmdWxsOyBhcHBlbmQgbW9yZSBieXRlcyBmcm9tIGRhdGEKCgkJCXJsbiA9ICAxMjggLSBibG4gIC0tIHJlbWFpbmluZyBzcGFjZSAoaW4gYnl0ZXMpIGluIGN0eC5iCgoJCQlpbG4gPSAjZGF0YSAtIGkgKyAxICAtLSBudW1iZXIgb2YgYnl0ZXMgeWV0IHRvIHByb2Nlc3MgaW4gZGF0YQoKCQkJaWYgaWxuIDwgcmxuIHRoZW4KCgkJCQljdHguYiA9IGN0eC5iIC4uIGRhdGE6c3ViKGksIGkgKyBpbG4gLTEpCgoJCQkJLS0gaGVyZSwgYWxsIGRhdGEgYnl0ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBvciBwdXQgaW4KCgkJCQktLSBidWZmZXIgYW5kIGJ1ZmZlciBpcyBub3QgZnVsbC4gd2UgYXJlIGRvbmUuCgoJCQkJYnJlYWsKCgkJCWVsc2UKCgkJCQljdHguYiA9IGN0eC5iIC4uIGRhdGE6c3ViKGksIGkgKyBybG4gLTEpCgoJCQkJaSA9IGkgKyBybG4KCgkJCWVuZAoKCQllbmQKCgllbmQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBmaW5hbChjdHgpCgoJLS0gZmluYWxpemUgdGhlIGhhc2ggYW5kIHJldHVybiB0aGUgZGlnZXN0IGFzIGEgc3RyaW5nCgoJLS0KCglsb2NhbCBibG4gPSAjY3R4LmIKCgktLSBhZGQgbnVtYmVyIG9mIHJlbWFpbmluZyBieXRlcyBpbiBidWZmZXIgKGlnbm9yZSBjYXJyeSBvdmVyZmxvdykKCgljdHgudFsxXSA9IGN0eC50WzFdICsgYmxuCgoJLS0gcGFkIHRoZSBidWZmZXIgd2l0aCB6ZXJvIGJ5dGVzCgoJbG9jYWwgcmxuID0gIDEyOCAtIGJsbiAgLS0gcmVtYWluaW5nIHNwYWNlIChpbiBieXRlcykgaW4gY3R4LmIKCgljdHguYiA9IGN0eC5iIC4uIHN0cmluZy5yZXAoJ1wwJywgcmxuKQoKCWNvbXByZXNzKGN0eCwgdHJ1ZSkgLS0gdHJ1ZSBtZWFucyBmaW5hbCBibG9jawoKCS0tIGV4dHJhY3QgdGhlIGRpZ2VzdCAob3V0bGVuIGJ5dGVzIGxvbmcpCgoJbG9jYWwgb3V0dGJsID0ge30KCglmb3IgaSA9IDAsIGN0eC5vdXRsZW4gLSAxIGRvCgoJCW91dHRibFtpKzFdID0gc3RyaW5nLmNoYXIoCgoJCQkoY3R4LmhbKGkgPj4gMykgKyAxXSA+PiAoOCAqIChpICYgNykpKSAmIDB4ZmYpCgoJZW5kCgoJbG9jYWwgZGlnID0gdGFibGUuY29uY2F0KG91dHRibCkKCglyZXR1cm4gb3V0dGJsCgplbmQKCgoKLS0tIENhbGN1bGF0ZXMgdGhlIEJMQUtFMmIgaGFzaCBvZiB0aGUgZ2l2ZW4gZGF0YS4KCi0tLSBAcGFyYW0gZGF0YSBzdHJpbmcgLSBUaGUgaW5wdXQgZGF0YSB0byBiZSBoYXNoZWQuCgotLS0gQHBhcmFtIG91dGxlbj8gbnVtYmVyIChvcHRpb25hbCkgLSBUaGUgZGVzaXJlZCBsZW5ndGggb2YgdGhlIGhhc2ggb3V0cHV0LiBEZWZhdWx0cyB0byA2NC4KCi0tLSBAcGFyYW0ga2V5PyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3IgdGhlIGhhc2ggY2FsY3VsYXRpb24uIERlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy4KCi0tLSBAcmV0dXJucyB0YWJsZSAtIEEgdGFibGUgY29udGFpbmluZyB0aGUgaGFzaCBpbiBieXRlcywgc3RyaW5nLCBhbmQgaGV4IGZvcm1hdHMuCgpsb2NhbCBmdW5jdGlvbiBibGFjazJiKGRhdGEsIG91dGxlbiwga2V5KQoKICAgIGxvY2FsIGN0eCwgbXNnID0gaW5pdChvdXRsZW4sIGtleSkKCiAgICBpZiBub3QgY3R4IHRoZW4gcmV0dXJuIGN0eCwgbXNnIGVuZAoKICAgIHVwZGF0ZShjdHgsIGRhdGEpCgogICAgbG9jYWwgYnl0ZXMgPSBmaW5hbChjdHgpCgoJbG9jYWwgaGFzaCA9IHRhYmxlLmNvbmNhdChieXRlcykKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9CgoJCgoJcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgoJCXJldHVybiBieXRlcwoKCWVuZAoKCgoJcHVibGljLmFzU3RyaW5nID0gZnVuY3Rpb24oKQoKCQlyZXR1cm4gaGFzaAoKCWVuZAoKCgoJcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKCQlyZXR1cm4gSGV4LnN0cmluZ1RvSGV4KGhhc2gpCgoJZW5kCgoKCglyZXR1cm4gcHVibGljCgplbmQKCgoKcmV0dXJuIGJsYWNrMmIKAGxvY2FsIEhleCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5oZXgiKTsKCgoKbG9jYWwgUk9VTkRTID0gMjQKCgoKbG9jYWwgcm91bmRDb25zdGFudHMgPSB7CgoweDAwMDAwMDAwMDAwMDAwMDEsCgoweDAwMDAwMDAwMDAwMDgwODIsCgoweDgwMDAwMDAwMDAwMDgwOEEsCgoweDgwMDAwMDAwODAwMDgwMDAsCgoweDAwMDAwMDAwMDAwMDgwOEIsCgoweDAwMDAwMDAwODAwMDAwMDEsCgoweDgwMDAwMDAwODAwMDgwODEsCgoweDgwMDAwMDAwMDAwMDgwMDksCgoweDAwMDAwMDAwMDAwMDAwOEEsCgoweDAwMDAwMDAwMDAwMDAwODgsCgoweDAwMDAwMDAwODAwMDgwMDksCgoweDAwMDAwMDAwODAwMDAwMEEsCgoweDAwMDAwMDAwODAwMDgwOEIsCgoweDgwMDAwMDAwMDAwMDAwOEIsCgoweDgwMDAwMDAwMDAwMDgwODksCgoweDgwMDAwMDAwMDAwMDgwMDMsCgoweDgwMDAwMDAwMDAwMDgwMDIsCgoweDgwMDAwMDAwMDAwMDAwODAsCgoweDAwMDAwMDAwMDAwMDgwMEEsCgoweDgwMDAwMDAwODAwMDAwMEEsCgoweDgwMDAwMDAwODAwMDgwODEsCgoweDgwMDAwMDAwMDAwMDgwODAsCgoweDAwMDAwMDAwODAwMDAwMDEsCgoweDgwMDAwMDAwODAwMDgwMDgKCn0KCgoKbG9jYWwgcm90YXRpb25PZmZzZXRzID0gewoKLS0gb3JkZXJlZCBmb3IgW3hdW3ldIGRlcmVmZXJlbmNpbmcsIHNvIGFwcGVhciBmbGlwcGVkIGhlcmU6Cgp7MCwgMzYsIDMsIDQxLCAxOH0sCgp7MSwgNDQsIDEwLCA0NSwgMn0sCgp7NjIsIDYsIDQzLCAxNSwgNjF9LAoKezI4LCA1NSwgMjUsIDIxLCA1Nn0sCgp7MjcsIDIwLCAzOSwgOCwgMTR9Cgp9CgoKCgoKCgotLSB0aGUgZnVsbCBwZXJtdXRhdGlvbiBmdW5jdGlvbgoKbG9jYWwgZnVuY3Rpb24ga2VjY2FrRihzdCkKCglsb2NhbCBwZXJtdXRlZCA9IHN0LnBlcm11dGVkCgoJbG9jYWwgcGFyaXRpZXMgPSBzdC5wYXJpdGllcwoKCWZvciByb3VuZCA9IDEsIFJPVU5EUyBkbwoKCQktLSB0aGV0YSgpCgoJCWZvciB4ID0gMSw1IGRvCgoJCQlwYXJpdGllc1t4XSA9IDAKCgkJCWxvY2FsIHN4ID0gc3RbeF0KCgkJCWZvciB5ID0gMSw1IGRvIHBhcml0aWVzW3hdID0gcGFyaXRpZXNbeF0gfiBzeFt5XSBlbmQKCgkJZW5kCgoJCS0tCgoJCS0tIHVucm9sbCB0aGUgZm9sbG93aW5nIGxvb3AKCgkJLS1mb3IgeCA9IDEsNSBkbwoKCQktLQlsb2NhbCBwNSA9IHBhcml0aWVzWyh4KSU1ICsgMV0KCgkJLS0JbG9jYWwgZmxpcCA9IHBhcml0aWVzWyh4LTIpJTUgKyAxXSB+ICggcDUgPDwgMSB8IHA1ID4+IDYzKQoKCQktLQlmb3IgeSA9IDEsNSBkbyBzdFt4XVt5XSA9IHN0W3hdW3ldIH4gZmxpcCBlbmQKCgkJLS1lbmQKCgkJbG9jYWwgcDUsIGZsaXAsIHMKCgkJLS14PTEKCgkJcDUgPSBwYXJpdGllc1syXQoKCQlmbGlwID0gcGFyaXRpZXNbNV0gfiAocDUgPDwgMSB8IHA1ID4+IDYzKQoKCQlzID0gc3RbMV0KCgkJZm9yIHkgPSAxLDUgZG8gc1t5XSA9IHNbeV0gfiBmbGlwIGVuZAoKCQktLXg9MgoKCQlwNSA9IHBhcml0aWVzWzNdCgoJCWZsaXAgPSBwYXJpdGllc1sxXSB+IChwNSA8PCAxIHwgcDUgPj4gNjMpCgoJCXMgPSBzdFsyXQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gc1t5XSB+IGZsaXAgZW5kCgoJCS0teD0zCgoJCXA1ID0gcGFyaXRpZXNbNF0KCgkJZmxpcCA9IHBhcml0aWVzWzJdIH4gKHA1IDw8IDEgfCBwNSA+PiA2MykKCgkJcyA9IHN0WzNdCgoJCWZvciB5ID0gMSw1IGRvIHNbeV0gPSBzW3ldIH4gZmxpcCBlbmQKCgkJLS14PTQKCgkJcDUgPSBwYXJpdGllc1s1XQoKCQlmbGlwID0gcGFyaXRpZXNbM10gfiAocDUgPDwgMSB8IHA1ID4+IDYzKQoKCQlzID0gc3RbNF0KCgkJZm9yIHkgPSAxLDUgZG8gc1t5XSA9IHNbeV0gfiBmbGlwIGVuZAoKCQktLXg9NQoKCQlwNSA9IHBhcml0aWVzWzFdCgoJCWZsaXAgPSBwYXJpdGllc1s0XSB+IChwNSA8PCAxIHwgcDUgPj4gNjMpCgoJCXMgPSBzdFs1XQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gc1t5XSB+IGZsaXAgZW5kCgoKCgkJLS0gcmhvcGkoKQoKCQlmb3IgeSA9IDEsNSBkbwoKCQkJbG9jYWwgcHkgPSBwZXJtdXRlZFt5XQoKCQkJbG9jYWwgcgoKCQkJZm9yIHggPSAxLDUgZG8KCgkJCQlzLCByID0gc3RbeF1beV0sIHJvdGF0aW9uT2Zmc2V0c1t4XVt5XQoKCQkJCXB5WygyKnggKyAzKnkpJTUgKyAxXSA9IChzIDw8IHIgfCBzID4+ICg2NC1yKSkKCgkJCWVuZAoKCQllbmQKCgoKCQktLSBjaGkoKSAtIHVucm9sbCB0aGUgbG9vcAoKCQktLWZvciB4ID0gMSw1IGRvCgoJCS0tCWZvciB5ID0gMSw1IGRvCgoJCS0tCQlsb2NhbCBjb21iaW5lZCA9ICh+IHBlcm11dGVkWyh4KSU1ICsxXVt5XSkgJiBwZXJtdXRlZFsoeCsxKSU1ICsxXVt5XQoKCQktLQkJc3RbeF1beV0gPSBwZXJtdXRlZFt4XVt5XSB+IGNvbWJpbmVkCgoJCS0tCWVuZAoKCQktLWVuZAoKCgoJCWxvY2FsIHAsIHAxLCBwMgoKCQktLXg9MQoKCQlzLCBwLCBwMSwgcDIgPSBzdFsxXSwgcGVybXV0ZWRbMV0sIHBlcm11dGVkWzJdLCBwZXJtdXRlZFszXQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gcFt5XSB+ICh+IHAxW3ldKSAmIHAyW3ldIGVuZAoKCQktLXg9MgoKCQlzLCBwLCBwMSwgcDIgPSBzdFsyXSwgcGVybXV0ZWRbMl0sIHBlcm11dGVkWzNdLCBwZXJtdXRlZFs0XQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gcFt5XSB+ICh+IHAxW3ldKSAmIHAyW3ldIGVuZAoKCQktLXg9MwoKCQlzLCBwLCBwMSwgcDIgPSBzdFszXSwgcGVybXV0ZWRbM10sIHBlcm11dGVkWzRdLCBwZXJtdXRlZFs1XQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gcFt5XSB+ICh+IHAxW3ldKSAmIHAyW3ldIGVuZAoKCQktLXg9NAoKCQlzLCBwLCBwMSwgcDIgPSBzdFs0XSwgcGVybXV0ZWRbNF0sIHBlcm11dGVkWzVdLCBwZXJtdXRlZFsxXQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gcFt5XSB+ICh+IHAxW3ldKSAmIHAyW3ldIGVuZAoKCQktLXg9NQoKCQlzLCBwLCBwMSwgcDIgPSBzdFs1XSwgcGVybXV0ZWRbNV0sIHBlcm11dGVkWzFdLCBwZXJtdXRlZFsyXQoKCQlmb3IgeSA9IDEsNSBkbyBzW3ldID0gcFt5XSB+ICh+IHAxW3ldKSAmIHAyW3ldIGVuZAoKCgoJCS0tIGlvdGEoKQoKCQlzdFsxXVsxXSA9IHN0WzFdWzFdIH4gcm91bmRDb25zdGFudHNbcm91bmRdCgoJZW5kCgplbmQKCgoKCgpsb2NhbCBmdW5jdGlvbiBhYnNvcmIoc3QsIGJ1ZmZlciwgYWxnb3JpdGhtKQoKCgoJbG9jYWwgYmxvY2tCeXRlcyA9IHN0LnJhdGUgLyA4CgoJbG9jYWwgYmxvY2tXb3JkcyA9IGJsb2NrQnl0ZXMgLyA4CgoKCgktLSBhcHBlbmQgMHgwMSBieXRlIGFuZCBwYWQgd2l0aCB6ZXJvcyB0byBibG9jayBzaXplIChyYXRlLzggYnl0ZXMpCgoJbG9jYWwgdG90YWxCeXRlcyA9ICNidWZmZXIgKyAxCgoJLS0gZm9yIGtlY2NhayAoMjAxMiBzdWJtaXNzaW9uKSwgdGhlIHBhZGRpbmcgaXMgYnl0ZSAweDAxIGZvbGxvd2VkIGJ5IHplcm9zCgoJLS0gZm9yIFNIQTMgKE5JU1QsIDIwMTUpLCB0aGUgcGFkZGluZyBpcyBieXRlIDB4MDYgZm9sbG93ZWQgYnkgemVyb3MKCgoKCWlmIGFsZ29yaXRobSA9PSAia2VjY2FrIiB0aGVuCgoJCWJ1ZmZlciA9IGJ1ZmZlciAuLiAoICdceDAxJyAuLiBzdHJpbmcuY2hhcigwKTpyZXAoYmxvY2tCeXRlcyAtICh0b3RhbEJ5dGVzICUgYmxvY2tCeXRlcykpKQoKCWVuZAoKCQoKCWlmIGFsZ29yaXRobSA9PSAic2hhMyIgdGhlbgoKCQlidWZmZXIgPSBidWZmZXIgLi4gKCAnXHgwNicgLi4gc3RyaW5nLmNoYXIoMCk6cmVwKGJsb2NrQnl0ZXMgLSAodG90YWxCeXRlcyAlIGJsb2NrQnl0ZXMpKSkKCgllbmQKCgoKCXRvdGFsQnl0ZXMgPSAjYnVmZmVyCgoKCgktLWNvbnZlcnQgZGF0YSB0byBhbiBhcnJheSBvZiB1NjQKCglsb2NhbCB3b3JkcyA9IHt9CgoJZm9yIGkgPSAxLCB0b3RhbEJ5dGVzIC0gKHRvdGFsQnl0ZXMgJSA4KSwgOCBkbwoKCQl3b3Jkc1sjd29yZHMgKyAxXSA9IHN0cmluZy51bnBhY2soJzxJOCcsIGJ1ZmZlciwgaSkKCgllbmQKCgoKCWxvY2FsIHRvdGFsV29yZHMgPSAjd29yZHMKCgktLSBPUiBmaW5hbCB3b3JkIHdpdGggMHg4MDAwMDAwMCB0byBzZXQgbGFzdCBiaXQgb2Ygc3RhdGUgdG8gMQoKCXdvcmRzW3RvdGFsV29yZHNdID0gd29yZHNbdG90YWxXb3Jkc10gfCAweDgwMDAwMDAwMDAwMDAwMDAKCgoKCS0tIFhPUiBibG9ja3MgaW50byBzdGF0ZQoKCWZvciBzdGFydEJsb2NrID0gMSwgdG90YWxXb3JkcywgYmxvY2tXb3JkcyBkbwoKCQlsb2NhbCBvZmZzZXQgPSAwCgoJCWZvciB5ID0gMSwgNSBkbwoKCQkJZm9yIHggPSAxLCA1IGRvCgoJCQkJaWYgb2Zmc2V0IDwgYmxvY2tXb3JkcyB0aGVuCgoJCQkJCWxvY2FsIGluZGV4ID0gc3RhcnRCbG9jaytvZmZzZXQKCgkJCQkJc3RbeF1beV0gPSBzdFt4XVt5XSB+IHdvcmRzW2luZGV4XQoKCQkJCQlvZmZzZXQgPSBvZmZzZXQgKyAxCgoJCQkJZW5kCgoJCQllbmQKCgkJZW5kCgoJCWtlY2Nha0Yoc3QpCgoJZW5kCgplbmQKCgoKCgotLSByZXR1cm5zIFtyYXRlXSBiaXRzIGZyb20gdGhlIHN0YXRlLCB3aXRob3V0IHBlcm11dGluZyBhZnRlcndhcmQuCgotLSBPbmx5IGZvciB1c2Ugd2hlbiB0aGUgc3RhdGUgd2lsbCBpbW1lZGlhdGVseSBiZSB0aHJvd24gYXdheSwKCi0tIGFuZCBub3QgdXNlZCBmb3IgbW9yZSBvdXRwdXQgbGF0ZXIKCmxvY2FsIGZ1bmN0aW9uIHNxdWVlemUoc3QpCgoJbG9jYWwgYmxvY2tCeXRlcyA9IHN0LnJhdGUgLyA4CgoJbG9jYWwgYmxvY2tXb3JkcyA9IGJsb2NrQnl0ZXMgLyA0CgoJLS0gZmV0Y2ggYmxvY2tzIG91dCBvZiBzdGF0ZQoKCWxvY2FsIGhhc2h0ID0ge30KCglsb2NhbCBvZmZzZXQgPSAxCgoJZm9yIHkgPSAxLCA1IGRvCgoJCWZvciB4ID0gMSwgNSBkbwoKCQkJaWYgb2Zmc2V0IDwgYmxvY2tXb3JkcyB0aGVuCgoJCQkJaGFzaHRbb2Zmc2V0XSA9IHN0cmluZy5wYWNrKCI8STgiLCBzdFt4XVt5XSkKCgkJCQlvZmZzZXQgPSBvZmZzZXQgKyAxCgoJCQllbmQKCgkJZW5kCgoJZW5kCgoJcmV0dXJuIHRhYmxlLmNvbmNhdChoYXNodCkKCmVuZAoKCgotLSBwcmltaXRpdmUgZnVuY3Rpb25zIChhc3N1bWUgcmF0ZSBpcyBhIHdob2xlIG11bHRpcGxlIG9mIDY0IGFuZCBsZW5ndGggaXMgYSB3aG9sZSBtdWx0aXBsZSBvZiA4KQoKbG9jYWwgZnVuY3Rpb24ga2VjY2FrSGFzaChyYXRlLCBsZW5ndGgsIGRhdGEsIGFsZ29yaXRobSkKCglsb2NhbCBzdGF0ZSA9IHsJezAsMCwwLDAsMH0sCgoJCQkJCXswLDAsMCwwLDB9LAoKCQkJCQl7MCwwLDAsMCwwfSwKCgkJCQkJezAsMCwwLDAsMH0sCgoJCQkJCXswLDAsMCwwLDB9LAoKCX0KCglzdGF0ZS5yYXRlID0gcmF0ZQoKCS0tIHRoZXNlIGFyZSBhbGxvY2F0ZWQgb25jZSwgYW5kIHJldXNlZAoKCXN0YXRlLnBlcm11dGVkID0geyB7fSwge30sIHt9LCB7fSwge30sIH0KCglzdGF0ZS5wYXJpdGllcyA9IHswLDAsMCwwLDB9CgoJYWJzb3JiKHN0YXRlLCBkYXRhLCBhbGdvcml0aG0pCgoJbG9jYWwgZW5jb2RlZCA9IHNxdWVlemUoc3RhdGUpOnN1YigxLGxlbmd0aC84KTsKCgoKCWxvY2FsIHB1YmxpYyA9IHt9CgoKCglwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgoJCXJldHVybiBlbmNvZGVkCgoJZW5kCgoKCglwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgoJCXJldHVybiBIZXguc3RyaW5nVG9IZXgoZW5jb2RlZCkKCgllbmQKCgoKCXJldHVybiBwdWJsaWMKCmVuZAoKCgotLSBvdXRwdXQgdGFibGVzIGZvciBnZXR0aW5nIHRoZSBoYXNoIGFzIGJ5dGVzLCBzdHJpbmcsIG9yIGhleAoKbG9jYWwgZnVuY3Rpb24gc2hhM18yNTYoZGF0YSkgcmV0dXJuIGtlY2Nha0hhc2goMTA4OCwgMjU2LCBkYXRhLCAnc2hhMycpIGVuZAoKbG9jYWwgZnVuY3Rpb24gc2hhM181MTIoZGF0YSkgcmV0dXJuIGtlY2Nha0hhc2goNTc2LCA1MTIsIGRhdGEsICdzaGEzJykgZW5kCgpsb2NhbCBmdW5jdGlvbiBrZWNjYWsyNTYoZGF0YSkgcmV0dXJuIGtlY2Nha0hhc2goMTA4OCwgMjU2LCBkYXRhLCAna2VjY2FrJykgZW5kCgpsb2NhbCBmdW5jdGlvbiBrZWNjYWs1MTIoZGF0YSkgcmV0dXJuIGtlY2Nha0hhc2goNTc2LCA1MTIsIGRhdGEsICdrZWNjYWsnKSBlbmQKCgoKcmV0dXJuIHsKCglzaGEzXzI1NiA9IHNoYTNfMjU2LAoKCXNoYTNfNTEyID0gc2hhM181MTIsCgoJa2VjY2FrMjU2ID0ga2VjY2FrMjU2LAoKCWtlY2NhazUxMiA9IGtlY2NhazUxMgoKfQAAAAAAbG9jYWwgQml0ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmJpdCIpOwoKbG9jYWwgUXVldWUgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwucXVldWUiKTsKCgoKbG9jYWwgQU5EID0gQml0LmJhbmQ7Cgpsb2NhbCBPUiAgPSBCaXQuYm9yOwoKbG9jYWwgWE9SID0gQml0LmJ4b3I7Cgpsb2NhbCBMUk9UID0gQml0Lmxyb3RhdGU7Cgpsb2NhbCBMU0hJRlQgPSBCaXQubHNoaWZ0OwoKbG9jYWwgUlNISUZUID0gQml0LnJzaGlmdDsKCgoKLS1TSEExIGlzIGJpZy1lbmRpYW4KCmxvY2FsIGJ5dGVzMndvcmQgPSBmdW5jdGlvbihiMCwgYjEsIGIyLCBiMykKCiAgICBsb2NhbCBpID0gYjA7IGkgPSBMU0hJRlQoaSwgOCk7CgogICAgaSA9IE9SKGksIGIxKTsgaSA9IExTSElGVChpLCA4KTsKCiAgICBpID0gT1IoaSwgYjIpOyBpID0gTFNISUZUKGksIDgpOwoKICAgIGkgPSBPUihpLCBiMyk7CgogICAgcmV0dXJuIGk7CgplbmQKCgoKbG9jYWwgd29yZDJieXRlcyA9IGZ1bmN0aW9uKHdvcmQpCgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjM7CgogICAgYjMgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjIgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjEgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjAgPSBBTkQod29yZCwgMHhGRik7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzOwoKZW5kCgoKCmxvY2FsIGR3b3JkMmJ5dGVzID0gZnVuY3Rpb24oaSkKCiAgICBsb2NhbCBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaSk7CgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKG1hdGguZmxvb3IoaSAvIDB4MTAwMDAwMDAwKSk7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNzsKCmVuZAoKCgpsb2NhbCBGID0gZnVuY3Rpb24oeCwgeSwgeikgcmV0dXJuIFhPUih6LCBBTkQoeCwgWE9SKHksIHopKSk7IGVuZAoKbG9jYWwgRyA9IGZ1bmN0aW9uKHgsIHksIHopIHJldHVybiBYT1IoeCwgWE9SKHksIHopKTsgZW5kCgpsb2NhbCBIID0gZnVuY3Rpb24oeCwgeSwgeikgcmV0dXJuIE9SKEFORCh4LCBPUih5LCB6KSksIEFORCh5LCB6KSk7IGVuZAoKbG9jYWwgSSA9IGZ1bmN0aW9uKHgsIHksIHopIHJldHVybiBYT1IoeCwgWE9SKHksIHopKTsgZW5kCgoKCmxvY2FsIFNIQTEgPSBmdW5jdGlvbigpCgoKCiAgICBsb2NhbCBxdWV1ZSA9IFF1ZXVlKCk7CgoKCiAgICBsb2NhbCBoMCA9IDB4Njc0NTIzMDE7CgogICAgbG9jYWwgaDEgPSAweEVGQ0RBQjg5OwoKICAgIGxvY2FsIGgyID0gMHg5OEJBRENGRTsKCiAgICBsb2NhbCBoMyA9IDB4MTAzMjU0NzY7CgogICAgbG9jYWwgaDQgPSAweEMzRDJFMUYwOwoKCgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBwcm9jZXNzQmxvY2sgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGEgPSBoMDsKCiAgICAgICAgbG9jYWwgYiA9IGgxOwoKICAgICAgICBsb2NhbCBjID0gaDI7CgogICAgICAgIGxvY2FsIGQgPSBoMzsKCiAgICAgICAgbG9jYWwgZSA9IGg0OwoKICAgICAgICBsb2NhbCB0ZW1wOwoKICAgICAgICBsb2NhbCBrOwoKCgogICAgICAgIGxvY2FsIHcgPSB7fTsKCiAgICAgICAgZm9yIGkgPSAwLCAxNSBkbwoKICAgICAgICAgICAgd1tpXSA9IGJ5dGVzMndvcmQocXVldWUucG9wKCksIHF1ZXVlLnBvcCgpLCBxdWV1ZS5wb3AoKSwgcXVldWUucG9wKCkpOwoKICAgICAgICBlbmQKCgoKICAgICAgICBmb3IgaSA9IDE2LCA3OSBkbwoKICAgICAgICAgICAgd1tpXSA9IExST1QoKFhPUihYT1Iod1tpIC0gM10sIHdbaSAtIDhdKSwgWE9SKHdbaSAtIDE0XSwgd1tpIC0gMTZdKSkpLCAxKTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgZm9yIGkgPSAwLCA3OSBkbwoKICAgICAgICAgICAgaWYgKGkgPD0gMTkpIHRoZW4KCiAgICAgICAgICAgICAgICB0ZW1wID0gRihiLCBjLCBkKTsKCiAgICAgICAgICAgICAgICBrID0gMHg1QTgyNzk5OTsKCiAgICAgICAgICAgIGVsc2VpZiAoaSA8PSAzOSkgdGhlbgoKICAgICAgICAgICAgICAgIHRlbXAgPSBHKGIsIGMsIGQpOwoKICAgICAgICAgICAgICAgIGsgPSAweDZFRDlFQkExOwoKICAgICAgICAgICAgZWxzZWlmIChpIDw9IDU5KSB0aGVuCgogICAgICAgICAgICAgICAgdGVtcCA9IEgoYiwgYywgZCk7CgogICAgICAgICAgICAgICAgayA9IDB4OEYxQkJDREM7CgogICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgdGVtcCA9IEkoYiwgYywgZCk7CgogICAgICAgICAgICAgICAgayA9IDB4Q0E2MkMxRDY7CgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIHRlbXAgPSBMUk9UKGEsIDUpICsgdGVtcCArIGUgKyBrICsgd1tpXTsKCiAgICAgICAgICAgIGUgPSBkOwoKICAgICAgICAgICAgZCA9IGM7CgogICAgICAgICAgICBjID0gTFJPVChiLCAzMCk7CgogICAgICAgICAgICBiID0gYTsKCiAgICAgICAgICAgIGEgPSB0ZW1wOwoKICAgICAgICBlbmQKCgoKICAgICAgICBoMCA9IEFORChoMCArIGEsIDB4RkZGRkZGRkYpOwoKICAgICAgICBoMSA9IEFORChoMSArIGIsIDB4RkZGRkZGRkYpOwoKICAgICAgICBoMiA9IEFORChoMiArIGMsIDB4RkZGRkZGRkYpOwoKICAgICAgICBoMyA9IEFORChoMyArIGQsIDB4RkZGRkZGRkYpOwoKICAgICAgICBoNCA9IEFORChoNCArIGUsIDB4RkZGRkZGRkYpOwoKICAgIGVuZAoKCgogICAgcHVibGljLmluaXQgPSBmdW5jdGlvbigpCgogICAgICAgIHF1ZXVlLnJlc2V0KCk7CgogICAgICAgIGgwID0gMHg2NzQ1MjMwMTsKCiAgICAgICAgaDEgPSAweEVGQ0RBQjg5OwoKICAgICAgICBoMiA9IDB4OThCQURDRkU7CgogICAgICAgIGgzID0gMHgxMDMyNTQ3NjsKCiAgICAgICAgaDQgPSAweEMzRDJFMUYwOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24oYnl0ZXMpCgogICAgICAgIGZvciBiIGluIGJ5dGVzIGRvCgogICAgICAgICAgICBxdWV1ZS5wdXNoKGIpOwoKICAgICAgICAgICAgaWYgcXVldWUuc2l6ZSgpID49IDY0IHRoZW4gcHJvY2Vzc0Jsb2NrKCk7IGVuZAoKICAgICAgICBlbmQKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgYml0cyA9IHF1ZXVlLmdldEhlYWQoKSAqIDg7CgoKCiAgICAgICAgcXVldWUucHVzaCgweDgwKTsKCiAgICAgICAgd2hpbGUgKChxdWV1ZS5zaXplKCkgKyA3KSAlIDY0KSA8IDYzIGRvCgogICAgICAgICAgICBxdWV1ZS5wdXNoKDB4MDApOwoKICAgICAgICBlbmQKCgoKICAgICAgICBsb2NhbCBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcgPSBkd29yZDJieXRlcyhiaXRzKTsKCgoKICAgICAgICBxdWV1ZS5wdXNoKGIwKTsKCiAgICAgICAgcXVldWUucHVzaChiMSk7CgogICAgICAgIHF1ZXVlLnB1c2goYjIpOwoKICAgICAgICBxdWV1ZS5wdXNoKGIzKTsKCiAgICAgICAgcXVldWUucHVzaChiNCk7CgogICAgICAgIHF1ZXVlLnB1c2goYjUpOwoKICAgICAgICBxdWV1ZS5wdXNoKGI2KTsKCiAgICAgICAgcXVldWUucHVzaChiNyk7CgoKCiAgICAgICAgd2hpbGUgcXVldWUuc2l6ZSgpID4gMCBkbwoKICAgICAgICAgICAgcHJvY2Vzc0Jsb2NrKCk7CgogICAgICAgIGVuZAoKCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhoMCk7CgogICAgICAgIGxvY2FsICBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaDEpOwoKICAgICAgICBsb2NhbCAgYjgsIGI5LCBiMTAsIGIxMSA9IHdvcmQyYnl0ZXMoaDIpOwoKICAgICAgICBsb2NhbCBiMTIsIGIxMywgYjE0LCBiMTUgPSB3b3JkMmJ5dGVzKGgzKTsKCiAgICAgICAgbG9jYWwgYjE2LCBiMTcsIGIxOCwgYjE5ID0gd29yZDJieXRlcyhoNCk7CgoKCiAgICAgICAgcmV0dXJuIHtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSwgYjE2LCBiMTcsIGIxOCwgYjE5fTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0hleCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhoMCk7CgogICAgICAgIGxvY2FsICBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaDEpOwoKICAgICAgICBsb2NhbCAgYjgsIGI5LCBiMTAsIGIxMSA9IHdvcmQyYnl0ZXMoaDIpOwoKICAgICAgICBsb2NhbCBiMTIsIGIxMywgYjE0LCBiMTUgPSB3b3JkMmJ5dGVzKGgzKTsKCiAgICAgICAgbG9jYWwgYjE2LCBiMTcsIGIxOCwgYjE5ID0gd29yZDJieXRlcyhoNCk7CgoKCiAgICAgICAgcmV0dXJuIHN0cmluZy5mb3JtYXQoIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKCiAgICAgICAgICAgICAgICBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSwgYjE2LCBiMTcsIGIxOCwgYjE5KTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhoMCk7CgogICAgICAgIGxvY2FsICBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaDEpOwoKICAgICAgICBsb2NhbCAgYjgsIGI5LCBiMTAsIGIxMSA9IHdvcmQyYnl0ZXMoaDIpOwoKICAgICAgICBsb2NhbCBiMTIsIGIxMywgYjE0LCBiMTUgPSB3b3JkMmJ5dGVzKGgzKTsKCiAgICAgICAgbG9jYWwgYjE2LCBiMTcsIGIxOCwgYjE5ID0gd29yZDJieXRlcyhoNCk7CgoKCiAgICAgICAgcmV0dXJuIHN0cmluZy5wYWNrKHN0cmluZy5yZXAoJ0InLCAyMCksCgogICAgICAgICAgICAgICAgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCwgYjksIGIxMCwgYjExLCBiMTIsIGIxMywgYjE0LCBiMTUsIGIxNiwgYjE3LCBiMTgsIGIxOSk7CgogICAgZW5kCgoKCiAgICByZXR1cm4gcHVibGljOwoKZW5kCgoKCgoKbG9jYWwgc2hhMSA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCByZXN1bHQgPSBTSEExKCkKCiAgICAgICAgICAgIC51cGRhdGUoc3RyZWFtKQoKICAgICAgICAgICAgLmZpbmlzaCgpCgogICAgcmV0dXJuIHJlc3VsdAoKZW5kCgoKCnJldHVybiB7CgogICAgc2hhMSA9IHNoYTEsCgogICAgU0hBMSA9IFNIQTEKCn0AAAAAAAAAbG9jYWwgQml0ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmJpdCIpOwoKbG9jYWwgUXVldWUgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwucXVldWUiKTsKCmxvY2FsIFN0cmVhbSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5zdHJlYW0iKTsKCgoKbG9jYWwgQ09OU1RBTlRTID0gewoKICAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSwgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSwKCiAgIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsIDB4NzJiZTVkNzQsIDB4ODBkZWIxZmUsIDB4OWJkYzA2YTcsIDB4YzE5YmYxNzQsCgogICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLCAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLAoKICAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNywgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NywKCiAgIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsIDB4NjUwYTczNTQsIDB4NzY2YTBhYmIsIDB4ODFjMmM5MmUsIDB4OTI3MjJjODUsCgogICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLCAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLAoKICAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSwgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMywKCiAgIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsIDB4OTBiZWZmZmEsIDB4YTQ1MDZjZWIsIDB4YmVmOWEzZjcsIDB4YzY3MTc4ZjIgIH07CgoKCmxvY2FsIGZtdCA9ICIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIgLi4KCiAgICAgICAgICAgICIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiCgoKCmxvY2FsIEFORCA9IEJpdC5iYW5kOwoKbG9jYWwgT1IgID0gQml0LmJvcjsKCmxvY2FsIE5PVCA9IEJpdC5ibm90OwoKbG9jYWwgWE9SID0gQml0LmJ4b3I7Cgpsb2NhbCBSUk9UID0gQml0LnJyb3RhdGU7Cgpsb2NhbCBMU0hJRlQgPSBCaXQubHNoaWZ0OwoKbG9jYWwgUlNISUZUID0gQml0LnJzaGlmdDsKCgoKLS1TSEEyIGlzIGJpZy1lbmRpYW4KCmxvY2FsIGJ5dGVzMndvcmQgPSBmdW5jdGlvbihiMCwgYjEsIGIyLCBiMykKCiAgICBsb2NhbCBpID0gYjA7IGkgPSBMU0hJRlQoaSwgOCk7CgogICAgaSA9IE9SKGksIGIxKTsgaSA9IExTSElGVChpLCA4KTsKCiAgICBpID0gT1IoaSwgYjIpOyBpID0gTFNISUZUKGksIDgpOwoKICAgIGkgPSBPUihpLCBiMyk7CgogICAgcmV0dXJuIGk7CgplbmQKCgoKbG9jYWwgd29yZDJieXRlcyA9IGZ1bmN0aW9uKHdvcmQpCgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjM7CgogICAgYjMgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjIgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjEgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjAgPSBBTkQod29yZCwgMHhGRik7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzOwoKZW5kCgoKCmxvY2FsIGR3b3JkMmJ5dGVzID0gZnVuY3Rpb24oaSkKCiAgICBsb2NhbCBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaSk7CgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKG1hdGguZmxvb3IoaSAvIDB4MTAwMDAwMDAwKSk7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNzsKCmVuZAoKCgoKCmxvY2FsIFNIQTJfMjU2ID0gZnVuY3Rpb24oKQoKCgogICAgbG9jYWwgcXVldWUgPSBRdWV1ZSgpOwoKCgogICAgbG9jYWwgaDAgPSAweDZhMDllNjY3OwoKICAgIGxvY2FsIGgxID0gMHhiYjY3YWU4NTsKCiAgICBsb2NhbCBoMiA9IDB4M2M2ZWYzNzI7CgogICAgbG9jYWwgaDMgPSAweGE1NGZmNTNhOwoKICAgIGxvY2FsIGg0ID0gMHg1MTBlNTI3ZjsKCiAgICBsb2NhbCBoNSA9IDB4OWIwNTY4OGM7CgogICAgbG9jYWwgaDYgPSAweDFmODNkOWFiOwoKICAgIGxvY2FsIGg3ID0gMHg1YmUwY2QxOTsKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwgcHJvY2Vzc0Jsb2NrID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBhID0gaDA7CgogICAgICAgIGxvY2FsIGIgPSBoMTsKCiAgICAgICAgbG9jYWwgYyA9IGgyOwoKICAgICAgICBsb2NhbCBkID0gaDM7CgogICAgICAgIGxvY2FsIGUgPSBoNDsKCiAgICAgICAgbG9jYWwgZiA9IGg1OwoKICAgICAgICBsb2NhbCBnID0gaDY7CgogICAgICAgIGxvY2FsIGggPSBoNzsKCgoKICAgICAgICBsb2NhbCB3ID0ge307CgoKCiAgICAgICAgZm9yIGkgPSAwLCAxNSBkbwoKICAgICAgICAgICAgd1tpXSA9IGJ5dGVzMndvcmQocXVldWUucG9wKCksIHF1ZXVlLnBvcCgpLCBxdWV1ZS5wb3AoKSwgcXVldWUucG9wKCkpOwoKICAgICAgICBlbmQKCgoKICAgICAgICBmb3IgaSA9IDE2LCA2MyBkbwoKICAgICAgICAgICAgbG9jYWwgczAgPSBYT1IoUlJPVCh3W2kgLSAxNV0sIDcpLCBYT1IoUlJPVCh3W2kgLSAxNV0sIDE4KSwgUlNISUZUKHdbaSAtIDE1XSwgMykpKTsKCiAgICAgICAgICAgIGxvY2FsIHMxID0gWE9SKFJST1Qod1tpIC0gMl0sIDE3KSwgWE9SKFJST1Qod1tpIC0gIDJdLCAxOSksIFJTSElGVCh3W2kgLSAyXSwgMTApKSk7CgogICAgICAgICAgICB3W2ldID0gQU5EKHdbaSAtIDE2XSArIHMwICsgd1tpIC0gN10gKyBzMSwgMHhGRkZGRkZGRik7CgogICAgICAgIGVuZAoKCgogICAgICAgIGZvciBpID0gMCwgNjMgZG8KCiAgICAgICAgICAgIGxvY2FsIHMxID0gWE9SKFJST1QoZSwgNiksIFhPUihSUk9UKGUsIDExKSwgUlJPVChlLCAyNSkpKTsKCiAgICAgICAgICAgIGxvY2FsIGNoID0gWE9SKEFORChlLCBmKSwgQU5EKE5PVChlKSwgZykpOwoKICAgICAgICAgICAgbG9jYWwgdGVtcDEgPSBoICsgczEgKyBjaCArIENPTlNUQU5UU1tpICsgMV0gKyB3W2ldOwoKICAgICAgICAgICAgbG9jYWwgczAgPSBYT1IoUlJPVChhLCAyKSwgWE9SKFJST1QoYSwgMTMpLCBSUk9UKGEsIDIyKSkpOwoKICAgICAgICAgICAgbG9jYWwgbWFqID0gWE9SKEFORChhLCBiKSwgWE9SKEFORChhLCBjKSwgQU5EKGIsIGMpKSk7CgogICAgICAgICAgICBsb2NhbCB0ZW1wMiA9IHMwICsgbWFqOwoKCgogICAgICAgICAgICBoID0gZzsKCiAgICAgICAgICAgIGcgPSBmOwoKICAgICAgICAgICAgZiA9IGU7CgogICAgICAgICAgICBlID0gZCArIHRlbXAxOwoKICAgICAgICAgICAgZCA9IGM7CgogICAgICAgICAgICBjID0gYjsKCiAgICAgICAgICAgIGIgPSBhOwoKICAgICAgICAgICAgYSA9IHRlbXAxICsgdGVtcDI7CgogICAgICAgIGVuZAoKCgogICAgICAgIGgwID0gQU5EKGgwICsgYSwgMHhGRkZGRkZGRik7CgogICAgICAgIGgxID0gQU5EKGgxICsgYiwgMHhGRkZGRkZGRik7CgogICAgICAgIGgyID0gQU5EKGgyICsgYywgMHhGRkZGRkZGRik7CgogICAgICAgIGgzID0gQU5EKGgzICsgZCwgMHhGRkZGRkZGRik7CgogICAgICAgIGg0ID0gQU5EKGg0ICsgZSwgMHhGRkZGRkZGRik7CgogICAgICAgIGg1ID0gQU5EKGg1ICsgZiwgMHhGRkZGRkZGRik7CgogICAgICAgIGg2ID0gQU5EKGg2ICsgZywgMHhGRkZGRkZGRik7CgogICAgICAgIGg3ID0gQU5EKGg3ICsgaCwgMHhGRkZGRkZGRik7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuaW5pdCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcXVldWUucmVzZXQoKTsKCgoKICAgICAgICBoMCA9IDB4NmEwOWU2Njc7CgogICAgICAgIGgxID0gMHhiYjY3YWU4NTsKCiAgICAgICAgaDIgPSAweDNjNmVmMzcyOwoKICAgICAgICBoMyA9IDB4YTU0ZmY1M2E7CgogICAgICAgIGg0ID0gMHg1MTBlNTI3ZjsKCiAgICAgICAgaDUgPSAweDliMDU2ODhjOwoKICAgICAgICBoNiA9IDB4MWY4M2Q5YWI7CgogICAgICAgIGg3ID0gMHg1YmUwY2QxOTsKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnVwZGF0ZSA9IGZ1bmN0aW9uKGJ5dGVzKQoKICAgICAgICBmb3IgYiBpbiBieXRlcyBkbwoKICAgICAgICAgICAgcXVldWUucHVzaChiKTsKCiAgICAgICAgICAgIGlmIHF1ZXVlLnNpemUoKSA+PSA2NCB0aGVuIHByb2Nlc3NCbG9jaygpOyBlbmQKCiAgICAgICAgZW5kCgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5maW5pc2ggPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGJpdHMgPSBxdWV1ZS5nZXRIZWFkKCkgKiA4OwoKCgogICAgICAgIHF1ZXVlLnB1c2goMHg4MCk7CgogICAgICAgIHdoaWxlICgocXVldWUuc2l6ZSgpICsgNykgJSA2NCkgPCA2MyBkbwoKICAgICAgICAgICAgcXVldWUucHVzaCgweDAwKTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgbG9jYWwgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3ID0gZHdvcmQyYnl0ZXMoYml0cyk7CgoKCiAgICAgICAgcXVldWUucHVzaChiMCk7CgogICAgICAgIHF1ZXVlLnB1c2goYjEpOwoKICAgICAgICBxdWV1ZS5wdXNoKGIyKTsKCiAgICAgICAgcXVldWUucHVzaChiMyk7CgogICAgICAgIHF1ZXVlLnB1c2goYjQpOwoKICAgICAgICBxdWV1ZS5wdXNoKGI1KTsKCiAgICAgICAgcXVldWUucHVzaChiNik7CgogICAgICAgIHF1ZXVlLnB1c2goYjcpOwoKCgogICAgICAgIHdoaWxlIHF1ZXVlLnNpemUoKSA+IDAgZG8KCiAgICAgICAgICAgIHByb2Nlc3NCbG9jaygpOwoKICAgICAgICBlbmQKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsICBiMCwgYjEsIGIyLCBiMyA9IHdvcmQyYnl0ZXMoaDApOwoKICAgICAgICBsb2NhbCAgYjQsIGI1LCBiNiwgYjcgPSB3b3JkMmJ5dGVzKGgxKTsKCiAgICAgICAgbG9jYWwgIGI4LCBiOSwgYjEwLCBiMTEgPSB3b3JkMmJ5dGVzKGgyKTsKCiAgICAgICAgbG9jYWwgYjEyLCBiMTMsIGIxNCwgYjE1ID0gd29yZDJieXRlcyhoMyk7CgogICAgICAgIGxvY2FsIGIxNiwgYjE3LCBiMTgsIGIxOSA9IHdvcmQyYnl0ZXMoaDQpOwoKICAgICAgICBsb2NhbCBiMjAsIGIyMSwgYjIyLCBiMjMgPSB3b3JkMmJ5dGVzKGg1KTsKCiAgICAgICAgbG9jYWwgYjI0LCBiMjUsIGIyNiwgYjI3ID0gd29yZDJieXRlcyhoNik7CgogICAgICAgIGxvY2FsIGIyOCwgYjI5LCBiMzAsIGIzMSA9IHdvcmQyYnl0ZXMoaDcpOwoKCgoKCiAgICAgICAgcmV0dXJuIHsgIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsIGI5LCBiMTAsIGIxMSwgYjEyLCBiMTMsIGIxNCwgYjE1CgogICAgICAgICAgICAgICAgLCBiMTYsIGIxNywgYjE4LCBiMTksIGIyMCwgYjIxLCBiMjIsIGIyMywgYjI0LCBiMjUsIGIyNiwgYjI3LCBiMjgsIGIyOSwgYjMwLCBiMzF9OwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCAgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKGgwKTsKCiAgICAgICAgbG9jYWwgIGI0LCBiNSwgYjYsIGI3ID0gd29yZDJieXRlcyhoMSk7CgogICAgICAgIGxvY2FsICBiOCwgYjksIGIxMCwgYjExID0gd29yZDJieXRlcyhoMik7CgogICAgICAgIGxvY2FsIGIxMiwgYjEzLCBiMTQsIGIxNSA9IHdvcmQyYnl0ZXMoaDMpOwoKICAgICAgICBsb2NhbCBiMTYsIGIxNywgYjE4LCBiMTkgPSB3b3JkMmJ5dGVzKGg0KTsKCiAgICAgICAgbG9jYWwgYjIwLCBiMjEsIGIyMiwgYjIzID0gd29yZDJieXRlcyhoNSk7CgogICAgICAgIGxvY2FsIGIyNCwgYjI1LCBiMjYsIGIyNyA9IHdvcmQyYnl0ZXMoaDYpOwoKICAgICAgICBsb2NhbCBiMjgsIGIyOSwgYjMwLCBiMzEgPSB3b3JkMmJ5dGVzKGg3KTsKCgoKICAgICAgICByZXR1cm4gc3RyaW5nLmZvcm1hdChmbXQsIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsIGI5LCBiMTAsIGIxMSwgYjEyLCBiMTMsIGIxNCwgYjE1CgogICAgICAgICAgICAgICAgLCBiMTYsIGIxNywgYjE4LCBiMTksIGIyMCwgYjIxLCBiMjIsIGIyMywgYjI0LCBiMjUsIGIyNiwgYjI3LCBiMjgsIGIyOSwgYjMwLCBiMzEpOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzU3RyaW5nID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBiMCwgYjEsIGIyLCBiMyA9IHdvcmQyYnl0ZXMoaDApOwoKICAgICAgICBsb2NhbCBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoaDEpOwoKICAgICAgICBsb2NhbCBiOCwgYjksIGIxMCwgYjExID0gd29yZDJieXRlcyhoMik7CgogICAgICAgIGxvY2FsIGIxMiwgYjEzLCBiMTQsIGIxNSA9IHdvcmQyYnl0ZXMoaDMpOwoKICAgICAgICBsb2NhbCBiMTYsIGIxNywgYjE4LCBiMTkgPSB3b3JkMmJ5dGVzKGg0KTsKCiAgICAgICAgbG9jYWwgYjIwLCBiMjEsIGIyMiwgYjIzID0gd29yZDJieXRlcyhoNSk7CgogICAgICAgIGxvY2FsIGIyNCwgYjI1LCBiMjYsIGIyNyA9IHdvcmQyYnl0ZXMoaDYpOwoKICAgICAgICBsb2NhbCBiMjgsIGIyOSwgYjMwLCBiMzEgPSB3b3JkMmJ5dGVzKGg3KTsKCgoKICAgICAgICByZXR1cm4gc3RyaW5nLnBhY2soc3RyaW5nLnJlcCgnQicsIDMyKSwKCiAgICAgICAgICAgIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsCgogICAgICAgICAgICBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSwKCiAgICAgICAgICAgIGIxNiwgYjE3LCBiMTgsIGIxOSwgYjIwLCBiMjEsIGIyMiwgYjIzLCBiMjQsCgogICAgICAgICAgICBiMjUsIGIyNiwgYjI3LCBiMjgsIGIyOSwgYjMwLCBiMzEpOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCi0tLSBAY2xhc3MgU3RyZWFtIDogdGFibGUKCgoKLS0tIEBwYXJhbSBzdHJlYW0gKFN0cmVhbSkgLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV4dCBieXRlIG9mIHRoZSBzdHJlYW0sIG9yIG5pbCBpZiB0aGUgc3RyZWFtIGhhcyBlbmRlZC4KCi0tLSBAcmV0dXJucyB0YWJsZSAtIEEgdGFibGUgY29udGFpbmluZyB0aGUgaGFzaCBpbiBieXRlcywgc3RyaW5nLCBhbmQgaGV4IGZvcm1hdHMuCgpsb2NhbCBzaGEyXzI1NiA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCByZXN1bHQgPSBTSEEyXzI1NigpCgogICAgICAgICAgICAudXBkYXRlKHN0cmVhbSkKCiAgICAgICAgICAgIC5maW5pc2goKQoKICAgIHJldHVybiByZXN1bHQKCmVuZAoKCgpyZXR1cm4gewoKICAgIHNoYTJfMjU2ID0gc2hhMl8yNTYsCgogICAgU0hBMl8yNTYgPSBTSEEyXzI1NgoKfTsKAABsb2NhbCBCaXQgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYml0Iik7Cgpsb2NhbCBRdWV1ZSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5xdWV1ZSIpOwoKCgpsb2NhbCBTSElGVCA9IHsKCiAgICA3LCAxMiwgMTcsIDIyLCAgNywgMTIsIDE3LCAyMiwgIDcsIDEyLCAxNywgMjIsICA3LCAxMiwgMTcsIDIyLAoKICAgIDUsICA5LCAxNCwgMjAsICA1LCAgOSwgMTQsIDIwLCAgNSwgIDksIDE0LCAyMCwgIDUsICA5LCAxNCwgMjAsCgogICAgNCwgMTEsIDE2LCAyMywgIDQsIDExLCAxNiwgMjMsICA0LCAxMSwgMTYsIDIzLCAgNCwgMTEsIDE2LCAyMywKCiAgICA2LCAxMCwgMTUsIDIxLCAgNiwgMTAsIDE1LCAyMSwgIDYsIDEwLCAxNSwgMjEsICA2LCAxMCwgMTUsIDIxfTsKCgoKbG9jYWwgQ09OU1RBTlRTID0gewoKICAgIDB4ZDc2YWE0NzgsIDB4ZThjN2I3NTYsIDB4MjQyMDcwZGIsIDB4YzFiZGNlZWUsCgogICAgMHhmNTdjMGZhZiwgMHg0Nzg3YzYyYSwgMHhhODMwNDYxMywgMHhmZDQ2OTUwMSwKCiAgICAweDY5ODA5OGQ4LCAweDhiNDRmN2FmLCAweGZmZmY1YmIxLCAweDg5NWNkN2JlLAoKICAgIDB4NmI5MDExMjIsIDB4ZmQ5ODcxOTMsIDB4YTY3OTQzOGUsIDB4NDliNDA4MjEsCgogICAgMHhmNjFlMjU2MiwgMHhjMDQwYjM0MCwgMHgyNjVlNWE1MSwgMHhlOWI2YzdhYSwKCiAgICAweGQ2MmYxMDVkLCAweDAyNDQxNDUzLCAweGQ4YTFlNjgxLCAweGU3ZDNmYmM4LAoKICAgIDB4MjFlMWNkZTYsIDB4YzMzNzA3ZDYsIDB4ZjRkNTBkODcsIDB4NDU1YTE0ZWQsCgogICAgMHhhOWUzZTkwNSwgMHhmY2VmYTNmOCwgMHg2NzZmMDJkOSwgMHg4ZDJhNGM4YSwKCiAgICAweGZmZmEzOTQyLCAweDg3NzFmNjgxLCAweDZkOWQ2MTIyLCAweGZkZTUzODBjLAoKICAgIDB4YTRiZWVhNDQsIDB4NGJkZWNmYTksIDB4ZjZiYjRiNjAsIDB4YmViZmJjNzAsCgogICAgMHgyODliN2VjNiwgMHhlYWExMjdmYSwgMHhkNGVmMzA4NSwgMHgwNDg4MWQwNSwKCiAgICAweGQ5ZDRkMDM5LCAweGU2ZGI5OWU1LCAweDFmYTI3Y2Y4LCAweGM0YWM1NjY1LAoKICAgIDB4ZjQyOTIyNDQsIDB4NDMyYWZmOTcsIDB4YWI5NDIzYTcsIDB4ZmM5M2EwMzksCgogICAgMHg2NTViNTljMywgMHg4ZjBjY2M5MiwgMHhmZmVmZjQ3ZCwgMHg4NTg0NWRkMSwKCiAgICAweDZmYTg3ZTRmLCAweGZlMmNlNmUwLCAweGEzMDE0MzE0LCAweDRlMDgxMWExLAoKICAgIDB4Zjc1MzdlODIsIDB4YmQzYWYyMzUsIDB4MmFkN2QyYmIsIDB4ZWI4NmQzOTF9OwoKCgpsb2NhbCBBTkQgPSBCaXQuYmFuZDsKCmxvY2FsIE9SICA9IEJpdC5ib3I7Cgpsb2NhbCBOT1QgPSBCaXQuYm5vdDsKCmxvY2FsIFhPUiA9IEJpdC5ieG9yOwoKbG9jYWwgTFJPVCA9IEJpdC5scm90YXRlOwoKbG9jYWwgTFNISUZUID0gQml0LmxzaGlmdDsKCmxvY2FsIFJTSElGVCA9IEJpdC5yc2hpZnQ7CgoKCi0tTUQ1IGlzIGxpdHRsZS1lbmRpYW4KCmxvY2FsIGJ5dGVzMndvcmQgPSBmdW5jdGlvbihiMCwgYjEsIGIyLCBiMykKCiAgICBsb2NhbCBpID0gYjM7IGkgPSBMU0hJRlQoaSwgOCk7CgogICAgaSA9IE9SKGksIGIyKTsgaSA9IExTSElGVChpLCA4KTsKCiAgICBpID0gT1IoaSwgYjEpOyBpID0gTFNISUZUKGksIDgpOwoKICAgIGkgPSBPUihpLCBiMCk7CgogICAgcmV0dXJuIGk7CgplbmQKCgoKbG9jYWwgd29yZDJieXRlcyA9IGZ1bmN0aW9uKHdvcmQpCgogICAgbG9jYWwgYjAsIGIxLCBiMiwgYjM7CgogICAgYjAgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjEgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjIgPSBBTkQod29yZCwgMHhGRik7IHdvcmQgPSBSU0hJRlQod29yZCwgOCk7CgogICAgYjMgPSBBTkQod29yZCwgMHhGRik7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzOwoKZW5kCgoKCmxvY2FsIGR3b3JkMmJ5dGVzID0gZnVuY3Rpb24oaSkKCiAgICBsb2NhbCBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMobWF0aC5mbG9vcihpIC8gMHgxMDAwMDAwMDApKTsKCiAgICBsb2NhbCBiMCwgYjEsIGIyLCBiMyA9IHdvcmQyYnl0ZXMoaSk7CgogICAgcmV0dXJuIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNzsKCmVuZAoKCgpsb2NhbCBGID0gZnVuY3Rpb24oeCwgeSwgeikgcmV0dXJuIE9SKEFORCh4LCB5KSwgQU5EKE5PVCh4KSwgeikpOyBlbmQKCmxvY2FsIEcgPSBmdW5jdGlvbih4LCB5LCB6KSByZXR1cm4gT1IoQU5EKHgsIHopLCBBTkQoeSwgTk9UKHopKSk7IGVuZAoKbG9jYWwgSCA9IGZ1bmN0aW9uKHgsIHksIHopIHJldHVybiBYT1IoeCwgWE9SKHksIHopKTsgZW5kCgpsb2NhbCBJID0gZnVuY3Rpb24oeCwgeSwgeikgcmV0dXJuIFhPUih5LCBPUih4LCBOT1QoeikpKTsgZW5kCgoKCmxvY2FsIE1ENSA9IGZ1bmN0aW9uKHN0cmVhbSkKCgoKICAgIGxvY2FsIHF1ZXVlID0gUXVldWUoKTsKCgoKICAgIGxvY2FsIEEgPSAweDY3NDUyMzAxOwoKICAgIGxvY2FsIEIgPSAweGVmY2RhYjg5OwoKICAgIGxvY2FsIEMgPSAweDk4YmFkY2ZlOwoKICAgIGxvY2FsIEQgPSAweDEwMzI1NDc2OwoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwgcHJvY2Vzc0Jsb2NrID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBhID0gQTsKCiAgICAgICAgbG9jYWwgYiA9IEI7CgogICAgICAgIGxvY2FsIGMgPSBDOwoKICAgICAgICBsb2NhbCBkID0gRDsKCgoKICAgICAgICBsb2NhbCBYID0ge307CgoKCiAgICAgICAgZm9yIGkgPSAxLCAxNiBkbwoKICAgICAgICAgICAgWFtpXSA9IGJ5dGVzMndvcmQocXVldWUucG9wKCksIHF1ZXVlLnBvcCgpLCBxdWV1ZS5wb3AoKSwgcXVldWUucG9wKCkpOwoKICAgICAgICBlbmQKCgoKICAgICAgICBmb3IgaSA9IDAsIDYzIGRvCgogICAgICAgICAgICBsb2NhbCBmLCBnLCB0ZW1wOwoKCgogICAgICAgICAgICBpZiAoMCA8PSBpKSBhbmQgKGkgPD0gMTUpIHRoZW4KCiAgICAgICAgICAgICAgICBmID0gRihiLCBjLCBkKTsKCiAgICAgICAgICAgICAgICBnID0gaTsKCiAgICAgICAgICAgIGVsc2VpZiAoMTYgPD0gaSkgYW5kIChpIDw9IDMxKSB0aGVuCgogICAgICAgICAgICAgICAgZiA9IEcoYiwgYywgZCk7CgogICAgICAgICAgICAgICAgZyA9ICg1ICogaSArIDEpICUgMTY7CgogICAgICAgICAgICBlbHNlaWYgKDMyIDw9IGkpIGFuZCAoaSA8PSA0NykgdGhlbgoKICAgICAgICAgICAgICAgIGYgPSBIKGIsIGMsIGQpOwoKICAgICAgICAgICAgICAgIGcgPSAoMyAqIGkgKyA1KSAlIDE2OwoKICAgICAgICAgICAgZWxzZWlmICg0OCA8PSBpKSBhbmQgKGkgPD0gNjMpIHRoZW4KCiAgICAgICAgICAgICAgICBmID0gSShiLCBjLCBkKTsKCiAgICAgICAgICAgICAgICBnID0gKDcgKiBpKSAlIDE2OwoKICAgICAgICAgICAgZW5kCgogICAgICAgICAgICB0ZW1wID0gZDsKCiAgICAgICAgICAgIGQgPSBjOwoKICAgICAgICAgICAgYyA9IGI7CgogICAgICAgICAgICBiID0gYiArIExST1QoKGEgKyBmICsgQ09OU1RBTlRTW2kgKyAxXSArIFhbZyArIDFdKSwgU0hJRlRbaSArIDFdKTsKCiAgICAgICAgICAgIGEgPSB0ZW1wOwoKICAgICAgICBlbmQKCgoKICAgICAgICBBID0gQU5EKEEgKyBhLCAweEZGRkZGRkZGKTsKCiAgICAgICAgQiA9IEFORChCICsgYiwgMHhGRkZGRkZGRik7CgogICAgICAgIEMgPSBBTkQoQyArIGMsIDB4RkZGRkZGRkYpOwoKICAgICAgICBEID0gQU5EKEQgKyBkLCAweEZGRkZGRkZGKTsKCiAgICBlbmQKCgoKICAgIGZvciBzIGluIHN0cmVhbSBkbwoKICAgICAgICBxdWV1ZS5wdXNoKHMpOwoKICAgICAgICBpZiAocXVldWUuc2l6ZSgpID49IDY0KSB0aGVuIHByb2Nlc3NCbG9jaygpOyBlbmQKCiAgICBlbmQKCgoKICAgIGxvY2FsIGJpdHMgPSBxdWV1ZS5nZXRIZWFkKCkgKiA4OwoKCgogICAgcXVldWUucHVzaCgweDgwKTsKCiAgICB3aGlsZSAoKHF1ZXVlLnNpemUoKSArIDcpICUgNjQpIDwgNjMgZG8KCiAgICAgICAgcXVldWUucHVzaCgweDAwKTsKCiAgICBlbmQKCgoKICAgIGxvY2FsIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyA9IGR3b3JkMmJ5dGVzKGJpdHMpOwoKCgogICAgcXVldWUucHVzaChiMCk7CgogICAgcXVldWUucHVzaChiMSk7CgogICAgcXVldWUucHVzaChiMik7CgogICAgcXVldWUucHVzaChiMyk7CgogICAgcXVldWUucHVzaChiNCk7CgogICAgcXVldWUucHVzaChiNSk7CgogICAgcXVldWUucHVzaChiNik7CgogICAgcXVldWUucHVzaChiNyk7CgoKCiAgICB3aGlsZSBxdWV1ZS5zaXplKCkgPiAwIGRvCgogICAgICAgIHByb2Nlc3NCbG9jaygpOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsICBiMCwgYjEsIGIyLCBiMyA9IHdvcmQyYnl0ZXMoQSk7CgogICAgICAgIGxvY2FsICBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoQik7CgogICAgICAgIGxvY2FsICBiOCwgYjksIGIxMCwgYjExID0gd29yZDJieXRlcyhDKTsKCiAgICAgICAgbG9jYWwgYjEyLCBiMTMsIGIxNCwgYjE1ID0gd29yZDJieXRlcyhEKTsKCgoKICAgICAgICByZXR1cm4ge2IwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsIGI5LCBiMTAsIGIxMSwgYjEyLCBiMTMsIGIxNCwgYjE1fTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0hleCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhBKTsKCiAgICAgICAgbG9jYWwgIGI0LCBiNSwgYjYsIGI3ID0gd29yZDJieXRlcyhCKTsKCiAgICAgICAgbG9jYWwgIGI4LCBiOSwgYjEwLCBiMTEgPSB3b3JkMmJ5dGVzKEMpOwoKICAgICAgICBsb2NhbCBiMTIsIGIxMywgYjE0LCBiMTUgPSB3b3JkMmJ5dGVzKEQpOwoKCgogICAgICAgIHJldHVybiBzdHJpbmcuZm9ybWF0KCIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKCiAgICAgICAgICAgICAgICBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhBKTsKCiAgICAgICAgbG9jYWwgYjQsIGI1LCBiNiwgYjcgPSB3b3JkMmJ5dGVzKEIpOwoKICAgICAgICBsb2NhbCBiOCwgYjksIGIxMCwgYjExID0gd29yZDJieXRlcyhDKTsKCiAgICAgICAgbG9jYWwgYjEyLCBiMTMsIGIxNCwgYjE1ID0gd29yZDJieXRlcyhEKTsKCgoKICAgICAgICByZXR1cm4gc3RyaW5nLnBhY2soc3RyaW5nLnJlcCgnQicsIDE2KSwKCiAgICAgICAgICAgIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsCgogICAgICAgICAgICBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNQoKICAgICAgICApCgogICAgZW5kCgoKCiAgICByZXR1cm4gcHVibGljOwoKCgplbmQKCgoKcmV0dXJuIE1ENTsAAGxvY2FsIEJpdCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5iaXQiKTsKCmxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIik7CgoKCmxvY2FsIEFORCA9IEJpdC5iYW5kOwoKbG9jYWwgT1IgID0gQml0LmJvcjsKCmxvY2FsIE5PVCA9IEJpdC5ibm90OwoKbG9jYWwgWE9SID0gQml0LmJ4b3I7Cgpsb2NhbCBMUk9UID0gQml0Lmxyb3RhdGU7Cgpsb2NhbCBMU0hJRlQgPSBCaXQubHNoaWZ0OwoKbG9jYWwgUlNISUZUID0gQml0LnJzaGlmdDsKCgoKLS1NRDQgaXMgbGl0dGxlLWVuZGlhbgoKbG9jYWwgYnl0ZXMyd29yZCA9IGZ1bmN0aW9uKGIwLCBiMSwgYjIsIGIzKQoKICAgIGxvY2FsIGkgPSBiMzsgaSA9IExTSElGVChpLCA4KTsKCiAgICBpID0gT1IoaSwgYjIpOyBpID0gTFNISUZUKGksIDgpOwoKICAgIGkgPSBPUihpLCBiMSk7IGkgPSBMU0hJRlQoaSwgOCk7CgogICAgaSA9IE9SKGksIGIwKTsKCiAgICByZXR1cm4gaTsKCmVuZAoKCgpsb2NhbCB3b3JkMmJ5dGVzID0gZnVuY3Rpb24od29yZCkKCiAgICBsb2NhbCBiMCwgYjEsIGIyLCBiMzsKCiAgICBiMCA9IEFORCh3b3JkLCAweEZGKTsgd29yZCA9IFJTSElGVCh3b3JkLCA4KTsKCiAgICBiMSA9IEFORCh3b3JkLCAweEZGKTsgd29yZCA9IFJTSElGVCh3b3JkLCA4KTsKCiAgICBiMiA9IEFORCh3b3JkLCAweEZGKTsgd29yZCA9IFJTSElGVCh3b3JkLCA4KTsKCiAgICBiMyA9IEFORCh3b3JkLCAweEZGKTsKCiAgICByZXR1cm4gYjAsIGIxLCBiMiwgYjM7CgplbmQKCgoKbG9jYWwgZHdvcmQyYnl0ZXMgPSBmdW5jdGlvbihpKQoKICAgIGxvY2FsIGI0LCBiNSwgYjYsIGI3ID0gd29yZDJieXRlcyhtYXRoLmZsb29yKGkgLyAweDEwMDAwMDAwMCkpOwoKICAgIGxvY2FsIGIwLCBiMSwgYjIsIGIzID0gd29yZDJieXRlcyhpKTsKCiAgICByZXR1cm4gYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3OwoKZW5kCgoKCmxvY2FsIEYgPSBmdW5jdGlvbih4LCB5LCB6KSByZXR1cm4gT1IoQU5EKHgsIHkpLCBBTkQoTk9UKHgpLCB6KSk7IGVuZAoKbG9jYWwgRyA9IGZ1bmN0aW9uKHgsIHksIHopIHJldHVybiBPUihBTkQoeCwgeSksIE9SKEFORCh4LCB6KSwgQU5EKHksIHopKSk7IGVuZAoKbG9jYWwgSCA9IGZ1bmN0aW9uKHgsIHksIHopIHJldHVybiBYT1IoeCwgWE9SKHksIHopKTsgZW5kCgoKCgoKbG9jYWwgTUQ0ID0gZnVuY3Rpb24oc3RyZWFtKQoKCgogICAgbG9jYWwgcXVldWUgPSBRdWV1ZSgpOwoKCgogICAgbG9jYWwgQSA9IDB4Njc0NTIzMDE7CgogICAgbG9jYWwgQiA9IDB4ZWZjZGFiODk7CgogICAgbG9jYWwgQyA9IDB4OThiYWRjZmU7CgogICAgbG9jYWwgRCA9IDB4MTAzMjU0NzY7CgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBwcm9jZXNzQmxvY2sgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGEgPSBBOwoKICAgICAgICBsb2NhbCBiID0gQjsKCiAgICAgICAgbG9jYWwgYyA9IEM7CgogICAgICAgIGxvY2FsIGQgPSBEOwoKCgogICAgICAgIGxvY2FsIFggPSB7fTsKCgoKICAgICAgICBmb3IgaSA9IDAsIDE1IGRvCgogICAgICAgICAgICBYW2ldID0gYnl0ZXMyd29yZChxdWV1ZS5wb3AoKSwgcXVldWUucG9wKCksIHF1ZXVlLnBvcCgpLCBxdWV1ZS5wb3AoKSk7CgogICAgICAgIGVuZAoKCgogICAgICAgIGEgPSBMUk9UKGEgKyBGKGIsIGMsIGQpICsgWFswXSwgMyk7CgogICAgICAgIGQgPSBMUk9UKGQgKyBGKGEsIGIsIGMpICsgWFsxXSwgNyk7CgogICAgICAgIGMgPSBMUk9UKGMgKyBGKGQsIGEsIGIpICsgWFsyXSwgMTEpOwoKICAgICAgICBiID0gTFJPVChiICsgRihjLCBkLCBhKSArIFhbM10sIDE5KTsKCgoKICAgICAgICBhID0gTFJPVChhICsgRihiLCBjLCBkKSArIFhbNF0sIDMpOwoKICAgICAgICBkID0gTFJPVChkICsgRihhLCBiLCBjKSArIFhbNV0sIDcpOwoKICAgICAgICBjID0gTFJPVChjICsgRihkLCBhLCBiKSArIFhbNl0sIDExKTsKCiAgICAgICAgYiA9IExST1QoYiArIEYoYywgZCwgYSkgKyBYWzddLCAxOSk7CgoKCiAgICAgICAgYSA9IExST1QoYSArIEYoYiwgYywgZCkgKyBYWzhdLCAzKTsKCiAgICAgICAgZCA9IExST1QoZCArIEYoYSwgYiwgYykgKyBYWzldLCA3KTsKCiAgICAgICAgYyA9IExST1QoYyArIEYoZCwgYSwgYikgKyBYWzEwXSwgMTEpOwoKICAgICAgICBiID0gTFJPVChiICsgRihjLCBkLCBhKSArIFhbMTFdLCAxOSk7CgoKCiAgICAgICAgYSA9IExST1QoYSArIEYoYiwgYywgZCkgKyBYWzEyXSwgMyk7CgogICAgICAgIGQgPSBMUk9UKGQgKyBGKGEsIGIsIGMpICsgWFsxM10sIDcpOwoKICAgICAgICBjID0gTFJPVChjICsgRihkLCBhLCBiKSArIFhbMTRdLCAxMSk7CgogICAgICAgIGIgPSBMUk9UKGIgKyBGKGMsIGQsIGEpICsgWFsxNV0sIDE5KTsKCgoKCgogICAgICAgIGEgPSBMUk9UKGEgKyBHKGIsIGMsIGQpICsgWFswXSArIDB4NUE4Mjc5OTksIDMpOwoKICAgICAgICBkID0gTFJPVChkICsgRyhhLCBiLCBjKSArIFhbNF0gKyAweDVBODI3OTk5LCA1KTsKCiAgICAgICAgYyA9IExST1QoYyArIEcoZCwgYSwgYikgKyBYWzhdICsgMHg1QTgyNzk5OSwgOSk7CgogICAgICAgIGIgPSBMUk9UKGIgKyBHKGMsIGQsIGEpICsgWFsxMl0gKyAweDVBODI3OTk5LCAxMyk7CgoKCiAgICAgICAgYSA9IExST1QoYSArIEcoYiwgYywgZCkgKyBYWzFdICsgMHg1QTgyNzk5OSwgMyk7CgogICAgICAgIGQgPSBMUk9UKGQgKyBHKGEsIGIsIGMpICsgWFs1XSArIDB4NUE4Mjc5OTksIDUpOwoKICAgICAgICBjID0gTFJPVChjICsgRyhkLCBhLCBiKSArIFhbOV0gKyAweDVBODI3OTk5LCA5KTsKCiAgICAgICAgYiA9IExST1QoYiArIEcoYywgZCwgYSkgKyBYWzEzXSArIDB4NUE4Mjc5OTksIDEzKTsKCgoKICAgICAgICBhID0gTFJPVChhICsgRyhiLCBjLCBkKSArIFhbMl0gKyAweDVBODI3OTk5LCAzKTsKCiAgICAgICAgZCA9IExST1QoZCArIEcoYSwgYiwgYykgKyBYWzZdICsgMHg1QTgyNzk5OSwgNSk7CgogICAgICAgIGMgPSBMUk9UKGMgKyBHKGQsIGEsIGIpICsgWFsxMF0gKyAweDVBODI3OTk5LCA5KTsKCiAgICAgICAgYiA9IExST1QoYiArIEcoYywgZCwgYSkgKyBYWzE0XSArIDB4NUE4Mjc5OTksIDEzKTsKCgoKICAgICAgICBhID0gTFJPVChhICsgRyhiLCBjLCBkKSArIFhbM10gKyAweDVBODI3OTk5LCAzKTsKCiAgICAgICAgZCA9IExST1QoZCArIEcoYSwgYiwgYykgKyBYWzddICsgMHg1QTgyNzk5OSwgNSk7CgogICAgICAgIGMgPSBMUk9UKGMgKyBHKGQsIGEsIGIpICsgWFsxMV0gKyAweDVBODI3OTk5LCA5KTsKCiAgICAgICAgYiA9IExST1QoYiArIEcoYywgZCwgYSkgKyBYWzE1XSArIDB4NUE4Mjc5OTksIDEzKTsKCgoKCgogICAgICAgIGEgPSBMUk9UKGEgKyBIKGIsIGMsIGQpICsgWFswXSArIDB4NkVEOUVCQTEsIDMpOwoKICAgICAgICBkID0gTFJPVChkICsgSChhLCBiLCBjKSArIFhbOF0gKyAweDZFRDlFQkExLCA5KTsKCiAgICAgICAgYyA9IExST1QoYyArIEgoZCwgYSwgYikgKyBYWzRdICsgMHg2RUQ5RUJBMSwgMTEpOwoKICAgICAgICBiID0gTFJPVChiICsgSChjLCBkLCBhKSArIFhbMTJdICsgMHg2RUQ5RUJBMSwgMTUpOwoKCgogICAgICAgIGEgPSBMUk9UKGEgKyBIKGIsIGMsIGQpICsgWFsyXSArIDB4NkVEOUVCQTEsIDMpOwoKICAgICAgICBkID0gTFJPVChkICsgSChhLCBiLCBjKSArIFhbMTBdICsgMHg2RUQ5RUJBMSwgOSk7CgogICAgICAgIGMgPSBMUk9UKGMgKyBIKGQsIGEsIGIpICsgWFs2XSArIDB4NkVEOUVCQTEsIDExKTsKCiAgICAgICAgYiA9IExST1QoYiArIEgoYywgZCwgYSkgKyBYWzE0XSArIDB4NkVEOUVCQTEsIDE1KTsKCgoKICAgICAgICBhID0gTFJPVChhICsgSChiLCBjLCBkKSArIFhbMV0gKyAweDZFRDlFQkExLCAzKTsKCiAgICAgICAgZCA9IExST1QoZCArIEgoYSwgYiwgYykgKyBYWzldICsgMHg2RUQ5RUJBMSwgOSk7CgogICAgICAgIGMgPSBMUk9UKGMgKyBIKGQsIGEsIGIpICsgWFs1XSArIDB4NkVEOUVCQTEsIDExKTsKCiAgICAgICAgYiA9IExST1QoYiArIEgoYywgZCwgYSkgKyBYWzEzXSArIDB4NkVEOUVCQTEsIDE1KTsKCgoKICAgICAgICBhID0gTFJPVChhICsgSChiLCBjLCBkKSArIFhbM10gKyAweDZFRDlFQkExLCAzKTsKCiAgICAgICAgZCA9IExST1QoZCArIEgoYSwgYiwgYykgKyBYWzExXSArIDB4NkVEOUVCQTEsIDkpOwoKICAgICAgICBjID0gTFJPVChjICsgSChkLCBhLCBiKSArIFhbN10gKyAweDZFRDlFQkExLCAxMSk7CgogICAgICAgIGIgPSBMUk9UKGIgKyBIKGMsIGQsIGEpICsgWFsxNV0gKyAweDZFRDlFQkExLCAxNSk7CgoKCgoKICAgICAgICBBID0gQU5EKEEgKyBhLCAweEZGRkZGRkZGKTsKCiAgICAgICAgQiA9IEFORChCICsgYiwgMHhGRkZGRkZGRik7CgogICAgICAgIEMgPSBBTkQoQyArIGMsIDB4RkZGRkZGRkYpOwoKICAgICAgICBEID0gQU5EKEQgKyBkLCAweEZGRkZGRkZGKTsKCiAgICBlbmQKCiAgICAKCgoKICAgIGZvciBzIGluIHN0cmVhbSBkbwoKICAgICAgICBxdWV1ZS5wdXNoKHMpOwoKICAgICAgICBpZiAocXVldWUuc2l6ZSgpID49IDY0KSB0aGVuIHByb2Nlc3NCbG9jaygpOyBlbmQKCiAgICBlbmQKCiAgICAKCiAgICBsb2NhbCBiaXRzID0gcXVldWUuZ2V0SGVhZCgpICogODsKCgoKICAgIHF1ZXVlLnB1c2goMHg4MCk7CgogICAgd2hpbGUgKChxdWV1ZS5zaXplKCkgKyA3KSAlIDY0KSA8IDYzIGRvCgogICAgICAgIHF1ZXVlLnB1c2goMHgwMCk7CgogICAgZW5kCgoKCiAgICBsb2NhbCBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcgPSBkd29yZDJieXRlcyhiaXRzKTsKCgoKICAgIHF1ZXVlLnB1c2goYjApOwoKICAgIHF1ZXVlLnB1c2goYjEpOwoKICAgIHF1ZXVlLnB1c2goYjIpOwoKICAgIHF1ZXVlLnB1c2goYjMpOwoKICAgIHF1ZXVlLnB1c2goYjQpOwoKICAgIHF1ZXVlLnB1c2goYjUpOwoKICAgIHF1ZXVlLnB1c2goYjYpOwoKICAgIHF1ZXVlLnB1c2goYjcpOwoKCgogICAgd2hpbGUgcXVldWUuc2l6ZSgpID4gMCBkbwoKICAgICAgICBwcm9jZXNzQmxvY2soKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCAgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKEEpOwoKICAgICAgICBsb2NhbCAgYjQsIGI1LCBiNiwgYjcgPSB3b3JkMmJ5dGVzKEIpOwoKICAgICAgICBsb2NhbCAgYjgsIGI5LCBiMTAsIGIxMSA9IHdvcmQyYnl0ZXMoQyk7CgogICAgICAgIGxvY2FsIGIxMiwgYjEzLCBiMTQsIGIxNSA9IHdvcmQyYnl0ZXMoRCk7CgoKCiAgICAgICAgcmV0dXJuIHtiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNX07CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsICBiMCwgYjEsIGIyLCBiMyA9IHdvcmQyYnl0ZXMoQSk7CgogICAgICAgIGxvY2FsICBiNCwgYjUsIGI2LCBiNyA9IHdvcmQyYnl0ZXMoQik7CgogICAgICAgIGxvY2FsICBiOCwgYjksIGIxMCwgYjExID0gd29yZDJieXRlcyhDKTsKCiAgICAgICAgbG9jYWwgYjEyLCBiMTMsIGIxNCwgYjE1ID0gd29yZDJieXRlcyhEKTsKCgoKICAgICAgICByZXR1cm4gc3RyaW5nLmZvcm1hdCgiJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCgogICAgICAgICAgICAgICAgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCwgYjksIGIxMCwgYjExLCBiMTIsIGIxMywgYjE0LCBiMTUpOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzU3RyaW5nID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCAgYjAsIGIxLCBiMiwgYjMgPSB3b3JkMmJ5dGVzKEEpOwoKICAgICAgICBsb2NhbCAgYjQsIGI1LCBiNiwgYjcgPSB3b3JkMmJ5dGVzKEIpOwoKICAgICAgICBsb2NhbCAgYjgsIGI5LCBiMTAsIGIxMSA9IHdvcmQyYnl0ZXMoQyk7CgogICAgICAgIGxvY2FsIGIxMiwgYjEzLCBiMTQsIGIxNSA9IHdvcmQyYnl0ZXMoRCk7CgoKCiAgICAgICAgcmV0dXJuIHN0cmluZy5wYWNrKHN0cmluZy5yZXAoJ0InLCAxNiksCgogICAgICAgICAgICAgICAgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCwgYjksIGIxMCwgYjExLCBiMTIsIGIxMywgYjE0LCBiMTUpOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCnJldHVybiBNRDQ7AELAmwsL1pwDbG9jYWwgQml0ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmJpdCIpOwoKbG9jYWwgUXVldWUgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwucXVldWUiKTsKCgoKbG9jYWwgU1VCU1QgPSB7CgogIDB4MjksIDB4MkUsIDB4NDMsIDB4QzksIDB4QTIsIDB4RDgsIDB4N0MsIDB4MDEsIDB4M0QsIDB4MzYsIDB4NTQsIDB4QTEsIDB4RUMsIDB4RjAsIDB4MDYsIDB4MTMsCgogIDB4NjIsIDB4QTcsIDB4MDUsIDB4RjMsIDB4QzAsIDB4QzcsIDB4NzMsIDB4OEMsIDB4OTgsIDB4OTMsIDB4MkIsIDB4RDksIDB4QkMsIDB4NEMsIDB4ODIsIDB4Q0EsCgogIDB4MUUsIDB4OUIsIDB4NTcsIDB4M0MsIDB4RkQsIDB4RDQsIDB4RTAsIDB4MTYsIDB4NjcsIDB4NDIsIDB4NkYsIDB4MTgsIDB4OEEsIDB4MTcsIDB4RTUsIDB4MTIsCgogIDB4QkUsIDB4NEUsIDB4QzQsIDB4RDYsIDB4REEsIDB4OUUsIDB4REUsIDB4NDksIDB4QTAsIDB4RkIsIDB4RjUsIDB4OEUsIDB4QkIsIDB4MkYsIDB4RUUsIDB4N0EsCgogIDB4QTksIDB4NjgsIDB4NzksIDB4OTEsIDB4MTUsIDB4QjIsIDB4MDcsIDB4M0YsIDB4OTQsIDB4QzIsIDB4MTAsIDB4ODksIDB4MEIsIDB4MjIsIDB4NUYsIDB4MjEsCgogIDB4ODAsIDB4N0YsIDB4NUQsIDB4OUEsIDB4NUEsIDB4OTAsIDB4MzIsIDB4MjcsIDB4MzUsIDB4M0UsIDB4Q0MsIDB4RTcsIDB4QkYsIDB4RjcsIDB4OTcsIDB4MDMsCgogIDB4RkYsIDB4MTksIDB4MzAsIDB4QjMsIDB4NDgsIDB4QTUsIDB4QjUsIDB4RDEsIDB4RDcsIDB4NUUsIDB4OTIsIDB4MkEsIDB4QUMsIDB4NTYsIDB4QUEsIDB4QzYsCgogIDB4NEYsIDB4QjgsIDB4MzgsIDB4RDIsIDB4OTYsIDB4QTQsIDB4N0QsIDB4QjYsIDB4NzYsIDB4RkMsIDB4NkIsIDB4RTIsIDB4OUMsIDB4NzQsIDB4MDQsIDB4RjEsCgogIDB4NDUsIDB4OUQsIDB4NzAsIDB4NTksIDB4NjQsIDB4NzEsIDB4ODcsIDB4MjAsIDB4ODYsIDB4NUIsIDB4Q0YsIDB4NjUsIDB4RTYsIDB4MkQsIDB4QTgsIDB4MDIsCgogIDB4MUIsIDB4NjAsIDB4MjUsIDB4QUQsIDB4QUUsIDB4QjAsIDB4QjksIDB4RjYsIDB4MUMsIDB4NDYsIDB4NjEsIDB4NjksIDB4MzQsIDB4NDAsIDB4N0UsIDB4MEYsCgogIDB4NTUsIDB4NDcsIDB4QTMsIDB4MjMsIDB4REQsIDB4NTEsIDB4QUYsIDB4M0EsIDB4QzMsIDB4NUMsIDB4RjksIDB4Q0UsIDB4QkEsIDB4QzUsIDB4RUEsIDB4MjYsCgogIDB4MkMsIDB4NTMsIDB4MEQsIDB4NkUsIDB4ODUsIDB4MjgsIDB4ODQsIDB4MDksIDB4RDMsIDB4REYsIDB4Q0QsIDB4RjQsIDB4NDEsIDB4ODEsIDB4NEQsIDB4NTIsCgogIDB4NkEsIDB4REMsIDB4MzcsIDB4QzgsIDB4NkMsIDB4QzEsIDB4QUIsIDB4RkEsIDB4MjQsIDB4RTEsIDB4N0IsIDB4MDgsIDB4MEMsIDB4QkQsIDB4QjEsIDB4NEEsCgogIDB4NzgsIDB4ODgsIDB4OTUsIDB4OEIsIDB4RTMsIDB4NjMsIDB4RTgsIDB4NkQsIDB4RTksIDB4Q0IsIDB4RDUsIDB4RkUsIDB4M0IsIDB4MDAsIDB4MUQsIDB4MzksCgogIDB4RjIsIDB4RUYsIDB4QjcsIDB4MEUsIDB4NjYsIDB4NTgsIDB4RDAsIDB4RTQsIDB4QTYsIDB4NzcsIDB4NzIsIDB4RjgsIDB4RUIsIDB4NzUsIDB4NEIsIDB4MEEsCgogIDB4MzEsIDB4NDQsIDB4NTAsIDB4QjQsIDB4OEYsIDB4RUQsIDB4MUYsIDB4MUEsIDB4REIsIDB4OTksIDB4OEQsIDB4MzMsIDB4OUYsIDB4MTEsIDB4ODMsIDB4MTQgfTsKCgoKbG9jYWwgWE9SID0gQml0LmJ4b3I7CgoKCmxvY2FsIE1EMiA9IGZ1bmN0aW9uKHN0cmVhbSkKCiAgICBsb2NhbCBxdWV1ZSA9IFF1ZXVlKCk7CgogICAgbG9jYWwgcHVibGljID0ge30KCgoKICAgIGxvY2FsIFggPSB7fTsKCiAgICBmb3IgaSA9IDAsIDQ3IGRvCgogICAgICAgIFhbaV0gPSAweDAwOwoKICAgIGVuZAoKCgogICAgbG9jYWwgQyA9IHt9OwoKICAgIGZvciBpID0gMCwgMTUgZG8KCiAgICAgICAgQ1tpXSA9IDB4MDA7CgogICAgZW5kCgoKCiAgICBsb2NhbCBwcm9jZXNzQmxvY2sgPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGJsb2NrID0ge307CgoKCiAgICAgICAgZm9yIGkgPSAwLCAxNSBkbwoKICAgICAgICAgICAgYmxvY2tbaV0gPSBxdWV1ZS5wb3AoKTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgZm9yIGkgPSAwLCAxNSBkbwoKICAgICAgICAgICAgWFtpICsgMTZdID0gYmxvY2tbaV07CgogICAgICAgICAgICBYW2kgKyAzMl0gPSBYT1IoWFtpXSwgYmxvY2tbaV0pOyAtLW1peAoKICAgICAgICBlbmQKCgoKICAgICAgICBsb2NhbCB0OwoKCgogICAgICAgIC0tdXBkYXRlIGJsb2NrCgogICAgICAgIHQgPSAwOwoKICAgICAgICBmb3IgaSA9IDAsIDE3IGRvCgogICAgICAgICAgICBmb3IgaiA9IDAsIDQ3IGRvCgogICAgICAgICAgICAgICAgWFtqXSA9IFhPUihYW2pdLCBTVUJTVFt0ICsgMV0pOwoKICAgICAgICAgICAgICAgIHQgPSBYW2pdOwoKICAgICAgICAgICAgZW5kCgogICAgICAgICAgICB0ID0gKHQgKyBpKSAlIDI1NjsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgLS11cGRhdGUgY2hlY2tzdW0KCiAgICAgICAgdCA9IENbMTVdOwoKICAgICAgICBmb3IgaSA9IDAsIDE1IGRvCgogICAgICAgICAgICBDW2ldID0gWE9SKENbaV0sIFNVQlNUW1hPUihibG9ja1tpXSwgdCkgKyAxXSk7CgogICAgICAgICAgICB0ID0gQ1tpXTsKCiAgICAgICAgZW5kCgoKCiAgICBlbmQKCgoKICAgIGZvciBiIGluIHN0cmVhbSBkbwoKICAgICAgICBxdWV1ZS5wdXNoKGIpOwoKICAgICAgICBpZihxdWV1ZS5zaXplKCkgPj0gMTYpIHRoZW4gcHJvY2Vzc0Jsb2NrKCk7IGVuZAoKICAgIGVuZAoKCgogICAgbG9jYWwgaSA9IDE2IC0gcXVldWUuc2l6ZSgpOwoKCgogICAgd2hpbGUgcXVldWUuc2l6ZSgpIDwgMTYgZG8KCiAgICAgICAgcXVldWUucHVzaChpKTsKCiAgICBlbmQKCgoKICAgIHByb2Nlc3NCbG9jaygpOwoKCgogICAgcXVldWUucHVzaChDWyAwXSk7IHF1ZXVlLnB1c2goQ1sgMV0pOyBxdWV1ZS5wdXNoKENbIDJdKTsgcXVldWUucHVzaChDWyAzXSk7CgogICAgcXVldWUucHVzaChDWyA0XSk7IHF1ZXVlLnB1c2goQ1sgNV0pOyBxdWV1ZS5wdXNoKENbIDZdKTsgcXVldWUucHVzaChDWyA3XSk7CgogICAgcXVldWUucHVzaChDWyA4XSk7IHF1ZXVlLnB1c2goQ1sgOV0pOyBxdWV1ZS5wdXNoKENbMTBdKTsgcXVldWUucHVzaChDWzExXSk7CgogICAgcXVldWUucHVzaChDWzEyXSk7IHF1ZXVlLnB1c2goQ1sxM10pOyBxdWV1ZS5wdXNoKENbMTRdKTsgcXVldWUucHVzaChDWzE1XSk7CgoKCiAgICBwcm9jZXNzQmxvY2soKTsKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4ge1hbIDBdLCBYWyAxXSwgWFsgMl0sIFhbIDNdLCBYWyA0XSwgWFsgNV0sIFhbIDZdLCBYWyA3XSwKCiAgICAgICAgICAgICAgICBYWyA4XSwgWFsgOV0sIFhbMTBdLCBYWzExXSwgWFsxMl0sIFhbMTNdLCBYWzE0XSwgWFsxNV19OwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gc3RyaW5nLmZvcm1hdCgiJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCgogICAgICAgICAgICAgICAgWFsgMF0sIFhbIDFdLCBYWyAyXSwgWFsgM10sIFhbIDRdLCBYWyA1XSwgWFsgNl0sIFhbIDddLAoKICAgICAgICAgICAgICAgIFhbIDhdLCBYWyA5XSwgWFsxMF0sIFhbMTFdLCBYWzEyXSwgWFsxM10sIFhbMTRdLCBYWzE1XSk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBzdHJpbmcucGFjayhzdHJpbmcucmVwKCdCJywgMTYpLAoKICAgICAgICAgICAgICAgIFhbIDBdLCBYWyAxXSwgWFsgMl0sIFhbIDNdLCBYWyA0XSwgWFsgNV0sIFhbIDZdLCBYWyA3XSwKCiAgICAgICAgICAgICAgICBYWyA4XSwgWFsgOV0sIFhbMTBdLCBYWzExXSwgWFsxMl0sIFhbMTNdLCBYWzE0XSwgWFsxNV0pOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCnJldHVybiBNRDI7AAAAAABsb2NhbCBpc3NhYyA9IHJlcXVpcmUoIi5jcnlwdG8uY2lwaGVyLmlzc2FjIikKCmxvY2FsIG1vcnVzID0gcmVxdWlyZSgiLmNyeXB0by5jaXBoZXIubW9ydXMiKQoKbG9jYWwgYWVzID0gcmVxdWlyZSgiLmNyeXB0by5jaXBoZXIuYWVzIikKCmxvY2FsIG5vcnggPSByZXF1aXJlKCIuY3J5cHRvLmNpcGhlci5ub3J4IikKCgoKbG9jYWwgY2lwaGVyID0gewoKICAgIF92ZXJzaW9uID0gIjAuMC4xIiwKCiAgICBpc3NhYyA9IGlzc2FjLAoKICAgIG1vcnVzID0gbW9ydXMsCgogICAgYWVzID0gYWVzLAoKICAgIG5vcnggPSBub3J4Cgp9OwoKCgpyZXR1cm4gY2lwaGVyAGxvY2FsIFN0cmVhbSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5zdHJlYW0iKQoKbG9jYWwgSGV4ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmhleCIpCgpsb2NhbCBBcnJheSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5hcnJheSIpCgoKCi0tIENpcGhlcnMKCmxvY2FsIEFFUzEyOENpcGhlciA9IHJlcXVpcmUoIi5jcnlwdG8uY2lwaGVyLmFlczEyOCIpCgpsb2NhbCBBRVMxOTJDaXBoZXIgPSByZXF1aXJlKCIuY3J5cHRvLmNpcGhlci5hZXMxOTIiKQoKbG9jYWwgQUVTMjU2Q2lwaGVyID0gcmVxdWlyZSgiLmNyeXB0by5jaXBoZXIuYWVzMjU2IikKCgoKLS0gTW9kZXMKCmxvY2FsIENCQ01vZGUgPSByZXF1aXJlKCIuY3J5cHRvLmNpcGhlci5tb2RlLmNiYyIpCgpsb2NhbCBFQ0JNb2RlID0gcmVxdWlyZSgiLmNyeXB0by5jaXBoZXIubW9kZS5lY2IiKQoKbG9jYWwgQ0ZCTW9kZSA9IHJlcXVpcmUoIi5jcnlwdG8uY2lwaGVyLm1vZGUuY2ZiIikKCmxvY2FsIE9GQk1vZGUgPSByZXF1aXJlKCIuY3J5cHRvLmNpcGhlci5tb2RlLm9mYiIpCgpsb2NhbCBDVFJNb2RlID0gcmVxdWlyZSgiLmNyeXB0by5jaXBoZXIubW9kZS5jdHIiKQoKCgotLSBQYWRkaW5nCgpsb2NhbCBaZXJvUGFkZGluZyA9IHJlcXVpcmUoIi5jcnlwdG8ucGFkZGluZy56ZXJvIikKCgoKbG9jYWwgcHVibGljID0ge30KCgoKbG9jYWwgZ2V0QmxvY2tDaXBoZXIgPSBmdW5jdGlvbihrZXlMZW5ndGgpCgogICAgaWYga2V5TGVuZ3RoID09IDEyOCB0aGVuCgogICAgICAgIHJldHVybiBBRVMxMjhDaXBoZXIKCiAgICBlbHNlaWYga2V5TGVuZ3RoID09IDE5MiB0aGVuCgogICAgICAgIHJldHVybiBBRVMxOTJDaXBoZXIKCiAgICBlbHNlaWYga2V5TGVuZ3RoID09IDI1NiB0aGVuCgogICAgICAgIHJldHVybiBBRVMyNTZDaXBoZXIKCiAgICBlbHNlaWYga2V5TGVuZ3RoID09IG5pbCB0aGVuCgogICAgICAgIHJldHVybiBBRVMxMjhDaXBoZXIKCiAgICBlbHNlCgogICAgICAgIHJldHVybiBuaWwKCiAgICBlbmQKCmVuZAoKCgpsb2NhbCBnZXRNb2RlID0gZnVuY3Rpb24obW9kZSkKCiAgICBpZiBtb2RlID09ICJDQkMiIHRoZW4KCiAgICAgICAgcmV0dXJuIENCQ01vZGUKCiAgICBlbHNlaWYgbW9kZSA9PSAiRUNCIiB0aGVuCgogICAgICAgIHJldHVybiBFQ0JNb2RlCgogICAgZWxzZWlmIG1vZGUgPT0gIkNGQiIgdGhlbgoKICAgICAgICByZXR1cm4gQ0ZCTW9kZQoKICAgIGVsc2VpZiBtb2RlID09ICJPRkIiIHRoZW4KCiAgICAgICAgcmV0dXJuIE9GQk1vZGUKCiAgICBlbHNlaWYgbW9kZSA9PSAiQ1RSIiB0aGVuCgogICAgICAgIHJldHVybiBDVFJNb2RlCgogICAgZWxzZQoKICAgICAgICByZXR1cm4gbmlsCgogICAgZW5kCgplbmQKCgoKCgotLS0gRW5jcnlwdHMgdGhlIGdpdmVuIGRhdGEgdXNpbmcgQUVTIGVuY3J5cHRpb24uCgotLS0gQHBhcmFtIGRhdGEgc3RyaW5nIC0gVGhlIGRhdGEgdG8gYmUgZW5jcnlwdGVkLgoKLS0tIEBwYXJhbSBrZXkgc3RyaW5nIC0gVGhlIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpb24uCgotLS0gQHBhcmFtIGl2PyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlIGZvciBlbmNyeXB0aW9uLiBEZWZhdWx0cyB0byAxNiBudWxsIGJ5dGVzLgoKLS0tIEBwYXJhbSBtb2RlPyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBtb2RlIHRvIHVzZSBmb3IgZW5jcnlwdGlvbi4gRGVmYXVsdHMgdG8gIkNCQyIuCgotLS0gQHBhcmFtIGtleUxlbmd0aD8gbnVtYmVyIChvcHRpb25hbCkgLSBUaGUgbGVuZ3RoIG9mIHRoZSBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uLiBEZWZhdWx0cyB0byAxMjguCgotLS0gQHJldHVybnMgdGFibGUgLSBBIHRhYmxlIGNvbnRhaW5pbmcgdGhlIGVuY3J5cHRlZCBkYXRhIGluIGJ5dGVzLCBoZXgsIGFuZCBzdHJpbmcgZm9ybWF0cy4KCnB1YmxpYy5lbmNyeXB0ID0gZnVuY3Rpb24oZGF0YSwga2V5LCBpdiwgbW9kZSwga2V5TGVuZ3RoKQoKICAgIGxvY2FsIGQgPSBBcnJheS5mcm9tU3RyaW5nKGRhdGEpCgogICAgbG9jYWwgayA9IEFycmF5LmZyb21TdHJpbmcoa2V5KQoKICAgIGxvY2FsIF9pdiA9IGl2IH49IG5pbCBhbmQgQXJyYXkuZnJvbVN0cmluZyhpdikgb3IgQXJyYXkuZnJvbUhleCgiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKQoKCgogICAgbG9jYWwgY2lwaGVyTW9kZSA9IGdldE1vZGUobW9kZSkgb3IgQ0JDTW9kZQoKICAgIGxvY2FsIGJsb2NrQ2lwaGVyID0gZ2V0QmxvY2tDaXBoZXIoa2V5TGVuZ3RoKSBvciBBRVMxMjhDaXBoZXIKCgoKICAgIGxvY2FsIGNpcGhlciA9IGNpcGhlck1vZGUuQ2lwaGVyKCkKCiAgICAgICAgLnNldEtleShrKQoKICAgICAgICAuc2V0QmxvY2tDaXBoZXIoYmxvY2tDaXBoZXIpCgogICAgICAgIC5zZXRQYWRkaW5nKFplcm9QYWRkaW5nKTsKCgoKCgogICAgbG9jYWwgY2lwaGVyT3V0cHV0ID0gY2lwaGVyCgogICAgICAgIC5pbml0KCkKCiAgICAgICAgLnVwZGF0ZShTdHJlYW0uZnJvbUFycmF5KF9pdikpCgogICAgICAgIC51cGRhdGUoU3RyZWFtLmZyb21BcnJheShkKSkKCiAgICAgICAgLmZpbmlzaCgpCgoKCiAgICBsb2NhbCByZXN1bHRzID0ge30KCgoKICAgIHJlc3VsdHMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGNpcGhlck91dHB1dC5hc0J5dGVzKCkKCiAgICBlbmQKCgoKICAgIHJlc3VsdHMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBjaXBoZXJPdXRwdXQuYXNIZXgoKQoKICAgIGVuZAoKCgogICAgcmVzdWx0cy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGNpcGhlck91dHB1dC5hc1N0cmluZygpCgogICAgZW5kCgoKCiAgICByZXR1cm4gcmVzdWx0cwoKZW5kCgoKCi0tLSBEZWNyeXB0cyB0aGUgZ2l2ZW4gZGF0YSB1c2luZyBBRVMgZGVjcnlwdGlvbi4KCi0tLSBAcGFyYW0gY2lwaGVyIHN0cmluZyAtIFRoZSBoZXggZW5jb2RlZCBjaXBoZXIgdG8gYmUgZGVjcnlwdGVkLgoKLS0tIEBwYXJhbSBrZXkgc3RyaW5nIC0gVGhlIGtleSB0byB1c2UgZm9yIGRlY3J5cHRpb24uCgotLS0gQHBhcmFtIGl2PyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlIGZvciBkZWNyeXB0aW9uLiBEZWZhdWx0cyB0byAxNiBudWxsIGJ5dGVzLgoKLS0tIEBwYXJhbSBtb2RlPyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBtb2RlIHRvIHVzZSBmb3IgZGVjcnlwdGlvbi4gRGVmYXVsdHMgdG8gIkNCQyIuCgotLS0gQHBhcmFtIGtleUxlbmd0aD8gbnVtYmVyIChvcHRpb25hbCkgLSBUaGUgbGVuZ3RoIG9mIHRoZSBrZXkgdG8gdXNlIGZvciBkZWNyeXB0aW9uLiBEZWZhdWx0cyB0byAxMjguCgpwdWJsaWMuZGVjcnlwdCA9IGZ1bmN0aW9uKGNpcGhlciwga2V5LCBpdiwgbW9kZSwga2V5TGVuZ3RoKQoKICAgIGxvY2FsIGNpcGhlclRleHQgPSBBcnJheS5mcm9tSGV4KGNpcGhlcikKCiAgICBsb2NhbCBrID0gQXJyYXkuZnJvbVN0cmluZyhrZXkpCgogICAgbG9jYWwgX2l2ID0gaXYgfj0gbmlsIGFuZCBBcnJheS5mcm9tU3RyaW5nKGl2KSBvciBBcnJheS5mcm9tSGV4KCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpCgoKCiAgICBsb2NhbCBjaXBoZXJNb2RlID0gZ2V0TW9kZShtb2RlKSBvciBDQkNNb2RlCgogICAgbG9jYWwgYmxvY2tDaXBoZXIgPSBnZXRCbG9ja0NpcGhlcihrZXlMZW5ndGgpIG9yIEFFUzEyOENpcGhlcgoKCgoKCiAgICBsb2NhbCBkZWNpcGhlciA9IGNpcGhlck1vZGUuRGVjaXBoZXIoKQoKICAgICAgICAgICAgLnNldEtleShrKQoKICAgICAgICAgICAgLnNldEJsb2NrQ2lwaGVyKGJsb2NrQ2lwaGVyKQoKICAgICAgICAgICAgLnNldFBhZGRpbmcoWmVyb1BhZGRpbmcpOwoKCgoKCiAgICBsb2NhbCBwbGFpbk91dHB1dCA9IGRlY2lwaGVyCgogICAgICAgIC5pbml0KCkKCiAgICAgICAgLnVwZGF0ZShTdHJlYW0uZnJvbUFycmF5KF9pdikpCgogICAgICAgIC51cGRhdGUoU3RyZWFtLmZyb21BcnJheShjaXBoZXJUZXh0KSkKCiAgICAgICAgLmZpbmlzaCgpCgoKCiAgICBsb2NhbCByZXN1bHRzID0ge30KCgoKICAgIHJlc3VsdHMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIHBsYWluT3V0cHV0LmFzQnl0ZXMoKQoKICAgIGVuZAoKCgogICAgcmVzdWx0cy5hc0hleCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIHBsYWluT3V0cHV0LmFzSGV4KCkKCiAgICBlbmQKCgoKICAgIHJlc3VsdHMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBwbGFpbk91dHB1dC5hc1N0cmluZygpCgogICAgZW5kCgoKCiAgICByZXR1cm4gcmVzdWx0cwoKZW5kCgoKCgoKcmV0dXJuIHB1YmxpYwoAbG9jYWwgSGV4ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmhleCIpOwoKCgotLSBFeHRlcm5hbCBSZXN1bHRzCgpsb2NhbCByYW5kUnNsID0ge307Cgpsb2NhbCByYW5kQ250ID0gMDsKCgoKLS0gSW50ZXJuYWwgU3RhdGUKCmxvY2FsIG1tID0ge307Cgpsb2NhbCBhYSxiYixjYyA9IDAsMCwwOwoKCgotLSBDYXAgdG8gbWFpbnRhaW4gMzIgYml0IG1hdGhzCgpsb2NhbCBjYXAgPSAweDEwMDAwMDAwMDsKCgoKLS0gQ2lwaGVyTW9kZQoKbG9jYWwgRU5DUllQVCA9IDE7Cgpsb2NhbCBERUNSWVBUID0gMjsKCgoKbG9jYWwgZnVuY3Rpb24gaXNhYWMoKQoKICBjYyA9ICggY2MgKyAxICApICUgY2FwOyAtLSBjYyBqdXN0IGdldHMgaW5jcmVtZW50ZWQgb25jZSBwZXIgMjU2IHJlc3VsdHMKCiAgYmIgPSAoIGJiICsgY2MgKSAlIGNhcDsgLS0gdGhlbiBjb21iaW5lZCB3aXRoIGJiCgoKCiAgZm9yIGkgPSAwLDI1NSBkbwoKICAgIGxvY2FsICAgeCAgICA9IG1tW2ldOwoKICAgIGxvY2FsICAgeTsKCiAgICBsb2NhbCAgIGltb2QgPSBpICUgNDsKCiAgICBpZiAgICAgIGltb2QgPT0gMCB0aGVuIGFhID0gYWEgfiAoYWEgPDwgMTMpOwoKICAgIGVsc2VpZiAgaW1vZCA9PSAxIHRoZW4gYWEgPSBhYSB+IChhYSA+PiA2KTsKCiAgICBlbHNlaWYgIGltb2QgPT0gMiB0aGVuIGFhID0gYWEgfiAoYWEgPDwgMik7CgogICAgZWxzZWlmICBpbW9kID09IDMgdGhlbiBhYSA9IGFhIH4gKGFhID4+IDE2KTsKCiAgICBlbmQKCiAgICBhYSAgICAgICAgID0gKCBtbVsoaSsxMjgpJTI1Nl0gKyBhYSApICUgY2FwOwoKICAgIHkgICAgICAgICAgPSAoIG1tWyh4Pj4yKSAlIDI1Nl0gKyBhYSArIGJiICkgJSBjYXA7CgogICAgbW1baV0gICAgICA9IHk7CgogICAgYmIgICAgICAgICA9ICggbW1bKHk+PjEwKSUyNTZdICsgeCApICUgY2FwOwoKICAgIHJhbmRSc2xbaV0gPSBiYjsKCiAgZW5kCgoKCiAgcmFuZENudCA9IDA7IC0tIFByZXBhcmUgdG8gdXNlIHRoZSBmaXJzdCBzZXQgb2YgcmVzdWx0cy4KCgoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIG1peChhKQoKICBhWzBdID0gKCBhWzBdIH4gKCBhWzFdIDw8IDExICkgKSAlIGNhcDsgIGFbM10gPSAoIGFbM10gKyBhWzBdICkgJSBjYXA7ICBhWzFdID0gKCBhWzFdICsgYVsyXSApICUgY2FwOwoKICBhWzFdID0gKCBhWzFdIH4gKCBhWzJdID4+ICAyICkgKSAlIGNhcDsgIGFbNF0gPSAoIGFbNF0gKyBhWzFdICkgJSBjYXA7ICBhWzJdID0gKCBhWzJdICsgYVszXSApICUgY2FwOwoKICBhWzJdID0gKCBhWzJdIH4gKCBhWzNdIDw8ICA4ICkgKSAlIGNhcDsgIGFbNV0gPSAoIGFbNV0gKyBhWzJdICkgJSBjYXA7ICBhWzNdID0gKCBhWzNdICsgYVs0XSApICUgY2FwOwoKICBhWzNdID0gKCBhWzNdIH4gKCBhWzRdID4+IDE2ICkgKSAlIGNhcDsgIGFbNl0gPSAoIGFbNl0gKyBhWzNdICkgJSBjYXA7ICBhWzRdID0gKCBhWzRdICsgYVs1XSApICUgY2FwOwoKICBhWzRdID0gKCBhWzRdIH4gKCBhWzVdIDw8IDEwICkgKSAlIGNhcDsgIGFbN10gPSAoIGFbN10gKyBhWzRdICkgJSBjYXA7ICBhWzVdID0gKCBhWzVdICsgYVs2XSApICUgY2FwOwoKICBhWzVdID0gKCBhWzVdIH4gKCBhWzZdID4+ICA0ICkgKSAlIGNhcDsgIGFbMF0gPSAoIGFbMF0gKyBhWzVdICkgJSBjYXA7ICBhWzZdID0gKCBhWzZdICsgYVs3XSApICUgY2FwOwoKICBhWzZdID0gKCBhWzZdIH4gKCBhWzddIDw8ICA4ICkgKSAlIGNhcDsgIGFbMV0gPSAoIGFbMV0gKyBhWzZdICkgJSBjYXA7ICBhWzddID0gKCBhWzddICsgYVswXSApICUgY2FwOwoKICBhWzddID0gKCBhWzddIH4gKCBhWzBdID4+ICA5ICkgKSAlIGNhcDsgIGFbMl0gPSAoIGFbMl0gKyBhWzddICkgJSBjYXA7ICBhWzBdID0gKCBhWzBdICsgYVsxXSApICUgY2FwOwoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHJhbmRJbml0KGZsYWcpCgoKCiAgLS0gVGhlIGdvbGRlbiByYXRpbyBpbiAzMiBiaXQKCiAgLS0gbWF0aC5mbG9vcigoKChtYXRoLnNxcnQoNSkrMSkvMiklMSkqMl4zMikgPT0gMjY1NDQzNTc2OSA9PSAweDllMzc3OWI5CgogIGxvY2FsIGEgPSB7IFswXSA9IDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIDB4OWUzNzc5YjksIH07CgoKCiAgYWEsYmIsY2MgPSAwLDAsMDsKCgoKICBmb3IgaSA9IDEsNCBkbyAgbWl4KGEpICBlbmQgLS0gU2NyYW1ibGUgaXQuCgoKCiAgZm9yIGkgPSAwLDI1NSw4IGRvIC0tIEZpbGwgaW4gbW1bXSB3aXRoIG1lc3N5IHN0dWZmLgoKICAgIGlmIGZsYWcgdGhlbiAtLSBVc2UgYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VlZC4KCiAgICAgIGZvciBqID0gMCw3IGRvCgogICAgICAgIGFbal0gPSAoIGFbal0gKyByYW5kUnNsW2kral0gKSAlIGNhcDsKCiAgICAgIGVuZAoKICAgIGVuZAoKICAgIG1peChhKTsKCiAgICBmb3IgaiA9IDAsNyBkbwoKICAgICAgbW1baStqXSA9IGFbal07CgogICAgZW5kCgogIGVuZAoKCgogIGlmIGZsYWcgdGhlbgoKICAgIC0tIERvIGEgc2Vjb25kIHBhc3MgdG8gbWFrZSBhbGwgb2YgdGhlIHNlZWQgYWZmZWN0IGFsbCBvZiBtbS4KCiAgICBmb3IgaSA9IDAsMjU1LDggZG8KCiAgICAgIGZvciBqID0gMCw3IGRvCgogICAgICAgIGFbal0gPSAoIGFbal0gKyBtbVtpK2pdICkgJSBjYXA7CgogICAgICBlbmQKCiAgICAgIG1peChhKTsKCiAgICAgIGZvciBqID0gMCw3IGRvCgogICAgICAgIG1tW2kral0gPSBhW2pdOwoKICAgICAgZW5kCgogICAgZW5kCgogIGVuZAoKCgogIGlzYWFjKCk7IC0tIEZpbGwgaW4gdGhlIGZpcnN0IHNldCBvZiByZXN1bHRzLgoKICByYW5kQ250ID0gMDsgLS0gUHJlcGFyZSB0byB1c2UgdGhlIGZpcnN0IHNldCBvZiByZXN1bHRzLgoKCgplbmQKCgoKLS0tIFNlZWRzIHRoZSBJU0FBQyByYW5kb20gbnVtYmVyIGdlbmVyYXRvciB3aXRoIHRoZSBnaXZlbiBzZWVkLgoKLS0tIEBwYXJhbSBzZWVkIHN0cmluZyAtIFRoZSBzZWVkIHRvIHVzZSBmb3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgoKLS0tIEBwYXJhbSBmbGFnPyBib29sZWFuIC0gV2hldGhlciB0byB1c2UgYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VlZC4gRGVmYXVsdHMgdG8gdHJ1ZS4KCmxvY2FsIGZ1bmN0aW9uIHNlZWRJc2FhYyhzZWVkLCBmbGFnKQoKICBsb2NhbCBzZWVkTGVuZ3RoID0gI3NlZWQ7CgogIGZvciBpID0gMCwyNTUgZG8gbW1baV0gPSAwOyBlbmQKCiAgZm9yIGkgPSAwLDI1NSBkbyByYW5kUnNsW2ldID0gc2VlZDpieXRlKGkrMSxpKzEpIG9yIDA7IGVuZAoKICByYW5kSW5pdChmbGFnKTsKCmVuZAoKCgotLS0gUmV0cmlldmVzIGEgcmFuZG9tIG51bWJlciBmcm9tIHRoZSBJU0FBQyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgoKLS0tIEByZXR1cm4gbnVtYmVyOiBUaGUgcmFuZG9tIG51bWJlcgoKbG9jYWwgZnVuY3Rpb24gZ2V0UmFuZG9tKCkKCiAgICBsb2NhbCByZXN1bHQgPSByYW5kUnNsW3JhbmRDbnRdOwoKICAgIHJhbmRDbnQgPSByYW5kQ250ICsgMTsKCiAgICBpZiByYW5kQ250ID4gMjU1IHRoZW4KCiAgICAgICAgaXNhYWMoKTsKCiAgICAgICAgcmFuZENudCA9IDA7CgogICAgZW5kCgogICAgcmV0dXJuIHJlc3VsdDsKCmVuZAoKCgotLS0gR2V0IGEgcmFuZG9tIDMyLWJpdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS4KCi0tLSBAcGFyYW0gbWluPyBudW1iZXIgKG9wdGlvbmFsKSAtIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSByYW5nZS4gRGVmYXVsdHMgdG8gMC4KCi0tLSBAcGFyYW0gbWF4PyBudW1iZXIgKG9wdGlvbmFsKSAtIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByYW5nZS4gRGVmYXVsdHMgdG8gMl4zMS0xLgoKLS0tIEBwYXJhbSBzZWVkPyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBzZWVkIHRvIHVzZSBmb3IgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgoKLS0tIEByZXR1cm4gbnVtYmVyOiBUaGUgcmFuZG9tIDMyLWJpdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS4KCmxvY2FsIGZ1bmN0aW9uIHJhbmRvbShtaW4sIG1heCwgc2VlZCkKCiAgICBsb2NhbCBtaW4gPSBtaW4gb3IgMDsKCiAgICBsb2NhbCBtYXggPSBtYXggb3IgMl4zMS0xOwoKICAgIGlmIHNlZWQgdGhlbgoKICAgICAgc2VlZElzYWFjKHNlZWQsIHRydWUpOwoKICAgIGVsc2UKCiAgICAgIHNlZWRJc2FhYyh0b3N0cmluZyhtYXRoLnJhbmRvbSgyXjMxLTEpKSwgZmFsc2UpOwoKICAgIGVuZAoKICAgIHJldHVybiAoZ2V0UmFuZG9tKCkgJSAobWF4IC0gbWluICsgMSkpICsgbWluOwoKZW5kCgoKCgoKLS0tIEdldCBhIHJhbmRvbSBjaGFyYWN0ZXIgaW4gcHJpbnRhYmxlIEFTQ0lJIHJhbmdlLgoKLS0tIEByZXR1cm4gbnVtYmVyOiBUaGUgcmFuZG9tIGNoYXJhY3RlciBbMzIsIDEyNl0uCgpsb2NhbCBmdW5jdGlvbiBnZXRSYW5kb21DaGFyKCkKCiAgICByZXR1cm4gZ2V0UmFuZG9tKCkgJSA5NSArIDMyOwoKZW5kCgoKCi0tIENhZXNhci1zaGlmdCBhIGNoYXJhY3RlciA8c2hpZnQ+IHBsYWNlczogR2VuZXJhbGl6ZWQgVmlnZW5lcmUKCmxvY2FsIGZ1bmN0aW9uIGNhZXNhcihtLCBjaCwgc2hpZnQsIG1vZHVsbywgc3RhcnQpCgogIGxvY2FsIG4KCiAgbG9jYWwgc2kgPSAxCgogIGlmIG0gPT0gREVDUllQVCB0aGVuIHNoaWZ0ID0gc2hpZnQqLTEgOyBlbmQKCiAgbiA9IChjaCAtIHN0YXJ0KSArIHNoaWZ0OwoKICBpZiBuIDwgMCB0aGVuIHNpLG4gPSAtMSxuKi0xIDsgZW5kCgogIG4gPSAoIG4gJSBtb2R1bG8gKSAqIHNpOwoKICBpZiBuIDwgMCB0aGVuIG4gPSBuICsgbW9kdWxvIDsgZW5kCgogIHJldHVybiBzdGFydCArIG47CgplbmQKCgoKLS0tIEVuY3J5cHRzIGEgbWVzc2FnZSB1c2luZyB0aGUgSVNTQUMgY2lwaGVyIGFsZ29yaXRobS4KCi0tLSBAcGFyYW0gbXNnIHN0cmluZyAtIFRoZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZC4KCi0tLSBAcGFyYW0ga2V5IHN0cmluZyAtIFRoZSBrZXkgdXNlZCBmb3IgZW5jcnlwdGlvbi4KCi0tLSBAcmV0dXJucyB0YWJsZSAtIEEgdGFibGUgY29udGFpbmluZyB0aGUgZW5jcnlwdGVkIG1lc3NhZ2UgaW4gYnl0ZXMsIHN0cmluZywgYW5kIGhleCBmb3JtYXRzLgoKbG9jYWwgZnVuY3Rpb24gZW5jcnlwdChtc2csIGtleSkKCiAgICBzZWVkSXNhYWMoa2V5LCB0cnVlKTsKCiAgICBsb2NhbCBtc2dMZW5ndGggPSAjbXNnOwoKICAgIGxvY2FsIGRlc3RpbmF0aW9uID0ge307CgogICAgCgogICAgZm9yIGkgPSAxLCBtc2dMZW5ndGggZG8gCgogICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc3RyaW5nLmNoYXIoY2Flc2FyKDEsIG1zZzpieXRlKGksIGkpLCBnZXRSYW5kb21DaGFyKCksIDk1LCAzMikpOwoKICAgIGVuZAoKICAgIAoKICAgIGxvY2FsIGVuY3J5cHRlZCA9IGRlc3RpbmF0aW9uCgoKCiAgICBsb2NhbCBwdWJsaWMgPSB7fQoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gZW5jcnlwdGVkCgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiB0YWJsZS5jb25jYXQoZW5jcnlwdGVkKQoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gSGV4LnN0cmluZ1RvSGV4KHRhYmxlLmNvbmNhdChlbmNyeXB0ZWQpKQoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYwoKZW5kCgoKCi0tLSBEZWNyeXB0cyBhbiBlbmNyeXB0ZWQgbWVzc2FnZSB1c2luZyB0aGUgSVNTQUMgY2lwaGVyIGFsZ29yaXRobS4KCi0tLSBAcGFyYW0gZW5jcnlwdGVkIHN0cmluZyAtIFRoZSBlbmNyeXB0ZWQgbWVzc2FnZSB0byBiZSBkZWNyeXB0ZWQuCgotLS0gQHBhcmFtIGtleSBzdHJpbmcgLSBUaGUga2V5IHVzZWQgZm9yIGVuY3J5cHRpb24uCgotLS0gQHJldHVybnMgc3RyaW5nIC0gVGhlIGRlY3J5cHRlZCBtZXNzYWdlLgoKbG9jYWwgZnVuY3Rpb24gZGVjcnlwdChlbmNyeXB0ZWQsIGtleSkKCiAgICBzZWVkSXNhYWMoa2V5LCB0cnVlKTsKCiAgICBsb2NhbCBtc2dMZW5ndGggPSAjZW5jcnlwdGVkOwoKICAgIGxvY2FsIGRlc3RpbmF0aW9uID0ge307CgogICAgCgogICAgZm9yIGkgPSAxLCBtc2dMZW5ndGggZG8gCgogICAgICAgIGRlc3RpbmF0aW9uW2ldID0gc3RyaW5nLmNoYXIoY2Flc2FyKDIsIGVuY3J5cHRlZDpieXRlKGksIGkpLCBnZXRSYW5kb21DaGFyKCksIDk1LCAzMikpOwoKICAgIGVuZAoKICAgIAoKICAgIHJldHVybiB0YWJsZS5jb25jYXQoZGVzdGluYXRpb24pOwoKZW5kCgoKCnJldHVybiB7CgogICAgc2VlZElzYWFjID0gc2VlZElzYWFjLAoKICAgIGdldFJhbmRvbUNoYXIgPSBnZXRSYW5kb21DaGFyLAoKICAgIHJhbmRvbSA9IHJhbmRvbSwKCiAgICBnZXRSYW5kb20gPSBnZXRSYW5kb20sCgogICAgZW5jcnlwdCA9IGVuY3J5cHQsCgogICAgZGVjcnlwdCA9IGRlY3J5cHQKCn0AAAAAbG9jYWwgQXJyYXkgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYXJyYXkiKTsKCmxvY2FsIEJpdCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5iaXQiKTsKCgoKbG9jYWwgWE9SID0gQml0LmJ4b3I7CgoKCmxvY2FsIFNCT1ggPSB7CgogWzBdID0gMHg2MywgMHg3QywgMHg3NywgMHg3QiwgMHhGMiwgMHg2QiwgMHg2RiwgMHhDNSwgMHgzMCwgMHgwMSwgMHg2NywgMHgyQiwgMHhGRSwgMHhENywgMHhBQiwgMHg3NiwKCiAweENBLCAweDgyLCAweEM5LCAweDdELCAweEZBLCAweDU5LCAweDQ3LCAweEYwLCAweEFELCAweEQ0LCAweEEyLCAweEFGLCAweDlDLCAweEE0LCAweDcyLCAweEMwLAoKIDB4QjcsIDB4RkQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M0YsIDB4RjcsIDB4Q0MsIDB4MzQsIDB4QTUsIDB4RTUsIDB4RjEsIDB4NzEsIDB4RDgsIDB4MzEsIDB4MTUsCgogMHgwNCwgMHhDNywgMHgyMywgMHhDMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5QSwgMHgwNywgMHgxMiwgMHg4MCwgMHhFMiwgMHhFQiwgMHgyNywgMHhCMiwgMHg3NSwKCiAweDA5LCAweDgzLCAweDJDLCAweDFBLCAweDFCLCAweDZFLCAweDVBLCAweEEwLCAweDUyLCAweDNCLCAweEQ2LCAweEIzLCAweDI5LCAweEUzLCAweDJGLCAweDg0LAoKIDB4NTMsIDB4RDEsIDB4MDAsIDB4RUQsIDB4MjAsIDB4RkMsIDB4QjEsIDB4NUIsIDB4NkEsIDB4Q0IsIDB4QkUsIDB4MzksIDB4NEEsIDB4NEMsIDB4NTgsIDB4Q0YsCgogMHhEMCwgMHhFRiwgMHhBQSwgMHhGQiwgMHg0MywgMHg0RCwgMHgzMywgMHg4NSwgMHg0NSwgMHhGOSwgMHgwMiwgMHg3RiwgMHg1MCwgMHgzQywgMHg5RiwgMHhBOCwKCiAweDUxLCAweEEzLCAweDQwLCAweDhGLCAweDkyLCAweDlELCAweDM4LCAweEY1LCAweEJDLCAweEI2LCAweERBLCAweDIxLCAweDEwLCAweEZGLCAweEYzLCAweEQyLAoKIDB4Q0QsIDB4MEMsIDB4MTMsIDB4RUMsIDB4NUYsIDB4OTcsIDB4NDQsIDB4MTcsIDB4QzQsIDB4QTcsIDB4N0UsIDB4M0QsIDB4NjQsIDB4NUQsIDB4MTksIDB4NzMsCgogMHg2MCwgMHg4MSwgMHg0RiwgMHhEQywgMHgyMiwgMHgyQSwgMHg5MCwgMHg4OCwgMHg0NiwgMHhFRSwgMHhCOCwgMHgxNCwgMHhERSwgMHg1RSwgMHgwQiwgMHhEQiwKCiAweEUwLCAweDMyLCAweDNBLCAweDBBLCAweDQ5LCAweDA2LCAweDI0LCAweDVDLCAweEMyLCAweEQzLCAweEFDLCAweDYyLCAweDkxLCAweDk1LCAweEU0LCAweDc5LAoKIDB4RTcsIDB4QzgsIDB4MzcsIDB4NkQsIDB4OEQsIDB4RDUsIDB4NEUsIDB4QTksIDB4NkMsIDB4NTYsIDB4RjQsIDB4RUEsIDB4NjUsIDB4N0EsIDB4QUUsIDB4MDgsCgogMHhCQSwgMHg3OCwgMHgyNSwgMHgyRSwgMHgxQywgMHhBNiwgMHhCNCwgMHhDNiwgMHhFOCwgMHhERCwgMHg3NCwgMHgxRiwgMHg0QiwgMHhCRCwgMHg4QiwgMHg4QSwKCiAweDcwLCAweDNFLCAweEI1LCAweDY2LCAweDQ4LCAweDAzLCAweEY2LCAweDBFLCAweDYxLCAweDM1LCAweDU3LCAweEI5LCAweDg2LCAweEMxLCAweDFELCAweDlFLAoKIDB4RTEsIDB4RjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4RDksIDB4OEUsIDB4OTQsIDB4OUIsIDB4MUUsIDB4ODcsIDB4RTksIDB4Q0UsIDB4NTUsIDB4MjgsIDB4REYsCgogMHg4QywgMHhBMSwgMHg4OSwgMHgwRCwgMHhCRiwgMHhFNiwgMHg0MiwgMHg2OCwgMHg0MSwgMHg5OSwgMHgyRCwgMHgwRiwgMHhCMCwgMHg1NCwgMHhCQiwgMHgxNn07CgoKCmxvY2FsIElTQk9YID0gewoKIFswXSA9IDB4NTIsIDB4MDksIDB4NkEsIDB4RDUsIDB4MzAsIDB4MzYsIDB4QTUsIDB4MzgsIDB4QkYsIDB4NDAsIDB4QTMsIDB4OUUsIDB4ODEsIDB4RjMsIDB4RDcsIDB4RkIsCgogMHg3QywgMHhFMywgMHgzOSwgMHg4MiwgMHg5QiwgMHgyRiwgMHhGRiwgMHg4NywgMHgzNCwgMHg4RSwgMHg0MywgMHg0NCwgMHhDNCwgMHhERSwgMHhFOSwgMHhDQiwKCiAweDU0LCAweDdCLCAweDk0LCAweDMyLCAweEE2LCAweEMyLCAweDIzLCAweDNELCAweEVFLCAweDRDLCAweDk1LCAweDBCLCAweDQyLCAweEZBLCAweEMzLCAweDRFLAoKIDB4MDgsIDB4MkUsIDB4QTEsIDB4NjYsIDB4MjgsIDB4RDksIDB4MjQsIDB4QjIsIDB4NzYsIDB4NUIsIDB4QTIsIDB4NDksIDB4NkQsIDB4OEIsIDB4RDEsIDB4MjUsCgogMHg3MiwgMHhGOCwgMHhGNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNiwgMHhENCwgMHhBNCwgMHg1QywgMHhDQywgMHg1RCwgMHg2NSwgMHhCNiwgMHg5MiwKCiAweDZDLCAweDcwLCAweDQ4LCAweDUwLCAweEZELCAweEVELCAweEI5LCAweERBLCAweDVFLCAweDE1LCAweDQ2LCAweDU3LCAweEE3LCAweDhELCAweDlELCAweDg0LAoKIDB4OTAsIDB4RDgsIDB4QUIsIDB4MDAsIDB4OEMsIDB4QkMsIDB4RDMsIDB4MEEsIDB4RjcsIDB4RTQsIDB4NTgsIDB4MDUsIDB4QjgsIDB4QjMsIDB4NDUsIDB4MDYsCgogMHhEMCwgMHgyQywgMHgxRSwgMHg4RiwgMHhDQSwgMHgzRiwgMHgwRiwgMHgwMiwgMHhDMSwgMHhBRiwgMHhCRCwgMHgwMywgMHgwMSwgMHgxMywgMHg4QSwgMHg2QiwKCiAweDNBLCAweDkxLCAweDExLCAweDQxLCAweDRGLCAweDY3LCAweERDLCAweEVBLCAweDk3LCAweEYyLCAweENGLCAweENFLCAweEYwLCAweEI0LCAweEU2LCAweDczLAoKIDB4OTYsIDB4QUMsIDB4NzQsIDB4MjIsIDB4RTcsIDB4QUQsIDB4MzUsIDB4ODUsIDB4RTIsIDB4RjksIDB4MzcsIDB4RTgsIDB4MUMsIDB4NzUsIDB4REYsIDB4NkUsCgogMHg0NywgMHhGMSwgMHgxQSwgMHg3MSwgMHgxRCwgMHgyOSwgMHhDNSwgMHg4OSwgMHg2RiwgMHhCNywgMHg2MiwgMHgwRSwgMHhBQSwgMHgxOCwgMHhCRSwgMHgxQiwKCiAweEZDLCAweDU2LCAweDNFLCAweDRCLCAweEM2LCAweEQyLCAweDc5LCAweDIwLCAweDlBLCAweERCLCAweEMwLCAweEZFLCAweDc4LCAweENELCAweDVBLCAweEY0LAoKIDB4MUYsIDB4REQsIDB4QTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4QzcsIDB4MzEsIDB4QjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4RUMsIDB4NUYsCgogMHg2MCwgMHg1MSwgMHg3RiwgMHhBOSwgMHgxOSwgMHhCNSwgMHg0QSwgMHgwRCwgMHgyRCwgMHhFNSwgMHg3QSwgMHg5RiwgMHg5MywgMHhDOSwgMHg5QywgMHhFRiwKCiAweEEwLCAweEUwLCAweDNCLCAweDRELCAweEFFLCAweDJBLCAweEY1LCAweEIwLCAweEM4LCAweEVCLCAweEJCLCAweDNDLCAweDgzLCAweDUzLCAweDk5LCAweDYxLAoKIDB4MTcsIDB4MkIsIDB4MDQsIDB4N0UsIDB4QkEsIDB4NzcsIDB4RDYsIDB4MjYsIDB4RTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MEMsIDB4N0R9OwoKCgpsb2NhbCBST1dfU0hJRlQgPSAgeyAgMSwgIDYsIDExLCAxNiwgIDUsIDEwLCAxNSwgIDQsICA5LCAxNCwgIDMsICA4LCAxMywgIDIsICA3LCAxMiwgfTsKCmxvY2FsIElST1dfU0hJRlQgPSB7ICAxLCAxNCwgMTEsICA4LCAgNSwgIDIsIDE1LCAxMiwgIDksICA2LCAgMywgMTYsIDEzLCAxMCwgIDcsICA0LCB9OwoKCgpsb2NhbCBFVEFCTEUgPSB7CgogWzBdID0gMHgwMSwgMHgwMywgMHgwNSwgMHgwRiwgMHgxMSwgMHgzMywgMHg1NSwgMHhGRiwgMHgxQSwgMHgyRSwgMHg3MiwgMHg5NiwgMHhBMSwgMHhGOCwgMHgxMywgMHgzNSwKCiAweDVGLCAweEUxLCAweDM4LCAweDQ4LCAweEQ4LCAweDczLCAweDk1LCAweEE0LCAweEY3LCAweDAyLCAweDA2LCAweDBBLCAweDFFLCAweDIyLCAweDY2LCAweEFBLAoKIDB4RTUsIDB4MzQsIDB4NUMsIDB4RTQsIDB4MzcsIDB4NTksIDB4RUIsIDB4MjYsIDB4NkEsIDB4QkUsIDB4RDksIDB4NzAsIDB4OTAsIDB4QUIsIDB4RTYsIDB4MzEsCgogMHg1MywgMHhGNSwgMHgwNCwgMHgwQywgMHgxNCwgMHgzQywgMHg0NCwgMHhDQywgMHg0RiwgMHhEMSwgMHg2OCwgMHhCOCwgMHhEMywgMHg2RSwgMHhCMiwgMHhDRCwKCiAweDRDLCAweEQ0LCAweDY3LCAweEE5LCAweEUwLCAweDNCLCAweDRELCAweEQ3LCAweDYyLCAweEE2LCAweEYxLCAweDA4LCAweDE4LCAweDI4LCAweDc4LCAweDg4LAoKIDB4ODMsIDB4OUUsIDB4QjksIDB4RDAsIDB4NkIsIDB4QkQsIDB4REMsIDB4N0YsIDB4ODEsIDB4OTgsIDB4QjMsIDB4Q0UsIDB4NDksIDB4REIsIDB4NzYsIDB4OUEsCgogMHhCNSwgMHhDNCwgMHg1NywgMHhGOSwgMHgxMCwgMHgzMCwgMHg1MCwgMHhGMCwgMHgwQiwgMHgxRCwgMHgyNywgMHg2OSwgMHhCQiwgMHhENiwgMHg2MSwgMHhBMywKCiAweEZFLCAweDE5LCAweDJCLCAweDdELCAweDg3LCAweDkyLCAweEFELCAweEVDLCAweDJGLCAweDcxLCAweDkzLCAweEFFLCAweEU5LCAweDIwLCAweDYwLCAweEEwLAoKIDB4RkIsIDB4MTYsIDB4M0EsIDB4NEUsIDB4RDIsIDB4NkQsIDB4QjcsIDB4QzIsIDB4NUQsIDB4RTcsIDB4MzIsIDB4NTYsIDB4RkEsIDB4MTUsIDB4M0YsIDB4NDEsCgogMHhDMywgMHg1RSwgMHhFMiwgMHgzRCwgMHg0NywgMHhDOSwgMHg0MCwgMHhDMCwgMHg1QiwgMHhFRCwgMHgyQywgMHg3NCwgMHg5QywgMHhCRiwgMHhEQSwgMHg3NSwKCiAweDlGLCAweEJBLCAweEQ1LCAweDY0LCAweEFDLCAweEVGLCAweDJBLCAweDdFLCAweDgyLCAweDlELCAweEJDLCAweERGLCAweDdBLCAweDhFLCAweDg5LCAweDgwLAoKIDB4OUIsIDB4QjYsIDB4QzEsIDB4NTgsIDB4RTgsIDB4MjMsIDB4NjUsIDB4QUYsIDB4RUEsIDB4MjUsIDB4NkYsIDB4QjEsIDB4QzgsIDB4NDMsIDB4QzUsIDB4NTQsCgogMHhGQywgMHgxRiwgMHgyMSwgMHg2MywgMHhBNSwgMHhGNCwgMHgwNywgMHgwOSwgMHgxQiwgMHgyRCwgMHg3NywgMHg5OSwgMHhCMCwgMHhDQiwgMHg0NiwgMHhDQSwKCiAweDQ1LCAweENGLCAweDRBLCAweERFLCAweDc5LCAweDhCLCAweDg2LCAweDkxLCAweEE4LCAweEUzLCAweDNFLCAweDQyLCAweEM2LCAweDUxLCAweEYzLCAweDBFLAoKIDB4MTIsIDB4MzYsIDB4NUEsIDB4RUUsIDB4MjksIDB4N0IsIDB4OEQsIDB4OEMsIDB4OEYsIDB4OEEsIDB4ODUsIDB4OTQsIDB4QTcsIDB4RjIsIDB4MEQsIDB4MTcsCgogMHgzOSwgMHg0QiwgMHhERCwgMHg3QywgMHg4NCwgMHg5NywgMHhBMiwgMHhGRCwgMHgxQywgMHgyNCwgMHg2QywgMHhCNCwgMHhDNywgMHg1MiwgMHhGNiwgMHgwMX07CgoKCmxvY2FsIExUQUJMRSA9IHsKCiBbMF0gPSAweDAwLCAweDAwLCAweDE5LCAweDAxLCAweDMyLCAweDAyLCAweDFBLCAweEM2LCAweDRCLCAweEM3LCAweDFCLCAweDY4LCAweDMzLCAweEVFLCAweERGLCAweDAzLAoKIDB4NjQsIDB4MDQsIDB4RTAsIDB4MEUsIDB4MzQsIDB4OEQsIDB4ODEsIDB4RUYsIDB4NEMsIDB4NzEsIDB4MDgsIDB4QzgsIDB4RjgsIDB4NjksIDB4MUMsIDB4QzEsCgogMHg3RCwgMHhDMiwgMHgxRCwgMHhCNSwgMHhGOSwgMHhCOSwgMHgyNywgMHg2QSwgMHg0RCwgMHhFNCwgMHhBNiwgMHg3MiwgMHg5QSwgMHhDOSwgMHgwOSwgMHg3OCwKCiAweDY1LCAweDJGLCAweDhBLCAweDA1LCAweDIxLCAweDBGLCAweEUxLCAweDI0LCAweDEyLCAweEYwLCAweDgyLCAweDQ1LCAweDM1LCAweDkzLCAweERBLCAweDhFLAoKIDB4OTYsIDB4OEYsIDB4REIsIDB4QkQsIDB4MzYsIDB4RDAsIDB4Q0UsIDB4OTQsIDB4MTMsIDB4NUMsIDB4RDIsIDB4RjEsIDB4NDAsIDB4NDYsIDB4ODMsIDB4MzgsCgogMHg2NiwgMHhERCwgMHhGRCwgMHgzMCwgMHhCRiwgMHgwNiwgMHg4QiwgMHg2MiwgMHhCMywgMHgyNSwgMHhFMiwgMHg5OCwgMHgyMiwgMHg4OCwgMHg5MSwgMHgxMCwKCiAweDdFLCAweDZFLCAweDQ4LCAweEMzLCAweEEzLCAweEI2LCAweDFFLCAweDQyLCAweDNBLCAweDZCLCAweDI4LCAweDU0LCAweEZBLCAweDg1LCAweDNELCAweEJBLAoKIDB4MkIsIDB4NzksIDB4MEEsIDB4MTUsIDB4OUIsIDB4OUYsIDB4NUUsIDB4Q0EsIDB4NEUsIDB4RDQsIDB4QUMsIDB4RTUsIDB4RjMsIDB4NzMsIDB4QTcsIDB4NTcsCgogMHhBRiwgMHg1OCwgMHhBOCwgMHg1MCwgMHhGNCwgMHhFQSwgMHhENiwgMHg3NCwgMHg0RiwgMHhBRSwgMHhFOSwgMHhENSwgMHhFNywgMHhFNiwgMHhBRCwgMHhFOCwKCiAweDJDLCAweEQ3LCAweDc1LCAweDdBLCAweEVCLCAweDE2LCAweDBCLCAweEY1LCAweDU5LCAweENCLCAweDVGLCAweEIwLCAweDlDLCAweEE5LCAweDUxLCAweEEwLAoKIDB4N0YsIDB4MEMsIDB4RjYsIDB4NkYsIDB4MTcsIDB4QzQsIDB4NDksIDB4RUMsIDB4RDgsIDB4NDMsIDB4MUYsIDB4MkQsIDB4QTQsIDB4NzYsIDB4N0IsIDB4QjcsCgogMHhDQywgMHhCQiwgMHgzRSwgMHg1QSwgMHhGQiwgMHg2MCwgMHhCMSwgMHg4NiwgMHgzQiwgMHg1MiwgMHhBMSwgMHg2QywgMHhBQSwgMHg1NSwgMHgyOSwgMHg5RCwKCiAweDk3LCAweEIyLCAweDg3LCAweDkwLCAweDYxLCAweEJFLCAweERDLCAweEZDLCAweEJDLCAweDk1LCAweENGLCAweENELCAweDM3LCAweDNGLCAweDVCLCAweEQxLAoKIDB4NTMsIDB4MzksIDB4ODQsIDB4M0MsIDB4NDEsIDB4QTIsIDB4NkQsIDB4NDcsIDB4MTQsIDB4MkEsIDB4OUUsIDB4NUQsIDB4NTYsIDB4RjIsIDB4RDMsIDB4QUIsCgogMHg0NCwgMHgxMSwgMHg5MiwgMHhEOSwgMHgyMywgMHgyMCwgMHgyRSwgMHg4OSwgMHhCNCwgMHg3QywgMHhCOCwgMHgyNiwgMHg3NywgMHg5OSwgMHhFMywgMHhBNSwKCiAweDY3LCAweDRBLCAweEVELCAweERFLCAweEM1LCAweDMxLCAweEZFLCAweDE4LCAweDBELCAweDYzLCAweDhDLCAweDgwLCAweEMwLCAweEY3LCAweDcwLCAweDA3fTsKCgoKbG9jYWwgTUlYVEFCTEUgPSB7CgogMHgwMiwgMHgwMywgMHgwMSwgMHgwMSwKCiAweDAxLCAweDAyLCAweDAzLCAweDAxLAoKIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsCgogMHgwMywgMHgwMSwgMHgwMSwgMHgwMn07CgoKCmxvY2FsIElNSVhUQUJMRSA9IHsKCiAweDBFLCAweDBCLCAweDBELCAweDA5LAoKIDB4MDksIDB4MEUsIDB4MEIsIDB4MEQsCgogMHgwRCwgMHgwOSwgMHgwRSwgMHgwQiwKCiAweDBCLCAweDBELCAweDA5LCAweDBFfTsKCgoKbG9jYWwgUkNPTiA9IHsKClswXSA9IDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsCgoweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LCAweDkxLCAweDM5LAoKMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywgMHg4MywgMHgxZCwgMHgzYSwKCjB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsCgoweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLAoKMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywKCjB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsCgoweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLAoKMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwKCjB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsCgoweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LAoKMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwKCjB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsCgoweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLAoKMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwKCjB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGR9OwoKCgoKCmxvY2FsIEdNVUwgPSBmdW5jdGlvbihBLCBCKQoKICAgIGlmKEEgPT0gMHgwMSkgdGhlbiByZXR1cm4gQjsgZW5kCgogICAgaWYoQiA9PSAweDAxKSB0aGVuIHJldHVybiBBOyBlbmQKCiAgICBpZihBID09IDB4MDApIHRoZW4gcmV0dXJuIDA7IGVuZAoKICAgIGlmKEIgPT0gMHgwMCkgdGhlbiByZXR1cm4gMDsgZW5kCgoKCiAgICBsb2NhbCBMQSA9IExUQUJMRVtBXTsKCiAgICBsb2NhbCBMQiA9IExUQUJMRVtCXTsKCgoKICAgIGxvY2FsIHN1bSA9IExBICsgTEI7CgogICAgaWYgKHN1bSA+IDB4RkYpIHRoZW4gc3VtID0gc3VtIC0gMHhGRjsgZW5kCgoKCiAgICByZXR1cm4gRVRBQkxFW3N1bV07CgplbmQKCgoKbG9jYWwgYnl0ZVN1YiA9IEFycmF5LnN1YnN0aXR1dGU7CgoKCmxvY2FsIHNoaWZ0Um93ID0gQXJyYXkucGVybXV0ZTsKCgoKbG9jYWwgbWl4Q29sID0gZnVuY3Rpb24oaSwgbWl4KQoKICAgIGxvY2FsIG91dCA9IHt9OwoKCgogICAgbG9jYWwgYSwgYiwgYywgZDsKCgoKICAgIGEgPSBHTVVMKGlbIDFdLCBtaXhbIDFdKTsKCiAgICBiID0gR01VTChpWyAyXSwgbWl4WyAyXSk7CgogICAgYyA9IEdNVUwoaVsgM10sIG1peFsgM10pOwoKICAgIGQgPSBHTVVMKGlbIDRdLCBtaXhbIDRdKTsKCiAgICBvdXRbIDFdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyAxXSwgbWl4WyA1XSk7CgogICAgYiA9IEdNVUwoaVsgMl0sIG1peFsgNl0pOwoKICAgIGMgPSBHTVVMKGlbIDNdLCBtaXhbIDddKTsKCiAgICBkID0gR01VTChpWyA0XSwgbWl4WyA4XSk7CgogICAgb3V0WyAyXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgMV0sIG1peFsgOV0pOwoKICAgIGIgPSBHTVVMKGlbIDJdLCBtaXhbMTBdKTsKCiAgICBjID0gR01VTChpWyAzXSwgbWl4WzExXSk7CgogICAgZCA9IEdNVUwoaVsgNF0sIG1peFsxMl0pOwoKICAgIG91dFsgM10gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDFdLCBtaXhbMTNdKTsKCiAgICBiID0gR01VTChpWyAyXSwgbWl4WzE0XSk7CgogICAgYyA9IEdNVUwoaVsgM10sIG1peFsxNV0pOwoKICAgIGQgPSBHTVVMKGlbIDRdLCBtaXhbMTZdKTsKCiAgICBvdXRbIDRdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCgoKCgogICAgYSA9IEdNVUwoaVsgNV0sIG1peFsgMV0pOwoKICAgIGIgPSBHTVVMKGlbIDZdLCBtaXhbIDJdKTsKCiAgICBjID0gR01VTChpWyA3XSwgbWl4WyAzXSk7CgogICAgZCA9IEdNVUwoaVsgOF0sIG1peFsgNF0pOwoKICAgIG91dFsgNV0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDVdLCBtaXhbIDVdKTsKCiAgICBiID0gR01VTChpWyA2XSwgbWl4WyA2XSk7CgogICAgYyA9IEdNVUwoaVsgN10sIG1peFsgN10pOwoKICAgIGQgPSBHTVVMKGlbIDhdLCBtaXhbIDhdKTsKCiAgICBvdXRbIDZdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA1XSwgbWl4WyA5XSk7CgogICAgYiA9IEdNVUwoaVsgNl0sIG1peFsxMF0pOwoKICAgIGMgPSBHTVVMKGlbIDddLCBtaXhbMTFdKTsKCiAgICBkID0gR01VTChpWyA4XSwgbWl4WzEyXSk7CgogICAgb3V0WyA3XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgNV0sIG1peFsxM10pOwoKICAgIGIgPSBHTVVMKGlbIDZdLCBtaXhbMTRdKTsKCiAgICBjID0gR01VTChpWyA3XSwgbWl4WzE1XSk7CgogICAgZCA9IEdNVUwoaVsgOF0sIG1peFsxNl0pOwoKICAgIG91dFsgOF0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKCgoKCiAgICBhID0gR01VTChpWyA5XSwgbWl4WyAxXSk7CgogICAgYiA9IEdNVUwoaVsxMF0sIG1peFsgMl0pOwoKICAgIGMgPSBHTVVMKGlbMTFdLCBtaXhbIDNdKTsKCiAgICBkID0gR01VTChpWzEyXSwgbWl4WyA0XSk7CgogICAgb3V0WyA5XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgOV0sIG1peFsgNV0pOwoKICAgIGIgPSBHTVVMKGlbMTBdLCBtaXhbIDZdKTsKCiAgICBjID0gR01VTChpWzExXSwgbWl4WyA3XSk7CgogICAgZCA9IEdNVUwoaVsxMl0sIG1peFsgOF0pOwoKICAgIG91dFsxMF0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDldLCBtaXhbIDldKTsKCiAgICBiID0gR01VTChpWzEwXSwgbWl4WzEwXSk7CgogICAgYyA9IEdNVUwoaVsxMV0sIG1peFsxMV0pOwoKICAgIGQgPSBHTVVMKGlbMTJdLCBtaXhbMTJdKTsKCiAgICBvdXRbMTFdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA5XSwgbWl4WzEzXSk7CgogICAgYiA9IEdNVUwoaVsxMF0sIG1peFsxNF0pOwoKICAgIGMgPSBHTVVMKGlbMTFdLCBtaXhbMTVdKTsKCiAgICBkID0gR01VTChpWzEyXSwgbWl4WzE2XSk7CgogICAgb3V0WzEyXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgoKCgoKICAgIGEgPSBHTVVMKGlbMTNdLCBtaXhbIDFdKTsKCiAgICBiID0gR01VTChpWzE0XSwgbWl4WyAyXSk7CgogICAgYyA9IEdNVUwoaVsxNV0sIG1peFsgM10pOwoKICAgIGQgPSBHTVVMKGlbMTZdLCBtaXhbIDRdKTsKCiAgICBvdXRbMTNdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWzEzXSwgbWl4WyA1XSk7CgogICAgYiA9IEdNVUwoaVsxNF0sIG1peFsgNl0pOwoKICAgIGMgPSBHTVVMKGlbMTVdLCBtaXhbIDddKTsKCiAgICBkID0gR01VTChpWzE2XSwgbWl4WyA4XSk7CgogICAgb3V0WzE0XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsxM10sIG1peFsgOV0pOwoKICAgIGIgPSBHTVVMKGlbMTRdLCBtaXhbMTBdKTsKCiAgICBjID0gR01VTChpWzE1XSwgbWl4WzExXSk7CgogICAgZCA9IEdNVUwoaVsxNl0sIG1peFsxMl0pOwoKICAgIG91dFsxNV0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbMTNdLCBtaXhbMTNdKTsKCiAgICBiID0gR01VTChpWzE0XSwgbWl4WzE0XSk7CgogICAgYyA9IEdNVUwoaVsxNV0sIG1peFsxNV0pOwoKICAgIGQgPSBHTVVMKGlbMTZdLCBtaXhbMTZdKTsKCiAgICBvdXRbMTZdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKbG9jYWwga2V5Um91bmQgPSBmdW5jdGlvbihrZXksIHJvdW5kKQoKICAgIGxvY2FsIG91dCA9IHt9OwoKCgogICAgb3V0WyAxXSA9IFhPUihrZXlbIDFdLCBYT1IoU0JPWFtrZXlbMTRdXSwgUkNPTltyb3VuZF0pKTsKCiAgICBvdXRbIDJdID0gWE9SKGtleVsgMl0sIFNCT1hba2V5WzE1XV0pOwoKICAgIG91dFsgM10gPSBYT1Ioa2V5WyAzXSwgU0JPWFtrZXlbMTZdXSk7CgogICAgb3V0WyA0XSA9IFhPUihrZXlbIDRdLCBTQk9YW2tleVsxM11dKTsKCgoKICAgIG91dFsgNV0gPSBYT1Iob3V0WyAxXSwga2V5WyA1XSk7CgogICAgb3V0WyA2XSA9IFhPUihvdXRbIDJdLCBrZXlbIDZdKTsKCiAgICBvdXRbIDddID0gWE9SKG91dFsgM10sIGtleVsgN10pOwoKICAgIG91dFsgOF0gPSBYT1Iob3V0WyA0XSwga2V5WyA4XSk7CgoKCiAgICBvdXRbIDldID0gWE9SKG91dFsgNV0sIGtleVsgOV0pOwoKICAgIG91dFsxMF0gPSBYT1Iob3V0WyA2XSwga2V5WzEwXSk7CgogICAgb3V0WzExXSA9IFhPUihvdXRbIDddLCBrZXlbMTFdKTsKCiAgICBvdXRbMTJdID0gWE9SKG91dFsgOF0sIGtleVsxMl0pOwoKCgogICAgb3V0WzEzXSA9IFhPUihvdXRbIDldLCBrZXlbMTNdKTsKCiAgICBvdXRbMTRdID0gWE9SKG91dFsxMF0sIGtleVsxNF0pOwoKICAgIG91dFsxNV0gPSBYT1Iob3V0WzExXSwga2V5WzE1XSk7CgogICAgb3V0WzE2XSA9IFhPUihvdXRbMTJdLCBrZXlbMTZdKTsKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKbG9jYWwga2V5RXhwYW5kID0gZnVuY3Rpb24oa2V5KQoKICAgIGxvY2FsIGtleXMgPSB7fTsKCgoKICAgIGxvY2FsIHRlbXAgPSBrZXk7CgoKCiAgICBrZXlzWzFdID0gdGVtcDsKCgoKICAgIGZvciBpID0gMSwgMTAgZG8KCiAgICAgICAgdGVtcCA9IGtleVJvdW5kKHRlbXAsIGkpOwoKICAgICAgICBrZXlzW2kgKyAxXSA9IHRlbXA7CgogICAgZW5kCgoKCiAgICByZXR1cm4ga2V5czsKCgoKZW5kCgoKCmxvY2FsIGFkZEtleSA9IEFycmF5LlhPUjsKCgoKCgoKCmxvY2FsIEFFUyA9IHt9OwoKCgpBRVMuYmxvY2tTaXplID0gMTY7CgoKCkFFUy5lbmNyeXB0ID0gZnVuY3Rpb24oa2V5LCBibG9jaykKCgoKICAgIGxvY2FsIGtleVNjaGVkdWxlID0ga2V5RXhwYW5kKGtleSk7CgoKCiAgICAtLXJvdW5kIDAKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMV0pOwoKCgogICAgLS1yb3VuZCAxCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzJdKTsKCgoKICAgIC0tcm91bmQgMgoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVszXSk7CgoKCiAgICAtLXJvdW5kIDMKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNF0pOwoKCgogICAgLS1yb3VuZCA0CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzVdKTsKCgoKICAgIC0tcm91bmQgNQoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs2XSk7CgoKCiAgICAtLXJvdW5kIDYKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbN10pOwoKCgogICAgLS1yb3VuZCA3CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzhdKTsKCgoKICAgIC0tcm91bmQgOAoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs5XSk7CgoKCiAgICAtLXJvdW5kIDkKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTBdKTsKCgoKICAgIC0tcm91bmQgMTAKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzExXSk7CgoKCiAgICByZXR1cm4gYmxvY2s7CgoKCmVuZAoKCgpBRVMuZGVjcnlwdCA9IGZ1bmN0aW9uKGtleSwgYmxvY2spCgoKCiAgICBsb2NhbCBrZXlTY2hlZHVsZSA9IGtleUV4cGFuZChrZXkpOwoKCgogICAgLS1yb3VuZCAwCgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzExXSk7CgoKCiAgICAtLXJvdW5kIDEKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTBdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs5XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDMKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbOF0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA0CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzddKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgNQoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs2XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDYKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNV0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA3CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzRdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgOAoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVszXSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDkKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMl0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCAxMAoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxXSk7CgoKCiAgICByZXR1cm4gYmxvY2s7CgplbmQKCgoKcmV0dXJuIEFFUzsAAAAAbG9jYWwgSGV4ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmhleCIpOwoKCgpsb2NhbCBmdW5jdGlvbiBzdGF0ZV91cGRhdGUocywgbTAsIG0xLCBtMiwgbTMpCgoJbG9jYWwgczAwLCBzMDEsIHMwMiwgczAzID0gc1sxXSwgIHNbMl0sICBzWzNdLCAgc1s0XQoKCWxvY2FsIHMxMCwgczExLCBzMTIsIHMxMyA9IHNbNV0sICBzWzZdLCAgc1s3XSwgIHNbOF0KCglsb2NhbCBzMjAsIHMyMSwgczIyLCBzMjMgPSBzWzldLCAgc1sxMF0sIHNbMTFdLCBzWzEyXQoKCWxvY2FsIHMzMCwgczMxLCBzMzIsIHMzMyA9IHNbMTNdLCBzWzE0XSwgc1sxNV0sIHNbMTZdCgoJbG9jYWwgczQwLCBzNDEsIHM0MiwgczQzID0gc1sxN10sIHNbMThdLCBzWzE5XSwgc1syMF0KCglsb2NhbCB0ZW1wCgoKCglzMDAgPSBzMDAgfiBzMzAKCglzMDEgPSBzMDEgfiBzMzEKCglzMDIgPSBzMDIgfiBzMzIKCglzMDMgPSBzMDMgfiBzMzMKCgoKCXRlbXAgPSBzMzMKCglzMzMgPSBzMzIKCglzMzIgPSBzMzEKCglzMzEgPSBzMzAKCglzMzAgPSB0ZW1wCgoKCglzMDAgPSBzMDAgfiBzMTAgJiBzMjAKCglzMDEgPSBzMDEgfiBzMTEgJiBzMjEKCglzMDIgPSBzMDIgfiBzMTIgJiBzMjIKCglzMDMgPSBzMDMgfiBzMTMgJiBzMjMKCgoKCXMwMCA9IChzMDAgPDwgMTMpIHwgKHMwMCA+PiAoNjQtMTMpKSAtLW4xCgoJczAxID0gKHMwMSA8PCAxMykgfCAoczAxID4+ICg2NC0xMykpIC0tbjEKCglzMDIgPSAoczAyIDw8IDEzKSB8IChzMDIgPj4gKDY0LTEzKSkgLS1uMQoKCXMwMyA9IChzMDMgPDwgMTMpIHwgKHMwMyA+PiAoNjQtMTMpKSAtLW4xCgoKCgoKCXMxMCA9IHMxMCB+IG0wCgoJczExID0gczExIH4gbTEKCglzMTIgPSBzMTIgfiBtMgoKCXMxMyA9IHMxMyB+IG0zCgoKCglzMTAgPSBzMTAgfiBzNDAKCglzMTEgPSBzMTEgfiBzNDEKCglzMTIgPSBzMTIgfiBzNDIKCglzMTMgPSBzMTMgfiBzNDMKCgoKCXRlbXAgPSBzNDMKCglzNDMgPSBzNDEKCglzNDEgPSB0ZW1wCgoKCgl0ZW1wID0gczQyCgoJczQyID0gczQwCgoJczQwID0gdGVtcAoKCgoJczEwID0gczEwIH4gKHMyMCAmIHMzMCkKCglzMTEgPSBzMTEgfiAoczIxICYgczMxKQoKCXMxMiA9IHMxMiB+IChzMjIgJiBzMzIpCgoJczEzID0gczEzIH4gKHMyMyAmIHMzMykKCgoKCXMxMCA9IChzMTAgPDwgNDYpIHwgKHMxMCA+PiAoNjQtNDYpKSAtLW4yCgoJczExID0gKHMxMSA8PCA0NikgfCAoczExID4+ICg2NC00NikpIC0tbjIKCglzMTIgPSAoczEyIDw8IDQ2KSB8IChzMTIgPj4gKDY0LTQ2KSkgLS1uMgoKCXMxMyA9IChzMTMgPDwgNDYpIHwgKHMxMyA+PiAoNjQtNDYpKSAtLW4yCgoKCgoKCXMyMCA9IHMyMCB+IG0wCgoJczIxID0gczIxIH4gbTEKCglzMjIgPSBzMjIgfiBtMgoKCXMyMyA9IHMyMyB+IG0zCgoKCglzMjAgPSBzMjAgfiBzMDAKCglzMjEgPSBzMjEgfiBzMDEKCglzMjIgPSBzMjIgfiBzMDIKCglzMjMgPSBzMjMgfiBzMDMKCgoKCXRlbXAgPSBzMDAKCglzMDAgPSBzMDEKCglzMDEgPSBzMDIKCglzMDIgPSBzMDMKCglzMDMgPSB0ZW1wCgoKCglzMjAgPSBzMjAgfiBzMzAgJiBzNDAKCglzMjEgPSBzMjEgfiBzMzEgJiBzNDEKCglzMjIgPSBzMjIgfiBzMzIgJiBzNDIKCglzMjMgPSBzMjMgfiBzMzMgJiBzNDMKCgoKCXMyMCA9IChzMjAgPDwgMzgpIHwgKHMyMCA+PiAoNjQtMzgpKSAtLW4zCgoJczIxID0gKHMyMSA8PCAzOCkgfCAoczIxID4+ICg2NC0zOCkpIC0tbjMKCglzMjIgPSAoczIyIDw8IDM4KSB8IChzMjIgPj4gKDY0LTM4KSkgLS1uMwoKCXMyMyA9IChzMjMgPDwgMzgpIHwgKHMyMyA+PiAoNjQtMzgpKSAtLW4zCgoKCgoKCXMzMCA9IHMzMCB+IG0wCgoJczMxID0gczMxIH4gbTEKCglzMzIgPSBzMzIgfiBtMgoKCXMzMyA9IHMzMyB+IG0zCgoKCglzMzAgPSBzMzAgfiBzMTAKCglzMzEgPSBzMzEgfiBzMTEKCglzMzIgPSBzMzIgfiBzMTIKCglzMzMgPSBzMzMgfiBzMTMKCgoKCXRlbXAgPSBzMTMKCglzMTMgPSBzMTEKCglzMTEgPSB0ZW1wCgoKCgl0ZW1wID0gczEyCgoJczEyID0gczEwCgoJczEwID0gdGVtcAoKCgoJczMwID0gczMwIH4gczQwICYgczAwCgoJczMxID0gczMxIH4gczQxICYgczAxCgoJczMyID0gczMyIH4gczQyICYgczAyCgoJczMzID0gczMzIH4gczQzICYgczAzCgoKCglzMzAgPSAoczMwIDw8IDcpIHwgKHMzMCA+PiAoNjQtNykpIC0tbjQKCglzMzEgPSAoczMxIDw8IDcpIHwgKHMzMSA+PiAoNjQtNykpIC0tbjQKCglzMzIgPSAoczMyIDw8IDcpIHwgKHMzMiA+PiAoNjQtNykpIC0tbjQKCglzMzMgPSAoczMzIDw8IDcpIHwgKHMzMyA+PiAoNjQtNykpIC0tbjQKCgoKCgoJczQwID0gczQwIH4gbTAKCglzNDEgPSBzNDEgfiBtMQoKCXM0MiA9IHM0MiB+IG0yCgoJczQzID0gczQzIH4gbTMKCgoKCXM0MCA9IHM0MCB+IHMyMAoKCXM0MSA9IHM0MSB+IHMyMQoKCXM0MiA9IHM0MiB+IHMyMgoKCXM0MyA9IHM0MyB+IHMyMwoKCgoJdGVtcCA9IHMyMwoKCXMyMyA9IHMyMgoKCXMyMiA9IHMyMQoKCXMyMSA9IHMyMAoKCXMyMCA9IHRlbXAKCgoKCXM0MCA9IHM0MCB+IHMwMCAmIHMxMAoKCXM0MSA9IHM0MSB+IHMwMSAmIHMxMQoKCXM0MiA9IHM0MiB+IHMwMiAmIHMxMgoKCXM0MyA9IHM0MyB+IHMwMyAmIHMxMwoKCgoJczQwID0gKHM0MCA8PCA0KSB8IChzNDAgPj4gKDY0LTQpKSAtLW41CgoJczQxID0gKHM0MSA8PCA0KSB8IChzNDEgPj4gKDY0LTQpKSAtLW41CgoJczQyID0gKHM0MiA8PCA0KSB8IChzNDIgPj4gKDY0LTQpKSAtLW41CgoJczQzID0gKHM0MyA8PCA0KSB8IChzNDMgPj4gKDY0LTQpKSAtLW41CgoKCgktLSB1cGRhdGUgdGhlIHN0YXRlIGFycmF5CgoJc1sxXSwgIHNbMl0sICBzWzNdLCAgc1s0XSAgPSBzMDAsIHMwMSwgczAyLCBzMDMKCglzWzVdLCAgc1s2XSwgIHNbN10sICBzWzhdICA9IHMxMCwgczExLCBzMTIsIHMxMwoKCXNbOV0sICBzWzEwXSwgc1sxMV0sIHNbMTJdID0gczIwLCBzMjEsIHMyMiwgczIzCgoJc1sxM10sIHNbMTRdLCBzWzE1XSwgc1sxNl0gPSBzMzAsIHMzMSwgczMyLCBzMzMKCglzWzE3XSwgc1sxOF0sIHNbMTldLCBzWzIwXSA9IHM0MCwgczQxLCBzNDIsIHM0MwoKCgplbmQtLXN0YXRlX3VwZGF0ZSgpCgoKCmxvY2FsIGZ1bmN0aW9uIGVuY19hdXRfc3RlcChzLCBtMCwgbTEsIG0yLCBtMykKCgktLSAgICAgICAgIG0wICAgczAwICAgIHMxMSAgICBzMjAgICAgIHMzMAoKCWxvY2FsIGMwID0gbTAgfiBzWzFdIH4gc1s2XSB+IChzWzldICAmIHNbMTNdKQoKCS0tICAgICAgICAgbTEgICBzMDEgICAgczEyICAgIHMyMSAgICAgczMxCgoJbG9jYWwgYzEgPSBtMSB+IHNbMl0gfiBzWzddIH4gKHNbMTBdICYgc1sxNF0pCgoJLS0gICAgICAgICBtMiAgIHMwMiAgICBzMTMgICAgczIyICAgICBzMzIKCglsb2NhbCBjMiA9IG0yIH4gc1szXSB+IHNbOF0gfiAoc1sxMV0gJiBzWzE1XSkKCgktLSAgICAgICAgIG0zICAgczAzICAgIHMxMCAgICBzMjMgICAgIHMzMwoKCWxvY2FsIGMzID0gbTMgfiBzWzRdIH4gc1s1XSB+IChzWzEyXSAmIHNbMTZdKQoKCXN0YXRlX3VwZGF0ZShzLCBtMCwgbTEsIG0yLCBtMykKCglyZXR1cm4gYzAsIGMxLCBjMiwgYzMKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBkZWNfYXV0X3N0ZXAocywgYzAsIGMxLCBjMiwgYzMsIGJsZW4pCgoJLS0gbWxlbiBpcyB0aGUgbGVuZ3RoIG9mIGEgbGFzdCBwYXJ0aWFsIGJsb2NrCgoJLS0gbWxlbiBpcyBhYnNlbnQvbmlsIGZvciBmdWxsIGJsb2NrcwoKCS0tIHJldHVybiB0aGUgZGVjcnlwdGVkIGJsb2NrCgoJLS0KCgktLSAgICAgICAgIG0wICAgczAwICAgIHMxMSAgICBzMjAgICAgczMwCgoJbG9jYWwgbTAgPSBjMCB+IHNbMV0gfiBzWzZdIH4gKHNbOV0gICYgc1sxM10pCgoJLS0gICAgICAgICBtMSAgIHMwMSAgICBzMTIgICAgczIxICAgICBzMzEKCglsb2NhbCBtMSA9IGMxIH4gc1syXSB+IHNbN10gfiAoc1sxMF0gJiBzWzE0XSkgCgoJLS0gICAgICAgICBtMiAgIHMwMiAgICBzMTMgICAgczIyICAgICBzMzIKCglsb2NhbCBtMiA9IGMyIH4gc1szXSB+IHNbOF0gfiAoc1sxMV0gJiBzWzE1XSkKCgktLSAgICAgICAgIG0zICAgczAzICAgIHMxMCAgICBzMjMgICAgIHMzMwoKCWxvY2FsIG0zID0gYzMgfiBzWzRdIH4gc1s1XSB+IChzWzEyXSAmIHNbMTZdKQoKCWlmIGJsZW4gdGhlbiAKCgkJLS0gcGFydGlhbCBibG9jayA9PiBtdXN0IGFkanVzdCAobTAsIC4uLikgYmVmb3JlCgoJCS0tIHVwZGF0aW5nIHRoZSBzdGF0ZQoKCQlsb2NhbCBtYmxrID0gc3RyaW5nLnBhY2soIjxJOEk4SThJOCIsIG0wLCBtMSwgbTIsIG0zKTpzdWIoMSwgYmxlbikgCgoJCWxvY2FsIGJsayA9IG1ibGsgLi4gc3RyaW5nLnJlcCgnXDAnLCAzMiAtIGJsZW4pCgoJCWFzc2VydCgjYmxrID09IDMyLCAjYmxrKQoKCQltMCwgbTEsIG0yLCBtMyA9IHN0cmluZy51bnBhY2soIjxJOEk4SThJOCIsIGJsaykKCgkJc3RhdGVfdXBkYXRlKHMsIG0wLCBtMSwgbTIsIG0zKQoKCQlyZXR1cm4gbWJsawoKCWVuZAoKCS0tIGZ1bGwgYmxvY2sKCglzdGF0ZV91cGRhdGUocywgbTAsIG0xLCBtMiwgbTMpCgoJcmV0dXJuIHN0cmluZy5wYWNrKCI8SThJOEk4STgiLCBtMCwgbTEsIG0yLCBtMykKCmVuZAoKCgotLSBzdGF0ZSBpbml0IGNvbnN0YW50cyAoZmlib25hY2NpKQoKLS0gdTggY29uWzMyXSA9IHsKCi0tCTB4MDAsMHgwMSwweDAxLDB4MDIsMHgwMywweDA1LDB4MDgsMHgwZAoKLS0JLDB4MTUsMHgyMiwweDM3LDB4NTksMHg5MCwweGU5LDB4NzksMHg2MgoKLS0JLDB4ZGIsMHgzZCwweDE4LDB4NTUsMHg2ZCwweGMyLDB4MmYsMHhmMQoKLS0JLDB4MjAsMHgxMSwweDMxLDB4NDIsMHg3MywweGI1LDB4MjgsMHhkZAoKbG9jYWwgY29uID0geyAtLSBjb24gYXMgNCB1aW50NjQgLSAgISEgYXNzdW1lIGxpdHRsZSBlbmRpYW4gISEKCgkJMHhkMDgwNTAzMDIwMTAxMDAsIDB4NjI3OWU5OTA1OTM3MjIxNSwgCgoJICAgIDB4ZjEyZmMyNmQ1NTE4M2RkYiwgMHhkZDI4YjU3MzQyMzExMTIwIH0KCgkKCmxvY2FsIGZ1bmN0aW9uIHN0YXRlX2luaXQoa2V5LCBpdikKCgktLSByZXR1cm4gYW4gaW5pdGlhbGl6ZWQgc3RhdGUgYXJyYXkKCglhc3NlcnQoKCNrZXkgPT0gMTYpIG9yICgja2V5ID09IDMyKSwgImtleSBtdXN0IGJlIDE2IG9yIDMyIGJ5dGVzIikKCglhc3NlcnQoI2l2ID09IDE2LCAiaXYgbXVzdCBiZSAxNiBieXRlcyIpCgoJbG9jYWwgZWswLCBlazEsIGVrMiwgZWszIAoKCWlmICNrZXkgPT0gMTYgdGhlbiAKCgkJZWswLCBlazEgPSBzdHJpbmcudW5wYWNrKCI8SThJOCIsIGtleSkKCgkJZWszLCBlazIgPSBlazEsIGVrMAoKCWVsc2UKCgkJZWswLCBlazEsIGVrMiwgZWszID0gc3RyaW5nLnVucGFjaygiPEk4SThJOEk4Iiwga2V5KQoKCWVuZAoKCWxvY2FsIGl2MCwgaXYxID0gc3RyaW5nLnVucGFjaygiPEk4STgiLCBpdikKCgktLWluaXRhaWFsaXplIHN0YXRlIHM6CgoJbG9jYWwgcyA9IHsKCgkJaXYwLCBpdjEsIDAsIDAsICAgICAgICAgICAgICAgICAtLSBzdGF0ZVswXVtdCgoJCWVrMCwgZWsxLCBlazIsIGVrMywgICAgICAgICAgICAgLS0gc3RhdGVbMV1bXQoKCQktMSwgLTEsIC0xLCAtMSwgICAgICAgICAgICAgICAgIC0tIHN0YXRlWzJdW10gICgweGZmICogMzIpCgoJCTAsIDAsIDAsIDAsICAgICAgICAgICAgICAgICAgICAgLS0gc3RhdGVbM11bXQoKCQljb25bMV0sIGNvblsyXSwgY29uWzNdLCBjb25bNF0sIC0tIHN0YXRlWzRdW10KCgl9CgoJZm9yIGkgPSAxLCAxNiBkbyBzdGF0ZV91cGRhdGUocywgMCwgMCwgMCwgMCkgZW5kCgoJc1s1XSA9IHNbNV0gfiBlazAgIC0tIHN0YXRlWzFdW2ldIF49ICgodWludDY0X3QqKWVrZXkpW2ldOwoKCXNbNl0gPSBzWzZdIH4gZWsxCgoJc1s3XSA9IHNbN10gfiBlazIKCglzWzhdID0gc1s4XSB+IGVrMwoKCXJldHVybiBzCgplbmQtLXN0YXRlX2luaXQoKQoKCgotLWZpbmFsaXphdGlvbgoKCgpsb2NhbCBmdW5jdGlvbiB0YWdfY29tcHV0ZShzLCBtbGVuLCBhZGxlbikKCgktLSByZXR1cm4gdGFnMCwgdGFnMSAodGhlIHRhZyBhcyB0d28gdWludDY0KQoKCWxvY2FsIG0wLCBtMSwgbTIsIG0zID0gKGFkbGVuIDw8IDMpLCAobWxlbiA8PCAzKSwgMCwgMAoKCgoJLS0gc1sxXSwgIHNbMl0sICBzWzNdLCAgc1s0XSAgPSBzMDAsIHMwMSwgczAyLCBzMDMKCgktLSBzWzVdLCAgc1s2XSwgIHNbN10sICBzWzhdICA9IHMxMCwgczExLCBzMTIsIHMxMwoKCS0tIHNbOV0sICBzWzEwXSwgc1sxMV0sIHNbMTJdID0gczIwLCBzMjEsIHMyMiwgczIzCgoJLS0gc1sxM10sIHNbMTRdLCBzWzE1XSwgc1sxNl0gPSBzMzAsIHMzMSwgczMyLCBzMzMKCgktLSBzWzE3XSwgc1sxOF0sIHNbMTldLCBzWzIwXSA9IHM0MCwgczQxLCBzNDIsIHM0MwoKCgoJLS0gc3RhdGVbNF1bMF0gXj0gc3RhdGVbMF1bMF07IHN0YXRlWzRdWzFdIF49IHN0YXRlWzBdWzFdOyAKCgktLSBzdGF0ZVs0XVsyXSBePSBzdGF0ZVswXVsyXTsgc3RhdGVbNF1bM10gXj0gc3RhdGVbMF1bM107CgoJc1sxN10gPSBzWzE3XSB+IHNbMV07ICBzWzE4XSA9IHNbMThdIH4gc1syXQoKCXNbMTldID0gc1sxOV0gfiBzWzNdOyAgc1syMF0gPSBzWzIwXSB+IHNbNF0KCglmb3IgaSA9IDEsIDEwIGRvIHN0YXRlX3VwZGF0ZShzLCBtMCwgbTEsIG0yLCBtMykgZW5kCgoJLS0gZm9yIChqID0gMDsgaiA8IDQ7IGorKykgewoKCS0tCXN0YXRlWzBdW2pdIF49IHN0YXRlWzFdWyhqICsgMSkgJiAzXSBeIChzdGF0ZVsyXVtqXSAmIHN0YXRlWzNdW2pdKTt9CgoJc1sxXSA9IHNbMV0gfiBzWzZdIH4gKHNbOV0gJiBzWzEzXSkgLS0gaj0wCgoJc1syXSA9IHNbMl0gfiBzWzddIH4gKHNbMTBdICYgc1sxNF0pIC0tIGo9MQoKCXNbM10gPSBzWzNdIH4gc1s4XSB+IChzWzExXSAmIHNbMTVdKSAtLSBqPTIKCglzWzRdID0gc1s0XSB+IHNbNV0gfiAoc1sxMl0gJiBzWzE2XSkgLS0gaj0zCgoJCgoJcmV0dXJuIHNbMV0sIHNbMl0KCmVuZAoKCgotLS0gRW5jcnlwdHMgYSBtZXNzYWdlIHVzaW5nIHRoZSBNb3J1cyBlbmNyeXB0aW9uIGFsZ29yaXRobS4KCi0tLSBAcGFyYW0gayBzdHJpbmcgLSBUaGUgZW5jcnlwdGlvbiBrZXkgKDE2IG9yIDMyLWJ5dGUgc3RyaW5nKS4KCi0tLSBAcGFyYW0gaXYgc3RyaW5nIC0gVGhlIG5vbmNlIG9yIGluaXRpYWwgdmFsdWUgKDE2LWJ5dGUgc3RyaW5nKS4KCi0tLSBAcGFyYW0gbSBzdHJpbmcgLSBUaGUgbWVzc2FnZSB0byBlbmNyeXB0ICh2YXJpYWJsZSBsZW5ndGggc3RyaW5nKS4KCi0tLSBAcGFyYW0gYWQ/IHN0cmluZyAob3B0aW9uYWwpIC0gVGhlIGFkZGl0aW9uYWwgZGF0YSAodmFyaWFibGUgbGVuZ3RoIHN0cmluZykuIE9wdGlvbmFsLCBkZWZhdWx0cyB0byAiIi4KCi0tLSBAcmV0dXJucyB0YWJsZSAtIEEgdGFibGUgY29udGFpbmluZyB0aGUgZW5jcnlwdGVkIG1lc3NhZ2UgaW4gYnl0ZXMsIGhleCwgYW5kIHN0cmluZyBmb3JtYXRzLgoKLS0tIEB1c2FnZSBsb2NhbCBlbmNyeXB0ZWRNZXNzYWdlID0gZW5jcnlwdChrZXksIG5vbmNlLCBtZXNzYWdlLCBhZGRpdGlvbmFsRGF0YSkKCmxvY2FsIGZ1bmN0aW9uIGVuY3J5cHQoaywgaXYsIG0sIGFkKQoKCWFkID0gYWQgb3IgIiIKCglsb2NhbCBtbGVuLCBhZGxlbiA9ICNtLCAjYWQKCglsb2NhbCBtMCwgbTEsIG0yLCBtMywgYzAsIGMxLCBjMiwgYzMKCglsb2NhbCBibGssIGJsZW4KCglsb2NhbCBjdCA9IHt9CgoJLS0gaW5pdAoKCWxvY2FsIHMgPSBzdGF0ZV9pbml0KGssIGl2KQoKCS0tIGFic29yYiBhZAoKCWxvY2FsIGkgPSAxCgoJd2hpbGUgaSA8PSBhZGxlbiAtIDMxIGRvIC0tcHJvY2VzcyBmdWxsIGJsb2NrcwoKCQltMCwgbTEsIG0yLCBtMyA9IHN0cmluZy51bnBhY2soIjxJOEk4SThJOCIsIGFkLCBpKQoKCQlpID0gaSArIDMyCgoJCWVuY19hdXRfc3RlcChzLCBtMCwgbTEsIG0yLCBtMykKCgllbmQKCglpZiBpIDw9IGFkbGVuIHRoZW4gLS0gcHJvY2VzcyBsYXN0LCBwYXJ0aWFsIGJsb2NrIG9mIGFkCgoJCWJsayA9IGFkOnN1YihpKSAuLiBzdHJpbmcucmVwKCdcMCcsIDMxICsgaSAtIGFkbGVuKQoKCQlhc3NlcnQoI2JsayA9PSAzMiwgI2JsaykKCgkJbTAsIG0xLCBtMiwgbTMgPSBzdHJpbmcudW5wYWNrKCI8SThJOEk4STgiLCBibGspCgoJCWVuY19hdXRfc3RlcChzLCBtMCwgbTEsIG0yLCBtMykKCgllbmQKCgl0YWJsZS5pbnNlcnQoY3QsIGFkKSAtLSBjb2xsZWN0IHRoZSBhZCBpbiBjdAoKCS0tIGVuY3J5cHQgbQoKCWkgPSAxCgoJd2hpbGUgaSA8PSBtbGVuIC0gMzEgZG8gLS1wcm9jZXNzIGZ1bGwgYmxvY2tzCgoJCW0wLCBtMSwgbTIsIG0zID0gc3RyaW5nLnVucGFjaygiPEk4SThJOEk4IiwgbSwgaSkKCgkJaSA9IGkgKyAzMgoKCQktLWMwLCBjMSwgYzIsIGMzID0gbTAsIG0xLCBtMiwgbTMgLS11c2UgdGhpcyB0byB0ZXN0IG92ZXJoZWFkIHBlcmYKCgkJYzAsIGMxLCBjMiwgYzMgPSBlbmNfYXV0X3N0ZXAocywgbTAsIG0xLCBtMiwgbTMpCgoJCS0tIGNvbGxlY3QgdGhlIDMyIGVuY3J5cHRlZCBieXRlcyBpbiBjdAoKCQl0YWJsZS5pbnNlcnQoY3QsIHN0cmluZy5wYWNrKCI8SThJOEk4STgiLCBjMCwgYzEsIGMyLCBjMykpCgoJZW5kCgoJaWYgaSA8PSBtbGVuIHRoZW4gLS0gcHJvY2VzcyBsYXN0LCBwYXJ0aWFsIGJsb2NrIG9mIG0KCgkJYmxrID0gbTpzdWIoaSkgLS0gbGFzdCBwYXJ0aWFsIGJsb2NrCgoJCWJsZW4gPSAjYmxrCgoJCWJsayA9IGJsayAuLiBzdHJpbmcucmVwKCdcMCcsIDMxICsgaSAtIG1sZW4pCgoJCWFzc2VydCgjYmxrID09IDMyLCAjYmxrKQoKCQltMCwgbTEsIG0yLCBtMyA9IHN0cmluZy51bnBhY2soIjxJOEk4SThJOCIsIGJsaykKCgkJYzAsIGMxLCBjMiwgYzMgPSBlbmNfYXV0X3N0ZXAocywgbTAsIG0xLCBtMiwgbTMpCgoJCS0tIGNvbGxlY3QgdGhlIGxhc3QgYmxlbiBlbmNyeXB0ZWQgYnl0ZXMgaW4gY3QKCgkJdGFibGUuaW5zZXJ0KGN0LCBzdHJpbmcucGFjaygiPEk4SThJOEk4IiwgYzAsIGMxLCBjMiwgYzMpOnN1YigxLCBibGVuKSkKCgllbmQKCgktLSBjb21wdXRlIHRoZSBtYWMKCglsb2NhbCB0YWcwLCB0YWcxID0gdGFnX2NvbXB1dGUocywgbWxlbiwgYWRsZW4pCgoJdGFibGUuaW5zZXJ0KGN0LCBzdHJpbmcucGFjaygiPEk4STgiLCB0YWcwLCB0YWcxKSkKCgktLSByZXR1cm4gdGhlIGNvbXBsZXRlIGVuY3J5cHRlZCBtZXNzYWdlICh3aXRoIGFkIHByZWZpeCBhbmQgdGFnIHN1ZmZpeCkKCgoKCWxvY2FsIHB1YmxpYyA9IHt9OwoKCgoJcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgoJCXJldHVybiBjdAoKCWVuZAoKCgoJcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKCQlyZXR1cm4gSGV4LnN0cmluZ1RvSGV4KHRhYmxlLmNvbmNhdChjdCkpCgoJZW5kCgoKCglwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgoJCXJldHVybiB0YWJsZS5jb25jYXQoY3QpCgoJZW5kCgoKCglyZXR1cm4gcHVibGljCgplbmQKCgoKLS0tIERlY3J5cHRzIGFuIGVuY3J5cHRlZCBtZXNzYWdlIHVzaW5nIHRoZSBNb3J1cyBlbmNyeXB0aW9uIGFsZ29yaXRobS4KCi0tLSBAcGFyYW0gayBzdHJpbmcgLSBUaGUgZW5jcnlwdGlvbiBrZXkgKDE2IG9yIDMyLWJ5dGUgc3RyaW5nKS4KCi0tLSBAcGFyYW0gaXYgc3RyaW5nIC0gVGhlIG5vbmNlIG9yIGluaXRpYWwgdmFsdWUgKDE2LWJ5dGUgc3RyaW5nKS4KCi0tLSBAcGFyYW0gZSBzdHJpbmcgLSBUaGUgZW5jcnlwdGVkIG1lc3NhZ2UgKHZhcmlhYmxlIGxlbmd0aCBzdHJpbmcpLgoKLS0tIEBwYXJhbSBhZGxlbj8gbnVtYmVyIChvcHRpb25hbCkgLSBUaGUgbGVuZ3RoIG9mIHRoZSBhZGRpdGlvbmFsIGRhdGEgYXQgdGhlIHN0YXJ0IG9mIGUuIE9wdGlvbmFsLCBkZWZhdWx0cyB0byAwLgoKLS0tIEByZXR1cm5zIHRhYmxlIC0gQSB0YWJsZSBjb250YWluaW5nIHRoZSBkZWNyeXB0ZWQgbWVzc2FnZSBpbiBieXRlcywgaGV4LCBhbmQgc3RyaW5nIGZvcm1hdHMuCgpsb2NhbCBmdW5jdGlvbiBkZWNyeXB0KGssIGl2LCBlLCBhZGxlbikKCglhZGxlbiA9IGFkbGVuIG9yIDAKCiAgICBsb2NhbCBhZCA9ICAiIgoKCWxvY2FsIGVsZW4gPSAjZSAtIDE2ICAtLSBsZW5ndGggb2YgbXNnIGJlZm9yZSB0YWcKCglsb2NhbCBtbGVuID0gZWxlbiAtIGFkbGVuCgoJbG9jYWwgbTAsIG0xLCBtMiwgbTMsIGMwLCBjMSwgYzIsIGMzCgoJbG9jYWwgYmxrLCBibGVuCgoJbG9jYWwgY3QgPSB7fSAgLS0gdXNlZCB0byBjb2xsZWN0IGRlY3J5cHRlZCBibG9ja3MKCgktLSBpbml0CgoJbG9jYWwgcyA9IHN0YXRlX2luaXQoaywgaXYpCgoJLS0gYWJzb3JiIGFkCgoJaWYgYWRsZW4gPiAwIHRoZW4gYWQgPSBlOnN1YigxLCBhZGxlbikgZW5kCgoJbG9jYWwgaSA9IDEKCgl3aGlsZSBpIDw9IGFkbGVuIC0gMzEgZG8gLS1wcm9jZXNzIGZ1bGwgYmxvY2tzCgoJCW0wLCBtMSwgbTIsIG0zID0gc3RyaW5nLnVucGFjaygiPEk4SThJOEk4IiwgYWQsIGkpCgoJCWkgPSBpICsgMzIKCgkJZW5jX2F1dF9zdGVwKHMsIG0wLCBtMSwgbTIsIG0zKQoKCWVuZAoKCWlmIGkgPD0gYWRsZW4gdGhlbiAtLSBwcm9jZXNzIGxhc3QsIHBhcnRpYWwgYmxvY2sgb2YgYWQKCgkJYmxrID0gYWQ6c3ViKGkpIC4uIHN0cmluZy5yZXAoJ1wwJywgMzEgKyBpIC0gYWRsZW4pCgoJCWFzc2VydCgjYmxrID09IDMyLCAjYmxrKQoKCQltMCwgbTEsIG0yLCBtMyA9IHN0cmluZy51bnBhY2soIjxJOEk4SThJOCIsIGJsaykKCgkJZW5jX2F1dF9zdGVwKHMsIG0wLCBtMSwgbTIsIG0zKQoKCWVuZAoKCS0tIGRlY3J5cHQgbWVzc2FnZQoKCWkgPSBhZGxlbiArIDEKCgl3aGlsZSBpIDw9IGVsZW4gLSAzMSBkbyAtLXByb2Nlc3MgZnVsbCBibG9ja3MKCgkJYzAsIGMxLCBjMiwgYzMgPSBzdHJpbmcudW5wYWNrKCI8SThJOEk4STgiLCBlLCBpKQoKCQlpID0gaSArIDMyCgoJCWJsayA9IGRlY19hdXRfc3RlcChzLCBjMCwgYzEsIGMyLCBjMykKCgkJLS0gY29sbGVjdCB0aGUgMzIgZGVjcnlwdGVkIGJ5dGVzIGluIGN0CgoJCXRhYmxlLmluc2VydChjdCwgYmxrKQoKCWVuZAoKCWlmIGkgPD0gZWxlbiB0aGVuIC0tIHByb2Nlc3MgbGFzdCwgcGFydGlhbCBibG9jayBvZiBtCgoJCWJsayA9IGU6c3ViKGksIGVsZW4pIC0tIGxhc3QgcGFydGlhbCBibG9jawoKCQlibGVuID0gI2JsawoKCQlibGsgPSBibGsgLi4gc3RyaW5nLnJlcCgnXDAnLCAzMSArIGkgLSBlbGVuKQoKCQlhc3NlcnQoI2JsayA9PSAzMiwgI2JsaykKCgkJYzAsIGMxLCBjMiwgYzMgPSBzdHJpbmcudW5wYWNrKCI8SThJOEk4STgiLCBibGspCgoJCWJsayA9IGRlY19hdXRfc3RlcChzLCBjMCwgYzEsIGMyLCBjMywgYmxlbikKCgkJdGFibGUuaW5zZXJ0KGN0LCBibGspCgoJZW5kCgoJLS0gY2hlY2sgdGhlIG1hYwoKCWxvY2FsIGN0YWcwLCBjdGFnMSA9IHRhZ19jb21wdXRlKHMsIG1sZW4sIGFkbGVuKQoKCWxvY2FsIHRhZzAsIHRhZzEgPSBzdHJpbmcudW5wYWNrKCI8SThJOCIsIGUsIGVsZW4gKyAxKQoKCWlmICgoY3RhZzAgfiB0YWcwKSB8IChjdGFnMSB+IHRhZzEpKSB+PSAwIHRoZW4KCgkJcmV0dXJuIG5pbCwgImRlY3J5cHQgZXJyb3IiCgoJZW5kCgoJcmV0dXJuIHRhYmxlLmNvbmNhdChjdCkKCmVuZAoKCgoKCnJldHVybiB7CgoJLS0gdGhlIGNvcmUgcGVybXV0YXRpb24gaXMgZXhwb3NlZCB0byBmYWNpbGl0YXRlIHRlc3RzIAoKCXN0YXRlX3VwZGF0ZSA9IHN0YXRlX3VwZGF0ZSwKCgktLQoKCWVuY3J5cHQgPSBlbmNyeXB0LAoKCWRlY3J5cHQgPSBkZWNyeXB0LAoKCS0tCgoJa2V5X3NpemUgPSAzMiwKCglub25jZV9zaXplID0gMTYsCgoJdmFyaWFudCA9ICJNb3J1cy0xMjgwIiwKCn0KAAAAAGxvY2FsIEhleCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5oZXgiKQoKCgotLSB0YWdzCgpsb2NhbCBIRUFERVJfVEFHICA9IDB4MDEKCmxvY2FsIFBBWUxPQURfVEFHID0gMHgwMgoKbG9jYWwgVFJBSUxFUl9UQUcgPSAweDA0Cgpsb2NhbCBGSU5BTF9UQUcgICA9IDB4MDgKCgoKbG9jYWwgZnVuY3Rpb24gRyhzLCBhLCBiLCBjLCBkKQoKCS0tIFRoZSBxdWFydGVyLXJvdW5kLgoKCS0tIHMgaXMgdGhlIHN0YXRlOiB1NjRbMTZdLgoKCWxvY2FsIEEsIEIsIEMsIEQgPSBzW2FdLCBzW2JdLCBzW2NdLCBzW2RdCgoJLS0KCgktLSBIKCk6IHJldHVybiAoYSB+IGIpIH4gKChhICYgYikgPDwgMSkgLS0gSU5MSU5FRAoKCS0tIFJPVFI2NCgpOiByZXR1cm4gKHggPj4gbikgfCAoeCA8PCAoNjQtbikpIC0tSU5MSU5FRAoKCS0tCgoJQSA9IChBIH4gQikgfiAoKEEgJiBCKSA8PCAxKSAgLS0gSChBLCBCKTsKCglEID0gRCB+IEE7IEQgPSAoRCA+PiA4KSB8IChEIDw8ICg1NikpIC0tUk9UUjY0KEQsIDgpIC0tUjAKCglDID0gKEMgfiBEKSB+ICgoQyAmIEQpIDw8IDEpICAtLSBIKEMsIEQpOwoKCUIgPSBCIH4gQzsgQiA9IChCID4+IDE5KSB8IChCIDw8ICg0NSkpIC0tUk9UUjY0KEIsIDE5KSAtLVIxCgoJQSA9IChBIH4gQikgfiAoKEEgJiBCKSA8PCAxKSAgLS0gSChBLCBCKTsKCglEID0gRCB+IEE7IEQgPSAoRCA+PiA0MCkgfCAoRCA8PCAoMjQpKSAtLVJPVFI2NChELCA0MCkgLS1SMgoKCUMgPSAoQyB+IEQpIH4gKChDICYgRCkgPDwgMSkgIC0tIEgoQywgRCk7CgoJQiA9IEIgfiBDOyBCID0gKEIgPj4gNjMpIHwgKEIgPDwgKDEpKSAtLVJPVFI2NChCLCA2MykgLS1SMwoKCXNbYV0sIHNbYl0sIHNbY10sIHNbZF0gPSBBLCBCLCBDLCBECgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gRihzKQoKCS0tIFRoZSBmdWxsIHJvdW5kLiAgcyBpcyB0aGUgc3RhdGU6IHU2NFsxNl0KCgktLQoKCS0tIGJld2FyZSEgaW4gTHVhLCBhcnJheXMgYXJlIDEtYmFzZWQgaW5kZXhlZCwgbm90IDAtaW5kZXhlZCBhcyBpbiBDCgogICAgLS0gQ29sdW1uIHN0ZXAKCglHKHMsICAxLCAgNSwgIDksIDEzKTsKCiAgICBHKHMsICAyLCAgNiwgMTAsIDE0KTsKCiAgICBHKHMsICAzLCAgNywgMTEsIDE1KTsKCiAgICBHKHMsICA0LCAgOCwgMTIsIDE2KTsKCiAgICAtLSBEaWFnb25hbCBzdGVwCgogICAgRyhzLCAgMSwgIDYsIDExLCAxNik7CgogICAgRyhzLCAgMiwgIDcsIDEyLCAxMyk7CgogICAgRyhzLCAgMywgIDgsICA5LCAxNCk7CgogICAgRyhzLCAgNCwgIDUsIDEwLCAxNSk7CgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gcGVybXV0ZShzKQoKCS0tIHRoZSBjb3JlIHBlcm11dGF0aW9uICAoZm91ciByb3VuZHMpCgoJZm9yIF8gPSAxLCA0IGRvIEYocykgZW5kCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gcGFkKGlucykKCgktLSBwYWQgc3RyaW5nIGlucyB0byBsZW5ndGggOTYgKCJCWVRFUyhOT1JYX1IpIikKCglsb2NhbCBvdXQKCglsb2NhbCBpbnNsZW4gPSAjaW5zCgoJaWYgaW5zbGVuID09IDk1IHRoZW4gcmV0dXJuIGlucyAuLiAnXHg4MScgZW5kIC0tIGxhc3QgYnl0ZSBpcyAweDAxIHwgMHg4MAoKCS0tIGhlcmUgaW5zbGVuIGlzIDwgOTUsIHNvIG11c3QgcGFkIHdpdGggOTYtKGluc2xlbisyKSB6ZXJvcwoKCW91dCA9IGlucyAuLiAnXHgwMScgLi4gc3RyaW5nLnJlcCgnXDAnLCA5NC1pbnNsZW4pIC4uICdceDgwJwoKCWFzc2VydCgjb3V0ID09IDk2KQoKCXJldHVybiBvdXQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBhYnNvcmJfYmxvY2socywgaW5zLCBpbmksIHRhZykKCgktLSB0aGUgaW5wdXQgc3RyaW5nIGlzIHRoZSBzdWJzdHJpbmcgb2YgJ2lucycgc3RhcnRpbmcgYXQgcG9zaXRpb24gJ2luaScKCgktLSAod2UgY2Fubm90IHVzZSBhIGNoYXIqIGFzIGluIEMhKQoKCXNbMTZdID0gc1sxNl0gfiB0YWcKCglwZXJtdXRlKHMpCgoJZm9yIGkgPSAxLCAxMiBkbwoKCQlzW2ldID0gc1tpXSB+IHN0cmluZy51bnBhY2soIjxJOCIsIGlucywgaW5pICsgKGktMSkqOCkKCgllbmQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBhYnNvcmJfbGFzdGJsb2NrKHMsIGxhc3QsIHRhZykKCglhYnNvcmJfYmxvY2socywgcGFkKGxhc3QpLCAxLCB0YWcpCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gZW5jcnlwdF9ibG9jayhzLCBvdXRfdGFibGUsIGlucywgaW5pKQoKCS0tIGVuY3J5cHQgYmxvY2sgaW4gJ2lucycgYXQgb2Zmc2V0ICdpbmknCgoJLS0gYXBwZW5kIGVuY3J5cHRlZCBjaHVua3MgYXQgdGhlIGVuZCBvZiBvdXRfdGFibGUKCglzWzE2XSA9IHNbMTZdIH4gUEFZTE9BRF9UQUcKCglwZXJtdXRlKHMpCgoJZm9yIGkgPSAxLCAxMiBkbwoKCQlzW2ldID0gc1tpXSB+IHN0cmluZy51bnBhY2soIjxJOCIsIGlucywgaW5pICsgKGktMSkqOCkKCgkJdGFibGUuaW5zZXJ0KG91dF90YWJsZSwgc3RyaW5nLnBhY2soIjxJOCIsIHNbaV0pKQoKCWVuZAoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGVuY3J5cHRfbGFzdGJsb2NrKHMsIG91dF90YWJsZSwgbGFzdCkKCgktLSBlbmNyeXB0IGxhc3QgYmxvY2sKCgktLSBhcHBlbmQgZW5jcnlwdGVkIGxhc3QgYmxvY2sgYXQgdGhlIGVuZCBvZiBvdXRfdGFibGUKCglsb2NhbCB0ID0ge30gLS0gZW5jcnlwdGVkIGNodW5rcyBvZiAnbGFzdCcgd2lsbCBiZSBhcHBlbmRlZCB0byB0CgoJbG9jYWwgbGFzdGxlbiA9ICNsYXN0CgoJbGFzdCA9IHBhZChsYXN0KQoKCWVuY3J5cHRfYmxvY2socywgdCwgbGFzdCwgMSkKCglsYXN0ID0gdGFibGUuY29uY2F0KHQpCgoJbGFzdCA9IGxhc3Q6c3ViKDEsIGxhc3RsZW4pICAtLSBrZWVwIG9ubHkgdGhlIGZpcnN0IGxhc3RsZW4gYnl0ZXMKCgl0YWJsZS5pbnNlcnQob3V0X3RhYmxlLCBsYXN0KQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGRlY3J5cHRfYmxvY2socywgb3V0X3RhYmxlLCBpbnMsIGluaSkKCgktLSBkZWNyeXB0IGJsb2NrIGluICdpbnMnIGF0IG9mZnNldCAnaW5pJwoKCS0tIGFwcGVuZCBkZWNyeXB0ZWQgY2h1bmtzIGF0IHRoZSBlbmQgb2Ygb3V0X3RhYmxlCgoJc1sxNl0gPSBzWzE2XSB+IFBBWUxPQURfVEFHCgoJcGVybXV0ZShzKQoKCWZvciBpID0gMSwgMTIgZG8KCgkJbG9jYWwgYyA9IHN0cmluZy51bnBhY2soIjxJOCIsIGlucywgaW5pICsgKGktMSkqOCkKCgkJdGFibGUuaW5zZXJ0KG91dF90YWJsZSwgc3RyaW5nLnBhY2soIjxJOCIsIHNbaV0gfiBjKSkKCgkJc1tpXSA9IGMKCgllbmQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBkZWNyeXB0X2xhc3RibG9jayhzLCBvdXRfdGFibGUsIGxhc3QpCgoJLS0gZGVjcnlwdCBsYXN0IGJsb2NrCgoJLS0gYXBwZW5kIGRlY3J5cHRlZCBibG9jayBhdCB0aGUgZW5kIG9mIG91dF90YWJsZQoKCS0tCgoJbG9jYWwgbGFzdGxlbiA9ICNsYXN0CgoJc1sxNl0gPSBzWzE2XSB+IFBBWUxPQURfVEFHCgoJcGVybXV0ZShzKQoKCWxvY2FsIGJ5dGUsIGNoYXIgPSBzdHJpbmcuYnl0ZSwgc3RyaW5nLmNoYXIKCglsb2NhbCBsYXN0YmxvY2tfczhfdGFibGUgPSB7fSAtLSBsYXN0IGJsb2NrIGFzIGFuIGFycmF5IG9mIDgtYnl0ZSBzdHJpbmdzCgoJZm9yIGkgPSAxLCAxMiBkbwoKCQlsb2NhbCBzOCA9IHN0cmluZy5wYWNrKCI8STgiLCBzW2ldKQoKCQl0YWJsZS5pbnNlcnQobGFzdGJsb2NrX3M4X3RhYmxlLCBzOCkKCgllbmQKCglsb2NhbCBsYXN0YmxvY2sgPSB0YWJsZS5jb25jYXQobGFzdGJsb2NrX3M4X3RhYmxlKSAtLSBsYXN0YmxvY2sgYXMgYSA5Ni1ieXRlIHN0cmluZwoKCS0tIGV4cGxvZGUgbGFzdGJsb2NrIGFzIGFuIGFycmF5IG9mIGJ5dGVzCgoJbG9jYWwgbGFzdGJsb2NrX2J5dGVfdGFibGUgPSB7fQoKCWZvciBpID0gMSwgOTYgZG8KCgkJbGFzdGJsb2NrX2J5dGVfdGFibGVbaV0gPSBieXRlKGxhc3RibG9jaywgaSkKCgllbmQKCgktLSBjb3B5IGxhc3QKCglmb3IgaSA9IDEsIGxhc3RsZW4gZG8KCgkJbGFzdGJsb2NrX2J5dGVfdGFibGVbaV0gPSBieXRlKGxhc3QsIGkpCgoJZW5kCgoJLS0gcGVyZm9ybSB0aGUgJ3hvcidzCgoJbGFzdGJsb2NrX2J5dGVfdGFibGVbbGFzdGxlbisxXSA9IGxhc3RibG9ja19ieXRlX3RhYmxlW2xhc3RsZW4rMV0gfiAweDAxCgoJbGFzdGJsb2NrX2J5dGVfdGFibGVbOTZdID0gbGFzdGJsb2NrX2J5dGVfdGFibGVbOTZdIH4gMHg4MAoKCS0tIGJ1aWxkIGJhY2sgbGFzdGJsb2NrIGFzIGEgc3RyaW5nCgoJbG9jYWwgbGFzdGJsb2NrX2NoYXJfdGFibGUgPSB7fQoKCWZvciBpID0gMSwgOTYgZG8KCgkJbGFzdGJsb2NrX2NoYXJfdGFibGVbaV0gPSBjaGFyKGxhc3RibG9ja19ieXRlX3RhYmxlW2ldKQoKCWVuZAoKCWxhc3RibG9jayA9IHRhYmxlLmNvbmNhdChsYXN0YmxvY2tfY2hhcl90YWJsZSkgLS0gbGFzdGJsb2NrIGFzIGEgOTYtYnl0ZSBzdHJpbmcKCgktLQoKCWxvY2FsIHQgPSB7fQoKCWZvciBpID0gMSwgMTIgZG8KCgkJbG9jYWwgYyA9IHN0cmluZy51bnBhY2soIjxJOCIsIGxhc3RibG9jaywgMSArIChpLTEpKjgpCgoJCWxvY2FsIHggPSBzdHJpbmcucGFjaygiPEk4Iiwgc1tpXSB+IGMpCgoJCXRhYmxlLmluc2VydCh0LCB4KQoKCQlzW2ldID0gYwoKCWVuZAoKCWxhc3QgPSB0YWJsZS5jb25jYXQodCkKCglsYXN0ID0gbGFzdDpzdWIoMSwgbGFzdGxlbikgIC0tIGtlZXAgb25seSB0aGUgZmlyc3QgbGFzdGxlbiBieXRlcwoKCXRhYmxlLmluc2VydChvdXRfdGFibGUsIGxhc3QpCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gaW5pdChrLCBuKQoKCS0tIGluaXRpYWxpemUgYW5kIHJldHVybiB0aGUgbm9yeCBzdGF0ZQoKCS0tIGs6IHRoZSBrZXkgYXMgYSAzMi1ieXRlIHN0cmluZwoKCS0tIG46IHRoZSBub25jZSBhcyBhIDMyLWJ5dGUgc3RyaW5nCgoJbG9jYWwgcyA9IHt9IC0tIHRoZSBub3J4IHN0YXRlOiB1NjRbMTZdCgoJLS0gKHRoZSB0d28gZm9sbG93aW5nIEYocykgY291bGQgYmUgcmVwbGFjZWQgd2l0aCBhIGNvbnN0YW50IHRhYmxlKQoKCS0tIChvbmx5IHNbOV0uLnNbMTZdIGFyZSBuZWVkZWQpCgoJZm9yIGkgPSAxLCAxNiBkbyBzW2ldID0gaS0xIGVuZAoKCUYocykKCglGKHMpCgoJLS0gbG9hZCB0aGUgbm9uY2UKCglzWzFdLCBzWzJdLCBzWzNdLCBzWzRdID0gc3RyaW5nLnVucGFjaygiPEk4SThJOEk4IiwgbikKCgktLSBsb2FkIHRoZSBrZXkKCglsb2NhbCBrMSwgazIsIGszLCBrNCA9IHN0cmluZy51bnBhY2soIjxJOEk4SThJOCIsIGspCgoJc1s1XSwgc1s2XSwgc1s3XSwgc1s4XSA9ICBrMSwgazIsIGszLCBrNAoKCS0tCgoJc1sxM10gPSBzWzEzXSB+IDY0ICAtLVcKCglzWzE0XSA9IHNbMTRdIH4gNCAgIC0tTAoKCXNbMTVdID0gc1sxNV0gfiAxICAgLS1QCgoJc1sxNl0gPSBzWzE2XSB+IDI1NiAtLVQKCgktLQoKCXBlcm11dGUocykKCgktLQoKCXNbMTNdID0gc1sxM10gfiBrMQoKCXNbMTRdID0gc1sxNF0gfiBrMgoKCXNbMTVdID0gc1sxNV0gfiBrMwoKCXNbMTZdID0gc1sxNl0gfiBrNAoKCS0tCgoJcmV0dXJuIHMKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBhYnNvcmJfZGF0YShzLCBpbnMsIHRhZykKCglsb2NhbCBpbmxlbiA9ICNpbnMKCglsb2NhbCBpID0gMQoKCWlmIGlubGVuID4gMCB0aGVuCgoJCXdoaWxlIGlubGVuID49IDk2IGRvCgoJCQlhYnNvcmJfYmxvY2socywgaW5zLCBpLCB0YWcpCgoJCQlpbmxlbiA9IGlubGVuIC0gOTYKCgkJCWkgPSBpICsgOTYKCgkJZW5kCgoJCWFic29yYl9sYXN0YmxvY2socywgaW5zOnN1YihpKSwgdGFnKQoKCWVuZC0taWYKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBlbmNyeXB0X2RhdGEocywgb3V0X3RhYmxlLCBpbnMpCgoJbG9jYWwgaW5sZW4gPSAjaW5zCgoJbG9jYWwgaSA9IDEKCglpZiBpbmxlbiA+IDAgdGhlbgoKCQl3aGlsZSBpbmxlbiA+PSA5NiBkbwoKCQkJZW5jcnlwdF9ibG9jayhzLCBvdXRfdGFibGUsIGlucywgaSkKCgkJCWlubGVuID0gaW5sZW4gLSA5NgoKCQkJaSA9IGkgKyA5NgoKCQllbmQKCgkJZW5jcnlwdF9sYXN0YmxvY2socywgb3V0X3RhYmxlLCBpbnM6c3ViKGkpKQoKCWVuZAoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGRlY3J5cHRfZGF0YShzLCBvdXRfdGFibGUsIGlucykKCglsb2NhbCBpbmxlbiA9ICNpbnMKCglsb2NhbCBpID0gMQoKCWlmIGlubGVuID4gMCB0aGVuCgoJCXdoaWxlIGlubGVuID49IDk2IGRvCgoJCQlkZWNyeXB0X2Jsb2NrKHMsIG91dF90YWJsZSwgaW5zLCBpKQoKCQkJaW5sZW4gPSBpbmxlbiAtIDk2CgoJCQlpID0gaSArIDk2CgoJCWVuZAoKCQlkZWNyeXB0X2xhc3RibG9jayhzLCBvdXRfdGFibGUsIGluczpzdWIoaSkpCgoJZW5kCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gZmluYWxpemUocywgaykKCgktLSByZXR1cm4gdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyAoMzItYnl0ZSBzdHJpbmcpCgoJLS0KCglzWzE2XSA9IHNbMTZdIH4gRklOQUxfVEFHCgoJcGVybXV0ZShzKQoKCS0tCgoJbG9jYWwgazEsIGsyLCBrMywgazQgPSBzdHJpbmcudW5wYWNrKCI8SThJOEk4STgiLCBrKQoKCS0tCgoJc1sxM10gPSBzWzEzXSB+IGsxCgoJc1sxNF0gPSBzWzE0XSB+IGsyCgoJc1sxNV0gPSBzWzE1XSB+IGszCgoJc1sxNl0gPSBzWzE2XSB+IGs0CgoJLS0KCglwZXJtdXRlKHMpCgoJLS0KCglzWzEzXSA9IHNbMTNdIH4gazEKCglzWzE0XSA9IHNbMTRdIH4gazIKCglzWzE1XSA9IHNbMTVdIH4gazMKCglzWzE2XSA9IHNbMTZdIH4gazQKCgktLQoKCWxvY2FsIGF1dGh0YWcgPSBzdHJpbmcucGFjaygiPEk4SThJOEk4Iiwgc1sxM10sIHNbMTRdLCBzWzE1XSwgc1sxNl0pCgoJcmV0dXJuIGF1dGh0YWcKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiB2ZXJpZnlfdGFnKHRhZzEsIHRhZzIpCgoJcmV0dXJuIHRhZzEgPT0gdGFnMgoKZW5kCgoKCgoKLS0tIEVuY3J5cHRzIHRoZSBnaXZlbiBwbGFpbiB0ZXh0IHVzaW5nIHRoZSBOT1JYIGNpcGhlciB3aXRoIGFuIEFFQUQgY29uc3RydWN0aW9uLgoKLS0tIEBwYXJhbSBrZXkgc3RyaW5nIC0gVGhlIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uLgoKLS0tIEBwYXJhbSBub25jZSBzdHJpbmcgLSBUaGUgbm9uY2UgdXNlZCBmb3IgZW5jcnlwdGlvbiAzMi1ieXRlIHN0cmluZy4KCi0tLSBAcGFyYW0gcGxhaW4gc3RyaW5nIC0gVGhlIHBsYWluIHRleHQgdG8gYmUgZW5jcnlwdGVkIDMyLWJ5dGUgc3RyaW5nLgoKLS0tIEBwYXJhbSBoZWFkZXI/IHN0cmluZyAob3B0aW9uYWwpIC0gVGhlIGhlYWRlciB0byBiZSBlbmNyeXB0ZWQgMzItYnl0ZSBzdHJpbmcuIERlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy4KCi0tLSBAcGFyYW0gdHJhaWxlcj8gc3RyaW5nIChvcHRpb25hbCkgLSBUaGUgdHJhaWxlciB0byBiZSBlbmNyeXB0ZWQgMzItYnl0ZSBzdHJpbmcuIERlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy4KCi0tLSBAcmV0dXJucyB0YWJsZSAtIEEgdGFibGUgY29udGFpbmluZyB0aGUgZW5jcnlwdGVkIG1lc3NhZ2UgaW4gYnl0ZXMsIHN0cmluZywgYW5kIGhleCBmb3JtYXRzLgoKbG9jYWwgZnVuY3Rpb24gYWVhZF9lbmNyeXB0KGtleSwgbm9uY2UsIHBsYWluLCBoZWFkZXIsIHRyYWlsZXIpCgoJaGVhZGVyID0gaGVhZGVyIG9yICIiCgoJdHJhaWxlciA9IHRyYWlsZXIgb3IgIiIKCglsb2NhbCBvdXRfdGFibGUgPSB7fQoKCWxvY2FsIHN0YXRlID0gaW5pdChrZXksIG5vbmNlKQoKCWFic29yYl9kYXRhKHN0YXRlLCBoZWFkZXIsIEhFQURFUl9UQUcpCgoJZW5jcnlwdF9kYXRhKHN0YXRlLCBvdXRfdGFibGUsIHBsYWluKQoKCWFic29yYl9kYXRhKHN0YXRlLCB0cmFpbGVyLCBUUkFJTEVSX1RBRykKCglsb2NhbCB0YWcgPSBmaW5hbGl6ZShzdGF0ZSwga2V5KQoKCXRhYmxlLmluc2VydChvdXRfdGFibGUsIHRhZykKCglsb2NhbCBjcnlwdGVkID0gdGFibGUuY29uY2F0KG91dF90YWJsZSkKCglhc3NlcnQoI2NyeXB0ZWQgPT0gI3BsYWluICsgMzIpCgoKCiAgICBsb2NhbCBwdWJsaWMgPSB7fQoKCgogICAgcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBvdXRfdGFibGUKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGNyeXB0ZWQKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0hleCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIEhleC5zdHJpbmdUb0hleChjcnlwdGVkKQoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYwoKZW5kCgoKCi0tLSBEZWNyeXB0cyB0aGUgZ2l2ZW4gY3J5cHRlZCB0ZXh0IHVzaW5nIHRoZSBOT1JYIGNpcGhlciB3aXRoIGFuIEFFQUQgY29uc3RydWN0aW9uLgoKLS0tIEBwYXJhbSBrZXkgc3RyaW5nIC0gVGhlIGtleSB1c2VkIGZvciBkZWNyeXB0aW9uIDMyLWJ5dGUgc3RyaW5nLgoKLS0tIEBwYXJhbSBub25jZSBzdHJpbmcgLSBUaGUgbm9uY2UgdXNlZCBmb3IgZGVjcnlwdGlvbiAzMi1ieXRlIHN0cmluZy4KCi0tLSBAcGFyYW0gY3J5cHRlZCBzdHJpbmcgLSBUaGUgY3J5cHRlZCB0ZXh0IHRvIGJlIGRlY3J5cHRlZCAzMi1ieXRlIHN0cmluZy4KCi0tLSBAcGFyYW0gaGVhZGVyPyBzdHJpbmcgKG9wdGlvbmFsKSAtIFRoZSBoZWFkZXIgdG8gYmUgZGVjcnlwdGVkIDMyLWJ5dGUgc3RyaW5nLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuCgotLS0gQHBhcmFtIHRyYWlsZXI/IHN0cmluZyAob3B0aW9uYWwpIC0gVGhlIHRyYWlsZXIgdG8gYmUgZGVjcnlwdGVkIDMyLWJ5dGUgc3RyaW5nLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuCgotLS0gQHJldHVybnMgc3RyaW5nfG5pbCAtIFRoZSBkZWNyeXB0ZWQgcGxhaW4gdGV4dCwgb3IgKG5pbCwgZXJyb3IgbWVzc2FnZSkgaWYgdGhlIGF1dGhlbnRpY2F0ZWQgZGVjcnlwdGlvbiBmYWlscy4KCmxvY2FsIGZ1bmN0aW9uIGFlYWRfZGVjcnlwdChrZXksIG5vbmNlLCBjcnlwdGVkLCBoZWFkZXIsIHRyYWlsZXIpCgoJaGVhZGVyID0gaGVhZGVyIG9yICIiCgoJdHJhaWxlciA9IHRyYWlsZXIgb3IgIiIKCglhc3NlcnQoI2NyeXB0ZWQgPj0gMzIpCgoJbG9jYWwgb3V0X3RhYmxlID0ge30KCglsb2NhbCBzdGF0ZSA9IGluaXQoa2V5LCBub25jZSkKCglhYnNvcmJfZGF0YShzdGF0ZSwgaGVhZGVyLCBIRUFERVJfVEFHKQoKCWxvY2FsIGN0YWcgPSBjcnlwdGVkOnN1YigjY3J5cHRlZCAtIDMyICsgMSkKCglsb2NhbCBjID0gY3J5cHRlZDpzdWIoMSwgI2NyeXB0ZWQgLSAzMikKCglkZWNyeXB0X2RhdGEoc3RhdGUsIG91dF90YWJsZSwgYykKCglhYnNvcmJfZGF0YShzdGF0ZSwgdHJhaWxlciwgVFJBSUxFUl9UQUcpCgoJbG9jYWwgdGFnID0gZmluYWxpemUoc3RhdGUsIGtleSkKCglpZiBub3QgdmVyaWZ5X3RhZyh0YWcsIGN0YWcpIHRoZW4gcmV0dXJuIG5pbCwgImF1dGggZmFpbHVyZSIgZW5kCgoJbG9jYWwgcGxhaW4gPSB0YWJsZS5jb25jYXQob3V0X3RhYmxlKQoKCXJldHVybiBwbGFpbgoKZW5kCgoKCnJldHVybiB7CgoJZW5jcnlwdCA9IGFlYWRfZW5jcnlwdCwKCglkZWNyeXB0ID0gYWVhZF9kZWNyeXB0LAoKCS0tCgoJa2V5X3NpemUgPSAzMiwKCglub25jZV9zaXplID0gMzIsCgoJdmFyaWFudCA9ICJOT1JYIDY0LTQtMSIsCgp9CgBCoLgOC7PqAmxvY2FsIEFycmF5ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmFycmF5Iik7Cgpsb2NhbCBCaXQgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYml0Iik7CgoKCmxvY2FsIFhPUiA9IEJpdC5ieG9yOwoKCgpsb2NhbCBTQk9YID0gewoKIFswXSA9IDB4NjMsIDB4N0MsIDB4NzcsIDB4N0IsIDB4RjIsIDB4NkIsIDB4NkYsIDB4QzUsIDB4MzAsIDB4MDEsIDB4NjcsIDB4MkIsIDB4RkUsIDB4RDcsIDB4QUIsIDB4NzYsCgogMHhDQSwgMHg4MiwgMHhDOSwgMHg3RCwgMHhGQSwgMHg1OSwgMHg0NywgMHhGMCwgMHhBRCwgMHhENCwgMHhBMiwgMHhBRiwgMHg5QywgMHhBNCwgMHg3MiwgMHhDMCwKCiAweEI3LCAweEZELCAweDkzLCAweDI2LCAweDM2LCAweDNGLCAweEY3LCAweENDLCAweDM0LCAweEE1LCAweEU1LCAweEYxLCAweDcxLCAweEQ4LCAweDMxLCAweDE1LAoKIDB4MDQsIDB4QzcsIDB4MjMsIDB4QzMsIDB4MTgsIDB4OTYsIDB4MDUsIDB4OUEsIDB4MDcsIDB4MTIsIDB4ODAsIDB4RTIsIDB4RUIsIDB4MjcsIDB4QjIsIDB4NzUsCgogMHgwOSwgMHg4MywgMHgyQywgMHgxQSwgMHgxQiwgMHg2RSwgMHg1QSwgMHhBMCwgMHg1MiwgMHgzQiwgMHhENiwgMHhCMywgMHgyOSwgMHhFMywgMHgyRiwgMHg4NCwKCiAweDUzLCAweEQxLCAweDAwLCAweEVELCAweDIwLCAweEZDLCAweEIxLCAweDVCLCAweDZBLCAweENCLCAweEJFLCAweDM5LCAweDRBLCAweDRDLCAweDU4LCAweENGLAoKIDB4RDAsIDB4RUYsIDB4QUEsIDB4RkIsIDB4NDMsIDB4NEQsIDB4MzMsIDB4ODUsIDB4NDUsIDB4RjksIDB4MDIsIDB4N0YsIDB4NTAsIDB4M0MsIDB4OUYsIDB4QTgsCgogMHg1MSwgMHhBMywgMHg0MCwgMHg4RiwgMHg5MiwgMHg5RCwgMHgzOCwgMHhGNSwgMHhCQywgMHhCNiwgMHhEQSwgMHgyMSwgMHgxMCwgMHhGRiwgMHhGMywgMHhEMiwKCiAweENELCAweDBDLCAweDEzLCAweEVDLCAweDVGLCAweDk3LCAweDQ0LCAweDE3LCAweEM0LCAweEE3LCAweDdFLCAweDNELCAweDY0LCAweDVELCAweDE5LCAweDczLAoKIDB4NjAsIDB4ODEsIDB4NEYsIDB4REMsIDB4MjIsIDB4MkEsIDB4OTAsIDB4ODgsIDB4NDYsIDB4RUUsIDB4QjgsIDB4MTQsIDB4REUsIDB4NUUsIDB4MEIsIDB4REIsCgogMHhFMCwgMHgzMiwgMHgzQSwgMHgwQSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1QywgMHhDMiwgMHhEMywgMHhBQywgMHg2MiwgMHg5MSwgMHg5NSwgMHhFNCwgMHg3OSwKCiAweEU3LCAweEM4LCAweDM3LCAweDZELCAweDhELCAweEQ1LCAweDRFLCAweEE5LCAweDZDLCAweDU2LCAweEY0LCAweEVBLCAweDY1LCAweDdBLCAweEFFLCAweDA4LAoKIDB4QkEsIDB4NzgsIDB4MjUsIDB4MkUsIDB4MUMsIDB4QTYsIDB4QjQsIDB4QzYsIDB4RTgsIDB4REQsIDB4NzQsIDB4MUYsIDB4NEIsIDB4QkQsIDB4OEIsIDB4OEEsCgogMHg3MCwgMHgzRSwgMHhCNSwgMHg2NiwgMHg0OCwgMHgwMywgMHhGNiwgMHgwRSwgMHg2MSwgMHgzNSwgMHg1NywgMHhCOSwgMHg4NiwgMHhDMSwgMHgxRCwgMHg5RSwKCiAweEUxLCAweEY4LCAweDk4LCAweDExLCAweDY5LCAweEQ5LCAweDhFLCAweDk0LCAweDlCLCAweDFFLCAweDg3LCAweEU5LCAweENFLCAweDU1LCAweDI4LCAweERGLAoKIDB4OEMsIDB4QTEsIDB4ODksIDB4MEQsIDB4QkYsIDB4RTYsIDB4NDIsIDB4NjgsIDB4NDEsIDB4OTksIDB4MkQsIDB4MEYsIDB4QjAsIDB4NTQsIDB4QkIsIDB4MTZ9OwoKCgpsb2NhbCBJU0JPWCA9IHsKCiBbMF0gPSAweDUyLCAweDA5LCAweDZBLCAweEQ1LCAweDMwLCAweDM2LCAweEE1LCAweDM4LCAweEJGLCAweDQwLCAweEEzLCAweDlFLCAweDgxLCAweEYzLCAweEQ3LCAweEZCLAoKIDB4N0MsIDB4RTMsIDB4MzksIDB4ODIsIDB4OUIsIDB4MkYsIDB4RkYsIDB4ODcsIDB4MzQsIDB4OEUsIDB4NDMsIDB4NDQsIDB4QzQsIDB4REUsIDB4RTksIDB4Q0IsCgogMHg1NCwgMHg3QiwgMHg5NCwgMHgzMiwgMHhBNiwgMHhDMiwgMHgyMywgMHgzRCwgMHhFRSwgMHg0QywgMHg5NSwgMHgwQiwgMHg0MiwgMHhGQSwgMHhDMywgMHg0RSwKCiAweDA4LCAweDJFLCAweEExLCAweDY2LCAweDI4LCAweEQ5LCAweDI0LCAweEIyLCAweDc2LCAweDVCLCAweEEyLCAweDQ5LCAweDZELCAweDhCLCAweEQxLCAweDI1LAoKIDB4NzIsIDB4RjgsIDB4RjYsIDB4NjQsIDB4ODYsIDB4NjgsIDB4OTgsIDB4MTYsIDB4RDQsIDB4QTQsIDB4NUMsIDB4Q0MsIDB4NUQsIDB4NjUsIDB4QjYsIDB4OTIsCgogMHg2QywgMHg3MCwgMHg0OCwgMHg1MCwgMHhGRCwgMHhFRCwgMHhCOSwgMHhEQSwgMHg1RSwgMHgxNSwgMHg0NiwgMHg1NywgMHhBNywgMHg4RCwgMHg5RCwgMHg4NCwKCiAweDkwLCAweEQ4LCAweEFCLCAweDAwLCAweDhDLCAweEJDLCAweEQzLCAweDBBLCAweEY3LCAweEU0LCAweDU4LCAweDA1LCAweEI4LCAweEIzLCAweDQ1LCAweDA2LAoKIDB4RDAsIDB4MkMsIDB4MUUsIDB4OEYsIDB4Q0EsIDB4M0YsIDB4MEYsIDB4MDIsIDB4QzEsIDB4QUYsIDB4QkQsIDB4MDMsIDB4MDEsIDB4MTMsIDB4OEEsIDB4NkIsCgogMHgzQSwgMHg5MSwgMHgxMSwgMHg0MSwgMHg0RiwgMHg2NywgMHhEQywgMHhFQSwgMHg5NywgMHhGMiwgMHhDRiwgMHhDRSwgMHhGMCwgMHhCNCwgMHhFNiwgMHg3MywKCiAweDk2LCAweEFDLCAweDc0LCAweDIyLCAweEU3LCAweEFELCAweDM1LCAweDg1LCAweEUyLCAweEY5LCAweDM3LCAweEU4LCAweDFDLCAweDc1LCAweERGLCAweDZFLAoKIDB4NDcsIDB4RjEsIDB4MUEsIDB4NzEsIDB4MUQsIDB4MjksIDB4QzUsIDB4ODksIDB4NkYsIDB4QjcsIDB4NjIsIDB4MEUsIDB4QUEsIDB4MTgsIDB4QkUsIDB4MUIsCgogMHhGQywgMHg1NiwgMHgzRSwgMHg0QiwgMHhDNiwgMHhEMiwgMHg3OSwgMHgyMCwgMHg5QSwgMHhEQiwgMHhDMCwgMHhGRSwgMHg3OCwgMHhDRCwgMHg1QSwgMHhGNCwKCiAweDFGLCAweERELCAweEE4LCAweDMzLCAweDg4LCAweDA3LCAweEM3LCAweDMxLCAweEIxLCAweDEyLCAweDEwLCAweDU5LCAweDI3LCAweDgwLCAweEVDLCAweDVGLAoKIDB4NjAsIDB4NTEsIDB4N0YsIDB4QTksIDB4MTksIDB4QjUsIDB4NEEsIDB4MEQsIDB4MkQsIDB4RTUsIDB4N0EsIDB4OUYsIDB4OTMsIDB4QzksIDB4OUMsIDB4RUYsCgogMHhBMCwgMHhFMCwgMHgzQiwgMHg0RCwgMHhBRSwgMHgyQSwgMHhGNSwgMHhCMCwgMHhDOCwgMHhFQiwgMHhCQiwgMHgzQywgMHg4MywgMHg1MywgMHg5OSwgMHg2MSwKCiAweDE3LCAweDJCLCAweDA0LCAweDdFLCAweEJBLCAweDc3LCAweEQ2LCAweDI2LCAweEUxLCAweDY5LCAweDE0LCAweDYzLCAweDU1LCAweDIxLCAweDBDLCAweDdEfTsKCgoKbG9jYWwgUk9XX1NISUZUID0gIHsgIDEsICA2LCAxMSwgMTYsICA1LCAxMCwgMTUsICA0LCAgOSwgMTQsICAzLCAgOCwgMTMsICAyLCAgNywgMTIsIH07Cgpsb2NhbCBJUk9XX1NISUZUID0geyAgMSwgMTQsIDExLCAgOCwgIDUsICAyLCAxNSwgMTIsICA5LCAgNiwgIDMsIDE2LCAxMywgMTAsICA3LCAgNCwgfTsKCgoKbG9jYWwgRVRBQkxFID0gewoKIFswXSA9IDB4MDEsIDB4MDMsIDB4MDUsIDB4MEYsIDB4MTEsIDB4MzMsIDB4NTUsIDB4RkYsIDB4MUEsIDB4MkUsIDB4NzIsIDB4OTYsIDB4QTEsIDB4RjgsIDB4MTMsIDB4MzUsCgogMHg1RiwgMHhFMSwgMHgzOCwgMHg0OCwgMHhEOCwgMHg3MywgMHg5NSwgMHhBNCwgMHhGNywgMHgwMiwgMHgwNiwgMHgwQSwgMHgxRSwgMHgyMiwgMHg2NiwgMHhBQSwKCiAweEU1LCAweDM0LCAweDVDLCAweEU0LCAweDM3LCAweDU5LCAweEVCLCAweDI2LCAweDZBLCAweEJFLCAweEQ5LCAweDcwLCAweDkwLCAweEFCLCAweEU2LCAweDMxLAoKIDB4NTMsIDB4RjUsIDB4MDQsIDB4MEMsIDB4MTQsIDB4M0MsIDB4NDQsIDB4Q0MsIDB4NEYsIDB4RDEsIDB4NjgsIDB4QjgsIDB4RDMsIDB4NkUsIDB4QjIsIDB4Q0QsCgogMHg0QywgMHhENCwgMHg2NywgMHhBOSwgMHhFMCwgMHgzQiwgMHg0RCwgMHhENywgMHg2MiwgMHhBNiwgMHhGMSwgMHgwOCwgMHgxOCwgMHgyOCwgMHg3OCwgMHg4OCwKCiAweDgzLCAweDlFLCAweEI5LCAweEQwLCAweDZCLCAweEJELCAweERDLCAweDdGLCAweDgxLCAweDk4LCAweEIzLCAweENFLCAweDQ5LCAweERCLCAweDc2LCAweDlBLAoKIDB4QjUsIDB4QzQsIDB4NTcsIDB4RjksIDB4MTAsIDB4MzAsIDB4NTAsIDB4RjAsIDB4MEIsIDB4MUQsIDB4MjcsIDB4NjksIDB4QkIsIDB4RDYsIDB4NjEsIDB4QTMsCgogMHhGRSwgMHgxOSwgMHgyQiwgMHg3RCwgMHg4NywgMHg5MiwgMHhBRCwgMHhFQywgMHgyRiwgMHg3MSwgMHg5MywgMHhBRSwgMHhFOSwgMHgyMCwgMHg2MCwgMHhBMCwKCiAweEZCLCAweDE2LCAweDNBLCAweDRFLCAweEQyLCAweDZELCAweEI3LCAweEMyLCAweDVELCAweEU3LCAweDMyLCAweDU2LCAweEZBLCAweDE1LCAweDNGLCAweDQxLAoKIDB4QzMsIDB4NUUsIDB4RTIsIDB4M0QsIDB4NDcsIDB4QzksIDB4NDAsIDB4QzAsIDB4NUIsIDB4RUQsIDB4MkMsIDB4NzQsIDB4OUMsIDB4QkYsIDB4REEsIDB4NzUsCgogMHg5RiwgMHhCQSwgMHhENSwgMHg2NCwgMHhBQywgMHhFRiwgMHgyQSwgMHg3RSwgMHg4MiwgMHg5RCwgMHhCQywgMHhERiwgMHg3QSwgMHg4RSwgMHg4OSwgMHg4MCwKCiAweDlCLCAweEI2LCAweEMxLCAweDU4LCAweEU4LCAweDIzLCAweDY1LCAweEFGLCAweEVBLCAweDI1LCAweDZGLCAweEIxLCAweEM4LCAweDQzLCAweEM1LCAweDU0LAoKIDB4RkMsIDB4MUYsIDB4MjEsIDB4NjMsIDB4QTUsIDB4RjQsIDB4MDcsIDB4MDksIDB4MUIsIDB4MkQsIDB4NzcsIDB4OTksIDB4QjAsIDB4Q0IsIDB4NDYsIDB4Q0EsCgogMHg0NSwgMHhDRiwgMHg0QSwgMHhERSwgMHg3OSwgMHg4QiwgMHg4NiwgMHg5MSwgMHhBOCwgMHhFMywgMHgzRSwgMHg0MiwgMHhDNiwgMHg1MSwgMHhGMywgMHgwRSwKCiAweDEyLCAweDM2LCAweDVBLCAweEVFLCAweDI5LCAweDdCLCAweDhELCAweDhDLCAweDhGLCAweDhBLCAweDg1LCAweDk0LCAweEE3LCAweEYyLCAweDBELCAweDE3LAoKIDB4MzksIDB4NEIsIDB4REQsIDB4N0MsIDB4ODQsIDB4OTcsIDB4QTIsIDB4RkQsIDB4MUMsIDB4MjQsIDB4NkMsIDB4QjQsIDB4QzcsIDB4NTIsIDB4RjYsIDB4MDF9OwoKCgpsb2NhbCBMVEFCTEUgPSB7CgogWzBdID0gMHgwMCwgMHgwMCwgMHgxOSwgMHgwMSwgMHgzMiwgMHgwMiwgMHgxQSwgMHhDNiwgMHg0QiwgMHhDNywgMHgxQiwgMHg2OCwgMHgzMywgMHhFRSwgMHhERiwgMHgwMywKCiAweDY0LCAweDA0LCAweEUwLCAweDBFLCAweDM0LCAweDhELCAweDgxLCAweEVGLCAweDRDLCAweDcxLCAweDA4LCAweEM4LCAweEY4LCAweDY5LCAweDFDLCAweEMxLAoKIDB4N0QsIDB4QzIsIDB4MUQsIDB4QjUsIDB4RjksIDB4QjksIDB4MjcsIDB4NkEsIDB4NEQsIDB4RTQsIDB4QTYsIDB4NzIsIDB4OUEsIDB4QzksIDB4MDksIDB4NzgsCgogMHg2NSwgMHgyRiwgMHg4QSwgMHgwNSwgMHgyMSwgMHgwRiwgMHhFMSwgMHgyNCwgMHgxMiwgMHhGMCwgMHg4MiwgMHg0NSwgMHgzNSwgMHg5MywgMHhEQSwgMHg4RSwKCiAweDk2LCAweDhGLCAweERCLCAweEJELCAweDM2LCAweEQwLCAweENFLCAweDk0LCAweDEzLCAweDVDLCAweEQyLCAweEYxLCAweDQwLCAweDQ2LCAweDgzLCAweDM4LAoKIDB4NjYsIDB4REQsIDB4RkQsIDB4MzAsIDB4QkYsIDB4MDYsIDB4OEIsIDB4NjIsIDB4QjMsIDB4MjUsIDB4RTIsIDB4OTgsIDB4MjIsIDB4ODgsIDB4OTEsIDB4MTAsCgogMHg3RSwgMHg2RSwgMHg0OCwgMHhDMywgMHhBMywgMHhCNiwgMHgxRSwgMHg0MiwgMHgzQSwgMHg2QiwgMHgyOCwgMHg1NCwgMHhGQSwgMHg4NSwgMHgzRCwgMHhCQSwKCiAweDJCLCAweDc5LCAweDBBLCAweDE1LCAweDlCLCAweDlGLCAweDVFLCAweENBLCAweDRFLCAweEQ0LCAweEFDLCAweEU1LCAweEYzLCAweDczLCAweEE3LCAweDU3LAoKIDB4QUYsIDB4NTgsIDB4QTgsIDB4NTAsIDB4RjQsIDB4RUEsIDB4RDYsIDB4NzQsIDB4NEYsIDB4QUUsIDB4RTksIDB4RDUsIDB4RTcsIDB4RTYsIDB4QUQsIDB4RTgsCgogMHgyQywgMHhENywgMHg3NSwgMHg3QSwgMHhFQiwgMHgxNiwgMHgwQiwgMHhGNSwgMHg1OSwgMHhDQiwgMHg1RiwgMHhCMCwgMHg5QywgMHhBOSwgMHg1MSwgMHhBMCwKCiAweDdGLCAweDBDLCAweEY2LCAweDZGLCAweDE3LCAweEM0LCAweDQ5LCAweEVDLCAweEQ4LCAweDQzLCAweDFGLCAweDJELCAweEE0LCAweDc2LCAweDdCLCAweEI3LAoKIDB4Q0MsIDB4QkIsIDB4M0UsIDB4NUEsIDB4RkIsIDB4NjAsIDB4QjEsIDB4ODYsIDB4M0IsIDB4NTIsIDB4QTEsIDB4NkMsIDB4QUEsIDB4NTUsIDB4MjksIDB4OUQsCgogMHg5NywgMHhCMiwgMHg4NywgMHg5MCwgMHg2MSwgMHhCRSwgMHhEQywgMHhGQywgMHhCQywgMHg5NSwgMHhDRiwgMHhDRCwgMHgzNywgMHgzRiwgMHg1QiwgMHhEMSwKCiAweDUzLCAweDM5LCAweDg0LCAweDNDLCAweDQxLCAweEEyLCAweDZELCAweDQ3LCAweDE0LCAweDJBLCAweDlFLCAweDVELCAweDU2LCAweEYyLCAweEQzLCAweEFCLAoKIDB4NDQsIDB4MTEsIDB4OTIsIDB4RDksIDB4MjMsIDB4MjAsIDB4MkUsIDB4ODksIDB4QjQsIDB4N0MsIDB4QjgsIDB4MjYsIDB4NzcsIDB4OTksIDB4RTMsIDB4QTUsCgogMHg2NywgMHg0QSwgMHhFRCwgMHhERSwgMHhDNSwgMHgzMSwgMHhGRSwgMHgxOCwgMHgwRCwgMHg2MywgMHg4QywgMHg4MCwgMHhDMCwgMHhGNywgMHg3MCwgMHgwN307CgoKCmxvY2FsIE1JWFRBQkxFID0gewoKIDB4MDIsIDB4MDMsIDB4MDEsIDB4MDEsCgogMHgwMSwgMHgwMiwgMHgwMywgMHgwMSwKCiAweDAxLCAweDAxLCAweDAyLCAweDAzLAoKIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDJ9OwoKCgpsb2NhbCBJTUlYVEFCTEUgPSB7CgogMHgwRSwgMHgwQiwgMHgwRCwgMHgwOSwKCiAweDA5LCAweDBFLCAweDBCLCAweDBELAoKIDB4MEQsIDB4MDksIDB4MEUsIDB4MEIsCgogMHgwQiwgMHgwRCwgMHgwOSwgMHgwRX07CgoKCmxvY2FsIFJDT04gPSB7CgpbMF0gPSAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLAoKMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwKCjB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsCgoweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LAoKMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwKCjB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsCgoweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLAoKMHgzNiwgMHg2YywgMHhkOCwgMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywKCjB4N2QsIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsCgoweDMzLCAweDY2LCAweGNjLCAweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLAoKMHg0MCwgMHg4MCwgMHgxYiwgMHgzNiwgMHg2YywgMHhkOCwgMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwKCjB4NmEsIDB4ZDQsIDB4YjMsIDB4N2QsIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsCgoweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLCAweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LAoKMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNiwgMHg2YywgMHhkOCwgMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywKCjB4YzYsIDB4OTcsIDB4MzUsIDB4NmEsIDB4ZDQsIDB4YjMsIDB4N2QsIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsCgoweDYxLCAweGMyLCAweDlmLCAweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLCAweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLCAweDhkfTsKCgoKCgpsb2NhbCBHTVVMID0gZnVuY3Rpb24oQSwgQikKCiAgICBpZihBID09IDB4MDEpIHRoZW4gcmV0dXJuIEI7IGVuZAoKICAgIGlmKEIgPT0gMHgwMSkgdGhlbiByZXR1cm4gQTsgZW5kCgogICAgaWYoQSA9PSAweDAwKSB0aGVuIHJldHVybiAwOyBlbmQKCiAgICBpZihCID09IDB4MDApIHRoZW4gcmV0dXJuIDA7IGVuZAoKCgogICAgbG9jYWwgTEEgPSBMVEFCTEVbQV07CgogICAgbG9jYWwgTEIgPSBMVEFCTEVbQl07CgoKCiAgICBsb2NhbCBzdW0gPSBMQSArIExCOwoKICAgIGlmIChzdW0gPiAweEZGKSB0aGVuIHN1bSA9IHN1bSAtIDB4RkY7IGVuZAoKCgogICAgcmV0dXJuIEVUQUJMRVtzdW1dOwoKZW5kCgoKCmxvY2FsIGJ5dGVTdWIgPSBBcnJheS5zdWJzdGl0dXRlOwoKCgpsb2NhbCBzaGlmdFJvdyA9IEFycmF5LnBlcm11dGU7CgoKCmxvY2FsIG1peENvbCA9IGZ1bmN0aW9uKGksIG1peCkKCiAgICBsb2NhbCBvdXQgPSB7fTsKCgoKICAgIGxvY2FsIGEsIGIsIGMsIGQ7CgoKCiAgICBhID0gR01VTChpWyAxXSwgbWl4WyAxXSk7CgogICAgYiA9IEdNVUwoaVsgMl0sIG1peFsgMl0pOwoKICAgIGMgPSBHTVVMKGlbIDNdLCBtaXhbIDNdKTsKCiAgICBkID0gR01VTChpWyA0XSwgbWl4WyA0XSk7CgogICAgb3V0WyAxXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgMV0sIG1peFsgNV0pOwoKICAgIGIgPSBHTVVMKGlbIDJdLCBtaXhbIDZdKTsKCiAgICBjID0gR01VTChpWyAzXSwgbWl4WyA3XSk7CgogICAgZCA9IEdNVUwoaVsgNF0sIG1peFsgOF0pOwoKICAgIG91dFsgMl0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDFdLCBtaXhbIDldKTsKCiAgICBiID0gR01VTChpWyAyXSwgbWl4WzEwXSk7CgogICAgYyA9IEdNVUwoaVsgM10sIG1peFsxMV0pOwoKICAgIGQgPSBHTVVMKGlbIDRdLCBtaXhbMTJdKTsKCiAgICBvdXRbIDNdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyAxXSwgbWl4WzEzXSk7CgogICAgYiA9IEdNVUwoaVsgMl0sIG1peFsxNF0pOwoKICAgIGMgPSBHTVVMKGlbIDNdLCBtaXhbMTVdKTsKCiAgICBkID0gR01VTChpWyA0XSwgbWl4WzE2XSk7CgogICAgb3V0WyA0XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgoKCgoKICAgIGEgPSBHTVVMKGlbIDVdLCBtaXhbIDFdKTsKCiAgICBiID0gR01VTChpWyA2XSwgbWl4WyAyXSk7CgogICAgYyA9IEdNVUwoaVsgN10sIG1peFsgM10pOwoKICAgIGQgPSBHTVVMKGlbIDhdLCBtaXhbIDRdKTsKCiAgICBvdXRbIDVdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA1XSwgbWl4WyA1XSk7CgogICAgYiA9IEdNVUwoaVsgNl0sIG1peFsgNl0pOwoKICAgIGMgPSBHTVVMKGlbIDddLCBtaXhbIDddKTsKCiAgICBkID0gR01VTChpWyA4XSwgbWl4WyA4XSk7CgogICAgb3V0WyA2XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgNV0sIG1peFsgOV0pOwoKICAgIGIgPSBHTVVMKGlbIDZdLCBtaXhbMTBdKTsKCiAgICBjID0gR01VTChpWyA3XSwgbWl4WzExXSk7CgogICAgZCA9IEdNVUwoaVsgOF0sIG1peFsxMl0pOwoKICAgIG91dFsgN10gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDVdLCBtaXhbMTNdKTsKCiAgICBiID0gR01VTChpWyA2XSwgbWl4WzE0XSk7CgogICAgYyA9IEdNVUwoaVsgN10sIG1peFsxNV0pOwoKICAgIGQgPSBHTVVMKGlbIDhdLCBtaXhbMTZdKTsKCiAgICBvdXRbIDhdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCgoKCgogICAgYSA9IEdNVUwoaVsgOV0sIG1peFsgMV0pOwoKICAgIGIgPSBHTVVMKGlbMTBdLCBtaXhbIDJdKTsKCiAgICBjID0gR01VTChpWzExXSwgbWl4WyAzXSk7CgogICAgZCA9IEdNVUwoaVsxMl0sIG1peFsgNF0pOwoKICAgIG91dFsgOV0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDldLCBtaXhbIDVdKTsKCiAgICBiID0gR01VTChpWzEwXSwgbWl4WyA2XSk7CgogICAgYyA9IEdNVUwoaVsxMV0sIG1peFsgN10pOwoKICAgIGQgPSBHTVVMKGlbMTJdLCBtaXhbIDhdKTsKCiAgICBvdXRbMTBdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA5XSwgbWl4WyA5XSk7CgogICAgYiA9IEdNVUwoaVsxMF0sIG1peFsxMF0pOwoKICAgIGMgPSBHTVVMKGlbMTFdLCBtaXhbMTFdKTsKCiAgICBkID0gR01VTChpWzEyXSwgbWl4WzEyXSk7CgogICAgb3V0WzExXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgOV0sIG1peFsxM10pOwoKICAgIGIgPSBHTVVMKGlbMTBdLCBtaXhbMTRdKTsKCiAgICBjID0gR01VTChpWzExXSwgbWl4WzE1XSk7CgogICAgZCA9IEdNVUwoaVsxMl0sIG1peFsxNl0pOwoKICAgIG91dFsxMl0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKCgoKCiAgICBhID0gR01VTChpWzEzXSwgbWl4WyAxXSk7CgogICAgYiA9IEdNVUwoaVsxNF0sIG1peFsgMl0pOwoKICAgIGMgPSBHTVVMKGlbMTVdLCBtaXhbIDNdKTsKCiAgICBkID0gR01VTChpWzE2XSwgbWl4WyA0XSk7CgogICAgb3V0WzEzXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsxM10sIG1peFsgNV0pOwoKICAgIGIgPSBHTVVMKGlbMTRdLCBtaXhbIDZdKTsKCiAgICBjID0gR01VTChpWzE1XSwgbWl4WyA3XSk7CgogICAgZCA9IEdNVUwoaVsxNl0sIG1peFsgOF0pOwoKICAgIG91dFsxNF0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbMTNdLCBtaXhbIDldKTsKCiAgICBiID0gR01VTChpWzE0XSwgbWl4WzEwXSk7CgogICAgYyA9IEdNVUwoaVsxNV0sIG1peFsxMV0pOwoKICAgIGQgPSBHTVVMKGlbMTZdLCBtaXhbMTJdKTsKCiAgICBvdXRbMTVdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWzEzXSwgbWl4WzEzXSk7CgogICAgYiA9IEdNVUwoaVsxNF0sIG1peFsxNF0pOwoKICAgIGMgPSBHTVVMKGlbMTVdLCBtaXhbMTVdKTsKCiAgICBkID0gR01VTChpWzE2XSwgbWl4WzE2XSk7CgogICAgb3V0WzE2XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgoKCiAgICByZXR1cm4gb3V0OwoKZW5kCgoKCmxvY2FsIGtleVJvdW5kID0gZnVuY3Rpb24oa2V5LCByb3VuZCkKCiAgICBsb2NhbCBpID0gKHJvdW5kIC0gMSkgKiAzMjsKCiAgICBsb2NhbCBvdXQgPSBrZXk7CgoKCiAgICBvdXRbMzMgKyBpXSA9IFhPUihrZXlbIDEgKyBpXSwgWE9SKFNCT1hba2V5WzMwICsgaV1dLCBSQ09OW3JvdW5kXSkpOwoKICAgIG91dFszNCArIGldID0gWE9SKGtleVsgMiArIGldLCBTQk9YW2tleVszMSArIGldXSk7CgogICAgb3V0WzM1ICsgaV0gPSBYT1Ioa2V5WyAzICsgaV0sIFNCT1hba2V5WzMyICsgaV1dKTsKCiAgICBvdXRbMzYgKyBpXSA9IFhPUihrZXlbIDQgKyBpXSwgU0JPWFtrZXlbMjkgKyBpXV0pOwoKCgogICAgb3V0WzM3ICsgaV0gPSBYT1Iob3V0WzMzICsgaV0sIGtleVsgNSArIGldKTsKCiAgICBvdXRbMzggKyBpXSA9IFhPUihvdXRbMzQgKyBpXSwga2V5WyA2ICsgaV0pOwoKICAgIG91dFszOSArIGldID0gWE9SKG91dFszNSArIGldLCBrZXlbIDcgKyBpXSk7CgogICAgb3V0WzQwICsgaV0gPSBYT1Iob3V0WzM2ICsgaV0sIGtleVsgOCArIGldKTsKCgoKICAgIG91dFs0MSArIGldID0gWE9SKG91dFszNyArIGldLCBrZXlbIDkgKyBpXSk7CgogICAgb3V0WzQyICsgaV0gPSBYT1Iob3V0WzM4ICsgaV0sIGtleVsxMCArIGldKTsKCiAgICBvdXRbNDMgKyBpXSA9IFhPUihvdXRbMzkgKyBpXSwga2V5WzExICsgaV0pOwoKICAgIG91dFs0NCArIGldID0gWE9SKG91dFs0MCArIGldLCBrZXlbMTIgKyBpXSk7CgoKCiAgICBvdXRbNDUgKyBpXSA9IFhPUihvdXRbNDEgKyBpXSwga2V5WzEzICsgaV0pOwoKICAgIG91dFs0NiArIGldID0gWE9SKG91dFs0MiArIGldLCBrZXlbMTQgKyBpXSk7CgogICAgb3V0WzQ3ICsgaV0gPSBYT1Iob3V0WzQzICsgaV0sIGtleVsxNSArIGldKTsKCiAgICBvdXRbNDggKyBpXSA9IFhPUihvdXRbNDQgKyBpXSwga2V5WzE2ICsgaV0pOwoKCgoKCiAgICBvdXRbNDkgKyBpXSA9IFhPUihTQk9YW291dFs0NSArIGldXSwga2V5WzE3ICsgaV0pOwoKICAgIG91dFs1MCArIGldID0gWE9SKFNCT1hbb3V0WzQ2ICsgaV1dLCBrZXlbMTggKyBpXSk7CgogICAgb3V0WzUxICsgaV0gPSBYT1IoU0JPWFtvdXRbNDcgKyBpXV0sIGtleVsxOSArIGldKTsKCiAgICBvdXRbNTIgKyBpXSA9IFhPUihTQk9YW291dFs0OCArIGldXSwga2V5WzIwICsgaV0pOwoKCgogICAgb3V0WzUzICsgaV0gPSBYT1Iob3V0WzQ5ICsgaV0sIGtleVsyMSArIGldKTsKCiAgICBvdXRbNTQgKyBpXSA9IFhPUihvdXRbNTAgKyBpXSwga2V5WzIyICsgaV0pOwoKICAgIG91dFs1NSArIGldID0gWE9SKG91dFs1MSArIGldLCBrZXlbMjMgKyBpXSk7CgogICAgb3V0WzU2ICsgaV0gPSBYT1Iob3V0WzUyICsgaV0sIGtleVsyNCArIGldKTsKCgoKICAgIG91dFs1NyArIGldID0gWE9SKG91dFs1MyArIGldLCBrZXlbMjUgKyBpXSk7CgogICAgb3V0WzU4ICsgaV0gPSBYT1Iob3V0WzU0ICsgaV0sIGtleVsyNiArIGldKTsKCiAgICBvdXRbNTkgKyBpXSA9IFhPUihvdXRbNTUgKyBpXSwga2V5WzI3ICsgaV0pOwoKICAgIG91dFs2MCArIGldID0gWE9SKG91dFs1NiArIGldLCBrZXlbMjggKyBpXSk7CgoKCiAgICBvdXRbNjEgKyBpXSA9IFhPUihvdXRbNTcgKyBpXSwga2V5WzI5ICsgaV0pOwoKICAgIG91dFs2MiArIGldID0gWE9SKG91dFs1OCArIGldLCBrZXlbMzAgKyBpXSk7CgogICAgb3V0WzYzICsgaV0gPSBYT1Iob3V0WzU5ICsgaV0sIGtleVszMSArIGldKTsKCiAgICBvdXRbNjQgKyBpXSA9IFhPUihvdXRbNjAgKyBpXSwga2V5WzMyICsgaV0pOwoKCgogICAgcmV0dXJuIG91dDsKCmVuZAoKCgpsb2NhbCBrZXlFeHBhbmQgPSBmdW5jdGlvbihrZXkpCgogICAgbG9jYWwgYnl0ZXMgPSBBcnJheS5jb3B5KGtleSk7CgoKCiAgICBmb3IgaSA9IDEsIDcgZG8KCiAgICAgICAga2V5Um91bmQoYnl0ZXMsIGkpOwoKICAgIGVuZAoKCgogICAgbG9jYWwga2V5cyA9IHt9OwoKCgogICAga2V5c1sgMV0gPSBBcnJheS5zbGljZShieXRlcywgMSwgMTYpOwoKICAgIGtleXNbIDJdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDE3LCAzMik7CgogICAga2V5c1sgM10gPSBBcnJheS5zbGljZShieXRlcywgMzMsIDQ4KTsKCiAgICBrZXlzWyA0XSA9IEFycmF5LnNsaWNlKGJ5dGVzLCA0OSwgNjQpOwoKICAgIGtleXNbIDVdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDY1LCA4MCk7CgogICAga2V5c1sgNl0gPSBBcnJheS5zbGljZShieXRlcywgODEsIDk2KTsKCiAgICBrZXlzWyA3XSA9IEFycmF5LnNsaWNlKGJ5dGVzLCA5NywgMTEyKTsKCiAgICBrZXlzWyA4XSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAxMTMsIDEyOCk7CgogICAga2V5c1sgOV0gPSBBcnJheS5zbGljZShieXRlcywgMTI5LCAxNDQpOwoKICAgIGtleXNbMTBdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDE0NSwgMTYwKTsKCiAgICBrZXlzWzExXSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAxNjEsIDE3Nik7CgogICAga2V5c1sxMl0gPSBBcnJheS5zbGljZShieXRlcywgMTc3LCAxOTIpOwoKICAgIGtleXNbMTNdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDE5MywgMjA4KTsKCiAgICBrZXlzWzE0XSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAyMDksIDIyNCk7CgogICAga2V5c1sxNV0gPSBBcnJheS5zbGljZShieXRlcywgMjI1LCAyNDApOwoKCgogICAgcmV0dXJuIGtleXM7CgoKCmVuZAoKCgpsb2NhbCBhZGRLZXkgPSBBcnJheS5YT1I7CgoKCgoKCgpsb2NhbCBBRVMgPSB7fTsKCgoKQUVTLmJsb2NrU2l6ZSA9IDE2OwoKCgpBRVMuZW5jcnlwdCA9IGZ1bmN0aW9uKGtleSwgYmxvY2spCgoKCiAgICBsb2NhbCBrZXlTY2hlZHVsZSA9IGtleUV4cGFuZChrZXkpOwoKCgogICAgLS1yb3VuZCAwCgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzFdKTsKCgoKICAgIC0tcm91bmQgMQoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsyXSk7CgoKCiAgICAtLXJvdW5kIDIKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbM10pOwoKCgogICAgLS1yb3VuZCAzCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzRdKTsKCgoKICAgIC0tcm91bmQgNAoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs1XSk7CgoKCiAgICAtLXJvdW5kIDUKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNl0pOwoKCgogICAgLS1yb3VuZCA2CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzddKTsKCgoKICAgIC0tcm91bmQgNwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs4XSk7CgoKCiAgICAtLXJvdW5kIDgKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbOV0pOwoKCgogICAgLS1yb3VuZCA5CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEwXSk7CgoKCiAgICAtLXJvdW5kIDEwCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzExXSk7CgoKCiAgICAtLXJvdW5kIDExCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEyXSk7CgoKCiAgICAtLXJvdW5kIDEyCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEzXSk7CgoKCiAgICAtLXJvdW5kIDEzCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzE0XSk7CgoKCiAgICAtLXJvdW5kIDE0CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxNV0pOwoKCgogICAgcmV0dXJuIGJsb2NrOwoKCgplbmQKCgoKQUVTLmRlY3J5cHQgPSBmdW5jdGlvbihrZXksIGJsb2NrKQoKCgogICAgbG9jYWwga2V5U2NoZWR1bGUgPSBrZXlFeHBhbmQoa2V5KTsKCgoKICAgIC0tcm91bmQgMAoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxNV0pOwoKCgogICAgLS1yb3VuZCAxCgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzE0XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDIKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTNdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxMl0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA0CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzExXSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDUKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTBdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgNgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs5XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDcKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbOF0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA4CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzddKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgOQoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs2XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDEwCgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzVdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMTEKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNF0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCAxMgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVszXSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDEzCgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzJdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMTQKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMV0pOwoKCgogICAgcmV0dXJuIGJsb2NrOwoKZW5kCgoKCnJldHVybiBBRVM7AAAAAAoKbG9jYWwgQXJyYXkgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYXJyYXkiKTsKCmxvY2FsIEJpdCA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5iaXQiKTsKCgoKbG9jYWwgWE9SID0gQml0LmJ4b3I7CgoKCmxvY2FsIFNCT1ggPSB7CgogWzBdID0gMHg2MywgMHg3QywgMHg3NywgMHg3QiwgMHhGMiwgMHg2QiwgMHg2RiwgMHhDNSwgMHgzMCwgMHgwMSwgMHg2NywgMHgyQiwgMHhGRSwgMHhENywgMHhBQiwgMHg3NiwKCiAweENBLCAweDgyLCAweEM5LCAweDdELCAweEZBLCAweDU5LCAweDQ3LCAweEYwLCAweEFELCAweEQ0LCAweEEyLCAweEFGLCAweDlDLCAweEE0LCAweDcyLCAweEMwLAoKIDB4QjcsIDB4RkQsIDB4OTMsIDB4MjYsIDB4MzYsIDB4M0YsIDB4RjcsIDB4Q0MsIDB4MzQsIDB4QTUsIDB4RTUsIDB4RjEsIDB4NzEsIDB4RDgsIDB4MzEsIDB4MTUsCgogMHgwNCwgMHhDNywgMHgyMywgMHhDMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5QSwgMHgwNywgMHgxMiwgMHg4MCwgMHhFMiwgMHhFQiwgMHgyNywgMHhCMiwgMHg3NSwKCiAweDA5LCAweDgzLCAweDJDLCAweDFBLCAweDFCLCAweDZFLCAweDVBLCAweEEwLCAweDUyLCAweDNCLCAweEQ2LCAweEIzLCAweDI5LCAweEUzLCAweDJGLCAweDg0LAoKIDB4NTMsIDB4RDEsIDB4MDAsIDB4RUQsIDB4MjAsIDB4RkMsIDB4QjEsIDB4NUIsIDB4NkEsIDB4Q0IsIDB4QkUsIDB4MzksIDB4NEEsIDB4NEMsIDB4NTgsIDB4Q0YsCgogMHhEMCwgMHhFRiwgMHhBQSwgMHhGQiwgMHg0MywgMHg0RCwgMHgzMywgMHg4NSwgMHg0NSwgMHhGOSwgMHgwMiwgMHg3RiwgMHg1MCwgMHgzQywgMHg5RiwgMHhBOCwKCiAweDUxLCAweEEzLCAweDQwLCAweDhGLCAweDkyLCAweDlELCAweDM4LCAweEY1LCAweEJDLCAweEI2LCAweERBLCAweDIxLCAweDEwLCAweEZGLCAweEYzLCAweEQyLAoKIDB4Q0QsIDB4MEMsIDB4MTMsIDB4RUMsIDB4NUYsIDB4OTcsIDB4NDQsIDB4MTcsIDB4QzQsIDB4QTcsIDB4N0UsIDB4M0QsIDB4NjQsIDB4NUQsIDB4MTksIDB4NzMsCgogMHg2MCwgMHg4MSwgMHg0RiwgMHhEQywgMHgyMiwgMHgyQSwgMHg5MCwgMHg4OCwgMHg0NiwgMHhFRSwgMHhCOCwgMHgxNCwgMHhERSwgMHg1RSwgMHgwQiwgMHhEQiwKCiAweEUwLCAweDMyLCAweDNBLCAweDBBLCAweDQ5LCAweDA2LCAweDI0LCAweDVDLCAweEMyLCAweEQzLCAweEFDLCAweDYyLCAweDkxLCAweDk1LCAweEU0LCAweDc5LAoKIDB4RTcsIDB4QzgsIDB4MzcsIDB4NkQsIDB4OEQsIDB4RDUsIDB4NEUsIDB4QTksIDB4NkMsIDB4NTYsIDB4RjQsIDB4RUEsIDB4NjUsIDB4N0EsIDB4QUUsIDB4MDgsCgogMHhCQSwgMHg3OCwgMHgyNSwgMHgyRSwgMHgxQywgMHhBNiwgMHhCNCwgMHhDNiwgMHhFOCwgMHhERCwgMHg3NCwgMHgxRiwgMHg0QiwgMHhCRCwgMHg4QiwgMHg4QSwKCiAweDcwLCAweDNFLCAweEI1LCAweDY2LCAweDQ4LCAweDAzLCAweEY2LCAweDBFLCAweDYxLCAweDM1LCAweDU3LCAweEI5LCAweDg2LCAweEMxLCAweDFELCAweDlFLAoKIDB4RTEsIDB4RjgsIDB4OTgsIDB4MTEsIDB4NjksIDB4RDksIDB4OEUsIDB4OTQsIDB4OUIsIDB4MUUsIDB4ODcsIDB4RTksIDB4Q0UsIDB4NTUsIDB4MjgsIDB4REYsCgogMHg4QywgMHhBMSwgMHg4OSwgMHgwRCwgMHhCRiwgMHhFNiwgMHg0MiwgMHg2OCwgMHg0MSwgMHg5OSwgMHgyRCwgMHgwRiwgMHhCMCwgMHg1NCwgMHhCQiwgMHgxNn07CgoKCmxvY2FsIElTQk9YID0gewoKIFswXSA9IDB4NTIsIDB4MDksIDB4NkEsIDB4RDUsIDB4MzAsIDB4MzYsIDB4QTUsIDB4MzgsIDB4QkYsIDB4NDAsIDB4QTMsIDB4OUUsIDB4ODEsIDB4RjMsIDB4RDcsIDB4RkIsCgogMHg3QywgMHhFMywgMHgzOSwgMHg4MiwgMHg5QiwgMHgyRiwgMHhGRiwgMHg4NywgMHgzNCwgMHg4RSwgMHg0MywgMHg0NCwgMHhDNCwgMHhERSwgMHhFOSwgMHhDQiwKCiAweDU0LCAweDdCLCAweDk0LCAweDMyLCAweEE2LCAweEMyLCAweDIzLCAweDNELCAweEVFLCAweDRDLCAweDk1LCAweDBCLCAweDQyLCAweEZBLCAweEMzLCAweDRFLAoKIDB4MDgsIDB4MkUsIDB4QTEsIDB4NjYsIDB4MjgsIDB4RDksIDB4MjQsIDB4QjIsIDB4NzYsIDB4NUIsIDB4QTIsIDB4NDksIDB4NkQsIDB4OEIsIDB4RDEsIDB4MjUsCgogMHg3MiwgMHhGOCwgMHhGNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNiwgMHhENCwgMHhBNCwgMHg1QywgMHhDQywgMHg1RCwgMHg2NSwgMHhCNiwgMHg5MiwKCiAweDZDLCAweDcwLCAweDQ4LCAweDUwLCAweEZELCAweEVELCAweEI5LCAweERBLCAweDVFLCAweDE1LCAweDQ2LCAweDU3LCAweEE3LCAweDhELCAweDlELCAweDg0LAoKIDB4OTAsIDB4RDgsIDB4QUIsIDB4MDAsIDB4OEMsIDB4QkMsIDB4RDMsIDB4MEEsIDB4RjcsIDB4RTQsIDB4NTgsIDB4MDUsIDB4QjgsIDB4QjMsIDB4NDUsIDB4MDYsCgogMHhEMCwgMHgyQywgMHgxRSwgMHg4RiwgMHhDQSwgMHgzRiwgMHgwRiwgMHgwMiwgMHhDMSwgMHhBRiwgMHhCRCwgMHgwMywgMHgwMSwgMHgxMywgMHg4QSwgMHg2QiwKCiAweDNBLCAweDkxLCAweDExLCAweDQxLCAweDRGLCAweDY3LCAweERDLCAweEVBLCAweDk3LCAweEYyLCAweENGLCAweENFLCAweEYwLCAweEI0LCAweEU2LCAweDczLAoKIDB4OTYsIDB4QUMsIDB4NzQsIDB4MjIsIDB4RTcsIDB4QUQsIDB4MzUsIDB4ODUsIDB4RTIsIDB4RjksIDB4MzcsIDB4RTgsIDB4MUMsIDB4NzUsIDB4REYsIDB4NkUsCgogMHg0NywgMHhGMSwgMHgxQSwgMHg3MSwgMHgxRCwgMHgyOSwgMHhDNSwgMHg4OSwgMHg2RiwgMHhCNywgMHg2MiwgMHgwRSwgMHhBQSwgMHgxOCwgMHhCRSwgMHgxQiwKCiAweEZDLCAweDU2LCAweDNFLCAweDRCLCAweEM2LCAweEQyLCAweDc5LCAweDIwLCAweDlBLCAweERCLCAweEMwLCAweEZFLCAweDc4LCAweENELCAweDVBLCAweEY0LAoKIDB4MUYsIDB4REQsIDB4QTgsIDB4MzMsIDB4ODgsIDB4MDcsIDB4QzcsIDB4MzEsIDB4QjEsIDB4MTIsIDB4MTAsIDB4NTksIDB4MjcsIDB4ODAsIDB4RUMsIDB4NUYsCgogMHg2MCwgMHg1MSwgMHg3RiwgMHhBOSwgMHgxOSwgMHhCNSwgMHg0QSwgMHgwRCwgMHgyRCwgMHhFNSwgMHg3QSwgMHg5RiwgMHg5MywgMHhDOSwgMHg5QywgMHhFRiwKCiAweEEwLCAweEUwLCAweDNCLCAweDRELCAweEFFLCAweDJBLCAweEY1LCAweEIwLCAweEM4LCAweEVCLCAweEJCLCAweDNDLCAweDgzLCAweDUzLCAweDk5LCAweDYxLAoKIDB4MTcsIDB4MkIsIDB4MDQsIDB4N0UsIDB4QkEsIDB4NzcsIDB4RDYsIDB4MjYsIDB4RTEsIDB4NjksIDB4MTQsIDB4NjMsIDB4NTUsIDB4MjEsIDB4MEMsIDB4N0R9OwoKCgpsb2NhbCBST1dfU0hJRlQgPSAgeyAgMSwgIDYsIDExLCAxNiwgIDUsIDEwLCAxNSwgIDQsICA5LCAxNCwgIDMsICA4LCAxMywgIDIsICA3LCAxMiwgfTsKCmxvY2FsIElST1dfU0hJRlQgPSB7ICAxLCAxNCwgMTEsICA4LCAgNSwgIDIsIDE1LCAxMiwgIDksICA2LCAgMywgMTYsIDEzLCAxMCwgIDcsICA0LCB9OwoKCgpsb2NhbCBFVEFCTEUgPSB7CgogWzBdID0gMHgwMSwgMHgwMywgMHgwNSwgMHgwRiwgMHgxMSwgMHgzMywgMHg1NSwgMHhGRiwgMHgxQSwgMHgyRSwgMHg3MiwgMHg5NiwgMHhBMSwgMHhGOCwgMHgxMywgMHgzNSwKCiAweDVGLCAweEUxLCAweDM4LCAweDQ4LCAweEQ4LCAweDczLCAweDk1LCAweEE0LCAweEY3LCAweDAyLCAweDA2LCAweDBBLCAweDFFLCAweDIyLCAweDY2LCAweEFBLAoKIDB4RTUsIDB4MzQsIDB4NUMsIDB4RTQsIDB4MzcsIDB4NTksIDB4RUIsIDB4MjYsIDB4NkEsIDB4QkUsIDB4RDksIDB4NzAsIDB4OTAsIDB4QUIsIDB4RTYsIDB4MzEsCgogMHg1MywgMHhGNSwgMHgwNCwgMHgwQywgMHgxNCwgMHgzQywgMHg0NCwgMHhDQywgMHg0RiwgMHhEMSwgMHg2OCwgMHhCOCwgMHhEMywgMHg2RSwgMHhCMiwgMHhDRCwKCiAweDRDLCAweEQ0LCAweDY3LCAweEE5LCAweEUwLCAweDNCLCAweDRELCAweEQ3LCAweDYyLCAweEE2LCAweEYxLCAweDA4LCAweDE4LCAweDI4LCAweDc4LCAweDg4LAoKIDB4ODMsIDB4OUUsIDB4QjksIDB4RDAsIDB4NkIsIDB4QkQsIDB4REMsIDB4N0YsIDB4ODEsIDB4OTgsIDB4QjMsIDB4Q0UsIDB4NDksIDB4REIsIDB4NzYsIDB4OUEsCgogMHhCNSwgMHhDNCwgMHg1NywgMHhGOSwgMHgxMCwgMHgzMCwgMHg1MCwgMHhGMCwgMHgwQiwgMHgxRCwgMHgyNywgMHg2OSwgMHhCQiwgMHhENiwgMHg2MSwgMHhBMywKCiAweEZFLCAweDE5LCAweDJCLCAweDdELCAweDg3LCAweDkyLCAweEFELCAweEVDLCAweDJGLCAweDcxLCAweDkzLCAweEFFLCAweEU5LCAweDIwLCAweDYwLCAweEEwLAoKIDB4RkIsIDB4MTYsIDB4M0EsIDB4NEUsIDB4RDIsIDB4NkQsIDB4QjcsIDB4QzIsIDB4NUQsIDB4RTcsIDB4MzIsIDB4NTYsIDB4RkEsIDB4MTUsIDB4M0YsIDB4NDEsCgogMHhDMywgMHg1RSwgMHhFMiwgMHgzRCwgMHg0NywgMHhDOSwgMHg0MCwgMHhDMCwgMHg1QiwgMHhFRCwgMHgyQywgMHg3NCwgMHg5QywgMHhCRiwgMHhEQSwgMHg3NSwKCiAweDlGLCAweEJBLCAweEQ1LCAweDY0LCAweEFDLCAweEVGLCAweDJBLCAweDdFLCAweDgyLCAweDlELCAweEJDLCAweERGLCAweDdBLCAweDhFLCAweDg5LCAweDgwLAoKIDB4OUIsIDB4QjYsIDB4QzEsIDB4NTgsIDB4RTgsIDB4MjMsIDB4NjUsIDB4QUYsIDB4RUEsIDB4MjUsIDB4NkYsIDB4QjEsIDB4QzgsIDB4NDMsIDB4QzUsIDB4NTQsCgogMHhGQywgMHgxRiwgMHgyMSwgMHg2MywgMHhBNSwgMHhGNCwgMHgwNywgMHgwOSwgMHgxQiwgMHgyRCwgMHg3NywgMHg5OSwgMHhCMCwgMHhDQiwgMHg0NiwgMHhDQSwKCiAweDQ1LCAweENGLCAweDRBLCAweERFLCAweDc5LCAweDhCLCAweDg2LCAweDkxLCAweEE4LCAweEUzLCAweDNFLCAweDQyLCAweEM2LCAweDUxLCAweEYzLCAweDBFLAoKIDB4MTIsIDB4MzYsIDB4NUEsIDB4RUUsIDB4MjksIDB4N0IsIDB4OEQsIDB4OEMsIDB4OEYsIDB4OEEsIDB4ODUsIDB4OTQsIDB4QTcsIDB4RjIsIDB4MEQsIDB4MTcsCgogMHgzOSwgMHg0QiwgMHhERCwgMHg3QywgMHg4NCwgMHg5NywgMHhBMiwgMHhGRCwgMHgxQywgMHgyNCwgMHg2QywgMHhCNCwgMHhDNywgMHg1MiwgMHhGNiwgMHgwMX07CgoKCmxvY2FsIExUQUJMRSA9IHsKCiBbMF0gPSAweDAwLCAweDAwLCAweDE5LCAweDAxLCAweDMyLCAweDAyLCAweDFBLCAweEM2LCAweDRCLCAweEM3LCAweDFCLCAweDY4LCAweDMzLCAweEVFLCAweERGLCAweDAzLAoKIDB4NjQsIDB4MDQsIDB4RTAsIDB4MEUsIDB4MzQsIDB4OEQsIDB4ODEsIDB4RUYsIDB4NEMsIDB4NzEsIDB4MDgsIDB4QzgsIDB4RjgsIDB4NjksIDB4MUMsIDB4QzEsCgogMHg3RCwgMHhDMiwgMHgxRCwgMHhCNSwgMHhGOSwgMHhCOSwgMHgyNywgMHg2QSwgMHg0RCwgMHhFNCwgMHhBNiwgMHg3MiwgMHg5QSwgMHhDOSwgMHgwOSwgMHg3OCwKCiAweDY1LCAweDJGLCAweDhBLCAweDA1LCAweDIxLCAweDBGLCAweEUxLCAweDI0LCAweDEyLCAweEYwLCAweDgyLCAweDQ1LCAweDM1LCAweDkzLCAweERBLCAweDhFLAoKIDB4OTYsIDB4OEYsIDB4REIsIDB4QkQsIDB4MzYsIDB4RDAsIDB4Q0UsIDB4OTQsIDB4MTMsIDB4NUMsIDB4RDIsIDB4RjEsIDB4NDAsIDB4NDYsIDB4ODMsIDB4MzgsCgogMHg2NiwgMHhERCwgMHhGRCwgMHgzMCwgMHhCRiwgMHgwNiwgMHg4QiwgMHg2MiwgMHhCMywgMHgyNSwgMHhFMiwgMHg5OCwgMHgyMiwgMHg4OCwgMHg5MSwgMHgxMCwKCiAweDdFLCAweDZFLCAweDQ4LCAweEMzLCAweEEzLCAweEI2LCAweDFFLCAweDQyLCAweDNBLCAweDZCLCAweDI4LCAweDU0LCAweEZBLCAweDg1LCAweDNELCAweEJBLAoKIDB4MkIsIDB4NzksIDB4MEEsIDB4MTUsIDB4OUIsIDB4OUYsIDB4NUUsIDB4Q0EsIDB4NEUsIDB4RDQsIDB4QUMsIDB4RTUsIDB4RjMsIDB4NzMsIDB4QTcsIDB4NTcsCgogMHhBRiwgMHg1OCwgMHhBOCwgMHg1MCwgMHhGNCwgMHhFQSwgMHhENiwgMHg3NCwgMHg0RiwgMHhBRSwgMHhFOSwgMHhENSwgMHhFNywgMHhFNiwgMHhBRCwgMHhFOCwKCiAweDJDLCAweEQ3LCAweDc1LCAweDdBLCAweEVCLCAweDE2LCAweDBCLCAweEY1LCAweDU5LCAweENCLCAweDVGLCAweEIwLCAweDlDLCAweEE5LCAweDUxLCAweEEwLAoKIDB4N0YsIDB4MEMsIDB4RjYsIDB4NkYsIDB4MTcsIDB4QzQsIDB4NDksIDB4RUMsIDB4RDgsIDB4NDMsIDB4MUYsIDB4MkQsIDB4QTQsIDB4NzYsIDB4N0IsIDB4QjcsCgogMHhDQywgMHhCQiwgMHgzRSwgMHg1QSwgMHhGQiwgMHg2MCwgMHhCMSwgMHg4NiwgMHgzQiwgMHg1MiwgMHhBMSwgMHg2QywgMHhBQSwgMHg1NSwgMHgyOSwgMHg5RCwKCiAweDk3LCAweEIyLCAweDg3LCAweDkwLCAweDYxLCAweEJFLCAweERDLCAweEZDLCAweEJDLCAweDk1LCAweENGLCAweENELCAweDM3LCAweDNGLCAweDVCLCAweEQxLAoKIDB4NTMsIDB4MzksIDB4ODQsIDB4M0MsIDB4NDEsIDB4QTIsIDB4NkQsIDB4NDcsIDB4MTQsIDB4MkEsIDB4OUUsIDB4NUQsIDB4NTYsIDB4RjIsIDB4RDMsIDB4QUIsCgogMHg0NCwgMHgxMSwgMHg5MiwgMHhEOSwgMHgyMywgMHgyMCwgMHgyRSwgMHg4OSwgMHhCNCwgMHg3QywgMHhCOCwgMHgyNiwgMHg3NywgMHg5OSwgMHhFMywgMHhBNSwKCiAweDY3LCAweDRBLCAweEVELCAweERFLCAweEM1LCAweDMxLCAweEZFLCAweDE4LCAweDBELCAweDYzLCAweDhDLCAweDgwLCAweEMwLCAweEY3LCAweDcwLCAweDA3fTsKCgoKbG9jYWwgTUlYVEFCTEUgPSB7CgogMHgwMiwgMHgwMywgMHgwMSwgMHgwMSwKCiAweDAxLCAweDAyLCAweDAzLCAweDAxLAoKIDB4MDEsIDB4MDEsIDB4MDIsIDB4MDMsCgogMHgwMywgMHgwMSwgMHgwMSwgMHgwMn07CgoKCmxvY2FsIElNSVhUQUJMRSA9IHsKCiAweDBFLCAweDBCLCAweDBELCAweDA5LAoKIDB4MDksIDB4MEUsIDB4MEIsIDB4MEQsCgogMHgwRCwgMHgwOSwgMHgwRSwgMHgwQiwKCiAweDBCLCAweDBELCAweDA5LCAweDBFfTsKCgoKbG9jYWwgUkNPTiA9IHsKClswXSA9IDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsCgoweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LCAweDkxLCAweDM5LAoKMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywgMHg4MywgMHgxZCwgMHgzYSwKCjB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsCgoweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLAoKMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywKCjB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsCgoweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLAoKMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwKCjB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsCgoweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LAoKMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwKCjB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsCgoweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLAoKMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwKCjB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGR9OwoKCgoKCmxvY2FsIEdNVUwgPSBmdW5jdGlvbihBLCBCKQoKICAgIGlmKEEgPT0gMHgwMSkgdGhlbiByZXR1cm4gQjsgZW5kCgogICAgaWYoQiA9PSAweDAxKSB0aGVuIHJldHVybiBBOyBlbmQKCiAgICBpZihBID09IDB4MDApIHRoZW4gcmV0dXJuIDA7IGVuZAoKICAgIGlmKEIgPT0gMHgwMCkgdGhlbiByZXR1cm4gMDsgZW5kCgoKCiAgICBsb2NhbCBMQSA9IExUQUJMRVtBXTsKCiAgICBsb2NhbCBMQiA9IExUQUJMRVtCXTsKCgoKICAgIGxvY2FsIHN1bSA9IExBICsgTEI7CgogICAgaWYgKHN1bSA+IDB4RkYpIHRoZW4gc3VtID0gc3VtIC0gMHhGRjsgZW5kCgoKCiAgICByZXR1cm4gRVRBQkxFW3N1bV07CgplbmQKCgoKbG9jYWwgYnl0ZVN1YiA9IEFycmF5LnN1YnN0aXR1dGU7CgoKCmxvY2FsIHNoaWZ0Um93ID0gQXJyYXkucGVybXV0ZTsKCgoKbG9jYWwgbWl4Q29sID0gZnVuY3Rpb24oaSwgbWl4KQoKICAgIGxvY2FsIG91dCA9IHt9OwoKCgogICAgbG9jYWwgYSwgYiwgYywgZDsKCgoKICAgIGEgPSBHTVVMKGlbIDFdLCBtaXhbIDFdKTsKCiAgICBiID0gR01VTChpWyAyXSwgbWl4WyAyXSk7CgogICAgYyA9IEdNVUwoaVsgM10sIG1peFsgM10pOwoKICAgIGQgPSBHTVVMKGlbIDRdLCBtaXhbIDRdKTsKCiAgICBvdXRbIDFdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyAxXSwgbWl4WyA1XSk7CgogICAgYiA9IEdNVUwoaVsgMl0sIG1peFsgNl0pOwoKICAgIGMgPSBHTVVMKGlbIDNdLCBtaXhbIDddKTsKCiAgICBkID0gR01VTChpWyA0XSwgbWl4WyA4XSk7CgogICAgb3V0WyAyXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgMV0sIG1peFsgOV0pOwoKICAgIGIgPSBHTVVMKGlbIDJdLCBtaXhbMTBdKTsKCiAgICBjID0gR01VTChpWyAzXSwgbWl4WzExXSk7CgogICAgZCA9IEdNVUwoaVsgNF0sIG1peFsxMl0pOwoKICAgIG91dFsgM10gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDFdLCBtaXhbMTNdKTsKCiAgICBiID0gR01VTChpWyAyXSwgbWl4WzE0XSk7CgogICAgYyA9IEdNVUwoaVsgM10sIG1peFsxNV0pOwoKICAgIGQgPSBHTVVMKGlbIDRdLCBtaXhbMTZdKTsKCiAgICBvdXRbIDRdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCgoKCgogICAgYSA9IEdNVUwoaVsgNV0sIG1peFsgMV0pOwoKICAgIGIgPSBHTVVMKGlbIDZdLCBtaXhbIDJdKTsKCiAgICBjID0gR01VTChpWyA3XSwgbWl4WyAzXSk7CgogICAgZCA9IEdNVUwoaVsgOF0sIG1peFsgNF0pOwoKICAgIG91dFsgNV0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDVdLCBtaXhbIDVdKTsKCiAgICBiID0gR01VTChpWyA2XSwgbWl4WyA2XSk7CgogICAgYyA9IEdNVUwoaVsgN10sIG1peFsgN10pOwoKICAgIGQgPSBHTVVMKGlbIDhdLCBtaXhbIDhdKTsKCiAgICBvdXRbIDZdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA1XSwgbWl4WyA5XSk7CgogICAgYiA9IEdNVUwoaVsgNl0sIG1peFsxMF0pOwoKICAgIGMgPSBHTVVMKGlbIDddLCBtaXhbMTFdKTsKCiAgICBkID0gR01VTChpWyA4XSwgbWl4WzEyXSk7CgogICAgb3V0WyA3XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgNV0sIG1peFsxM10pOwoKICAgIGIgPSBHTVVMKGlbIDZdLCBtaXhbMTRdKTsKCiAgICBjID0gR01VTChpWyA3XSwgbWl4WzE1XSk7CgogICAgZCA9IEdNVUwoaVsgOF0sIG1peFsxNl0pOwoKICAgIG91dFsgOF0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKCgoKCiAgICBhID0gR01VTChpWyA5XSwgbWl4WyAxXSk7CgogICAgYiA9IEdNVUwoaVsxMF0sIG1peFsgMl0pOwoKICAgIGMgPSBHTVVMKGlbMTFdLCBtaXhbIDNdKTsKCiAgICBkID0gR01VTChpWzEyXSwgbWl4WyA0XSk7CgogICAgb3V0WyA5XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsgOV0sIG1peFsgNV0pOwoKICAgIGIgPSBHTVVMKGlbMTBdLCBtaXhbIDZdKTsKCiAgICBjID0gR01VTChpWzExXSwgbWl4WyA3XSk7CgogICAgZCA9IEdNVUwoaVsxMl0sIG1peFsgOF0pOwoKICAgIG91dFsxMF0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbIDldLCBtaXhbIDldKTsKCiAgICBiID0gR01VTChpWzEwXSwgbWl4WzEwXSk7CgogICAgYyA9IEdNVUwoaVsxMV0sIG1peFsxMV0pOwoKICAgIGQgPSBHTVVMKGlbMTJdLCBtaXhbMTJdKTsKCiAgICBvdXRbMTFdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWyA5XSwgbWl4WzEzXSk7CgogICAgYiA9IEdNVUwoaVsxMF0sIG1peFsxNF0pOwoKICAgIGMgPSBHTVVMKGlbMTFdLCBtaXhbMTVdKTsKCiAgICBkID0gR01VTChpWzEyXSwgbWl4WzE2XSk7CgogICAgb3V0WzEyXSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgoKCgoKICAgIGEgPSBHTVVMKGlbMTNdLCBtaXhbIDFdKTsKCiAgICBiID0gR01VTChpWzE0XSwgbWl4WyAyXSk7CgogICAgYyA9IEdNVUwoaVsxNV0sIG1peFsgM10pOwoKICAgIGQgPSBHTVVMKGlbMTZdLCBtaXhbIDRdKTsKCiAgICBvdXRbMTNdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCiAgICBhID0gR01VTChpWzEzXSwgbWl4WyA1XSk7CgogICAgYiA9IEdNVUwoaVsxNF0sIG1peFsgNl0pOwoKICAgIGMgPSBHTVVMKGlbMTVdLCBtaXhbIDddKTsKCiAgICBkID0gR01VTChpWzE2XSwgbWl4WyA4XSk7CgogICAgb3V0WzE0XSA9IFhPUihYT1IoYSwgYiksIFhPUihjLCBkKSk7CgogICAgYSA9IEdNVUwoaVsxM10sIG1peFsgOV0pOwoKICAgIGIgPSBHTVVMKGlbMTRdLCBtaXhbMTBdKTsKCiAgICBjID0gR01VTChpWzE1XSwgbWl4WzExXSk7CgogICAgZCA9IEdNVUwoaVsxNl0sIG1peFsxMl0pOwoKICAgIG91dFsxNV0gPSBYT1IoWE9SKGEsIGIpLCBYT1IoYywgZCkpOwoKICAgIGEgPSBHTVVMKGlbMTNdLCBtaXhbMTNdKTsKCiAgICBiID0gR01VTChpWzE0XSwgbWl4WzE0XSk7CgogICAgYyA9IEdNVUwoaVsxNV0sIG1peFsxNV0pOwoKICAgIGQgPSBHTVVMKGlbMTZdLCBtaXhbMTZdKTsKCiAgICBvdXRbMTZdID0gWE9SKFhPUihhLCBiKSwgWE9SKGMsIGQpKTsKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKbG9jYWwga2V5Um91bmQgPSBmdW5jdGlvbihrZXksIHJvdW5kKQoKICAgIGxvY2FsIGkgPSAocm91bmQgLSAxKSAqIDI0OwoKICAgIGxvY2FsIG91dCA9IGtleTsKCgoKICAgIG91dFsyNSArIGldID0gWE9SKGtleVsgMSArIGldLCBYT1IoU0JPWFtrZXlbMjIgKyBpXV0sIFJDT05bcm91bmRdKSk7CgogICAgb3V0WzI2ICsgaV0gPSBYT1Ioa2V5WyAyICsgaV0sIFNCT1hba2V5WzIzICsgaV1dKTsKCiAgICBvdXRbMjcgKyBpXSA9IFhPUihrZXlbIDMgKyBpXSwgU0JPWFtrZXlbMjQgKyBpXV0pOwoKICAgIG91dFsyOCArIGldID0gWE9SKGtleVsgNCArIGldLCBTQk9YW2tleVsyMSArIGldXSk7CgoKCiAgICBvdXRbMjkgKyBpXSA9IFhPUihvdXRbMjUgKyBpXSwga2V5WyA1ICsgaV0pOwoKICAgIG91dFszMCArIGldID0gWE9SKG91dFsyNiArIGldLCBrZXlbIDYgKyBpXSk7CgogICAgb3V0WzMxICsgaV0gPSBYT1Iob3V0WzI3ICsgaV0sIGtleVsgNyArIGldKTsKCiAgICBvdXRbMzIgKyBpXSA9IFhPUihvdXRbMjggKyBpXSwga2V5WyA4ICsgaV0pOwoKCgogICAgb3V0WzMzICsgaV0gPSBYT1Iob3V0WzI5ICsgaV0sIGtleVsgOSArIGldKTsKCiAgICBvdXRbMzQgKyBpXSA9IFhPUihvdXRbMzAgKyBpXSwga2V5WzEwICsgaV0pOwoKICAgIG91dFszNSArIGldID0gWE9SKG91dFszMSArIGldLCBrZXlbMTEgKyBpXSk7CgogICAgb3V0WzM2ICsgaV0gPSBYT1Iob3V0WzMyICsgaV0sIGtleVsxMiArIGldKTsKCgoKICAgIG91dFszNyArIGldID0gWE9SKG91dFszMyArIGldLCBrZXlbMTMgKyBpXSk7CgogICAgb3V0WzM4ICsgaV0gPSBYT1Iob3V0WzM0ICsgaV0sIGtleVsxNCArIGldKTsKCiAgICBvdXRbMzkgKyBpXSA9IFhPUihvdXRbMzUgKyBpXSwga2V5WzE1ICsgaV0pOwoKICAgIG91dFs0MCArIGldID0gWE9SKG91dFszNiArIGldLCBrZXlbMTYgKyBpXSk7CgoKCiAgICBvdXRbNDEgKyBpXSA9IFhPUihvdXRbMzcgKyBpXSwga2V5WzE3ICsgaV0pOwoKICAgIG91dFs0MiArIGldID0gWE9SKG91dFszOCArIGldLCBrZXlbMTggKyBpXSk7CgogICAgb3V0WzQzICsgaV0gPSBYT1Iob3V0WzM5ICsgaV0sIGtleVsxOSArIGldKTsKCiAgICBvdXRbNDQgKyBpXSA9IFhPUihvdXRbNDAgKyBpXSwga2V5WzIwICsgaV0pOwoKCgogICAgb3V0WzQ1ICsgaV0gPSBYT1Iob3V0WzQxICsgaV0sIGtleVsyMSArIGldKTsKCiAgICBvdXRbNDYgKyBpXSA9IFhPUihvdXRbNDIgKyBpXSwga2V5WzIyICsgaV0pOwoKICAgIG91dFs0NyArIGldID0gWE9SKG91dFs0MyArIGldLCBrZXlbMjMgKyBpXSk7CgogICAgb3V0WzQ4ICsgaV0gPSBYT1Iob3V0WzQ0ICsgaV0sIGtleVsyNCArIGldKTsKCgoKICAgIHJldHVybiBvdXQ7CgplbmQKCgoKbG9jYWwga2V5RXhwYW5kID0gZnVuY3Rpb24oa2V5KQoKICAgIGxvY2FsIGJ5dGVzID0gQXJyYXkuY29weShrZXkpOwoKCgogICAgZm9yIGkgPSAxLCA4IGRvCgogICAgICAgIGtleVJvdW5kKGJ5dGVzLCBpKTsKCiAgICBlbmQKCgoKICAgIGxvY2FsIGtleXMgPSB7fTsKCgoKICAgIGtleXNbIDFdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDEsIDE2KTsKCiAgICBrZXlzWyAyXSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAxNywgMzIpOwoKICAgIGtleXNbIDNdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDMzLCA0OCk7CgogICAga2V5c1sgNF0gPSBBcnJheS5zbGljZShieXRlcywgNDksIDY0KTsKCiAgICBrZXlzWyA1XSA9IEFycmF5LnNsaWNlKGJ5dGVzLCA2NSwgODApOwoKICAgIGtleXNbIDZdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDgxLCA5Nik7CgogICAga2V5c1sgN10gPSBBcnJheS5zbGljZShieXRlcywgOTcsIDExMik7CgogICAga2V5c1sgOF0gPSBBcnJheS5zbGljZShieXRlcywgMTEzLCAxMjgpOwoKICAgIGtleXNbIDldID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDEyOSwgMTQ0KTsKCiAgICBrZXlzWzEwXSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAxNDUsIDE2MCk7CgogICAga2V5c1sxMV0gPSBBcnJheS5zbGljZShieXRlcywgMTYxLCAxNzYpOwoKICAgIGtleXNbMTJdID0gQXJyYXkuc2xpY2UoYnl0ZXMsIDE3NywgMTkyKTsKCiAgICBrZXlzWzEzXSA9IEFycmF5LnNsaWNlKGJ5dGVzLCAxOTMsIDIwOCk7CgoKCiAgICByZXR1cm4ga2V5czsKCgoKZW5kCgoKCmxvY2FsIGFkZEtleSA9IEFycmF5LlhPUjsKCgoKCgoKCmxvY2FsIEFFUyA9IHt9OwoKCgpBRVMuYmxvY2tTaXplID0gMTY7CgoKCkFFUy5lbmNyeXB0ID0gZnVuY3Rpb24oa2V5LCBibG9jaykKCgoKICAgIGxvY2FsIGtleVNjaGVkdWxlID0ga2V5RXhwYW5kKGtleSk7CgoKCiAgICAtLXJvdW5kIDAKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMV0pOwoKCgogICAgLS1yb3VuZCAxCgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzJdKTsKCgoKICAgIC0tcm91bmQgMgoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVszXSk7CgoKCiAgICAtLXJvdW5kIDMKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNF0pOwoKCgogICAgLS1yb3VuZCA0CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzVdKTsKCgoKICAgIC0tcm91bmQgNQoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs2XSk7CgoKCiAgICAtLXJvdW5kIDYKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbN10pOwoKCgogICAgLS1yb3VuZCA3CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBTQk9YKTsKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBNSVhUQUJMRSk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzhdKTsKCgoKICAgIC0tcm91bmQgOAoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgU0JPWCk7CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgUk9XX1NISUZUKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgTUlYVEFCTEUpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs5XSk7CgoKCiAgICAtLXJvdW5kIDkKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTBdKTsKCgoKICAgIC0tcm91bmQgMTAKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTFdKTsKCgoKICAgIC0tcm91bmQgMTEKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIE1JWFRBQkxFKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTJdKTsKCgoKICAgIC0tcm91bmQgMTIKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIFNCT1gpOwoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIFJPV19TSElGVCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEzXSk7CgoKCiAgICByZXR1cm4gYmxvY2s7CgoKCmVuZAoKCgpBRVMuZGVjcnlwdCA9IGZ1bmN0aW9uKGtleSwgYmxvY2spCgoKCiAgICBsb2NhbCBrZXlTY2hlZHVsZSA9IGtleUV4cGFuZChrZXkpOwoKCgogICAgLS1yb3VuZCAwCgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEzXSk7CgoKCiAgICAtLXJvdW5kIDEKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMTJdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxMV0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCAzCgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzEwXSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDQKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbOV0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA1CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzhdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgNgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs3XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDcKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbNl0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCA4CgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzVdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgOQoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVs0XSk7CgogICAgYmxvY2sgPSBtaXhDb2woYmxvY2ssIElNSVhUQUJMRSk7CgoKCiAgICAtLXJvdW5kIDEwCgogICAgYmxvY2sgPSBzaGlmdFJvdyhibG9jaywgSVJPV19TSElGVCk7CgogICAgYmxvY2sgPSBieXRlU3ViKGJsb2NrLCBJU0JPWCk7CgogICAgYmxvY2sgPSBhZGRLZXkoYmxvY2ssIGtleVNjaGVkdWxlWzNdKTsKCiAgICBibG9jayA9IG1peENvbChibG9jaywgSU1JWFRBQkxFKTsKCgoKICAgIC0tcm91bmQgMTEKCiAgICBibG9jayA9IHNoaWZ0Um93KGJsb2NrLCBJUk9XX1NISUZUKTsKCiAgICBibG9jayA9IGJ5dGVTdWIoYmxvY2ssIElTQk9YKTsKCiAgICBibG9jayA9IGFkZEtleShibG9jaywga2V5U2NoZWR1bGVbMl0pOwoKICAgIGJsb2NrID0gbWl4Q29sKGJsb2NrLCBJTUlYVEFCTEUpOwoKCgogICAgLS1yb3VuZCAxMgoKICAgIGJsb2NrID0gc2hpZnRSb3coYmxvY2ssIElST1dfU0hJRlQpOwoKICAgIGJsb2NrID0gYnl0ZVN1YihibG9jaywgSVNCT1gpOwoKICAgIGJsb2NrID0gYWRkS2V5KGJsb2NrLCBrZXlTY2hlZHVsZVsxXSk7CgoKCiAgICByZXR1cm4gYmxvY2s7CgplbmQKCgoKcmV0dXJuIEFFUzsAAAAAAABsb2NhbCBBcnJheSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5hcnJheSIpOwoKbG9jYWwgU3RyZWFtID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnN0cmVhbSIpOwoKbG9jYWwgUXVldWUgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwucXVldWUiKTsKCgoKbG9jYWwgT0ZCID0ge307CgoKCk9GQi5DaXBoZXIgPSBmdW5jdGlvbigpCgoKCiAgICBsb2NhbCBwdWJsaWMgPSB7fTsKCgoKICAgIGxvY2FsIGtleTsKCiAgICBsb2NhbCBibG9ja0NpcGhlcjsKCiAgICBsb2NhbCBwYWRkaW5nOwoKICAgIGxvY2FsIGlucHV0UXVldWU7CgogICAgbG9jYWwgb3V0cHV0UXVldWU7CgogICAgbG9jYWwgaXY7CgoKCiAgICBwdWJsaWMuc2V0S2V5ID0gZnVuY3Rpb24oa2V5Qnl0ZXMpCgogICAgICAgIGtleSA9IGtleUJ5dGVzOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldEJsb2NrQ2lwaGVyID0gZnVuY3Rpb24oY2lwaGVyKQoKICAgICAgICBibG9ja0NpcGhlciA9IGNpcGhlcjsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRQYWRkaW5nID0gZnVuY3Rpb24ocGFkZGluZ01vZGUpCgogICAgICAgIHBhZGRpbmcgPSBwYWRkaW5nTW9kZTsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5pbml0ID0gZnVuY3Rpb24oKQoKICAgICAgICBpbnB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgb3V0cHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBpdiA9IG5pbDsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy51cGRhdGUgPSBmdW5jdGlvbihtZXNzYWdlU3RyZWFtKQoKICAgICAgICBsb2NhbCBieXRlID0gbWVzc2FnZVN0cmVhbSgpOwoKICAgICAgICB3aGlsZSAoYnl0ZSB+PSBuaWwpIGRvCgogICAgICAgICAgICBpbnB1dFF1ZXVlLnB1c2goYnl0ZSk7CgogICAgICAgICAgICBpZihpbnB1dFF1ZXVlLnNpemUoKSA+PSBibG9ja0NpcGhlci5ibG9ja1NpemUpIHRoZW4KCiAgICAgICAgICAgICAgICBsb2NhbCBibG9jayA9IEFycmF5LnJlYWRGcm9tUXVldWUoaW5wdXRRdWV1ZSwgYmxvY2tDaXBoZXIuYmxvY2tTaXplKTsKCgoKICAgICAgICAgICAgICAgIGlmKGl2ID09IG5pbCkgdGhlbgoKICAgICAgICAgICAgICAgICAgICBpdiA9IGJsb2NrOwoKICAgICAgICAgICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAgICAgbG9jYWwgb3V0ID0gaXY7CgogICAgICAgICAgICAgICAgICAgIG91dCA9IGJsb2NrQ2lwaGVyLmVuY3J5cHQoa2V5LCBvdXQpOwoKICAgICAgICAgICAgICAgICAgICBpdiA9IG91dDsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIGVuZAoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgcGFkZGluZ1N0cmVhbSA9IHBhZGRpbmcoYmxvY2tDaXBoZXIuYmxvY2tTaXplLCBpbnB1dFF1ZXVlLmdldEhlYWQoKSk7CgogICAgICAgIHB1YmxpYy51cGRhdGUocGFkZGluZ1N0cmVhbSk7CgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5nZXRPdXRwdXRRdWV1ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIG91dHB1dFF1ZXVlOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvSGV4KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0FycmF5KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9TdHJpbmcob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgoKCmVuZAoKCgpPRkIuRGVjaXBoZXIgPSBmdW5jdGlvbigpCgoKCiAgICBsb2NhbCBwdWJsaWMgPSB7fTsKCgoKICAgIGxvY2FsIGtleTsKCiAgICBsb2NhbCBibG9ja0NpcGhlcjsKCiAgICBsb2NhbCBwYWRkaW5nOwoKICAgIGxvY2FsIGlucHV0UXVldWU7CgogICAgbG9jYWwgb3V0cHV0UXVldWU7CgogICAgbG9jYWwgaXY7CgoKCiAgICBwdWJsaWMuc2V0S2V5ID0gZnVuY3Rpb24oa2V5Qnl0ZXMpCgogICAgICAgIGtleSA9IGtleUJ5dGVzOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldEJsb2NrQ2lwaGVyID0gZnVuY3Rpb24oY2lwaGVyKQoKICAgICAgICBibG9ja0NpcGhlciA9IGNpcGhlcjsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRQYWRkaW5nID0gZnVuY3Rpb24ocGFkZGluZ01vZGUpCgogICAgICAgIHBhZGRpbmcgPSBwYWRkaW5nTW9kZTsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5pbml0ID0gZnVuY3Rpb24oKQoKICAgICAgICBpbnB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgb3V0cHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBpdiA9IG5pbDsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy51cGRhdGUgPSBmdW5jdGlvbihtZXNzYWdlU3RyZWFtKQoKICAgICAgICBsb2NhbCBieXRlID0gbWVzc2FnZVN0cmVhbSgpOwoKICAgICAgICB3aGlsZSAoYnl0ZSB+PSBuaWwpIGRvCgogICAgICAgICAgICBpbnB1dFF1ZXVlLnB1c2goYnl0ZSk7CgogICAgICAgICAgICBpZihpbnB1dFF1ZXVlLnNpemUoKSA+PSBibG9ja0NpcGhlci5ibG9ja1NpemUpIHRoZW4KCiAgICAgICAgICAgICAgICBsb2NhbCBibG9jayA9IEFycmF5LnJlYWRGcm9tUXVldWUoaW5wdXRRdWV1ZSwgYmxvY2tDaXBoZXIuYmxvY2tTaXplKTsKCgoKICAgICAgICAgICAgICAgIGlmKGl2ID09IG5pbCkgdGhlbgoKICAgICAgICAgICAgICAgICAgICBpdiA9IGJsb2NrOwoKICAgICAgICAgICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAgICAgbG9jYWwgb3V0ID0gaXY7CgogICAgICAgICAgICAgICAgICAgIG91dCA9IGJsb2NrQ2lwaGVyLmVuY3J5cHQoa2V5LCBvdXQpOwoKICAgICAgICAgICAgICAgICAgICBpdiA9IG91dDsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIGVuZAoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgcGFkZGluZ1N0cmVhbSA9IHBhZGRpbmcoYmxvY2tDaXBoZXIuYmxvY2tTaXplLCBpbnB1dFF1ZXVlLmdldEhlYWQoKSk7CgogICAgICAgIHB1YmxpYy51cGRhdGUocGFkZGluZ1N0cmVhbSk7CgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5nZXRPdXRwdXRRdWV1ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIG91dHB1dFF1ZXVlOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvSGV4KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0FycmF5KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9TdHJpbmcob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgoKCmVuZAoKCgoKCnJldHVybiBPRkI7bG9jYWwgQXJyYXkgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYXJyYXkiKTsKCmxvY2FsIFN0cmVhbSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5zdHJlYW0iKTsKCmxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIik7CgoKCmxvY2FsIENCQyA9IHt9OwoKCgpDQkMuQ2lwaGVyID0gZnVuY3Rpb24oKQoKCgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBrZXk7CgogICAgbG9jYWwgYmxvY2tDaXBoZXI7CgogICAgbG9jYWwgcGFkZGluZzsKCiAgICBsb2NhbCBpbnB1dFF1ZXVlOwoKICAgIGxvY2FsIG91dHB1dFF1ZXVlOwoKICAgIGxvY2FsIGl2OwoKCgogICAgcHVibGljLnNldEtleSA9IGZ1bmN0aW9uKGtleUJ5dGVzKQoKICAgICAgICBrZXkgPSBrZXlCeXRlczsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRCbG9ja0NpcGhlciA9IGZ1bmN0aW9uKGNpcGhlcikKCiAgICAgICAgYmxvY2tDaXBoZXIgPSBjaXBoZXI7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UGFkZGluZyA9IGZ1bmN0aW9uKHBhZGRpbmdNb2RlKQoKICAgICAgICBwYWRkaW5nID0gcGFkZGluZ01vZGU7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuaW5pdCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgaW5wdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIG91dHB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgaXYgPSBuaWw7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBpZihpdiA9PSBuaWwpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgaXYgPSBibG9jazsKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGxvY2FsIG91dCA9IEFycmF5LlhPUihpdiwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBibG9ja0NpcGhlci5lbmNyeXB0KGtleSwgb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgQXJyYXkud3JpdGVUb1F1ZXVlKG91dHB1dFF1ZXVlLCBvdXQpOwoKICAgICAgICAgICAgICAgICAgICBpdiA9IG91dDsKCiAgICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgZW5kCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZmluaXNoID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBwYWRkaW5nU3RyZWFtID0gcGFkZGluZyhibG9ja0NpcGhlci5ibG9ja1NpemUsIGlucHV0UXVldWUuZ2V0SGVhZCgpKTsKCiAgICAgICAgcHVibGljLnVwZGF0ZShwYWRkaW5nU3RyZWFtKTsKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmdldE91dHB1dFF1ZXVlID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gb3V0cHV0UXVldWU7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9IZXgob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvQXJyYXkob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b1N0cmluZyhvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCgoKQ0JDLkRlY2lwaGVyID0gZnVuY3Rpb24oKQoKCgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBrZXk7CgogICAgbG9jYWwgYmxvY2tDaXBoZXI7CgogICAgbG9jYWwgcGFkZGluZzsKCiAgICBsb2NhbCBpbnB1dFF1ZXVlOwoKICAgIGxvY2FsIG91dHB1dFF1ZXVlOwoKICAgIGxvY2FsIGl2OwoKCgogICAgcHVibGljLnNldEtleSA9IGZ1bmN0aW9uKGtleUJ5dGVzKQoKICAgICAgICBrZXkgPSBrZXlCeXRlczsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRCbG9ja0NpcGhlciA9IGZ1bmN0aW9uKGNpcGhlcikKCiAgICAgICAgYmxvY2tDaXBoZXIgPSBjaXBoZXI7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UGFkZGluZyA9IGZ1bmN0aW9uKHBhZGRpbmdNb2RlKQoKICAgICAgICBwYWRkaW5nID0gcGFkZGluZ01vZGU7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuaW5pdCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgaW5wdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIG91dHB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgaXYgPSBuaWw7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBpZihpdiA9PSBuaWwpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgaXYgPSBibG9jazsKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGxvY2FsIG91dCA9IGJsb2NrOwoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBibG9ja0NpcGhlci5kZWNyeXB0KGtleSwgb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKGl2LCBvdXQpOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgICAgIGl2ID0gYmxvY2s7CgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIGVuZAoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgcGFkZGluZ1N0cmVhbSA9IHBhZGRpbmcoYmxvY2tDaXBoZXIuYmxvY2tTaXplLCBpbnB1dFF1ZXVlLmdldEhlYWQoKSk7CgogICAgICAgIHB1YmxpYy51cGRhdGUocGFkZGluZ1N0cmVhbSk7CgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5nZXRPdXRwdXRRdWV1ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIG91dHB1dFF1ZXVlOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvSGV4KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0FycmF5KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9TdHJpbmcob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgoKCmVuZAoKCgpyZXR1cm4gQ0JDOwoAQuCiEQuiTGxvY2FsIEFycmF5ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmFycmF5Iik7Cgpsb2NhbCBTdHJlYW0gPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuc3RyZWFtIik7Cgpsb2NhbCBRdWV1ZSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5xdWV1ZSIpOwoKCgpsb2NhbCBFQ0IgPSB7fTsKCgoKRUNCLkNpcGhlciA9IGZ1bmN0aW9uKCkKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwga2V5OwoKICAgIGxvY2FsIGJsb2NrQ2lwaGVyOwoKICAgIGxvY2FsIHBhZGRpbmc7CgogICAgbG9jYWwgaW5wdXRRdWV1ZTsKCiAgICBsb2NhbCBvdXRwdXRRdWV1ZTsKCgoKICAgIHB1YmxpYy5zZXRLZXkgPSBmdW5jdGlvbihrZXlCeXRlcykKCiAgICAgICAga2V5ID0ga2V5Qnl0ZXM7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0QmxvY2tDaXBoZXIgPSBmdW5jdGlvbihjaXBoZXIpCgogICAgICAgIGJsb2NrQ2lwaGVyID0gY2lwaGVyOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldFBhZGRpbmcgPSBmdW5jdGlvbihwYWRkaW5nTW9kZSkKCiAgICAgICAgcGFkZGluZyA9IHBhZGRpbmdNb2RlOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmluaXQgPSBmdW5jdGlvbigpCgogICAgICAgIGlucHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBvdXRwdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBibG9jayA9IGJsb2NrQ2lwaGVyLmVuY3J5cHQoa2V5LCBibG9jayk7CgoKCiAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIGJsb2NrKTsKCiAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgZW5kCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZmluaXNoID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBwYWRkaW5nU3RyZWFtID0gcGFkZGluZyhibG9ja0NpcGhlci5ibG9ja1NpemUsIGlucHV0UXVldWUuZ2V0SGVhZCgpKTsKCiAgICAgICAgcHVibGljLnVwZGF0ZShwYWRkaW5nU3RyZWFtKTsKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmdldE91dHB1dFF1ZXVlID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gb3V0cHV0UXVldWU7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9IZXgob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvQXJyYXkob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b1N0cmluZyhvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCkVDQi5EZWNpcGhlciA9IGZ1bmN0aW9uKCkKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwga2V5OwoKICAgIGxvY2FsIGJsb2NrQ2lwaGVyOwoKICAgIGxvY2FsIHBhZGRpbmc7CgogICAgbG9jYWwgaW5wdXRRdWV1ZTsKCiAgICBsb2NhbCBvdXRwdXRRdWV1ZTsKCgoKICAgIHB1YmxpYy5zZXRLZXkgPSBmdW5jdGlvbihrZXlCeXRlcykKCiAgICAgICAga2V5ID0ga2V5Qnl0ZXM7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0QmxvY2tDaXBoZXIgPSBmdW5jdGlvbihjaXBoZXIpCgogICAgICAgIGJsb2NrQ2lwaGVyID0gY2lwaGVyOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldFBhZGRpbmcgPSBmdW5jdGlvbihwYWRkaW5nTW9kZSkKCiAgICAgICAgcGFkZGluZyA9IHBhZGRpbmdNb2RlOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmluaXQgPSBmdW5jdGlvbigpCgogICAgICAgIGlucHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBvdXRwdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBibG9jayA9IGJsb2NrQ2lwaGVyLmRlY3J5cHQoa2V5LCBibG9jayk7CgoKCiAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIGJsb2NrKTsKCiAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgZW5kCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZmluaXNoID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBwYWRkaW5nU3RyZWFtID0gcGFkZGluZyhibG9ja0NpcGhlci5ibG9ja1NpemUsIGlucHV0UXVldWUuZ2V0SGVhZCgpKTsKCiAgICAgICAgcHVibGljLnVwZGF0ZShwYWRkaW5nU3RyZWFtKTsKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmdldE91dHB1dFF1ZXVlID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gb3V0cHV0UXVldWU7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9IZXgob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvQXJyYXkob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b1N0cmluZyhvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCgoKcmV0dXJuIEVDQjtsb2NhbCBBcnJheSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5hcnJheSIpOwoKbG9jYWwgU3RyZWFtID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnN0cmVhbSIpOwoKbG9jYWwgUXVldWUgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwucXVldWUiKTsKCgoKbG9jYWwgQml0ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmJpdCIpOwoKCgpsb2NhbCBBTkQgPSBCaXQuYmFuZDsKCgoKbG9jYWwgQ1RSID0ge307CgoKCkNUUi5DaXBoZXIgPSBmdW5jdGlvbigpCgoKCiAgICBsb2NhbCBwdWJsaWMgPSB7fTsKCgoKICAgIGxvY2FsIGtleTsKCiAgICBsb2NhbCBibG9ja0NpcGhlcjsKCiAgICBsb2NhbCBwYWRkaW5nOwoKICAgIGxvY2FsIGlucHV0UXVldWU7CgogICAgbG9jYWwgb3V0cHV0UXVldWU7CgogICAgbG9jYWwgaXY7CgoKCiAgICBwdWJsaWMuc2V0S2V5ID0gZnVuY3Rpb24oa2V5Qnl0ZXMpCgogICAgICAgIGtleSA9IGtleUJ5dGVzOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldEJsb2NrQ2lwaGVyID0gZnVuY3Rpb24oY2lwaGVyKQoKICAgICAgICBibG9ja0NpcGhlciA9IGNpcGhlcjsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRQYWRkaW5nID0gZnVuY3Rpb24ocGFkZGluZ01vZGUpCgogICAgICAgIHBhZGRpbmcgPSBwYWRkaW5nTW9kZTsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5pbml0ID0gZnVuY3Rpb24oKQoKICAgICAgICBpbnB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgb3V0cHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBpdiA9IG5pbDsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIGxvY2FsIHVwZGF0ZUlWID0gZnVuY3Rpb24oKQoKICAgICAgICBpdlsxNl0gPSBpdlsxNl0gKyAxOwoKICAgICAgICBpZiBpdlsxNl0gPD0gMHhGRiB0aGVuIHJldHVybjsgZW5kCgogICAgICAgIGl2WzE2XSA9IEFORChpdlsxNl0sIDB4RkYpOwoKCgogICAgICAgIGl2WzE1XSA9IGl2WzE1XSArIDE7CgogICAgICAgIGlmIGl2WzE1XSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbMTVdID0gQU5EKGl2WzE1XSwgMHhGRik7CgoKCiAgICAgICAgaXZbMTRdID0gaXZbMTRdICsgMTsKCiAgICAgICAgaWYgaXZbMTRdIDw9IDB4RkYgdGhlbiByZXR1cm47IGVuZAoKICAgICAgICBpdlsxNF0gPSBBTkQoaXZbMTRdLCAweEZGKTsKCgoKICAgICAgICBpdlsxM10gPSBpdlsxM10gKyAxOwoKICAgICAgICBpZiBpdlsxM10gPD0gMHhGRiB0aGVuIHJldHVybjsgZW5kCgogICAgICAgIGl2WzEzXSA9IEFORChpdlsxM10sIDB4RkYpOwoKCgogICAgICAgIGl2WzEyXSA9IGl2WzEyXSArIDE7CgogICAgICAgIGlmIGl2WzEyXSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbMTJdID0gQU5EKGl2WzEyXSwgMHhGRik7CgoKCiAgICAgICAgaXZbMTFdID0gaXZbMTFdICsgMTsKCiAgICAgICAgaWYgaXZbMTFdIDw9IDB4RkYgdGhlbiByZXR1cm47IGVuZAoKICAgICAgICBpdlsxMV0gPSBBTkQoaXZbMTFdLCAweEZGKTsKCgoKICAgICAgICBpdlsxMF0gPSBpdlsxMF0gKyAxOwoKICAgICAgICBpZiBpdlsxMF0gPD0gMHhGRiB0aGVuIHJldHVybjsgZW5kCgogICAgICAgIGl2WzEwXSA9IEFORChpdlsxMF0sIDB4RkYpOwoKCgogICAgICAgIGl2WzldID0gaXZbOV0gKyAxOwoKICAgICAgICBpZiBpdls5XSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbOV0gPSBBTkQoaXZbOV0sIDB4RkYpOwoKCgogICAgICAgIHJldHVybjsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy51cGRhdGUgPSBmdW5jdGlvbihtZXNzYWdlU3RyZWFtKQoKICAgICAgICBsb2NhbCBieXRlID0gbWVzc2FnZVN0cmVhbSgpOwoKICAgICAgICB3aGlsZSAoYnl0ZSB+PSBuaWwpIGRvCgogICAgICAgICAgICBpbnB1dFF1ZXVlLnB1c2goYnl0ZSk7CgoKCiAgICAgICAgICAgIGlmKGlucHV0UXVldWUuc2l6ZSgpID49IGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSkgdGhlbgoKICAgICAgICAgICAgICAgIGxvY2FsIGJsb2NrID0gQXJyYXkucmVhZEZyb21RdWV1ZShpbnB1dFF1ZXVlLCBibG9ja0NpcGhlci5ibG9ja1NpemUpOwoKCgogICAgICAgICAgICAgICAgaWYoaXYgPT0gbmlsKSB0aGVuCgogICAgICAgICAgICAgICAgICAgIGl2ID0gYmxvY2s7CgogICAgICAgICAgICAgICAgZWxzZQoKICAgICAgICAgICAgICAgICAgICBsb2NhbCBvdXQgPSBpdjsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gYmxvY2tDaXBoZXIuZW5jcnlwdChrZXksIG91dCk7CgoKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgICAgIHVwZGF0ZUlWKCk7CgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIGVuZAoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgcGFkZGluZ1N0cmVhbSA9IHBhZGRpbmcoYmxvY2tDaXBoZXIuYmxvY2tTaXplLCBpbnB1dFF1ZXVlLmdldEhlYWQoKSk7CgogICAgICAgIHB1YmxpYy51cGRhdGUocGFkZGluZ1N0cmVhbSk7CgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5nZXRPdXRwdXRRdWV1ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIG91dHB1dFF1ZXVlOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvSGV4KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0FycmF5KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9TdHJpbmcob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgoKCmVuZAoKCgoKCkNUUi5EZWNpcGhlciA9IGZ1bmN0aW9uKCkKCgoKICAgIGxvY2FsIHB1YmxpYyA9IHt9OwoKCgogICAgbG9jYWwga2V5OwoKICAgIGxvY2FsIGJsb2NrQ2lwaGVyOwoKICAgIGxvY2FsIHBhZGRpbmc7CgogICAgbG9jYWwgaW5wdXRRdWV1ZTsKCiAgICBsb2NhbCBvdXRwdXRRdWV1ZTsKCiAgICBsb2NhbCBpdjsKCgoKICAgIHB1YmxpYy5zZXRLZXkgPSBmdW5jdGlvbihrZXlCeXRlcykKCiAgICAgICAga2V5ID0ga2V5Qnl0ZXM7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0QmxvY2tDaXBoZXIgPSBmdW5jdGlvbihjaXBoZXIpCgogICAgICAgIGJsb2NrQ2lwaGVyID0gY2lwaGVyOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLnNldFBhZGRpbmcgPSBmdW5jdGlvbihwYWRkaW5nTW9kZSkKCiAgICAgICAgcGFkZGluZyA9IHBhZGRpbmdNb2RlOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmluaXQgPSBmdW5jdGlvbigpCgogICAgICAgIGlucHV0UXVldWUgPSBRdWV1ZSgpOwoKICAgICAgICBvdXRwdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIGl2ID0gbmlsOwoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgbG9jYWwgdXBkYXRlSVYgPSBmdW5jdGlvbigpCgogICAgICAgIGl2WzE2XSA9IGl2WzE2XSArIDE7CgogICAgICAgIGlmIGl2WzE2XSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbMTZdID0gQU5EKGl2WzE2XSwgMHhGRik7CgoKCiAgICAgICAgaXZbMTVdID0gaXZbMTVdICsgMTsKCiAgICAgICAgaWYgaXZbMTVdIDw9IDB4RkYgdGhlbiByZXR1cm47IGVuZAoKICAgICAgICBpdlsxNV0gPSBBTkQoaXZbMTVdLCAweEZGKTsKCgoKICAgICAgICBpdlsxNF0gPSBpdlsxNF0gKyAxOwoKICAgICAgICBpZiBpdlsxNF0gPD0gMHhGRiB0aGVuIHJldHVybjsgZW5kCgogICAgICAgIGl2WzE0XSA9IEFORChpdlsxNF0sIDB4RkYpOwoKCgogICAgICAgIGl2WzEzXSA9IGl2WzEzXSArIDE7CgogICAgICAgIGlmIGl2WzEzXSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbMTNdID0gQU5EKGl2WzEzXSwgMHhGRik7CgoKCiAgICAgICAgaXZbMTJdID0gaXZbMTJdICsgMTsKCiAgICAgICAgaWYgaXZbMTJdIDw9IDB4RkYgdGhlbiByZXR1cm47IGVuZAoKICAgICAgICBpdlsxMl0gPSBBTkQoaXZbMTJdLCAweEZGKTsKCgoKICAgICAgICBpdlsxMV0gPSBpdlsxMV0gKyAxOwoKICAgICAgICBpZiBpdlsxMV0gPD0gMHhGRiB0aGVuIHJldHVybjsgZW5kCgogICAgICAgIGl2WzExXSA9IEFORChpdlsxMV0sIDB4RkYpOwoKCgogICAgICAgIGl2WzEwXSA9IGl2WzEwXSArIDE7CgogICAgICAgIGlmIGl2WzEwXSA8PSAweEZGIHRoZW4gcmV0dXJuOyBlbmQKCiAgICAgICAgaXZbMTBdID0gQU5EKGl2WzEwXSwgMHhGRik7CgoKCiAgICAgICAgaXZbOV0gPSBpdls5XSArIDE7CgogICAgICAgIGlmIGl2WzldIDw9IDB4RkYgdGhlbiByZXR1cm47IGVuZAoKICAgICAgICBpdls5XSA9IEFORChpdls5XSwgMHhGRik7CgoKCiAgICAgICAgcmV0dXJuOwoKICAgIGVuZAoKCgogICAgcHVibGljLnVwZGF0ZSA9IGZ1bmN0aW9uKG1lc3NhZ2VTdHJlYW0pCgogICAgICAgIGxvY2FsIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIHdoaWxlIChieXRlIH49IG5pbCkgZG8KCiAgICAgICAgICAgIGlucHV0UXVldWUucHVzaChieXRlKTsKCgoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBpZihpdiA9PSBuaWwpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgaXYgPSBibG9jazsKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGxvY2FsIG91dCA9IGl2OwoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBibG9ja0NpcGhlci5lbmNyeXB0KGtleSwgb3V0KTsKCgoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBBcnJheS5YT1Iob3V0LCBibG9jayk7CgogICAgICAgICAgICAgICAgICAgIEFycmF5LndyaXRlVG9RdWV1ZShvdXRwdXRRdWV1ZSwgb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSVYoKTsKCiAgICAgICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgZW5kCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZmluaXNoID0gZnVuY3Rpb24oKQoKICAgICAgICBsb2NhbCBwYWRkaW5nU3RyZWFtID0gcGFkZGluZyhibG9ja0NpcGhlci5ibG9ja1NpemUsIGlucHV0UXVldWUuZ2V0SGVhZCgpKTsKCiAgICAgICAgcHVibGljLnVwZGF0ZShwYWRkaW5nU3RyZWFtKTsKCgoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmdldE91dHB1dFF1ZXVlID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gb3V0cHV0UXVldWU7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9IZXgob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0J5dGVzID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvQXJyYXkob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b1N0cmluZyhvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCgoKZW5kCgoKCnJldHVybiBDVFI7CgBCkO8RC7EhbG9jYWwgQXJyYXkgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYXJyYXkiKTsKCmxvY2FsIFN0cmVhbSA9IHJlcXVpcmUoIi5jcnlwdG8udXRpbC5zdHJlYW0iKTsKCmxvY2FsIFF1ZXVlID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnF1ZXVlIik7CgoKCmxvY2FsIENGQiA9IHt9OwoKCgpDRkIuQ2lwaGVyID0gZnVuY3Rpb24oKQoKCgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBrZXk7CgogICAgbG9jYWwgYmxvY2tDaXBoZXI7CgogICAgbG9jYWwgcGFkZGluZzsKCiAgICBsb2NhbCBpbnB1dFF1ZXVlOwoKICAgIGxvY2FsIG91dHB1dFF1ZXVlOwoKICAgIGxvY2FsIGl2OwoKCgogICAgcHVibGljLnNldEtleSA9IGZ1bmN0aW9uKGtleUJ5dGVzKQoKICAgICAgICBrZXkgPSBrZXlCeXRlczsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRCbG9ja0NpcGhlciA9IGZ1bmN0aW9uKGNpcGhlcikKCiAgICAgICAgYmxvY2tDaXBoZXIgPSBjaXBoZXI7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UGFkZGluZyA9IGZ1bmN0aW9uKHBhZGRpbmdNb2RlKQoKICAgICAgICBwYWRkaW5nID0gcGFkZGluZ01vZGU7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuaW5pdCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgaW5wdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIG91dHB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgaXYgPSBuaWw7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBpZihpdiA9PSBuaWwpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgaXYgPSBibG9jazsKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGxvY2FsIG91dCA9IGl2OwoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBibG9ja0NpcGhlci5lbmNyeXB0KGtleSwgb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgICAgIGl2ID0gb3V0OwoKICAgICAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBieXRlID0gbWVzc2FnZVN0cmVhbSgpOwoKICAgICAgICBlbmQKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5maW5pc2ggPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIHBhZGRpbmdTdHJlYW0gPSBwYWRkaW5nKGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSwgaW5wdXRRdWV1ZS5nZXRIZWFkKCkpOwoKICAgICAgICBwdWJsaWMudXBkYXRlKHBhZGRpbmdTdHJlYW0pOwoKCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuZ2V0T3V0cHV0UXVldWUgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBvdXRwdXRRdWV1ZTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc0hleCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0hleChvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzQnl0ZXMgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9BcnJheShvdXRwdXRRdWV1ZS5wb3ApOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzU3RyaW5nID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvU3RyaW5nKG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICByZXR1cm4gcHVibGljOwoKCgplbmQKCgoKQ0ZCLkRlY2lwaGVyID0gZnVuY3Rpb24oKQoKCgogICAgbG9jYWwgcHVibGljID0ge307CgoKCiAgICBsb2NhbCBrZXk7CgogICAgbG9jYWwgYmxvY2tDaXBoZXI7CgogICAgbG9jYWwgcGFkZGluZzsKCiAgICBsb2NhbCBpbnB1dFF1ZXVlOwoKICAgIGxvY2FsIG91dHB1dFF1ZXVlOwoKICAgIGxvY2FsIGl2OwoKCgogICAgcHVibGljLnNldEtleSA9IGZ1bmN0aW9uKGtleUJ5dGVzKQoKICAgICAgICBrZXkgPSBrZXlCeXRlczsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXRCbG9ja0NpcGhlciA9IGZ1bmN0aW9uKGNpcGhlcikKCiAgICAgICAgYmxvY2tDaXBoZXIgPSBjaXBoZXI7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0UGFkZGluZyA9IGZ1bmN0aW9uKHBhZGRpbmdNb2RlKQoKICAgICAgICBwYWRkaW5nID0gcGFkZGluZ01vZGU7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuaW5pdCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgaW5wdXRRdWV1ZSA9IFF1ZXVlKCk7CgogICAgICAgIG91dHB1dFF1ZXVlID0gUXVldWUoKTsKCiAgICAgICAgaXYgPSBuaWw7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgbG9jYWwgYnl0ZSA9IG1lc3NhZ2VTdHJlYW0oKTsKCiAgICAgICAgd2hpbGUgKGJ5dGUgfj0gbmlsKSBkbwoKICAgICAgICAgICAgaW5wdXRRdWV1ZS5wdXNoKGJ5dGUpOwoKICAgICAgICAgICAgaWYoaW5wdXRRdWV1ZS5zaXplKCkgPj0gYmxvY2tDaXBoZXIuYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICAgICAgbG9jYWwgYmxvY2sgPSBBcnJheS5yZWFkRnJvbVF1ZXVlKGlucHV0UXVldWUsIGJsb2NrQ2lwaGVyLmJsb2NrU2l6ZSk7CgoKCiAgICAgICAgICAgICAgICBpZihpdiA9PSBuaWwpIHRoZW4KCiAgICAgICAgICAgICAgICAgICAgaXYgPSBibG9jazsKCiAgICAgICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgICAgIGxvY2FsIG91dCA9IGl2OwoKICAgICAgICAgICAgICAgICAgICBvdXQgPSBibG9ja0NpcGhlci5lbmNyeXB0KGtleSwgb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgb3V0ID0gQXJyYXkuWE9SKG91dCwgYmxvY2spOwoKICAgICAgICAgICAgICAgICAgICBBcnJheS53cml0ZVRvUXVldWUob3V0cHV0UXVldWUsIG91dCk7CgogICAgICAgICAgICAgICAgICAgIGl2ID0gYmxvY2s7CgogICAgICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGJ5dGUgPSBtZXNzYWdlU3RyZWFtKCk7CgogICAgICAgIGVuZAoKICAgICAgICByZXR1cm4gcHVibGljOwoKICAgIGVuZAoKCgogICAgcHVibGljLmZpbmlzaCA9IGZ1bmN0aW9uKCkKCiAgICAgICAgbG9jYWwgcGFkZGluZ1N0cmVhbSA9IHBhZGRpbmcoYmxvY2tDaXBoZXIuYmxvY2tTaXplLCBpbnB1dFF1ZXVlLmdldEhlYWQoKSk7CgogICAgICAgIHB1YmxpYy51cGRhdGUocGFkZGluZ1N0cmVhbSk7CgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5nZXRPdXRwdXRRdWV1ZSA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIG91dHB1dFF1ZXVlOwoKICAgIGVuZAoKCgogICAgcHVibGljLmFzSGV4ID0gZnVuY3Rpb24oKQoKICAgICAgICByZXR1cm4gU3RyZWFtLnRvSGV4KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIFN0cmVhbS50b0FycmF5KG91dHB1dFF1ZXVlLnBvcCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNTdHJpbmcgPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBTdHJlYW0udG9TdHJpbmcob3V0cHV0UXVldWUucG9wKTsKCiAgICBlbmQKCgoKICAgIHJldHVybiBwdWJsaWM7CgoKCmVuZAoKCgpyZXR1cm4gQ0ZCO2xvY2FsIEhtYWMgPSByZXF1aXJlKCIuY3J5cHRvLm1hYy5obWFjIikKCgoKbG9jYWwgbWFjID0gewoKICAgIF92ZXJzaW9uID0gIjAuMC4xIiwKCiAgICBjcmVhdGVIbWFjID0gSG1hYy5obWFjLAoKfTsKCgoKcmV0dXJuIG1hYwBC0JASC9IZbG9jYWwgQml0ID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLmJpdCIpOwoKbG9jYWwgU3RyZWFtID0gcmVxdWlyZSgiLmNyeXB0by51dGlsLnN0cmVhbSIpOwoKbG9jYWwgQXJyYXkgPSByZXF1aXJlKCIuY3J5cHRvLnV0aWwuYXJyYXkiKTsKCgoKbG9jYWwgU0hBMSA9IHJlcXVpcmUoIi5jcnlwdG8uZGlnZXN0LnNoYTEiKTsKCmxvY2FsIFNIQTJfMjU2ID0gcmVxdWlyZSgiLmNyeXB0by5kaWdlc3Quc2hhMl8yNTYiKTsKCgoKbG9jYWwgWE9SID0gQml0LmJ4b3I7CgoKCmxvY2FsIEhNQUMgPSBmdW5jdGlvbigpCgogICAgbG9jYWwgcHVibGljID0ge307CgogICAgbG9jYWwgYmxvY2tTaXplID0gNjQ7CgogICAgbG9jYWwgRGlnZXN0ID0gbmlsOwoKICAgIGxvY2FsIG91dGVyUGFkZGluZyA9IHt9OwoKICAgIGxvY2FsIGlubmVyUGFkZGluZyA9IHt9CgogICAgbG9jYWwgZGlnZXN0OwoKCgogICAgcHVibGljLnNldEJsb2NrU2l6ZSA9IGZ1bmN0aW9uKGJ5dGVzKQoKICAgICAgICBibG9ja1NpemUgPSBieXRlczsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5zZXREaWdlc3QgPSBmdW5jdGlvbihkaWdlc3RNb2R1bGUpCgogICAgICAgIERpZ2VzdCA9IGRpZ2VzdE1vZHVsZTsKCiAgICAgICAgZGlnZXN0ID0gRGlnZXN0KCk7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuc2V0S2V5ID0gZnVuY3Rpb24oa2V5KQoKICAgICAgICBsb2NhbCBrZXlTdHJlYW07CgogICAgICAgIGlmIERpZ2VzdCA9PSBuaWwgdGhlbgoKICAgICAgICAgICAgZXJyb3IoIkRpZ2VzdCBub3Qgc2V0Iik7CgogICAgICAgIGVuZAoKICAgICAgICBpZiAoQXJyYXkuc2l6ZShrZXkpID4gYmxvY2tTaXplKSB0aGVuCgogICAgICAgICAgICBrZXlTdHJlYW0gPSBTdHJlYW0uZnJvbUFycmF5KERpZ2VzdCgpCgogICAgICAgICAgICAgICAgLnVwZGF0ZShTdHJlYW0uZnJvbUFycmF5KGtleSkpCgogICAgICAgICAgICAgICAgLmZpbmlzaCgpCgogICAgICAgICAgICAgICAgLmFzQnl0ZXMoKSk7CgogICAgICAgIGVsc2UKCiAgICAgICAgICAgIGtleVN0cmVhbSA9IFN0cmVhbS5mcm9tQXJyYXkoa2V5KTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgb3V0ZXJQYWRkaW5nID0ge307CgogICAgICAgIGlubmVyUGFkZGluZyA9IHt9OwoKCgogICAgICAgIGZvciBpID0gMSwgYmxvY2tTaXplIGRvCgogICAgICAgICAgICBsb2NhbCBieXRlID0ga2V5U3RyZWFtKCk7CgogICAgICAgICAgICBpZiBieXRlID09IG5pbCB0aGVuIGJ5dGUgPSAweDAwOyBlbmQKCiAgICAgICAgICAgIG91dGVyUGFkZGluZ1tpXSA9IFhPUigweDVDLCBieXRlKTsKCiAgICAgICAgICAgIGlubmVyUGFkZGluZ1tpXSA9IFhPUigweDM2LCBieXRlKTsKCiAgICAgICAgZW5kCgoKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5pbml0ID0gZnVuY3Rpb24oKQoKICAgICAgICBkaWdlc3QuaW5pdCgpCgogICAgICAgICAgICAudXBkYXRlKFN0cmVhbS5mcm9tQXJyYXkoaW5uZXJQYWRkaW5nKSk7CgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMudXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZVN0cmVhbSkKCiAgICAgICAgZGlnZXN0LnVwZGF0ZShtZXNzYWdlU3RyZWFtKTsKCiAgICAgICAgcmV0dXJuIHB1YmxpYzsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5maW5pc2ggPSBmdW5jdGlvbigpCgogICAgICAgIGxvY2FsIGlubmVyID0gZGlnZXN0LmZpbmlzaCgpLmFzQnl0ZXMoKTsKCiAgICAgICAgZGlnZXN0LmluaXQoKQoKICAgICAgICAgICAgLnVwZGF0ZShTdHJlYW0uZnJvbUFycmF5KG91dGVyUGFkZGluZykpCgogICAgICAgICAgICAudXBkYXRlKFN0cmVhbS5mcm9tQXJyYXkoaW5uZXIpKQoKICAgICAgICAgICAgLmZpbmlzaCgpOwoKCgogICAgICAgIHJldHVybiBwdWJsaWM7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNCeXRlcyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGRpZ2VzdC5hc0J5dGVzKCk7CgogICAgZW5kCgoKCiAgICBwdWJsaWMuYXNIZXggPSBmdW5jdGlvbigpCgogICAgICAgIHJldHVybiBkaWdlc3QuYXNIZXgoKTsKCiAgICBlbmQKCgoKICAgIHB1YmxpYy5hc1N0cmluZyA9IGZ1bmN0aW9uKCkKCiAgICAgICAgcmV0dXJuIGRpZ2VzdC5hc1N0cmluZygpOwoKICAgIGVuZAoKCgogICAgcmV0dXJuIHB1YmxpYzsKCmVuZAoKCgotLS0gQGNsYXNzIEFycmF5IDogdGFibGUKCi0tLSBAY2xhc3MgU3RyZWFtIDogdGFibGUKCgoKLS0tIEhNQUMgZnVuY3Rpb24gZm9yIGdlbmVyYXRpbmcgYSBoYXNoLWJhc2VkIG1lc3NhZ2UgYXV0aGVudGljYXRpb24gY29kZQoKLS0tIEBwYXJhbSBkYXRhIChTdHJlYW0pIC0gVGhlIGRhdGEgdG8gaGFzaCBhbmQgYXV0aGVudGljYXRlCgotLS0gQHBhcmFtIGtleSAoQXJyYXkpIC0gVGhlIGtleSB0byB1c2UgZm9yIHRoZSBITUFDCgotLS0gQHBhcmFtIGFsZ29yaXRobT8gKHN0cmluZykgLSBUaGUgYWxnb3JpdGhtIHRvIHVzZSBmb3IgdGhlIEhNQUMgKHNoYTEsIHNoYTI1NikuIERlZmF1bHRzIHRvICJzaGExIgoKLS0tIEByZXR1cm5zIHRhYmxlIC0gQSB0YWJsZSBjb250YWluaW5nIHRoZSBITUFDIGluIGJ5dGVzLCBzdHJpbmcsIGFuZCBoZXggZm9ybWF0cy4KCmxvY2FsIGhtYWMgPSBmdW5jdGlvbihkYXRhLCBrZXksIGFsZ29yaXRobSkKCiAgICBsb2NhbCBkaWdlc3QgPSBuaWwKCiAgICBpZiBhbGdvcml0aG0gPT0gInNoYTEiIHRoZW4KCiAgICAgICAgZGlnZXN0ID0gU0hBMS5TSEExCgogICAgZWxzZWlmIGFsZ29yaXRobSA9PSAic2hhMjU2IiB0aGVuCgogICAgICAgIGRpZ2VzdCA9IFNIQTJfMjU2LlNIQTJfMjU2CgogICAgZWxzZWlmIGFsZ29yaXRobSA9PSBuaWwgdGhlbgoKICAgICAgICBkaWdlc3QgPSBTSEExLlNIQTEKCiAgICBlbHNlCgogICAgICAgIGVycm9yKCJVbnN1cHBvcnRlZCBhbGdvcml0aG06ICIgLi4gYWxnb3JpdGhtKQoKICAgIGVuZAoKCgogICAgbG9jYWwgcmVzID0gSE1BQygpCgogICAgICAgICAgICAgICAgLnNldEJsb2NrU2l6ZSgzMikKCiAgICAgICAgICAgICAgICAuc2V0RGlnZXN0KGRpZ2VzdCkKCiAgICAgICAgICAgICAgICAuc2V0S2V5KGtleSkKCiAgICAgICAgICAgICAgICAuaW5pdCgpCgogICAgICAgICAgICAgICAgLnVwZGF0ZShkYXRhKQoKICAgICAgICAgICAgICAgIC5maW5pc2goKQoKCgoJcmV0dXJuIHJlcwoKZW5kCgoKCnJldHVybiB7CgogICAgaG1hYyA9IGhtYWMsCgogICAgSE1BQyA9IEhNQUMKCn07AEKwqhIL0Etsb2NhbCBaZXJvUGFkZGluZyA9IGZ1bmN0aW9uKGJsb2NrU2l6ZSwgYnl0ZUNvdW50KQoKCgogICAgbG9jYWwgcGFkZGluZ0NvdW50ID0gYmxvY2tTaXplIC0gKChieXRlQ291bnQgLTEpICUgYmxvY2tTaXplKSArIDE7CgogICAgbG9jYWwgYnl0ZXNMZWZ0ID0gcGFkZGluZ0NvdW50OwoKCgogICAgbG9jYWwgc3RyZWFtID0gZnVuY3Rpb24oKQoKICAgICAgICBpZiBieXRlc0xlZnQgPiAwIHRoZW4KCiAgICAgICAgICAgIGJ5dGVzTGVmdCA9IGJ5dGVzTGVmdCAtIDE7CgogICAgICAgICAgICByZXR1cm4gMHgwMDsKCiAgICAgICAgZWxzZQoKICAgICAgICAgICAgcmV0dXJuIG5pbDsKCiAgICAgICAgZW5kCgogICAgZW5kCgogICAgcmV0dXJuIHN0cmVhbTsKCmVuZAoKCgpyZXR1cm4gWmVyb1BhZGRpbmc7bG9jYWwganNvbiA9IHtfdmVyc2lvbiA9ICIwLjIuMCJ9CgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tIEVuY29kZQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgpsb2NhbCBlbmNvZGUKCgoKbG9jYWwgZXNjYXBlX2NoYXJfbWFwID0gewoKICAgIFsiXFwiXSA9ICJcXCIsCgogICAgWyJcIiJdID0gIlwiIiwKCiAgICBbIlxiIl0gPSAiYiIsCgogICAgWyJcZiJdID0gImYiLAoKICAgIFsiXG4iXSA9ICJuIiwKCiAgICBbIlxyIl0gPSAiciIsCgogICAgWyJcdCJdID0gInQiCgp9CgoKCmxvY2FsIGVzY2FwZV9jaGFyX21hcF9pbnYgPSB7WyIvIl0gPSAiLyJ9Cgpmb3IgaywgdiBpbiBwYWlycyhlc2NhcGVfY2hhcl9tYXApIGRvIGVzY2FwZV9jaGFyX21hcF9pbnZbdl0gPSBrIGVuZAoKCgpsb2NhbCBmdW5jdGlvbiBlc2NhcGVfY2hhcihjKQoKICAgIHJldHVybiAiXFwiIC4uIChlc2NhcGVfY2hhcl9tYXBbY10gb3Igc3RyaW5nLmZvcm1hdCgidSUwNHgiLCBjOmJ5dGUoKSkpCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gZW5jb2RlX25pbCh2YWwpIHJldHVybiAibnVsbCIgZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGVuY29kZV90YWJsZSh2YWwsIHN0YWNrKQoKICAgIGxvY2FsIHJlcyA9IHt9CgogICAgc3RhY2sgPSBzdGFjayBvciB7fQoKCgogICAgLS0gQ2lyY3VsYXIgcmVmZXJlbmNlPwoKICAgIGlmIHN0YWNrW3ZhbF0gdGhlbiBlcnJvcigiY2lyY3VsYXIgcmVmZXJlbmNlIikgZW5kCgoKCiAgICBzdGFja1t2YWxdID0gdHJ1ZQoKCgogICAgaWYgcmF3Z2V0KHZhbCwgMSkgfj0gbmlsIG9yIG5leHQodmFsKSA9PSBuaWwgdGhlbgoKICAgICAgICAtLSBUcmVhdCBhcyBhcnJheSAtLSBjaGVjayBrZXlzIGFyZSB2YWxpZCBhbmQgaXQgaXMgbm90IHNwYXJzZQoKICAgICAgICBsb2NhbCBuID0gMAoKICAgICAgICBmb3IgayBpbiBwYWlycyh2YWwpIGRvCgogICAgICAgICAgICBpZiB0eXBlKGspIH49ICJudW1iZXIiIHRoZW4KCiAgICAgICAgICAgICAgICBlcnJvcigiaW52YWxpZCB0YWJsZTogbWl4ZWQgb3IgaW52YWxpZCBrZXkgdHlwZXMiKQoKICAgICAgICAgICAgZW5kCgogICAgICAgICAgICBuID0gbiArIDEKCiAgICAgICAgZW5kCgogICAgICAgIGlmIG4gfj0gI3ZhbCB0aGVuIGVycm9yKCJpbnZhbGlkIHRhYmxlOiBzcGFyc2UgYXJyYXkiKSBlbmQKCiAgICAgICAgLS0gRW5jb2RlCgogICAgICAgIGZvciBpID0gMSwgI3ZhbCBkbyByZXNbaV0gPSBlbmNvZGUodmFsW2ldLCBzdGFjaykgZW5kCgogICAgICAgIHN0YWNrW3ZhbF0gPSBuaWwKCiAgICAgICAgcmV0dXJuICJbIiAuLiB0YWJsZS5jb25jYXQocmVzLCAiLCIpIC4uICJdIgoKICAgIGVsc2UKCiAgICAgICAgLS0gVHJlYXQgYXMgYW4gb2JqZWN0CgogICAgICAgIGxvY2FsIGkgPSAxCgogICAgICAgIGZvciBrLCB2IGluIHBhaXJzKHZhbCkgZG8KCiAgICAgICAgICAgIGlmIHR5cGUoaykgfj0gInN0cmluZyIgdGhlbgoKICAgICAgICAgICAgICAgIGVycm9yKCJpbnZhbGlkIHRhYmxlOiBtaXhlZCBvciBpbnZhbGlkIGtleSB0eXBlcyIpCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGlmIHR5cGUodikgfj0gImZ1bmN0aW9uIiB0aGVuCgogICAgICAgICAgICAgICAgcmVzW2ldID0gZW5jb2RlKGssIHN0YWNrKSAuLiAiOiIgLi4gZW5jb2RlKHYsIHN0YWNrKQoKICAgICAgICAgICAgICAgIGkgPSBpICsgMQoKICAgICAgICAgICAgZW5kCgogICAgICAgIGVuZAoKICAgICAgICBzdGFja1t2YWxdID0gbmlsCgogICAgICAgIHJldHVybiAieyIgLi4gdGFibGUuY29uY2F0KHJlcywgIiwiKSAuLiAifSIKCiAgICBlbmQKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBlbmNvZGVfc3RyaW5nKHZhbCkKCiAgICByZXR1cm4gJyInIC4uIHZhbDpnc3ViKCdbJXpcMS1cMzFcXCJdJywgZXNjYXBlX2NoYXIpIC4uICciJwoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGVuY29kZV9udW1iZXIodmFsKQoKICAgIC0tIENoZWNrIGZvciBOYU4sIC1pbmYgYW5kIGluZgoKICAgIGlmIHZhbCB+PSB2YWwgb3IgdmFsIDw9IC1tYXRoLmh1Z2Ugb3IgdmFsID49IG1hdGguaHVnZSB0aGVuCgogICAgICAgIGVycm9yKCJ1bmV4cGVjdGVkIG51bWJlciB2YWx1ZSAnIiAuLiB0b3N0cmluZyh2YWwpIC4uICInIikKCiAgICBlbmQKCiAgICByZXR1cm4gc3RyaW5nLmZvcm1hdCgiJS4xNGciLCB2YWwpCgplbmQKCgoKbG9jYWwgdHlwZV9mdW5jX21hcCA9IHsKCiAgICBbIm5pbCJdID0gZW5jb2RlX25pbCwKCiAgICBbInRhYmxlIl0gPSBlbmNvZGVfdGFibGUsCgogICAgWyJzdHJpbmciXSA9IGVuY29kZV9zdHJpbmcsCgogICAgWyJudW1iZXIiXSA9IGVuY29kZV9udW1iZXIsCgogICAgWyJib29sZWFuIl0gPSB0b3N0cmluZwoKfQoKCgplbmNvZGUgPSBmdW5jdGlvbih2YWwsIHN0YWNrKQoKICAgIGxvY2FsIHQgPSB0eXBlKHZhbCkKCiAgICBsb2NhbCBmID0gdHlwZV9mdW5jX21hcFt0XQoKICAgIGlmIGYgdGhlbiByZXR1cm4gZih2YWwsIHN0YWNrKSBlbmQKCiAgICBlcnJvcigidW5leHBlY3RlZCB0eXBlICciIC4uIHQgLi4gIiciKQoKZW5kCgoKCmZ1bmN0aW9uIGpzb24uZW5jb2RlKHZhbCkgcmV0dXJuIChlbmNvZGUodmFsKSkgZW5kCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tIERlY29kZQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgpsb2NhbCBwYXJzZQoKCgpsb2NhbCBmdW5jdGlvbiBjcmVhdGVfc2V0KC4uLikKCiAgICBsb2NhbCByZXMgPSB7fQoKICAgIGZvciBpID0gMSwgc2VsZWN0KCIjIiwgLi4uKSBkbyByZXNbc2VsZWN0KGksIC4uLildID0gdHJ1ZSBlbmQKCiAgICByZXR1cm4gcmVzCgplbmQKCgoKbG9jYWwgc3BhY2VfY2hhcnMgPSBjcmVhdGVfc2V0KCIgIiwgIlx0IiwgIlxyIiwgIlxuIikKCmxvY2FsIGRlbGltX2NoYXJzID0gY3JlYXRlX3NldCgiICIsICJcdCIsICJcciIsICJcbiIsICJdIiwgIn0iLCAiLCIpCgpsb2NhbCBlc2NhcGVfY2hhcnMgPSBjcmVhdGVfc2V0KCJcXCIsICIvIiwgJyInLCAiYiIsICJmIiwgIm4iLCAiciIsICJ0IiwgInUiKQoKbG9jYWwgbGl0ZXJhbHMgPSBjcmVhdGVfc2V0KCJ0cnVlIiwgImZhbHNlIiwgIm51bGwiKQoKCgpsb2NhbCBsaXRlcmFsX21hcCA9IHtbInRydWUiXSA9IHRydWUsIFsiZmFsc2UiXSA9IGZhbHNlLCBbIm51bGwiXSA9IG5pbH0KCgoKbG9jYWwgZnVuY3Rpb24gbmV4dF9jaGFyKHN0ciwgaWR4LCBzZXQsIG5lZ2F0ZSkKCiAgICBmb3IgaSA9IGlkeCwgI3N0ciBkbyBpZiBzZXRbc3RyOnN1YihpLCBpKV0gfj0gbmVnYXRlIHRoZW4gcmV0dXJuIGkgZW5kIGVuZAoKICAgIHJldHVybiAjc3RyICsgMQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIGRlY29kZV9lcnJvcihzdHIsIGlkeCwgbXNnKQoKICAgIGxvY2FsIGxpbmVfY291bnQgPSAxCgogICAgbG9jYWwgY29sX2NvdW50ID0gMQoKICAgIGZvciBpID0gMSwgaWR4IC0gMSBkbwoKICAgICAgICBjb2xfY291bnQgPSBjb2xfY291bnQgKyAxCgogICAgICAgIGlmIHN0cjpzdWIoaSwgaSkgPT0gIlxuIiB0aGVuCgogICAgICAgICAgICBsaW5lX2NvdW50ID0gbGluZV9jb3VudCArIDEKCiAgICAgICAgICAgIGNvbF9jb3VudCA9IDEKCiAgICAgICAgZW5kCgogICAgZW5kCgogICAgZXJyb3Ioc3RyaW5nLmZvcm1hdCgiJXMgYXQgbGluZSAlZCBjb2wgJWQiLCBtc2csIGxpbmVfY291bnQsIGNvbF9jb3VudCkpCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gY29kZXBvaW50X3RvX3V0ZjgobikKCiAgICBsb2NhbCBmID0gbWF0aC5mbG9vcgoKICAgIGlmIG4gPD0gMHg3ZiB0aGVuCgogICAgICAgIHJldHVybiBzdHJpbmcuY2hhcihuKQoKICAgIGVsc2VpZiBuIDw9IDB4N2ZmIHRoZW4KCiAgICAgICAgcmV0dXJuIHN0cmluZy5jaGFyKGYobiAvIDY0KSArIDE5MiwgbiAlIDY0ICsgMTI4KQoKICAgIGVsc2VpZiBuIDw9IDB4ZmZmZiB0aGVuCgogICAgICAgIHJldHVybiBzdHJpbmcuY2hhcihmKG4gLyA0MDk2KSArIDIyNCwgZihuICUgNDA5NiAvIDY0KSArIDEyOCwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gJSA2NCArIDEyOCkKCiAgICBlbHNlaWYgbiA8PSAweDEwZmZmZiB0aGVuCgogICAgICAgIHJldHVybiBzdHJpbmcuY2hhcihmKG4gLyAyNjIxNDQpICsgMjQwLCBmKG4gJSAyNjIxNDQgLyA0MDk2KSArIDEyOCwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGYobiAlIDQwOTYgLyA2NCkgKyAxMjgsIG4gJSA2NCArIDEyOCkKCiAgICBlbmQKCiAgICBlcnJvcihzdHJpbmcuZm9ybWF0KCJpbnZhbGlkIHVuaWNvZGUgY29kZXBvaW50ICcleCciLCBuKSkKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBwYXJzZV91bmljb2RlX2VzY2FwZShzKQoKICAgIGxvY2FsIG4xID0gdG9udW1iZXIoczpzdWIoMSwgNCksIDE2KQoKICAgIGxvY2FsIG4yID0gdG9udW1iZXIoczpzdWIoNywgMTApLCAxNikKCiAgICBpZiBuMiB0aGVuCgogICAgICAgIHJldHVybgoKICAgICAgICAgICAgY29kZXBvaW50X3RvX3V0ZjgoKG4xIC0gMHhkODAwKSAqIDB4NDAwICsgKG4yIC0gMHhkYzAwKSArIDB4MTAwMDApCgogICAgZWxzZQoKICAgICAgICByZXR1cm4gY29kZXBvaW50X3RvX3V0ZjgobjEpCgogICAgZW5kCgplbmQKCgoKbG9jYWwgZnVuY3Rpb24gcGFyc2Vfc3RyaW5nKHN0ciwgaSkKCiAgICBsb2NhbCByZXMgPSB7fQoKICAgIGxvY2FsIGogPSBpICsgMQoKICAgIGxvY2FsIGsgPSBqCgoKCiAgICB3aGlsZSBqIDw9ICNzdHIgZG8KCiAgICAgICAgbG9jYWwgeCA9IHN0cjpieXRlKGopCgoKCiAgICAgICAgaWYgeCA8IDMyIHRoZW4KCiAgICAgICAgICAgIGRlY29kZV9lcnJvcihzdHIsIGosICJjb250cm9sIGNoYXJhY3RlciBpbiBzdHJpbmciKQoKICAgICAgICBlbHNlaWYgeCA9PSA5MiB0aGVuIC0tIGBcYDogRXNjYXBlCgogICAgICAgICAgICByZXNbI3JlcyArIDFdID0gc3RyOnN1YihrLCBqIC0gMSkKCiAgICAgICAgICAgIGogPSBqICsgMQoKICAgICAgICAgICAgbG9jYWwgYyA9IHN0cjpzdWIoaiwgaikKCiAgICAgICAgICAgIGlmIGMgPT0gInUiIHRoZW4KCiAgICAgICAgICAgICAgICBsb2NhbCBoZXggPSBzdHI6bWF0Y2goIl5bZERdWzg5YUFiQl0leCV4XFx1JXgleCV4JXgiLCBqICsgMSkgb3IKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyOm1hdGNoKCJeJXgleCV4JXgiLCBqICsgMSkgb3IKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2Vycm9yKHN0ciwgaiAtIDEsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB1bmljb2RlIGVzY2FwZSBpbiBzdHJpbmciKQoKICAgICAgICAgICAgICAgIHJlc1sjcmVzICsgMV0gPSBwYXJzZV91bmljb2RlX2VzY2FwZShoZXgpCgogICAgICAgICAgICAgICAgaiA9IGogKyAjaGV4CgogICAgICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgaWYgbm90IGVzY2FwZV9jaGFyc1tjXSB0aGVuCgogICAgICAgICAgICAgICAgICAgIGRlY29kZV9lcnJvcihzdHIsIGogLSAxLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIGNoYXIgJyIgLi4gYyAuLiAiJyBpbiBzdHJpbmciKQoKICAgICAgICAgICAgICAgIGVuZAoKICAgICAgICAgICAgICAgIHJlc1sjcmVzICsgMV0gPSBlc2NhcGVfY2hhcl9tYXBfaW52W2NdCgogICAgICAgICAgICBlbmQKCiAgICAgICAgICAgIGsgPSBqICsgMQoKICAgICAgICBlbHNlaWYgeCA9PSAzNCB0aGVuIC0tIGAiYDogRW5kIG9mIHN0cmluZwoKICAgICAgICAgICAgcmVzWyNyZXMgKyAxXSA9IHN0cjpzdWIoaywgaiAtIDEpCgogICAgICAgICAgICByZXR1cm4gdGFibGUuY29uY2F0KHJlcyksIGogKyAxCgogICAgICAgIGVuZAoKICAgICAgICBqID0gaiArIDEKCiAgICBlbmQKCgoKICAgIGRlY29kZV9lcnJvcihzdHIsIGksICJleHBlY3RlZCBjbG9zaW5nIHF1b3RlIGZvciBzdHJpbmciKQoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHBhcnNlX251bWJlcihzdHIsIGkpCgogICAgbG9jYWwgeCA9IG5leHRfY2hhcihzdHIsIGksIGRlbGltX2NoYXJzKQoKICAgIGxvY2FsIHMgPSBzdHI6c3ViKGksIHggLSAxKQoKICAgIGxvY2FsIG4gPSB0b251bWJlcihzKQoKICAgIGlmIG5vdCBuIHRoZW4gZGVjb2RlX2Vycm9yKHN0ciwgaSwgImludmFsaWQgbnVtYmVyICciIC4uIHMgLi4gIiciKSBlbmQKCiAgICByZXR1cm4gbiwgeAoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHBhcnNlX2xpdGVyYWwoc3RyLCBpKQoKICAgIGxvY2FsIHggPSBuZXh0X2NoYXIoc3RyLCBpLCBkZWxpbV9jaGFycykKCiAgICBsb2NhbCB3b3JkID0gc3RyOnN1YihpLCB4IC0gMSkKCiAgICBpZiBub3QgbGl0ZXJhbHNbd29yZF0gdGhlbgoKICAgICAgICBkZWNvZGVfZXJyb3Ioc3RyLCBpLCAiaW52YWxpZCBsaXRlcmFsICciIC4uIHdvcmQgLi4gIiciKQoKICAgIGVuZAoKICAgIHJldHVybiBsaXRlcmFsX21hcFt3b3JkXSwgeAoKZW5kCgoKCmxvY2FsIGZ1bmN0aW9uIHBhcnNlX2FycmF5KHN0ciwgaSkKCiAgICBsb2NhbCByZXMgPSB7fQoKICAgIGxvY2FsIG4gPSAxCgogICAgaSA9IGkgKyAxCgogICAgd2hpbGUgdHJ1ZSBkbwoKICAgICAgICBsb2NhbCB4CgogICAgICAgIGkgPSBuZXh0X2NoYXIoc3RyLCBpLCBzcGFjZV9jaGFycywgdHJ1ZSkKCiAgICAgICAgaWYgc3RyOnN1YihpLCBpKSA9PSAiXSIgdGhlbgoKICAgICAgICAgICAgaSA9IGkgKyAxCgogICAgICAgICAgICBicmVhawoKICAgICAgICBlbmQKCiAgICAgICAgeCwgaSA9IHBhcnNlKHN0ciwgaSkKCiAgICAgICAgcmVzW25dID0geAoKICAgICAgICBuID0gbiArIDEKCiAgICAgICAgaSA9IG5leHRfY2hhcihzdHIsIGksIHNwYWNlX2NoYXJzLCB0cnVlKQoKICAgICAgICBsb2NhbCBjaHIgPSBzdHI6c3ViKGksIGkpCgogICAgICAgIGkgPSBpICsgMQoKICAgICAgICBpZiBjaHIgPT0gIl0iIHRoZW4gYnJlYWsgZW5kCgogICAgICAgIGlmIGNociB+PSAiLCIgdGhlbiBkZWNvZGVfZXJyb3Ioc3RyLCBpLCAiZXhwZWN0ZWQgJ10nIG9yICcsJyIpIGVuZAoKICAgIGVuZAoKICAgIHJldHVybiByZXMsIGkKCmVuZAoKCgpsb2NhbCBmdW5jdGlvbiBwYXJzZV9vYmplY3Qoc3RyLCBpKQoKICAgIGxvY2FsIHJlcyA9IHt9CgogICAgaSA9IGkgKyAxCgogICAgd2hpbGUgdHJ1ZSBkbwoKICAgICAgICBsb2NhbCBrZXksIHZhbAoKICAgICAgICBpID0gbmV4dF9jaGFyKHN0ciwgaSwgc3BhY2VfY2hhcnMsIHRydWUpCgogICAgICAgIGlmIHN0cjpzdWIoaSwgaSkgPT0gIn0iIHRoZW4KCiAgICAgICAgICAgIGkgPSBpICsgMQoKICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgZW5kCgogICAgICAgIGlmIHN0cjpzdWIoaSwgaSkgfj0gJyInIHRoZW4KCiAgICAgICAgICAgIGRlY29kZV9lcnJvcihzdHIsIGksICJleHBlY3RlZCBzdHJpbmcgZm9yIGtleSIpCgogICAgICAgIGVuZAoKICAgICAgICBrZXksIGkgPSBwYXJzZShzdHIsIGkpCgogICAgICAgIGkgPSBuZXh0X2NoYXIoc3RyLCBpLCBzcGFjZV9jaGFycywgdHJ1ZSkKCiAgICAgICAgaWYgc3RyOnN1YihpLCBpKSB+PSAiOiIgdGhlbgoKICAgICAgICAgICAgZGVjb2RlX2Vycm9yKHN0ciwgaSwgImV4cGVjdGVkICc6JyBhZnRlciBrZXkiKQoKICAgICAgICBlbmQKCiAgICAgICAgaSA9IG5leHRfY2hhcihzdHIsIGkgKyAxLCBzcGFjZV9jaGFycywgdHJ1ZSkKCiAgICAgICAgdmFsLCBpID0gcGFyc2Uoc3RyLCBpKQoKICAgICAgICByZXNba2V5XSA9IHZhbAoKICAgICAgICBpID0gbmV4dF9jaGFyKHN0ciwgaSwgc3BhY2VfY2hhcnMsIHRydWUpCgogICAgICAgIGxvY2FsIGNociA9IHN0cjpzdWIoaSwgaSkKCiAgICAgICAgaSA9IGkgKyAxCgogICAgICAgIGlmIGNociA9PSAifSIgdGhlbiBicmVhayBlbmQKCiAgICAgICAgaWYgY2hyIH49ICIsIiB0aGVuIGRlY29kZV9lcnJvcihzdHIsIGksICJleHBlY3RlZCAnfScgb3IgJywnIikgZW5kCgogICAgZW5kCgogICAgcmV0dXJuIHJlcywgaQoKZW5kCgoKCmxvY2FsIGNoYXJfZnVuY19tYXAgPSB7CgogICAgWyciJ10gPSBwYXJzZV9zdHJpbmcsCgogICAgWyIwIl0gPSBwYXJzZV9udW1iZXIsCgogICAgWyIxIl0gPSBwYXJzZV9udW1iZXIsCgogICAgWyIyIl0gPSBwYXJzZV9udW1iZXIsCgogICAgWyIzIl0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI0Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI1Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI2Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI3Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI4Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyI5Il0gPSBwYXJzZV9udW1iZXIsCgogICAgWyItIl0gPSBwYXJzZV9udW1iZXIsCgogICAgWyJ0Il0gPSBwYXJzZV9saXRlcmFsLAoKICAgIFsiZiJdID0gcGFyc2VfbGl0ZXJhbCwKCiAgICBbIm4iXSA9IHBhcnNlX2xpdGVyYWwsCgogICAgWyJbIl0gPSBwYXJzZV9hcnJheSwKCiAgICBbInsiXSA9IHBhcnNlX29iamVjdAoKfQoKCgpwYXJzZSA9IGZ1bmN0aW9uKHN0ciwgaWR4KQoKICAgIGxvY2FsIGNociA9IHN0cjpzdWIoaWR4LCBpZHgpCgogICAgbG9jYWwgZiA9IGNoYXJfZnVuY19tYXBbY2hyXQoKICAgIGlmIGYgdGhlbiByZXR1cm4gZihzdHIsIGlkeCkgZW5kCgogICAgZGVjb2RlX2Vycm9yKHN0ciwgaWR4LCAidW5leHBlY3RlZCBjaGFyYWN0ZXIgJyIgLi4gY2hyIC4uICInIikKCmVuZAoKCgpmdW5jdGlvbiBqc29uLmRlY29kZShzdHIpCgogICAgaWYgdHlwZShzdHIpIH49ICJzdHJpbmciIHRoZW4KCiAgICAgICAgZXJyb3IoImV4cGVjdGVkIGFyZ3VtZW50IG9mIHR5cGUgc3RyaW5nLCBnb3QgIiAuLiB0eXBlKHN0cikpCgogICAgZW5kCgogICAgbG9jYWwgcmVzLCBpZHggPSBwYXJzZShzdHIsIG5leHRfY2hhcihzdHIsIDEsIHNwYWNlX2NoYXJzLCB0cnVlKSkKCiAgICBpZHggPSBuZXh0X2NoYXIoc3RyLCBpZHgsIHNwYWNlX2NoYXJzLCB0cnVlKQoKICAgIGlmIGlkeCA8PSAjc3RyIHRoZW4gZGVjb2RlX2Vycm9yKHN0ciwg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BQAAAAAAgBkFAAAAAABwGgUAAAAAAE5vIGVycm9yIGluZm9ybWF0aW9uAElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVt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bmcTD2x1YV9wdXNobHN0cmluZxQJbHVhWF9uZXh0FQ1sdWFMX2FyZ2Vycm9yFghsdWFfdHlwZRcRbHVhTF9jaGVja2ludGVnZXIYDWx1YV9wdXNodmFsdWUZCWx1YVpfZmlsbBoNbHVhX3RvbHN0cmluZxsRbHVhTF9jaGVja2xzdHJpbmccCmx1YV9yb3RhdGUdEHJlYWxseW1hcmtvYmplY3QeCF9fbWVtY3B5HwlsdWFaX3JlYWQgEGx1YVhfc3ludGF4ZXJyb3IhCWx1YUtfY29kZSIPbHVhX3B1c2hmc3RyaW5nIxFsdWFMX3ByZXBidWZmc2l6ZSQIX19tdWx0ZjMlBnN0cmNociYMbHVhX2dldGZpZWxkJxBsdWFMX2NoZWNrbnVtYmVyKAZzdHJsZW4pDWx1YUdfcnVuZXJyb3IqEGx1YU9fcHVzaGZzdHJpbmcrDGx1YVNfbmV3bHN0ciwMbHVhT19zdHIybnVtLQ9sdWFMX29wdGludGVnZXIuCWx1YUNfc3RlcC8Hc3ViZXhwcjAPbHVhX2NyZWF0ZXRhYmxlMQ5sdWFWX3RvaW50ZWdlcjIIbGV4ZXJyb3IzCGx1YV9nZXRpNA5lcnJvcl9leHBlY3RlZDUIX19zaGdldGM2BnN0cmNtcDcObHVhTF9jaGVja3R5cGU4A291dDkJc3RhdGVtZW50OgNwYWQ7DWx1YUxfY2hlY2thbnk8B2RvX2dldGM9CF9fbXVsdGkzPghsdWFfc2V0aT8PbHVhTF9vcHRsc3RyaW5nQA9sdWFMX2NoZWNrdWRhdGFBCmx1YURfdGhyb3dCCV9fYXNobHRpM0MIc25wcmludGZEDmx1YV90b2ludGVnZXJ4RQ1sdWFUX3RyeWJpblRNRg9sdWFMX3B1c2hyZXN1bHRHEGx1YUtfZXhwMm5leHRyZWdIEmx1YUtfZGlzY2hhcmdldmFyc0kIX19hZGR0ZjNKCXppX3JlYWQzMksNbHVhX3RvYm9vbGVhbkwQbHVhX3B1c2hjY2xvc3VyZU0IbHVhU19uZXdOBWVycm9yTwtfX2Zsb2F0c2l0ZlAGd3JpdGVyUQxuZXdfbG9jYWx2YXJSDmx1YV90b3VzZXJkYXRhUwlsdWFfY2FsbGtUDWx1YUxfc2V0ZnVuY3NVEWx1YURfcmVhbGxvY3N0YWNrVglsdWFfeG1vdmVXD2x1YUxfZmlsZXJlc3VsdFgIbHVhSF9nZXRZCmx1YUZfY2xvc2VaCmxlYXZlYmxvY2tbBmZmbHVzaFwMbHVhX2dldHN0YWNrXQ5sdWFfY2hlY2tzdGFja14NbHVhTF9yZXF1aXJlZl8LbHVhRF9pbmN0b3BgCF9fbWVtc2V0YQZtZW1jbXBiBW1hdGNoYwpsdWFfcmF3Z2V0ZA1sdWFfaXNpbnRlZ2VyZQ1sdWFNX2dyb3dhdXhfZhJsdWFMX2NoZWNrdmVyc2lvbl9nD2x1YUxfY2hlY2tzdGFja2gNbHVhTF9hZGR2YWx1ZWkLbHVhS19leHAyUktqDV9fZXh0ZW5kZGZ0ZjJrCXR5cGVlcnJvcmwJc3dlZXBsaXN0bQxsdWFfdG90aHJlYWRuD2x1YV9uZXd1c2VyZGF0YW8QbHVhX2dldG1ldGF0YWJsZXAObHVhVl90b251bWJlcl9xD2x1YUtfZXhwMmFueXJlZ3INbHVhQ19iYXJyaWVyX3MZZW1zY3JpcHRlbl9idWlsdGluX21hbGxvY3QLY2hlY2tfbWF0Y2h1BGFkZGt2BnNjYWxibncNbHVhVl9lcXVhbG9iangKbHVhVF9nZXR0bXkLbHVhQ19uZXdvYmp6CXNvcnRfY29tcHsNcHJvcGFnYXRlbWFya3wGbWVtY2hyfRBsdWFfc2V0bWV0YXRhYmxlfgxsdWFfaXNzdHJpbmd/Dmx1YVhfbmV3c3RyaW5ngAEObHVhVl9maW5pc2hnZXSBARFsdWFMX3NldG1ldGF0YWJsZYIBD2x1YUxfYWRkbHN0cmluZ4MBCGx1YUhfc2V0hAEObHVhR190eXBlZXJyb3KFAQxsdWFFX3NldGRlYnSGAQZnZXRlbnaHAQZmd3JpdGWIARdlbXNjcmlwdGVuX2J1aWx0aW5fZnJlZYkBB19fbGV0ZjKKAQRzYnJriwEEc2F2ZYwBC2x1YV9nZXRpbmZvjQEKbHVhX2NvbmNhdI4BCGx1YUxfbGVujwEMbHVhS19zdHJpbmdLkAEQbHVhS19yZXNlcnZlcmVnc5EBCWx1YUtfanVtcJIBDGx1YUtfY29kZUFCQ5MBC2x1YUhfcmVzaXpllAELbHVhSF9uZXdrZXmVAQhsdWFIX25ld5YBC2x1YUhfZ2V0aW50lwEQbHVhRF9jYWxsbm95aWVsZJgBBmdldGludJkBBWZtdF91mgEGZmNsb3NlmwEHZXhwMnJlZ5wBCGNoZWNrdGFinQEJX19sc2hydGkzngENX19mbG9hdHVuc2l0Zp8BCnNpbmdsZXN0ZXCgAQ9wdXNoX29uZWNhcHR1cmWhAQxtYWlucG9zaXRpb26iAQ1sdWFfdG9udW1iZXJ4owEKbHVhX3BjYWxsa6QBDGx1YVZfZXhlY3V0ZaUBD2x1YVRfZ2V0dG1ieW9iaqYBDWx1YU9fdG9zdHJpbmenARNsdWFMX3B1c2hyZXN1bHRzaXplqAEJbHVhTF9nc3ViqQERbHVhTF9idWZmaW5pdHNpemWqARBsdWFLX3BhdGNodG9oZXJlqwEPbHVhS19wYXRjaGNsb3NlrAELbHVhSF9zZXRpbnStARBsdWFIX2dldHNob3J0c3RyrgEUbHVhRF9yYXdydW5wcm90ZWN0ZWSvAQxsdWFEX3ByZWNhbGywAQxsdWFEX3Bvc2NhbGyxAQlsdWFEX2hvb2uyAQlsdWFEX2NhbGyzARJsdWFDX3VwdmFsYmFycmllcl+0AQ1pbmNsaW5lbnVtYmVytQEFZm9wZW62AQVleHBtMbcBCmVycm9ybGltaXS4AQhjb25kanVtcLkBCWF1eHNldHN0croBBV9fc2luuwEFX19jb3O8AQFSvQEEdGltZb4BBnN0cnNwbr8BCnNlYXJjaHBhdGjAAQNwb3fBAQxwYXRjaGxpc3RhdXjCAQttYXRjaF9jbGFzc8MBC2x1YV9yYXdzZXRpxAELbHVhX3Jhd2dldHDFAQtsdWFfcmF3Z2V0acYBDGx1YV9yYXdlcXVhbMcBDmx1YV9nZXR1cHZhbHVlyAEJbHVhX2Vycm9yyQEIbHVhX2NvcHnKAQtsdWFfY29tcGFyZcsBDmx1YVZfZmluaXNoc2V0zAELbHVhVl9jb25jYXTNAQtsdWFUX2NhbGxUTc4BEWx1YU9fcHVzaHZmc3RyaW5nzwEObHVhTF90b2xzdHJpbmfQARBsdWFMX2NoZWNrb3B0aW9u0QEPbHVhS19zZXRyZXR1cm5z0gEObHVhS19wYXRjaGxpc3TTAQ1sdWFLX2dvaWZ0cnVl1AEMbHVhS19jb2RlQUJ41QELbHVhSF9nZXRzdHLWAQ1sdWFGX25ld3Byb3Rv1wERbHVhRl9nZXRsb2NhbG5hbWXYAQhsdWFDX2ZpeNkBCmdldG9iam5hbWXaAQVmcmV4cNsBCGZpcHJpbnRm3AEJY2xvc2Vnb3Rv3QEKY2xvc2VfZmlsZd4BC2NsZWFydmFsdWVz3wEOX195ZWFyX3RvX3NlY3PgARNfX3ZmcHJpbnRmX2ludGVybmFs4QEHX191Zmxvd+IBC19fc3RyY2hybnVs4wEKTG9hZFN0cmluZ+QBCkR1bXBTdHJpbmflAQh3ZWVrX251beYBEXRyYXZlcnNlZXBoZW1lcm9u5wELc3VmZml4ZWRleHDoAQhza2lwX3NlcOkBDHNpbmdsZXZhcmF1eOoBC3NpbmdsZW1hdGNo6wEGc2lnbmFs7AEIc2VtZXJyb3LtAQlyZWFkX2xpbmXuAQ5sdWFfc2V0dXB2YWx1Ze8BC2x1YV9zZXRob29r8AEIbHVhX25leHTxAQhsdWFfbG9hZPIBDWx1YV9nZXRnbG9iYWzzAQlsdWFfY2xvc2X0AQ5sdWFYX3Rva2VuMnN0cvUBEGx1YVRfb2JqdHlwZW5hbWX2ARBsdWFUX2NhbGxvcmRlclRN9wELbHVhU19yZXNpemX4AQxsdWFPX2NodW5raWT5AQ1sdWFPX2NlaWxsb2cy+gEObHVhTF9sb2FkZmlsZXj7ARBsdWFMX2xvYWRidWZmZXJ4/AERbHVhTF9nZXRtZXRhZmllbGT9AQxsdWFLX3NldGxpc3T+AQxsdWFLX2luZGV4ZWT/ARBsdWFGX25ld0xjbG9zdXJlgAINbHVhRV9zaHJpbmtDSYECC2x1YUVfZnJlZUNJggIKbHVhRF9wY2FsbIMCDmx1YURfZ3Jvd3N0YWNrhAILbHVhQ19mdWxsZ2OFAgtsb29rZm9yZnVuY4YCA2xvZ4cCBmdldG9mZogCB2dldG5hbWWJAgdnZXRoZXhhigIIZ2V0ZmllbGSLAgpnZXRkZXRhaWxzjAIGZ19yZWFkjQIFZnJlYWSOAgRmbW9kjwIIZmllbGRzZWyQAgNleHCRAg1kaXNjaGFyZ2UycmVnkgILY2hlY2tfbmV4dDKTAgRib2R5lAIHYXV4c29ydJUCDWFkanVzdF9hc3NpZ26WAglfX3Rvd3JpdGWXAghfX3RvcmVhZJgCEF9fc3lzY2FsbF9vcGVuYXSZAghfX3N1YnRmM5oCDl9fc2Vjc190b196b25lmwIMX19zZWNzX3RvX3RtnAIKX19yZW1fcGlvMp0CCl9fb3ZlcmZsb3eeAglfX2Z3cml0ZXifAg9fX2Nsb2NrX2dldHRpbWWgAgRHQ1RNoQIGd2N0b21iogIHdmFyaW5mb6MCBnVucm9sbKQCBnVuZ2V0Y6UCBnN0cnRvZKYCBnN0cnN0cqcCB3N0cnBicmuoAgZzdHJjcHmpAgxzdHJfZmluZF9hdXiqAgtza2lwY29tbWVudKsCCXNpbmdsZXZhcqwCB3NldHBhdGitAgxzZXRhbGxmaWVsZHOuAgdzY2FuZXhwrwIHc2NhbGJubLACDHJ1bGVfdG9fc2Vjc7ECCXJlc2l6ZWJveLICEHJlYWRfbG9uZ19zdHJpbmezAgRwdXRztAIScHVzaGdsb2JhbGZ1bmNuYW1ltQILcHJpbnRmX2NvcmW2Agdwb3BfYXJntwIJcGFpcnNtZXRhuAIJb3BlbmNoZWNruQIKbmV3dXB2YWx1ZboCBm1hcmttdLsCDWx1YV90b3BvaW50ZXK8AhJsdWFfc3RyaW5ndG9udW1iZXK9AgtsdWFfcmF3c2V0cL4CCmx1YV9yYXdzZXS/AgpsdWFfcmF3bGVuwAINbHVhX25ld3RocmVhZMECDGx1YV9uZXdzdGF0ZcICDGx1YV9pc251bWJlcsMCD2x1YV9pc2NmdW5jdGlvbsQCDGx1YV9nZXRsb2NhbMUCBmx1YV9nY8YCC2x1YVZfc2hpZnRsxwILbHVhVl9vYmpsZW7IAg1sdWFWX2xlc3N0aGFuyQIObHVhVl9sZXNzZXF1YWzKAg5sdWFUX2NhbGxiaW5UTcsCFGx1YVNfY3JlYXRlbG5nc3Ryb2JqzAILbHVhT19pbnQyZmLNAgtsdWFNX3Rvb2JpZ84CCmx1YUxfd2hlcmXPAg1sdWFMX25ld3N0YXRl0AIRbHVhTF9uZXdtZXRhdGFibGXRAhBsdWFMX2dldHN1YnRhYmxl0gIPbHVhTF9leGVjcmVzdWx00wINbHVhTF9jYWxsbWV0YdQCDWx1YUtfc3RvcmV2YXLVAghsdWFLX3JldNYCDmx1YUtfZ29pZmZhbHNl1wIMbHVhS19leHAydmFs2AIRbHVhS19leHAyYW55cmVndXDZAglsdWFIX2dldG7aAg9sdWFHX29yZGVyZXJyb3LbAg9sdWFHX29waW50ZXJyb3LcAg1sdWFHX2Vycm9ybXNn3QINbHVhRV9leHRlbmRDSd4CE2x1YUNfY2hlY2tmaW5hbGl6ZXLfAgpsdWFCX2Vycm9y4AIFbG9nMTDhAghsb2FkZnVuY+ICBGxsZXjjAgpqdW1wb25jb25k5AIHaXNfbGVhcOUCB2lwcmludGbmAghpbnRhcml0aOcCCGdvdG9zdGF06AIHZ2V0cnVsZekCCWdldG9wdGlvbuoCCmdldGludF84NTLrAgdnX3dyaXRl7AIIZ19pb2ZpbGXtAghmdW5jYXJnc+4CB2ZvcmJvZHnvAgVmbW9kbPACCWZpbmRsb2NhbPECCWZpbmRmaWVsZPICBWZnZXRz8wIHZXhwbGlzdPQCBGV4aXT1Aghkb190enNldPYCB2RvX3B1dGP3Ag1kaXNwb3NlX2NodW5r+AIJY29weXNpZ25s+QILY29uc3RydWN0b3L6Agxjb25zdGZvbGRpbmf7Ag1jb2RlYmluZXhwdmFs/AILY2xvc2Vfc3RhdGX9AgpjbG9zZV9mdW5j/gIFY2xvY2v/AghjaGVja2ludIADC2NoZWNrX25leHQxgQMIYm9vdF9sdWGCAwlhdXhyZXN1bWWDAwlhdXhfbGluZXOEAwRhdGFuhQMKYXNzaWdubWVudIYDEV9fd2FzbV9jYWxsX2N0b3JzhwMMX190cnVuY3RmZGYyiAMMX190bV90b19zZWNziQMFX190YW6KAwxfX3N0cmZ0aW1lX2yLAwpfX3JhbmRuYW1ljAMPX19vcmlnaW5hbF9tYWlujQMPX19ubF9sYW5naW5mb19sjgMIX19tdW5tYXCPAwpfX21hcF9maWxlkAMHX19nZXRmMpEDDF9fZ2V0X2xvY2FsZZIDEV9fZnRlbGxvX3VubG9ja2VkkwMRX19mc2Vla29fdW5sb2NrZWSUAwxfX2Ztb2RlZmxhZ3OVAwhfX2Zkb3BlbpYDB19fZXhwbzKXAwhfX2RpdnRmM5gDDExvYWRGdW5jdGlvbpkDDER1bXBGdW5jdGlvbpoDBnV0ZmxlbpsDB3V0ZmNoYXKcAwZ1bnBhY2udAwd0cmVtb3ZlngMFdG1vdmWfAwd0aW5zZXJ0oAMHdGNvbmNhdKEDCXN0cl91cHBlcqIDCnN0cl91bnBhY2ujAwdzdHJfc3VipAMLc3RyX3JldmVyc2WlAwdzdHJfcmVwpgMMc3RyX3BhY2tzaXplpwMIc3RyX3BhY2uoAwlzdHJfbWF0Y2ipAwlzdHJfbG93ZXKqAwdzdHJfbGVuqwMIc3RyX2dzdWKsAwpzdHJfZm9ybWF0rQMIc3RyX2ZpbmSuAwhzdHJfZHVtcK8DCHN0cl9jaGFysAMIc3RyX2J5dGWxAwRzb3J0sgMIc25fd3JpdGWzAxBzZWFyY2hlcl9wcmVsb2FktAMMc2VhcmNoZXJfTHVhtQMOc2VhcmNoZXJfQ3Jvb3S2AwpzZWFyY2hlcl9DtwMGcmVzdW1luAMTcG9wX2FyZ19sb25nX2RvdWJsZbkDBXBhbmljugMEcGFja7sDCm9zX3RtcG5hbWW8Awdvc190aW1lvQMMb3Nfc2V0bG9jYWxlvgMJb3NfcmVuYW1lvwMJb3NfcmVtb3ZlwAMJb3NfZ2V0ZW52wQMHb3NfZXhpdMIDCm9zX2V4ZWN1dGXDAwtvc19kaWZmdGltZcQDB29zX2RhdGXFAwhvc19jbG9ja8YDCm1zZ2hhbmRsZXLHAwhtYXRoX3VsdMgDCW1hdGhfdHlwZckDCm1hdGhfdG9pbnTKAwltYXRoX3RhbmjLAwhtYXRoX3RhbswDCW1hdGhfc3FydM0DCW1hdGhfc2luaM4DCG1hdGhfc2luzwMPbWF0aF9yYW5kb21zZWVk0AMLbWF0aF9yYW5kb23RAwhtYXRoX3JhZNIDCG1hdGhfcG930wMJbWF0aF9tb2Rm1AMIbWF0aF9taW7VAwhtYXRoX21heNYDCm1hdGhfbG9nMTDXAwhtYXRoX2xvZ9gDCm1hdGhfbGRleHDZAwptYXRoX2ZyZXhw2gMJbWF0aF9mbW9k2wMKbWF0aF9mbG9vctwDCG1hdGhfZXhw3QMIbWF0aF9kZWfeAwltYXRoX2Nvc2jfAwhtYXRoX2Nvc+ADCW1hdGhfY2VpbOEDCW1hdGhfYXRhbuIDCW1hdGhfYXNpbuMDCW1hdGhfYWNvc+QDCG1hdGhfYWJz5QMEbWFpbuYDDGx1YW9wZW5fdXRmOOcDDWx1YW9wZW5fdGFibGXoAw5sdWFvcGVuX3N0cmluZ+kDD2x1YW9wZW5fcGFja2FnZeoDCmx1YW9wZW5fb3PrAwxsdWFvcGVuX21hdGjsAwpsdWFvcGVuX2lv7QMNbHVhb3Blbl9kZWJ1Z+4DEWx1YW9wZW5fY29yb3V0aW5l7wMNbHVhb3Blbl9iaXQzMvADDGx1YW9wZW5fYmFzZfEDDmx1YUJfeWllbGRhYmxl8gMKbHVhQl95aWVsZPMDC2x1YUJfeHBjYWxs9AMJbHVhQl90eXBl9QMNbHVhQl90b3N0cmluZ/YDDWx1YUJfdG9udW1iZXL3AxFsdWFCX3NldG1ldGF0YWJsZfgDC2x1YUJfc2VsZWN0+QMLbHVhQl9yYXdzZXT6AwtsdWFCX3Jhd2xlbvsDC2x1YUJfcmF3Z2V0/AMNbHVhQl9yYXdlcXVhbP0DCmx1YUJfcHJpbnT+AwpsdWFCX3BjYWxs/wMKbHVhQl9wYWlyc4AECWx1YUJfbmV4dIEEDWx1YUJfbG9hZGZpbGWCBAlsdWFCX2xvYWSDBAtsdWFCX2lwYWlyc4QEEWx1YUJfZ2V0bWV0YXRhYmxlhQQLbHVhQl9kb2ZpbGWGBAtsdWFCX2Nvd3JhcIcEDWx1YUJfY29zdGF0dXOIBA5sdWFCX2NvcnVubmluZ4kEDWx1YUJfY29yZXN1bWWKBBNsdWFCX2NvbGxlY3RnYXJiYWdliwQNbHVhQl9jb2NyZWF0ZYwEDGx1YUJfYXV4d3JhcI0EC2x1YUJfYXNzZXJ0jgQFbHN0b3CPBA1sbF9zZWFyY2hwYXRokAQKbGxfcmVxdWlyZZEECmxsX2xvYWRsaWKSBAdsYWN0aW9ukwQHbF9hbGxvY5QECml0ZXJfY29kZXOVBAhpdGVyX2F1eJYECWlwYWlyc2F1eJcECGlvX3dyaXRlmAQHaW9fdHlwZZkECmlvX3RtcGZpbGWaBAtpb19yZWFkbGluZZsEB2lvX3JlYWScBAhpb19wb3Blbp0ECWlvX3BjbG9zZZ4ECWlvX291dHB1dJ8EB2lvX29wZW6gBAppb19ub2Nsb3NloQQIaW9fbGluZXOiBAhpb19pbnB1dKMECGlvX2ZsdXNopAQJaW9fZmNsb3NlpQQIaW9fY2xvc2WmBAVob29rZqcEBmhhbmRsZagECWdyb3dzdGFja6kECmdtYXRjaF9hdXiqBAZnbWF0Y2irBARnZXRTrAQEZ2V0Rq0EDmdlbmVyaWNfcmVhZGVyrgQEZ2N0ba8EBmZtdF9mcLAEC2ZpbmlzaHBjYWxssQQHZl93cml0ZbIECmZfdG9zdHJpbmezBAlmX3NldHZidWa0BAZmX3NlZWu1BAZmX3JlYWS2BAhmX3BhcnNlcrcECWZfbHVhb3BlbrgEB2ZfbGluZXO5BARmX2djugQHZl9mbHVzaLsEBmZfY2FsbLwEHGVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnS9BAlkb3RoZWNhbGy+BApkb2ZpbGVjb250vwQOZGJfdXB2YWx1ZWpvaW7ABAxkYl91cHZhbHVlaWTBBAxkYl90cmFjZWJhY2vCBA9kYl9zZXR1c2VydmFsdWXDBA1kYl9zZXR1cHZhbHVlxAQPZGJfc2V0bWV0YXRhYmxlxQQLZGJfc2V0bG9jYWzGBApkYl9zZXRob29rxwQPZGJfZ2V0dXNlcnZhbHVlyAQNZGJfZ2V0dXB2YWx1ZckEDmRiX2dldHJlZ2lzdHJ5ygQPZGJfZ2V0bWV0YXRhYmxlywQLZGJfZ2V0bG9jYWzMBApkYl9nZXRpbmZvzQQKZGJfZ2V0aG9va84ECGRiX2RlYnVnzwQJY29kZXBvaW500AQKYnl0ZW9mZnNldNEEBWJveGdj0gQFYl94b3LTBAZiX3Rlc3TUBAhiX3JzaGlmdNUEBmJfcnJvdNYECWJfcmVwbGFjZdcEBGJfb3LYBAViX25vdNkECGJfbHNoaWZ02gQGYl9scm902wQJYl9leHRyYWN03AQJYl9hcnNoaWZ03QQFYl9hbmTeBAZfc3RhcnTfBBlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3Jl4AQXX2Vtc2NyaXB0ZW5fc3RhY2tfYWxsb2PhBAlfYWJvcnRfanPiBA1fX3N0ZGlvX3dyaXRl4wQMX19zdGRpb19zZWVr5AQMX19zdGRpb19yZWFk5QQNX19zdGRpb19jbG9zZeYEGF9fZW1zY3JpcHRlbl9zdGRvdXRfc2Vla+cEGV9fZW1zY3JpcHRlbl9zdGRvdXRfY2xvc2UHEgEAD19fc3RhY2tfcG9pbnRlcgmyFuIBAAcucm9kYXRhAQkucm9kYXRhLjECCS5yb2RhdGEuMgMJLnJvZGF0YS4zBAkucm9kYXRhLjQFCS5yb2RhdGEuNQYJLnJvZGF0YS42Bwkucm9kYXRhLjcICS5yb2RhdGEuOAkJLnJvZGF0YS45Cgoucm9kYXRhLjEwCwoucm9kYXRhLjExDAoucm9kYXRhLjEyDQoucm9kYXRhLjEzDgoucm9kYXRhLjE0Dwoucm9kYXRhLjE1EAoucm9kYXRhLjE2EQoucm9kYXRhLjE3Egoucm9kYXRhLjE4Ewoucm9kYXRhLjE5FAoucm9kYXRhLjIwFQoucm9kYXRhLjIxFgoucm9kYXRhLjIyFwoucm9kYXRhLjIzGAoucm9kYXRhLjI0GQoucm9kYXRhLjI1Ggoucm9kYXRhLjI2Gwoucm9kYXRhLjI3HAoucm9kYXRhLjI4HQoucm9kYXRhLjI5Hgoucm9kYXRhLjMwHwoucm9kYXRhLjMxIAoucm9kYXRhLjMyIQoucm9kYXRhLjMzIgoucm9kYXRhLjM0Iwoucm9kYXRhLjM1JAoucm9kYXRhLjM2JQoucm9kYXRhLjM3Jgoucm9kYXRhLjM4Jwoucm9kYXRhLjM5KAoucm9kYXRhLjQwKQoucm9kYXRhLjQxKgoucm9kYXRhLjQyKwoucm9kYXRhLjQzLAoucm9kYXRhLjQ0LQoucm9kYXRhLjQ1Lgoucm9kYXRhLjQ2Lwoucm9kYXRhLjQ3MAoucm9kYXRhLjQ4MQoucm9kYXRhLjQ5Mgoucm9kYXRhLjUwMwoucm9kYXRhLjUxNAoucm9kYXRhLjUyNQoucm9kYXRhLjUzNgoucm9kYXRhLjU0Nwoucm9kYXRhLjU1OAoucm9kYXRhLjU2OQoucm9kYXRhLjU3Ogoucm9kYXRhLjU4Owoucm9kYXRhLjU5PAoucm9kYXRhLjYwPQoucm9kYXRhLjYxPgoucm9kYXRhLjYyPwoucm9kYXRhLjYzQAoucm9kYXRhLjY0QQoucm9kYXRhLjY1Qgoucm9kYXRhLjY2Qwoucm9kYXRhLjY3RAoucm9kYXRhLjY4RQoucm9kYXRhLjY5Rgoucm9kYXRhLjcwRwoucm9kYXRhLjcxSAoucm9kYXRhLjcySQoucm9kYXRhLjczSgoucm9kYXRhLjc0Swoucm9kYXRhLjc1TAoucm9kYXRhLjc2TQoucm9kYXRhLjc3Tgoucm9kYXRhLjc4Twoucm9kYXRhLjc5UAoucm9kYXRhLjgwUQoucm9kYXRhLjgxUgoucm9kYXRhLjgyUwoucm9kYXRhLjgzVAoucm9kYXRhLjg0VQoucm9kYXRhLjg1Vgoucm9kYXRhLjg2Vwoucm9kYXRhLjg3WAoucm9kYXRhLjg4WQoucm9kYXRhLjg5Wgoucm9kYXRhLjkwWwoucm9kYXRhLjkxXAoucm9kYXRhLjkyXQoucm9kYXRhLjkzXgoucm9kYXRhLjk0Xwoucm9kYXRhLjk1YAoucm9kYXRhLjk2YQoucm9kYXRhLjk3Ygoucm9kYXRhLjk4Ywoucm9kYXRhLjk5ZAsucm9kYXRhLjEwMGULLnJvZGF0YS4xMDFmCy5yb2RhdGEuMTAyZwsucm9kYXRhLjEwM2gLLnJvZGF0YS4xMDRpCy5yb2RhdGEuMTA1agsucm9kYXRhLjEwNmsLLnJvZGF0YS4xMDdsCy5yb2RhdGEuMTA4bQsucm9kYXRhLjEwOW4LLnJvZGF0YS4xMTBvCy5yb2RhdGEuMTExcAsucm9kYXRhLjExMnELLnJvZGF0YS4xMTNyCy5yb2RhdGEuMTE0cwsucm9kYXRhLjExNXQLLnJvZGF0YS4xMTZ1Cy5yb2RhdGEuMTE3dgsucm9kYXRhLjExOHcLLnJvZGF0YS4xMTl4Cy5yb2RhdGEuMTIweQsucm9kYXRhLjEyMXoLLnJvZGF0YS4xMjJ7Cy5yb2RhdGEuMTIzfAsucm9kYXRhLjEyNH0LLnJvZGF0YS4xMjV+Cy5yb2RhdGEuMTI2fwsucm9kYXRhLjEyN4ABCy5yb2RhdGEuMTI4gQELLnJvZGF0YS4xMjmCAQsucm9kYXRhLjEzMIMBCy5yb2RhdGEuMTMxhAELLnJvZGF0YS4xMzKFAQsucm9kYXRhLjEzM4YBCy5yb2RhdGEuMTM0hwELLnJvZGF0YS4xMzWIAQsucm9kYXRhLjEzNokBCy5yb2RhdGEuMTM3igELLnJvZGF0YS4xMziLAQsucm9kYXRhLjEzOYwBCy5yb2RhdGEuMTQwjQELLnJvZGF0YS4xNDGOAQsucm9kYXRhLjE0Mo8BCy5yb2RhdGEuMTQzkAELLnJvZGF0YS4xNDSRAQsucm9kYXRhLjE0NZIBCy5yb2RhdGEuMTQ2kwELLnJvZGF0YS4xNDeUAQsucm9kYXRhLjE0OJUBCy5yb2RhdGEuMTQ5lgELLnJvZGF0YS4xNTCXAQsucm9kYXRhLjE1MZgBCy5yb2RhdGEuMTUymQELLnJvZGF0YS4xNTOaAQsucm9kYXRhLjE1NJsBCy5yb2RhdGEuMTU1nAELLnJvZGF0YS4xNTadAQsucm9kYXRhLjE1N54BCy5yb2RhdGEuMTU4nwELLnJvZGF0YS4xNTmgAQsucm9kYXRhLjE2MKEBCy5yb2RhdGEuMTYxogELLnJvZGF0YS4xNjKjAQsucm9kYXRhLjE2M6QBCy5yb2RhdGEuMTY0pQELLnJvZGF0YS4xNjWmAQsucm9kYXRhLjE2NqcBCy5yb2RhdGEuMTY3qAELLnJvZGF0YS4xNjipAQsucm9kYXRhLjE2OaoBCy5yb2RhdGEuMTcwqwELLnJvZGF0YS4xNzGsAQsucm9kYXRhLjE3Mq0BCy5yb2RhdGEuMTczrgELLnJvZGF0YS4xNzSvAQsucm9kYXRhLjE3NbABCy5yb2RhdGEuMTc2sQELLnJvZGF0YS4xNzeyAQsucm9kYXRhLjE3OLMBCy5yb2RhdGEuMTc5tAELLnJvZGF0YS4xODC1AQsucm9kYXRhLjE4MbYBCy5yb2RhdGEuMTgytwELLnJvZGF0YS4xODO4AQsucm9kYXRhLjE4NLkBCy5yb2RhdGEuMTg1ugELLnJvZGF0YS4xODa7AQsucm9kYXRhLjE4N7wBCy5yb2RhdGEuMTg4vQELLnJvZGF0YS4xODm+AQsucm9kYXRhLjE5ML8BCy5yb2RhdGEuMTkxwAELLnJvZGF0YS4xOTLBAQsucm9kYXRhLjE5M8IBCy5yb2RhdGEuMTk0wwELLnJvZGF0YS4xOTXEAQsucm9kYXRhLjE5NsUBCy5yb2RhdGEuMTk3xgELLnJvZGF0YS4xOTjHAQsucm9kYXRhLjE5OcgBCy5yb2RhdGEuMjAwyQELLnJvZGF0YS4yMDHKAQsucm9kYXRhLjIwMssBCy5yb2RhdGEuMjAzzAELLnJvZGF0YS4yMDTNAQsucm9kYXRhLjIwNc4BCy5yb2RhdGEuMjA2zwELLnJvZGF0YS4yMDfQAQsucm9kYXRhLjIwONEBCy5yb2RhdGEuMjA50gEFLmRhdGHTAQcuZGF0YS4x1AEHLmRhdGEuMtUBBy5kYXRhLjPWAQcuZGF0YS401wEHLmRhdGEuNdgBBy5kYXRhLjbZAQcuZGF0YS432gEHLmRhdGEuONsBBy5kYXRhLjncAQguZGF0YS4xMN0BCC5kYXRhLjEx3gEILmRhdGEuMTLfAQguZGF0YS4xM+ABCC5kYXRhLjE04QEILmRhdGEuMTU="