@excalidraw/excalidraw 0.12.0-f1fd295 → 0.12.0-f8b4bb6

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 (195) hide show
  1. package/dist/excalidraw-assets/locales/de-DE-json-b972f335652b31abc478.js +1 -0
  2. package/dist/excalidraw-assets/locales/fr-FR-json-d53486b6942cd134938f.js +1 -0
  3. package/dist/excalidraw-assets/locales/gl-ES-json-24b9a50f57184ae44f99.js +1 -0
  4. package/dist/excalidraw-assets/locales/hi-IN-json-9af974be0987a846db82.js +1 -0
  5. package/dist/excalidraw-assets/locales/id-ID-json-acdf1f60176cd026af64.js +1 -0
  6. package/dist/excalidraw-assets/locales/mr-IN-json-3295641c432b154ab60f.js +1 -0
  7. package/dist/excalidraw-assets/locales/ro-RO-json-79dbe0225dfe06a010a6.js +1 -0
  8. package/dist/excalidraw-assets/locales/sk-SK-json-bd7dbe4c1e42c016fcb5.js +1 -0
  9. package/dist/excalidraw-assets/locales/tr-TR-json-75f46a2579a01cf32ba7.js +1 -0
  10. package/dist/excalidraw-assets/vendor-52b1f3361986b6c6a4fe.js +2 -0
  11. package/dist/excalidraw-assets/vendor-52b1f3361986b6c6a4fe.js.LICENSE.txt +12 -0
  12. package/dist/excalidraw-assets-dev/locales/{ar-SA-json-c230e7084374b2a41a5b.js → ar-SA-json-684b5e25f971902bd933.js} +0 -0
  13. package/dist/excalidraw-assets-dev/locales/{bg-BG-json-c614a9570a5645a02248.js → bg-BG-json-d78c84e8962f5d754019.js} +0 -0
  14. package/dist/excalidraw-assets-dev/locales/{bn-BD-json-8ceebdfe33ab020afaa0.js → bn-BD-json-79007d6cd3d09b6c1e82.js} +0 -0
  15. package/dist/excalidraw-assets-dev/locales/{ca-ES-json-1445dbb39c48a3e6a371.js → ca-ES-json-84b33ecd3096b99533c1.js} +0 -0
  16. package/dist/excalidraw-assets-dev/locales/{cs-CZ-json-f47d18ecc1f65315b35a.js → cs-CZ-json-1d48380fd54bd715a21c.js} +0 -0
  17. package/dist/excalidraw-assets-dev/locales/{da-DK-json-860cc67d853e3b8d65fb.js → da-DK-json-9dc062ac2b2aee3ad4ec.js} +0 -0
  18. package/dist/excalidraw-assets-dev/locales/de-DE-json-2d48c0ec0901cee81272.js +22 -0
  19. package/dist/excalidraw-assets-dev/locales/{el-GR-json-5043ba824b7d40e33579.js → el-GR-json-8ec22bd0cbf376e3ba5d.js} +0 -0
  20. package/dist/excalidraw-assets-dev/locales/{es-ES-json-0259da0aba04e914d3ae.js → es-ES-json-5dd577ba17baf0f4382c.js} +0 -0
  21. package/dist/excalidraw-assets-dev/locales/{eu-ES-json-5e5f045db763d09dac8c.js → eu-ES-json-9ba2e12372db6b5be813.js} +0 -0
  22. package/dist/excalidraw-assets-dev/locales/{fa-IR-json-76469efd2a2855b83656.js → fa-IR-json-9866fde07b07d55f2cb9.js} +0 -0
  23. package/dist/excalidraw-assets-dev/locales/{fi-FI-json-7bfb6fb5ff49d25e6692.js → fi-FI-json-2dcf087c4ff34b8a8ad7.js} +0 -0
  24. package/dist/excalidraw-assets-dev/locales/fr-FR-json-e4bbc872fed09a689b27.js +22 -0
  25. package/dist/excalidraw-assets-dev/locales/gl-ES-json-4ab7103bd7905741cf7e.js +22 -0
  26. package/dist/excalidraw-assets-dev/locales/{he-IL-json-145e68d77fae81830f53.js → he-IL-json-abac6b158c54984aecba.js} +0 -0
  27. package/dist/excalidraw-assets-dev/locales/hi-IN-json-3aba9d37f6dae9ca2445.js +22 -0
  28. package/dist/excalidraw-assets-dev/locales/{hu-HU-json-cd76402ea4ecf45ea692.js → hu-HU-json-8d604fcc349f93bc4440.js} +0 -0
  29. package/dist/excalidraw-assets-dev/locales/id-ID-json-6d9b771568900ad6f055.js +22 -0
  30. package/dist/excalidraw-assets-dev/locales/{it-IT-json-eb7fdff37b7733ae8cd7.js → it-IT-json-7086cd6c6f1f61016ba1.js} +0 -0
  31. package/dist/excalidraw-assets-dev/locales/{ja-JP-json-0113c0db4a8f5b5f9a7b.js → ja-JP-json-d864fb849b2a3874b290.js} +0 -0
  32. package/dist/excalidraw-assets-dev/locales/{kab-KAB-json-dfcf62fb52965e9aa2c7.js → kab-KAB-json-c69f8a1079a411de837c.js} +0 -0
  33. package/dist/excalidraw-assets-dev/locales/{kk-KZ-json-7a4892d59641d2ef3093.js → kk-KZ-json-8c7f34edcdac22c11c72.js} +0 -0
  34. package/dist/excalidraw-assets-dev/locales/{ko-KR-json-07979d139ac9282d46ac.js → ko-KR-json-c80065dfa01e02f28695.js} +0 -0
  35. package/dist/excalidraw-assets-dev/locales/{lt-LT-json-bbc547741668f4c7bfa8.js → lt-LT-json-edaae0abc84fb205ee70.js} +0 -0
  36. package/dist/excalidraw-assets-dev/locales/{lv-LV-json-bf6a2c9c2c9e3fd2e5ae.js → lv-LV-json-21cc252dcf4524c98e55.js} +0 -0
  37. package/dist/excalidraw-assets-dev/locales/mr-IN-json-d28b9664c21ee08d79eb.js +22 -0
  38. package/dist/excalidraw-assets-dev/locales/{my-MM-json-5a741cf753187bf88c6e.js → my-MM-json-56d51a30e815283e7260.js} +0 -0
  39. package/dist/excalidraw-assets-dev/locales/{nb-NO-json-ed181c3bde7d5506165b.js → nb-NO-json-827603cac737fb4bb00f.js} +0 -0
  40. package/dist/excalidraw-assets-dev/locales/{nl-NL-json-3cec6a3df67de4e36492.js → nl-NL-json-9c5c4b7bfbfe3328e561.js} +0 -0
  41. package/dist/excalidraw-assets-dev/locales/{nn-NO-json-978d2360c9917fe5ace4.js → nn-NO-json-cb21e50c1afeb6a8f01d.js} +0 -0
  42. package/dist/excalidraw-assets-dev/locales/{oc-FR-json-dba541cce24594311efe.js → oc-FR-json-bec2ee705e7d3980fd61.js} +0 -0
  43. package/dist/excalidraw-assets-dev/locales/{pa-IN-json-53d2ca9ffab894ae06e9.js → pa-IN-json-189c7e5cad9e781f0ce5.js} +0 -0
  44. package/dist/excalidraw-assets-dev/locales/{pl-PL-json-6ffcc5a7948b93810d64.js → pl-PL-json-9cc770276a511a05e638.js} +0 -0
  45. package/dist/excalidraw-assets-dev/locales/{pt-BR-json-130cbd2a33eefa100464.js → pt-BR-json-788b2c323ae4afd36853.js} +0 -0
  46. package/dist/excalidraw-assets-dev/locales/{pt-PT-json-d07c4ddb6743a274353a.js → pt-PT-json-4f16b87e256eb838c91a.js} +0 -0
  47. package/dist/excalidraw-assets-dev/locales/ro-RO-json-9ac079b4af3b20377160.js +22 -0
  48. package/dist/excalidraw-assets-dev/locales/{ru-RU-json-ee0313c97368bdcbcc6c.js → ru-RU-json-eda247a0b10c11a51eec.js} +0 -0
  49. package/dist/excalidraw-assets-dev/locales/{si-LK-json-08eaf06707815d54bd83.js → si-LK-json-ee3083905b0cf879022d.js} +0 -0
  50. package/dist/excalidraw-assets-dev/locales/sk-SK-json-03a80aeb3e09f77b1be6.js +22 -0
  51. package/dist/excalidraw-assets-dev/locales/{sl-SI-json-b2109a51c6d289b9a2f3.js → sl-SI-json-55f372eebf814a422031.js} +0 -0
  52. package/dist/excalidraw-assets-dev/locales/{sv-SE-json-9061dbee004bf0cd4442.js → sv-SE-json-ca85dde4f9c34d5ee346.js} +0 -0
  53. package/dist/excalidraw-assets-dev/locales/{ta-IN-json-4929b09611bb9ba59e33.js → ta-IN-json-f9d1822384bc4ce086b6.js} +0 -0
  54. package/dist/excalidraw-assets-dev/locales/tr-TR-json-30a4d84bda3152292dbe.js +22 -0
  55. package/dist/excalidraw-assets-dev/locales/{uk-UA-json-e0fc6a2ca2ab976d7a77.js → uk-UA-json-b271ae2bf2e210aa582b.js} +0 -0
  56. package/dist/excalidraw-assets-dev/locales/{vi-VN-json-d932f036c6fd3aa33693.js → vi-VN-json-9a1f8e4ce0b77e05baa7.js} +0 -0
  57. package/dist/excalidraw-assets-dev/locales/{zh-CN-json-10b698060bcb2b869f8f.js → zh-CN-json-29856d6541bf2cbd6aea.js} +0 -0
  58. package/dist/excalidraw-assets-dev/locales/{zh-HK-json-773b06196888e2afa093.js → zh-HK-json-8bb0f0928ccbce98f995.js} +0 -0
  59. package/dist/excalidraw-assets-dev/locales/{zh-TW-json-4924be6bf8478fda873c.js → zh-TW-json-517b39d1a3184844b4d7.js} +0 -0
  60. package/dist/excalidraw.development.js +30 -36
  61. package/dist/excalidraw.production.min.js +1 -1
  62. package/dist/excalidraw.production.min.js.LICENSE.txt +2 -9
  63. package/package.json +17 -17
  64. package/types/actions/actionAlign.d.ts +6 -6
  65. package/types/actions/actionCanvas.d.ts +7 -7
  66. package/types/actions/actionDeleteSelected.d.ts +1 -1
  67. package/types/actions/actionDistribute.d.ts +2 -2
  68. package/types/actions/actionDuplicateSelection.d.ts +1 -1
  69. package/types/actions/actionExport.d.ts +8 -8
  70. package/types/actions/actionFinalize.d.ts +1 -1
  71. package/types/actions/actionGroup.d.ts +2 -2
  72. package/types/actions/actionMenu.d.ts +3 -3
  73. package/types/actions/actionNavigate.d.ts +1 -2
  74. package/types/actions/actionProperties.d.ts +13 -13
  75. package/types/actions/actionZindex.d.ts +4 -4
  76. package/types/analytics.d.ts +1 -1
  77. package/types/clients.d.ts +1 -1
  78. package/types/components/ActiveFile.d.ts +0 -1
  79. package/types/components/ButtonIconSelect.d.ts +0 -1
  80. package/types/components/Card.d.ts +1 -0
  81. package/types/components/CheckboxItem.d.ts +1 -0
  82. package/types/components/ClearCanvas.d.ts +0 -1
  83. package/types/components/CollabButton.d.ts +0 -1
  84. package/types/components/ColorPicker.d.ts +0 -1
  85. package/types/components/ConfirmDialog.d.ts +0 -1
  86. package/types/components/DarkModeToggle.d.ts +0 -1
  87. package/types/components/ErrorDialog.d.ts +0 -1
  88. package/types/components/HelpDialog.d.ts +0 -1
  89. package/types/components/HelpIcon.d.ts +0 -1
  90. package/types/components/HintViewer.d.ts +0 -1
  91. package/types/components/IconPicker.d.ts +0 -1
  92. package/types/components/ImageExportDialog.d.ts +0 -1
  93. package/types/components/JSONExportDialog.d.ts +0 -1
  94. package/types/components/LibraryMenu.d.ts +0 -1
  95. package/types/components/LibraryUnit.d.ts +0 -1
  96. package/types/components/LockButton.d.ts +0 -1
  97. package/types/components/Modal.d.ts +2 -2
  98. package/types/components/PenModeButton.d.ts +0 -1
  99. package/types/components/ProjectName.d.ts +0 -1
  100. package/types/components/PublishLibrary.d.ts +0 -1
  101. package/types/components/Section.d.ts +4 -5
  102. package/types/components/SidebarLockButton.d.ts +0 -1
  103. package/types/components/SingleLibraryItem.d.ts +0 -1
  104. package/types/components/Spinner.d.ts +0 -1
  105. package/types/components/Toast.d.ts +0 -1
  106. package/types/data/blob.d.ts +4 -4
  107. package/types/data/json.d.ts +1 -1
  108. package/types/element/Hyperlink.d.ts +1 -1
  109. package/types/element/binding.d.ts +3 -3
  110. package/types/element/dragElements.d.ts +1 -1
  111. package/types/element/mutateElement.d.ts +1 -1
  112. package/types/element/textElement.d.ts +1 -1
  113. package/types/element/typeChecks.d.ts +3 -3
  114. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{de-DE-json-a232bf6caee520d87426.d.ts → de-DE-json-b972f335652b31abc478.d.ts} +0 -0
  115. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{fr-FR-json-f94e85e6a2e45edfb7a1.d.ts → fr-FR-json-d53486b6942cd134938f.d.ts} +0 -0
  116. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{gl-ES-json-98ec55ba982debdf67db.d.ts → gl-ES-json-24b9a50f57184ae44f99.d.ts} +0 -0
  117. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{hi-IN-json-38796bea6fd45f65b2de.d.ts → hi-IN-json-9af974be0987a846db82.d.ts} +0 -0
  118. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{id-ID-json-f27fe10e9bc5e2ddeeb7.d.ts → id-ID-json-acdf1f60176cd026af64.d.ts} +0 -0
  119. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{mr-IN-json-0f52b0737f169f012c25.d.ts → mr-IN-json-3295641c432b154ab60f.d.ts} +0 -0
  120. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{ro-RO-json-4007d43722cf2d6b184e.d.ts → ro-RO-json-79dbe0225dfe06a010a6.d.ts} +0 -0
  121. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{sk-SK-json-8d552d584694cc87dcf6.d.ts → sk-SK-json-bd7dbe4c1e42c016fcb5.d.ts} +0 -0
  122. package/types/packages/excalidraw/dist/excalidraw-assets/locales/{tr-TR-json-4aa6e3ed1ccebaaa06b5.d.ts → tr-TR-json-75f46a2579a01cf32ba7.d.ts} +0 -0
  123. package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-a9598c709179a54ea2cd.d.ts → vendor-52b1f3361986b6c6a4fe.d.ts} +0 -0
  124. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ar-SA-json-c230e7084374b2a41a5b.d.ts → ar-SA-json-684b5e25f971902bd933.d.ts} +0 -0
  125. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{bg-BG-json-c614a9570a5645a02248.d.ts → bg-BG-json-d78c84e8962f5d754019.d.ts} +0 -0
  126. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{bn-BD-json-8ceebdfe33ab020afaa0.d.ts → bn-BD-json-79007d6cd3d09b6c1e82.d.ts} +0 -0
  127. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ca-ES-json-1445dbb39c48a3e6a371.d.ts → ca-ES-json-84b33ecd3096b99533c1.d.ts} +0 -0
  128. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{cs-CZ-json-f47d18ecc1f65315b35a.d.ts → cs-CZ-json-1d48380fd54bd715a21c.d.ts} +0 -0
  129. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{da-DK-json-860cc67d853e3b8d65fb.d.ts → da-DK-json-9dc062ac2b2aee3ad4ec.d.ts} +0 -0
  130. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{de-DE-json-38c6281e5996a25e0532.d.ts → de-DE-json-2d48c0ec0901cee81272.d.ts} +0 -0
  131. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{el-GR-json-5043ba824b7d40e33579.d.ts → el-GR-json-8ec22bd0cbf376e3ba5d.d.ts} +0 -0
  132. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{es-ES-json-0259da0aba04e914d3ae.d.ts → es-ES-json-5dd577ba17baf0f4382c.d.ts} +0 -0
  133. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{eu-ES-json-5e5f045db763d09dac8c.d.ts → eu-ES-json-9ba2e12372db6b5be813.d.ts} +0 -0
  134. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{fa-IR-json-76469efd2a2855b83656.d.ts → fa-IR-json-9866fde07b07d55f2cb9.d.ts} +0 -0
  135. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{fi-FI-json-7bfb6fb5ff49d25e6692.d.ts → fi-FI-json-2dcf087c4ff34b8a8ad7.d.ts} +0 -0
  136. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{fr-FR-json-755f3217b0c1ba6edf90.d.ts → fr-FR-json-e4bbc872fed09a689b27.d.ts} +0 -0
  137. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{gl-ES-json-51493bc81f745b4a743d.d.ts → gl-ES-json-4ab7103bd7905741cf7e.d.ts} +0 -0
  138. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{he-IL-json-145e68d77fae81830f53.d.ts → he-IL-json-abac6b158c54984aecba.d.ts} +0 -0
  139. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{hi-IN-json-d9809d98b7e8e1b23f05.d.ts → hi-IN-json-3aba9d37f6dae9ca2445.d.ts} +0 -0
  140. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{hu-HU-json-cd76402ea4ecf45ea692.d.ts → hu-HU-json-8d604fcc349f93bc4440.d.ts} +0 -0
  141. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{id-ID-json-d550c42896ff472b0c4f.d.ts → id-ID-json-6d9b771568900ad6f055.d.ts} +0 -0
  142. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{it-IT-json-eb7fdff37b7733ae8cd7.d.ts → it-IT-json-7086cd6c6f1f61016ba1.d.ts} +0 -0
  143. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ja-JP-json-0113c0db4a8f5b5f9a7b.d.ts → ja-JP-json-d864fb849b2a3874b290.d.ts} +0 -0
  144. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{kab-KAB-json-dfcf62fb52965e9aa2c7.d.ts → kab-KAB-json-c69f8a1079a411de837c.d.ts} +0 -0
  145. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{kk-KZ-json-7a4892d59641d2ef3093.d.ts → kk-KZ-json-8c7f34edcdac22c11c72.d.ts} +0 -0
  146. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ko-KR-json-07979d139ac9282d46ac.d.ts → ko-KR-json-c80065dfa01e02f28695.d.ts} +0 -0
  147. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{lt-LT-json-bbc547741668f4c7bfa8.d.ts → lt-LT-json-edaae0abc84fb205ee70.d.ts} +0 -0
  148. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{lv-LV-json-bf6a2c9c2c9e3fd2e5ae.d.ts → lv-LV-json-21cc252dcf4524c98e55.d.ts} +0 -0
  149. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{mr-IN-json-835b75c48fb9b293fd3b.d.ts → mr-IN-json-d28b9664c21ee08d79eb.d.ts} +0 -0
  150. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{my-MM-json-5a741cf753187bf88c6e.d.ts → my-MM-json-56d51a30e815283e7260.d.ts} +0 -0
  151. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{nb-NO-json-ed181c3bde7d5506165b.d.ts → nb-NO-json-827603cac737fb4bb00f.d.ts} +0 -0
  152. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{nl-NL-json-3cec6a3df67de4e36492.d.ts → nl-NL-json-9c5c4b7bfbfe3328e561.d.ts} +0 -0
  153. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{nn-NO-json-978d2360c9917fe5ace4.d.ts → nn-NO-json-cb21e50c1afeb6a8f01d.d.ts} +0 -0
  154. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{oc-FR-json-dba541cce24594311efe.d.ts → oc-FR-json-bec2ee705e7d3980fd61.d.ts} +0 -0
  155. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pa-IN-json-53d2ca9ffab894ae06e9.d.ts → pa-IN-json-189c7e5cad9e781f0ce5.d.ts} +0 -0
  156. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pl-PL-json-6ffcc5a7948b93810d64.d.ts → pl-PL-json-9cc770276a511a05e638.d.ts} +0 -0
  157. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-BR-json-130cbd2a33eefa100464.d.ts → pt-BR-json-788b2c323ae4afd36853.d.ts} +0 -0
  158. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{pt-PT-json-d07c4ddb6743a274353a.d.ts → pt-PT-json-4f16b87e256eb838c91a.d.ts} +0 -0
  159. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ro-RO-json-830062069119ae401881.d.ts → ro-RO-json-9ac079b4af3b20377160.d.ts} +0 -0
  160. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ru-RU-json-ee0313c97368bdcbcc6c.d.ts → ru-RU-json-eda247a0b10c11a51eec.d.ts} +0 -0
  161. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{si-LK-json-08eaf06707815d54bd83.d.ts → si-LK-json-ee3083905b0cf879022d.d.ts} +0 -0
  162. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{sk-SK-json-31330b8a93883aface3f.d.ts → sk-SK-json-03a80aeb3e09f77b1be6.d.ts} +0 -0
  163. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{sl-SI-json-b2109a51c6d289b9a2f3.d.ts → sl-SI-json-55f372eebf814a422031.d.ts} +0 -0
  164. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{sv-SE-json-9061dbee004bf0cd4442.d.ts → sv-SE-json-ca85dde4f9c34d5ee346.d.ts} +0 -0
  165. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{ta-IN-json-4929b09611bb9ba59e33.d.ts → ta-IN-json-f9d1822384bc4ce086b6.d.ts} +0 -0
  166. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{tr-TR-json-5bd3f01bdb04c4fb7d15.d.ts → tr-TR-json-30a4d84bda3152292dbe.d.ts} +0 -0
  167. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{uk-UA-json-e0fc6a2ca2ab976d7a77.d.ts → uk-UA-json-b271ae2bf2e210aa582b.d.ts} +0 -0
  168. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{vi-VN-json-d932f036c6fd3aa33693.d.ts → vi-VN-json-9a1f8e4ce0b77e05baa7.d.ts} +0 -0
  169. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{zh-CN-json-10b698060bcb2b869f8f.d.ts → zh-CN-json-29856d6541bf2cbd6aea.d.ts} +0 -0
  170. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{zh-HK-json-773b06196888e2afa093.d.ts → zh-HK-json-8bb0f0928ccbce98f995.d.ts} +0 -0
  171. package/types/packages/excalidraw/dist/excalidraw-assets-dev/locales/{zh-TW-json-4924be6bf8478fda873c.d.ts → zh-TW-json-517b39d1a3184844b4d7.d.ts} +0 -0
  172. package/types/packages/excalidraw/example/App.d.ts +0 -1
  173. package/types/renderer/renderElement.d.ts +1 -1
  174. package/types/shapes.d.ts +0 -1
  175. package/types/utils.d.ts +6 -6
  176. package/dist/excalidraw-assets/locales/de-DE-json-a232bf6caee520d87426.js +0 -1
  177. package/dist/excalidraw-assets/locales/fr-FR-json-f94e85e6a2e45edfb7a1.js +0 -1
  178. package/dist/excalidraw-assets/locales/gl-ES-json-98ec55ba982debdf67db.js +0 -1
  179. package/dist/excalidraw-assets/locales/hi-IN-json-38796bea6fd45f65b2de.js +0 -1
  180. package/dist/excalidraw-assets/locales/id-ID-json-f27fe10e9bc5e2ddeeb7.js +0 -1
  181. package/dist/excalidraw-assets/locales/mr-IN-json-0f52b0737f169f012c25.js +0 -1
  182. package/dist/excalidraw-assets/locales/ro-RO-json-4007d43722cf2d6b184e.js +0 -1
  183. package/dist/excalidraw-assets/locales/sk-SK-json-8d552d584694cc87dcf6.js +0 -1
  184. package/dist/excalidraw-assets/locales/tr-TR-json-4aa6e3ed1ccebaaa06b5.js +0 -1
  185. package/dist/excalidraw-assets/vendor-a9598c709179a54ea2cd.js +0 -2
  186. package/dist/excalidraw-assets/vendor-a9598c709179a54ea2cd.js.LICENSE.txt +0 -14
  187. package/dist/excalidraw-assets-dev/locales/de-DE-json-38c6281e5996a25e0532.js +0 -22
  188. package/dist/excalidraw-assets-dev/locales/fr-FR-json-755f3217b0c1ba6edf90.js +0 -22
  189. package/dist/excalidraw-assets-dev/locales/gl-ES-json-51493bc81f745b4a743d.js +0 -22
  190. package/dist/excalidraw-assets-dev/locales/hi-IN-json-d9809d98b7e8e1b23f05.js +0 -22
  191. package/dist/excalidraw-assets-dev/locales/id-ID-json-d550c42896ff472b0c4f.js +0 -22
  192. package/dist/excalidraw-assets-dev/locales/mr-IN-json-835b75c48fb9b293fd3b.js +0 -22
  193. package/dist/excalidraw-assets-dev/locales/ro-RO-json-830062069119ae401881.js +0 -22
  194. package/dist/excalidraw-assets-dev/locales/sk-SK-json-31330b8a93883aface3f.js +0 -22
  195. package/dist/excalidraw-assets-dev/locales/tr-TR-json-5bd3f01bdb04c4fb7d15.js +0 -22
@@ -71,17 +71,6 @@ eval("/* module decorator */ module = __webpack_require__.nmd(module);\nvar __WE
71
71
 
72
72
  /***/ }),
73
73
 
74
- /***/ "../../../node_modules/object-assign/index.js":
75
- /*!****************************************************!*\
76
- !*** ../../../node_modules/object-assign/index.js ***!
77
- \****************************************************/
78
- /***/ ((module) => {
79
-
80
- "use strict";
81
- eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL29iamVjdC1hc3NpZ24vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLFFBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzPzNlMTMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/object-assign/index.js\n");
82
-
83
- /***/ }),
84
-
85
74
  /***/ "../../../node_modules/pako/index.js":
86
75
  /*!*******************************************!*\
87
76
  !*** ../../../node_modules/pako/index.js ***!
@@ -403,7 +392,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
403
392
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
404
393
 
405
394
  "use strict";
406
- eval("/** @license React v17.0.2\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"react\");\nvar _assign = __webpack_require__(/*! object-assign */ \"../../../node_modules/object-assign/index.js\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nexports.Fragment = 0xeacb;\nvar REACT_STRICT_MODE_TYPE = 0xeacc;\nvar REACT_PROFILER_TYPE = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nvar REACT_SUSPENSE_TYPE = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n exports.Fragment = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n }\n\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === exports.Fragment || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n}\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case exports.Fragment:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n\n case REACT_BLOCK_TYPE:\n return getComponentName(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentName(init(payload));\n } catch (x) {\n return null;\n }\n }\n }\n }\n\n return null;\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: _assign({}, props, {\n value: prevLog\n }),\n info: _assign({}, props, {\n value: prevInfo\n }),\n warn: _assign({}, props, {\n value: prevWarn\n }),\n error: _assign({}, props, {\n value: prevError\n }),\n group: _assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: _assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: _assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if (!fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at ');\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_BLOCK_TYPE:\n return describeFunctionComponentFrame(type._render);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentName(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentName(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentName(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentName(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentName(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentName(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentName(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === exports.Fragment) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViLElBQUksSUFBcUM7QUFDekM7QUFDQTs7QUFFQSxZQUFZLG1CQUFPLENBQUMsb0JBQU87QUFDM0IsY0FBYyxtQkFBTyxDQUFDLG1FQUFlOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxnQkFBZ0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsK0ZBQStGLGVBQWU7QUFDOUc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLLEdBQUc7O0FBRVIsa0RBQWtEO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJIQUEySDtBQUMzSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9FQUFvRTs7QUFFcEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztB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QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6Qjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMERBQTBEO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7QUFDdEM7O0FBRUE7O0FBRUEsV0FBVztBQUNYLFlBQVk7QUFDWixHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcz9mYzVjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbGljZW5zZSBSZWFjdCB2MTcuMC4yXG4gKiByZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy4gSWYgdGhlcmUgaXMgbm8gbmF0aXZlIFN5bWJvbFxuLy8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVtYmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IDB4ZWFjNztcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IDB4ZWFjYTtcbmV4cG9ydHMuRnJhZ21lbnQgPSAweGVhY2I7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IDB4ZWFjYztcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gMHhlYWQyO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSAweGVhY2Q7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gMHhlYWNlO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSAweGVhZDA7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IDB4ZWFkMTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSAweGVhZDg7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gMHhlYWQzO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IDB4ZWFkNDtcbnZhciBSRUFDVF9CTE9DS19UWVBFID0gMHhlYWQ5O1xudmFyIFJFQUNUX1NFUlZFUl9CTE9DS19UWVBFID0gMHhlYWRhO1xudmFyIFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgPSAweGVhZDU7XG52YXIgUkVBQ1RfU0NPUEVfVFlQRSA9IDB4ZWFkNztcbnZhciBSRUFDVF9PUEFRVUVfSURfVFlQRSA9IDB4ZWFlMDtcbnZhciBSRUFDVF9ERUJVR19UUkFDSU5HX01PREVfVFlQRSA9IDB4ZWFlMTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IDB4ZWFlMjtcbnZhciBSRUFDVF9MRUdBQ1lfSElEREVOX1RZUEUgPSAweGVhZTM7XG5cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3IpIHtcbiAgdmFyIHN5bWJvbEZvciA9IFN5bWJvbC5mb3I7XG4gIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QuZWxlbWVudCcpO1xuICBSRUFDVF9QT1JUQUxfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QucG9ydGFsJyk7XG4gIGV4cG9ydHMuRnJhZ21lbnQgPSBzeW1ib2xGb3IoJ3JlYWN0LmZyYWdtZW50Jyk7XG4gIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnN0cmljdF9tb2RlJyk7XG4gIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnByb2ZpbGVyJyk7XG4gIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnByb3ZpZGVyJyk7XG4gIFJFQUNUX0NPTlRFWFRfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QuY29udGV4dCcpO1xuICBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpO1xuICBSRUFDVF9TVVNQRU5TRV9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5zdXNwZW5zZScpO1xuICBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKTtcbiAgUkVBQ1RfTUVNT19UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5tZW1vJyk7XG4gIFJFQUNUX0xBWllfVFlQRSA9IHN5bWJvbEZvcigncmVhY3QubGF6eScpO1xuICBSRUFDVF9CTE9DS19UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5ibG9jaycpO1xuICBSRUFDVF9TRVJWRVJfQkxPQ0tfVFlQRSA9IHN5bWJvbEZvcigncmVhY3Quc2VydmVyLmJsb2NrJyk7XG4gIFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LmZ1bmRhbWVudGFsJyk7XG4gIFJFQUNUX1NDT1BFX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LnNjb3BlJyk7XG4gIFJFQUNUX09QQVFVRV9JRF9UWVBFID0gc3ltYm9sRm9yKCdyZWFjdC5vcGFxdWUuaWQnKTtcbiAgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LmRlYnVnX3RyYWNlX21vZGUnKTtcbiAgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xuICBSRUFDVF9MRUdBQ1lfSElEREVOX1RZUEUgPSBzeW1ib2xGb3IoJ3JlYWN0LmxlZ2FjeV9oaWRkZW4nKTtcbn1cblxudmFyIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InO1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIGlmIChtYXliZUl0ZXJhYmxlID09PSBudWxsIHx8IHR5cGVvZiBtYXliZUl0ZXJhYmxlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIG1heWJlSXRlcmF0b3IgPSBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtNQVlCRV9JVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdO1xuXG4gIGlmICh0eXBlb2YgbWF5YmVJdGVyYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtYXliZUl0ZXJhdG9yO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBSZWFjdFNoYXJlZEludGVybmFscyA9IFJlYWN0Ll9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuXG5mdW5jdGlvbiBlcnJvcihmb3JtYXQpIHtcbiAge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHByaW50V2FybmluZygnZXJyb3InLCBmb3JtYXQsIGFyZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH1cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gJycgKyBpdGVtO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxuLy8gRmlsdGVyIGNlcnRhaW4gRE9NIGF0dHJpYnV0ZXMgKGUuZy4gc3JjLCBocmVmKSBpZiB0aGVpciB2YWx1ZXMgYXJlIGVtcHR5IHN0cmluZ3MuXG5cbnZhciBlbmFibGVTY29wZUFQSSA9IGZhbHNlOyAvLyBFeHBlcmltZW50YWwgQ3JlYXRlIEV2ZW50IEhhbmRsZSBBUEkuXG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBOb3RlOiB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyAoZS5nLiBpZiBpdCdzIGEgcG9seWZpbGwpLlxuXG5cbiAgaWYgKHR5cGUgPT09IGV4cG9ydHMuRnJhZ21lbnQgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9ERUJVR19UUkFDSU5HX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSB8fCBlbmFibGVTY29wZUFQSSApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9CTE9DS19UWVBFIHx8IHR5cGVbMF0gPT09IFJFQUNUX1NFUlZFUl9CTE9DS19UWVBFKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gb3V0ZXJUeXBlLmRpc3BsYXlOYW1lIHx8IChmdW5jdGlvbk5hbWUgIT09ICcnID8gd3JhcHBlck5hbWUgKyBcIihcIiArIGZ1bmN0aW9uTmFtZSArIFwiKVwiIDogd3JhcHBlck5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSh0eXBlKSB7XG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICAvLyBIb3N0IHJvb3QsIHRleHQgbm9kZSBvciBqdXN0IGludmFsaWQgdHlwZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHtcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3IoJ1JlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWUoKS4gJyArICdUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuRnJhZ21lbnQ6XG4gICAgICByZXR1cm4gJ0ZyYWdtZW50JztcblxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICByZXR1cm4gJ1BvcnRhbCc7XG5cbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICByZXR1cm4gJ1Byb2ZpbGVyJztcblxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgIHJldHVybiAnU3RyaWN0TW9kZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZUxpc3QnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgIHZhciBjb250ZXh0ID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKGNvbnRleHQpICsgJy5Db25zdW1lcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgdmFyIHByb3ZpZGVyID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKHByb3ZpZGVyLl9jb250ZXh0KSArICcuUHJvdmlkZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBnZXRXcmFwcGVkTmFtZSh0eXBlLCB0eXBlLnJlbmRlciwgJ0ZvcndhcmRSZWYnKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lKHR5cGUudHlwZSk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfQkxPQ0tfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWUodHlwZS5fcmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZShpbml0KHBheWxvYWQpKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxuLy8gcmVwbGF5aW5nIG9uIHJlbmRlciBmdW5jdGlvbi4gVGhpcyBjdXJyZW50bHkgb25seSBwYXRjaGVzIHRoZSBvYmplY3Rcbi8vIGxhemlseSB3aGljaCB3b24ndCBjb3ZlciBpZiB0aGUgbG9nIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZWFnZXJseS5cbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxudmFyIGRpc2FibGVkRGVwdGggPSAwO1xudmFyIHByZXZMb2c7XG52YXIgcHJldkluZm87XG52YXIgcHJldldhcm47XG52YXIgcHJldkVycm9yO1xudmFyIHByZXZHcm91cDtcbnZhciBwcmV2R3JvdXBDb2xsYXBzZWQ7XG52YXIgcHJldkdyb3VwRW5kO1xuXG5mdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG5cbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XG5mdW5jdGlvbiBkaXNhYmxlTG9ncygpIHtcbiAge1xuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHByZXZMb2cgPSBjb25zb2xlLmxvZztcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICBwcmV2RXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICBwcmV2R3JvdXBFbmQgPSBjb25zb2xlLmdyb3VwRW5kOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MDk5XG5cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZGlzYWJsZWRMb2csXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICBsb2c6IHByb3BzLFxuICAgICAgICB3YXJuOiBwcm9wcyxcbiAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICBncm91cDogcHJvcHMsXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgfVxuXG4gICAgZGlzYWJsZWREZXB0aCsrO1xuICB9XG59XG5mdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBkaXNhYmxlZERlcHRoLS07XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgbG9nOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2SW5mb1xuICAgICAgICB9KSxcbiAgICAgICAgd2FybjogX2Fzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldldhcm5cbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBDb2xsYXBzZWRcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwRW5kOiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgY29uc3RydWN0KSB7XG4gIC8vIElmIHNvbWV0aGluZyBhc2tlZCBmb3IgYSBzdGFjayBpbnNpZGUgYSBmYWtlIHJlbmRlciwgaXQgc2hvdWxkIGdldCBpZ25vcmVkLlxuICBpZiAoIWZuIHx8IHJlZW50cnkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB7XG4gICAgdmFyIGZyYW1lID0gY29tcG9uZW50RnJhbWVDYWNoZS5nZXQoZm4pO1xuXG4gICAgaWYgKGZyYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmcmFtZTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29udHJvbDtcbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWUgSXQgZG9lcyBhY2NlcHQgdW5kZWZpbmVkLlxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdW5kZWZpbmVkO1xuICB2YXIgcHJldmlvdXNEaXNwYXRjaGVyO1xuXG4gIHtcbiAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQ7IC8vIFNldCB0aGUgZGlzcGF0Y2hlciBpbiBERVYgYmVjYXVzZSB0aGlzIG1pZ2h0IGJlIGNhbGwgaW4gdGhlIHJlbmRlciBmdW5jdGlvblxuICAgIC8vIGZvciB3YXJuaW5ncy5cblxuICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IG51bGw7XG4gICAgZGlzYWJsZUxvZ3MoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgLy8gU29tZXRoaW5nIHNob3VsZCBiZSBzZXR0aW5nIHRoZSBwcm9wcyBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH07IC8vICRGbG93Rml4TWVcblxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmFrZS5wcm90b3R5cGUsICdwcm9wcycsIHtcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gV2UgdXNlIGEgdGhyb3dpbmcgc2V0dGVyIGluc3RlYWQgb2YgZnJvemVuIG9yIG5vbi13cml0YWJsZSBwcm9wc1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCB3b24ndCB0aHJvdyBpbiBhIG5vbi1zdHJpY3QgbW9kZSBmdW5jdGlvbi5cbiAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAvLyBXZSBjb25zdHJ1Y3QgYSBkaWZmZXJlbnQgY29udHJvbCBmb3IgdGhpcyBjYXNlIHRvIGluY2x1ZGUgYW55IGV4dHJhXG4gICAgICAgIC8vIGZyYW1lcyBhZGRlZCBieSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoRmFrZSwgW10pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChmbiwgW10sIEZha2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBGYWtlLmNhbGwoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZm4uY2FsbChGYWtlLnByb3RvdHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgfVxuXG4gICAgICBmbigpO1xuICAgIH1cbiAgfSBjYXRjaCAoc2FtcGxlKSB7XG4gICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICBpZiAoc2FtcGxlICYmIGNvbnRyb2wgJiYgdHlwZW9mIHNhbXBsZS5zdGFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZS5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgY29udHJvbExpbmVzID0gY29udHJvbC5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgcyA9IHNhbXBsZUxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgYyA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCAmJiBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAvLyBUeXBpY2FsbHkgdGhpcyB3aWxsIGJlIHRoZSByb290IG1vc3Qgb25lLiBIb3dldmVyLCBzdGFjayBmcmFtZXMgbWF5IGJlXG4gICAgICAgIC8vIGN1dCBvZmYgZHVlIHRvIG1heGltdW0gc3RhY2sgbGltaXRzLiBJbiB0aGlzIGNhc2UsIG9uZSBtYXliZSBjdXQgb2ZmXG4gICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgIC8vIGFuZCB0aGVyZSBmb3IgY3V0IG9mZiBlYXJsaWVyLiBTbyB3ZSBzaG91bGQgZmluZCB0aGUgcm9vdCBtb3N0IGZyYW1lIGluXG4gICAgICAgIC8vIHRoZSBzYW1wbGUgc29tZXdoZXJlIGluIHRoZSBjb250cm9sLlxuICAgICAgICBjLS07XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBzID49IDEgJiYgYyA+PSAwOyBzLS0sIGMtLSkge1xuICAgICAgICAvLyBOZXh0IHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHdoaWNoIHNob3VsZCBiZSB0aGVcbiAgICAgICAgLy8gZnJhbWUgdGhhdCBjYWxsZWQgb3VyIHNhbXBsZSBmdW5jdGlvbiBhbmQgdGhlIGNvbnRyb2wuXG4gICAgICAgIGlmIChzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgLy8gSW4gVjgsIHRoZSBmaXJzdCBsaW5lIGlzIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgYnV0IG90aGVyIFZNcyBkb24ndC5cbiAgICAgICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIGZpcnN0IGxpbmUsIGFuZCB0aGUgY29udHJvbCBpcyBhbHNvIG9uIHRoZSBzYW1lXG4gICAgICAgICAgLy8gbGluZSwgdGhhdCdzIGEgcHJldHR5IGdvb2QgaW5kaWNhdG9yIHRoYXQgb3VyIHNhbXBsZSB0aHJldyBhdCBzYW1lIGxpbmUgYXNcbiAgICAgICAgICAvLyB0aGUgY29udHJvbC4gSS5lLiBiZWZvcmUgd2UgZW50ZXJlZCB0aGUgc2FtcGxlIGZyYW1lLiBTbyB3ZSBpZ25vcmUgdGhpcyByZXN1bHQuXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHlvdSBwYXNzZWQgYSBjbGFzcyB0byBmdW5jdGlvbiBjb21wb25lbnQsIG9yIG5vbi1mdW5jdGlvbi5cbiAgICAgICAgICBpZiAocyAhPT0gMSB8fCBjICE9PSAxKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgIHMtLTtcbiAgICAgICAgICAgICAgYy0tOyAvLyBXZSBtYXkgc3RpbGwgaGF2ZSBzaW1pbGFyIGludGVybWVkaWF0ZSBmcmFtZXMgZnJvbSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgICAgICAgIC8vIFRoZSBuZXh0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHNob3VsZCBiZSBvdXIgbWF0Y2ggdGhvdWdoLlxuXG4gICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgICAgICAgLy8gVjggYWRkcyBhIFwibmV3XCIgcHJlZml4IGZvciBuYXRpdmUgY2xhc3Nlcy4gTGV0J3MgcmVtb3ZlIGl0IHRvIG1ha2UgaXQgcHJldHRpZXIuXG4gICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9ICdcXG4nICsgc2FtcGxlTGluZXNbc10ucmVwbGFjZSgnIGF0IG5ldyAnLCAnIGF0ICcpO1xuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgZmFsc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgdmFyIHByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhIShwcm90b3R5cGUgJiYgcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSwgc291cmNlLCBvd25lckZuKSB7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHtcbiAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsIHNob3VsZENvbnN0cnVjdCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2UnKTtcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZUxpc3QnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZSh0eXBlLnJlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAvLyBNZW1vIG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9CTE9DS19UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUuX3JlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTGF6eSBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoaW5pdChwYXlsb2FkKSwgc291cmNlLCBvd25lckZuKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQpIHtcbiAge1xuICAgIC8vICRGbG93Rml4TWUgVGhpcyBpcyBva2F5IGJ1dCBGbG93IGRvZXNuJ3Qga25vdyBpdC5cbiAgICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuXG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKGhhcyh0eXBlU3BlY3MsIHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yJDEgPSB2b2lkIDA7IC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcycgKyAnIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvciQxKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yJDEubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IkMS5tZXNzYWdlXSA9IHRydWU7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xudmFyIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xudmFyIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSk7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0U3RyaW5nUmVmc1tjb21wb25lbnROYW1lXSkge1xuICAgICAgICBlcnJvcignQ29tcG9uZW50IFwiJXNcIiBjb250YWlucyB0aGUgc3RyaW5nIHJlZiBcIiVzXCIuICcgKyAnU3VwcG9ydCBmb3Igc3RyaW5nIHJlZnMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHJlbGVhc2UuICcgKyAnVGhpcyBjYXNlIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBhbiBhcnJvdyBmdW5jdGlvbi4gJyArICdXZSBhc2sgeW91IHRvIG1hbnVhbGx5IGZpeCB0aGlzIGNhc2UgYnkgdXNpbmcgdXNlUmVmKCkgb3IgY3JlYXRlUmVmKCkgaW5zdGVhZC4gJyArICdMZWFybiBtb3JlIGFib3V0IHVzaW5nIHJlZnMgc2FmZWx5IGhlcmU6ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3N0cmljdC1tb2RlLXN0cmluZy1yZWYnLCBnZXRDb21wb25lbnROYW1lKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSksIGNvbmZpZy5yZWYpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGByZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgbm90IHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQGludGVybmFsXG4gKi9cblxuXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxlbWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvd3MgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc2VsZlxuICAgIH0pOyAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNvdXJjZVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmZjcy9wdWxsLzEwN1xuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqL1xuXG5mdW5jdGlvbiBqc3hERVYodHlwZSwgY29uZmlnLCBtYXliZUtleSwgc291cmNlLCBzZWxmKSB7XG4gIHtcbiAgICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICAgIHZhciBwcm9wcyA9IHt9O1xuICAgIHZhciBrZXkgPSBudWxsO1xuICAgIHZhciByZWYgPSBudWxsOyAvLyBDdXJyZW50bHksIGtleSBjYW4gYmUgc3ByZWFkIGluIGFzIGEgcHJvcC4gVGhpcyBjYXVzZXMgYSBwb3RlbnRpYWxcbiAgICAvLyBpc3N1ZSBpZiBrZXkgaXMgYWxzbyBleHBsaWNpdGx5IGRlY2xhcmVkIChpZS4gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz5cbiAgICAvLyBvciA8ZGl2IGtleT1cIkhpXCIgey4uLnByb3BzfSAvPiApLiBXZSB3YW50IHRvIGRlcHJlY2F0ZSBrZXkgc3ByZWFkLFxuICAgIC8vIGJ1dCBhcyBhbiBpbnRlcm1lZGlhcnkgc3RlcCwgd2Ugd2lsbCB1c2UganN4REVWIGZvciBldmVyeXRoaW5nIGV4Y2VwdFxuICAgIC8vIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+LCBiZWNhdXNlIHdlIGFyZW4ndCBjdXJyZW50bHkgYWJsZSB0byB0ZWxsIGlmXG4gICAgLy8ga2V5IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQgdG8gYmUgdW5kZWZpbmVkIG9yIG5vdC5cblxuICAgIGlmIChtYXliZUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBrZXkgPSAnJyArIG1heWJlS2V5O1xuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKTtcbiAgICB9IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9IC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXG5cbiAgICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudE93bmVyJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duO1xuXG57XG4gIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gZmFsc2U7XG59XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2lzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIEBmaW5hbFxuICovXG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XG4gIHtcbiAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50KSB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50LnR5cGUpO1xuXG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSkge1xuICB7XG4gICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZmlsZU5hbWUgPSBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpO1xuICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICB2YXIgaW5mbyA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuXG4gICAgaWYgKCFpbmZvKSB7XG4gICAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTtcblxuICAgICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmZvO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcbiAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG5cbiAgICBpZiAob3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dID0gdHJ1ZTsgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gICAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuXG4gICAgdmFyIGNoaWxkT3duZXIgPSAnJztcblxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLlxuICAgICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZShlbGVtZW50Ll9vd25lci50eXBlKSArIFwiLlwiO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XG5cbiAgICBlcnJvcignRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyKTtcblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gIH1cbn1cbi8qKlxuICogRW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxvY2F0aW9uLCBpbiBhblxuICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRlZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5vZGUncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcblxuICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxuICAgICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXG4gICAgICAgIC8vIGJ1dCBub3cgd2UgcHJpbnQgYSBzZXBhcmF0ZSB3YXJuaW5nIGZvciB0aGVtIGxhdGVyLlxuICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuXG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xuICB7XG4gICAgdmFyIHR5cGUgPSBlbGVtZW50LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByb3BUeXBlcztcblxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gTm90ZTogTWVtbyBvbmx5IGNoZWNrcyBvdXRlciBwcm9wcyBoZXJlLlxuICAgIC8vIElubmVyIHByb3BzIGFyZSBjaGVja2VkIGluIHRoZSByZWNvbmNpbGVyLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSkpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BUeXBlcykge1xuICAgICAgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZSh0eXBlKTtcbiAgICAgIGNoZWNrUHJvcFR5cGVzKHByb3BUeXBlcywgZWxlbWVudC5wcm9wcywgJ3Byb3AnLCBuYW1lLCBlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuUHJvcFR5cGVzICE9PSB1bmRlZmluZWQgJiYgIXByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duKSB7XG4gICAgICBwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93biA9IHRydWU7IC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XG5cbiAgICAgIHZhciBfbmFtZSA9IGdldENvbXBvbmVudE5hbWUodHlwZSk7XG5cbiAgICAgIGVycm9yKCdDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD8nLCBfbmFtZSB8fCAnVW5rbm93bicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdHlwZS5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicgJiYgIXR5cGUuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkKSB7XG4gICAgICBlcnJvcignZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzICcgKyAnZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBHaXZlbiBhIGZyYWdtZW50LCB2YWxpZGF0ZSB0aGF0IGl0IGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdpdGggZnJhZ21lbnQgcHJvcHNcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBmcmFnbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVGcmFnbWVudFByb3BzKGZyYWdtZW50KSB7XG4gIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyYWdtZW50LnByb3BzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09ICdjaGlsZHJlbicgJiYga2V5ICE9PSAna2V5Jykge1xuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYWdtZW50LnJlZiAhPT0gbnVsbCkge1xuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgIGVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBgcmVmYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLicpO1xuXG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpIHtcbiAge1xuICAgIHZhciB2YWxpZFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSk7IC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci5cblxuICAgIGlmICghdmFsaWRUeXBlKSB7XG4gICAgICB2YXIgaW5mbyA9ICcnO1xuXG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlSW5mbyA9IGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSk7XG5cbiAgICAgIGlmIChzb3VyY2VJbmZvKSB7XG4gICAgICAgIGluZm8gKz0gc291cmNlSW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICB0eXBlU3RyaW5nID0gJ251bGwnO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSAnYXJyYXknO1xuICAgICAgfSBlbHNlIGlmICh0eXBlICE9PSB1bmRlZmluZWQgJiYgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lKHR5cGUudHlwZSkgfHwgJ1Vua25vd24nKSArIFwiIC8+XCI7XG4gICAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlb2YgdHlwZTtcbiAgICAgIH1cblxuICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgJyArICdidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlICcgKyAnY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlU3RyaW5nLCBpbmZvKTtcbiAgICB9XG5cbiAgICB2YXIgZWxlbWVudCA9IGpzeERFVih0eXBlLCBwcm9wcywga2V5LCBzb3VyY2UsIHNlbGYpOyAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLlxuICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgICAvLyBkb2Vzbid0IGV4cGVjdCBhIG5vbi1zdHJpbmcvZnVuY3Rpb24gdHlwZSBhbmQgY2FuIHRocm93IGNvbmZ1c2luZyBlcnJvcnMuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZCBwcm9kLlxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gICAgLy8gZml4ZWQsIHRoZSBrZXkgd2FybmluZ3Mgd2lsbCBhcHBlYXIuKVxuXG5cbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW5baV0sIHR5cGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuICcgKyAnWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiAnICsgJ1VzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBleHBvcnRzLkZyYWdtZW50KSB7XG4gICAgICB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG59IC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgZXhpc3QgdG8gc3RpbGwgZ2V0IGNoaWxkIHdhcm5pbmdzIGluIGRldlxuLy8gZXZlbiB3aXRoIHRoZSBwcm9kIHRyYW5zZm9ybS4gVGhpcyBtZWFucyB0aGF0IGpzeERFViBpcyBwdXJlbHlcbi8vIG9wdC1pbiBiZWhhdmlvciBmb3IgYmV0dGVyIG1lc3NhZ2VzIGJ1dCB0aGF0IHdlIHdvbid0IHN0b3Bcbi8vIGdpdmluZyB5b3Ugd2FybmluZ3MgaWYgeW91IHVzZSBwcm9kdWN0aW9uIGFwaXMuXG5cbmZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCB0cnVlKTtcbiAgfVxufVxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb25EeW5hbWljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBmYWxzZSk7XG4gIH1cbn1cblxudmFyIGpzeCA9ICBqc3hXaXRoVmFsaWRhdGlvbkR5bmFtaWMgOyAvLyB3ZSBtYXkgd2FudCB0byBzcGVjaWFsIGNhc2UganN4cyBpbnRlcm5hbGx5IHRvIHRha2UgYWR2YW50YWdlIG9mIHN0YXRpYyBjaGlsZHJlbi5cbi8vIGZvciBub3cgd2UgY2FuIHNoaXAgaWRlbnRpY2FsIHByb2QgZnVuY3Rpb25zXG5cbnZhciBqc3hzID0gIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljIDtcblxuZXhwb3J0cy5qc3ggPSBqc3g7XG5leHBvcnRzLmpzeHMgPSBqc3hzO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react/cjs/react-jsx-runtime.development.js\n");
395
+ eval("/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"react\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsSUFBSSxJQUFxQztBQUN6QztBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxvQkFBTzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUcsZUFBZTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLGtEQUFrRDtBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEI7QUFDNUI7QUFDQSxxQ0FBcUM7O0FBRXJDLGdDQUFnQztBQUNoQztBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFD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QTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxHQUFHO0FBQ2QsV0FBVyxHQUFHO0FBQ2QsV0FBVyxlQUFlO0FBQzFCLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2Q7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7O0FBRUE7QUFDQTtBQUNBLGtC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QTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxQkFBcUI7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDO0FBQ3RDOztBQUVBOztBQUVBLGdCQUFnQjtBQUNoQixXQUFXO0FBQ1gsWUFBWTtBQUNaLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzP2ZjNWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKTtcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xudmFyIE1BWUJFX0lURVJBVE9SX1NZTUJPTCA9IFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJztcbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICBpZiAobWF5YmVJdGVyYWJsZSA9PT0gbnVsbCB8fCB0eXBlb2YgbWF5YmVJdGVyYWJsZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYXliZUl0ZXJhdG9yID0gTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXTtcblxuICBpZiAodHlwZW9mIG1heWJlSXRlcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbWF5YmVJdGVyYXRvcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcblxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG52YXIgZW5hYmxlU2NvcGVBUEkgPSBmYWxzZTsgLy8gRXhwZXJpbWVudGFsIENyZWF0ZSBFdmVudCBIYW5kbGUgQVBJLlxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xudmFyIGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nID0gZmFsc2U7IC8vIE5vIGtub3duIGJ1Z3MsIGJ1dCBuZWVkcyBwZXJmb3JtYW5jZSB0ZXN0aW5nXG5cbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXG4vLyBzdHVmZi4gSW50ZW5kZWQgdG8gZW5hYmxlIFJlYWN0IGNvcmUgbWVtYmVycyB0byBtb3JlIGVhc2lseSBkZWJ1ZyBzY2hlZHVsaW5nXG4vLyBpc3N1ZXMgaW4gREVWIGJ1aWxkcy5cblxudmFyIGVuYWJsZURlYnVnVHJhY2luZyA9IGZhbHNlOyAvLyBUcmFjayB3aGljaCBGaWJlcihzKSBzY2hlZHVsZSByZW5kZXIgd29yay5cblxudmFyIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0U7XG5cbntcbiAgUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1vZHVsZS5yZWZlcmVuY2UnKTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBUaGlzIG5lZWRzIHRvIGluY2x1ZGUgYWxsIHBvc3NpYmxlIG1vZHVsZSByZWZlcmVuY2Ugb2JqZWN0XG4gICAgLy8gdHlwZXMgc3VwcG9ydGVkIGJ5IGFueSBGbGlnaHQgY29uZmlndXJhdGlvbiBhbnl3aGVyZSBzaW5jZVxuICAgIC8vIHdlIGRvbid0IGtub3cgd2hpY2ggRmxpZ2h0IGJ1aWxkIHRoaXMgd2lsbCBlbmQgdXAgYmVpbmcgdXNlZFxuICAgIC8vIHdpdGguXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSB8fCB0eXBlLmdldE1vZHVsZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBkaXNwbGF5TmFtZSA9IG91dGVyVHlwZS5kaXNwbGF5TmFtZTtcblxuICBpZiAoZGlzcGxheU5hbWUpIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWU7XG4gIH1cblxuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gZnVuY3Rpb25OYW1lICE9PSAnJyA/IHdyYXBwZXJOYW1lICsgXCIoXCIgKyBmdW5jdGlvbk5hbWUgKyBcIilcIiA6IHdyYXBwZXJOYW1lO1xufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcblxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn0gLy8gTm90ZSB0aGF0IHRoZSByZWNvbmNpbGVyIHBhY2thZ2Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIGdldENvbXBvbmVudE5hbWVGcm9tRmliZXIoKSBpbnN0ZWFkLlxuXG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICAvLyBIb3N0IHJvb3QsIHRleHQgbm9kZSBvciBqdXN0IGludmFsaWQgdHlwZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHtcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3IoJ1JlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xuXG4gICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgIHJldHVybiAnUG9ydGFsJztcblxuICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xuXG4gICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICB2YXIgY29udGV4dCA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShjb250ZXh0KSArICcuQ29uc3VtZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHZhciBwcm92aWRlciA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShwcm92aWRlci5fY29udGV4dCkgKyAnLlByb3ZpZGVyJztcblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0V3JhcHBlZE5hbWUodHlwZSwgdHlwZS5yZW5kZXIsICdGb3J3YXJkUmVmJyk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB2YXIgb3V0ZXJOYW1lID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb3V0ZXJOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdNZW1vJztcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIEhlbHBlcnMgdG8gcGF0Y2ggY29uc29sZS5sb2dzIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIHNpZGUtZWZmZWN0IGZyZWVcbi8vIHJlcGxheWluZyBvbiByZW5kZXIgZnVuY3Rpb24uIFRoaXMgY3VycmVudGx5IG9ubHkgcGF0Y2hlcyB0aGUgb2JqZWN0XG4vLyBsYXppbHkgd2hpY2ggd29uJ3QgY292ZXIgaWYgdGhlIGxvZyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGVhZ2VybHkuXG4vLyBXZSBjb3VsZCBhbHNvIGVhZ2VybHkgcGF0Y2ggdGhlIG1ldGhvZC5cbnZhciBkaXNhYmxlZERlcHRoID0gMDtcbnZhciBwcmV2TG9nO1xudmFyIHByZXZJbmZvO1xudmFyIHByZXZXYXJuO1xudmFyIHByZXZFcnJvcjtcbnZhciBwcmV2R3JvdXA7XG52YXIgcHJldkdyb3VwQ29sbGFwc2VkO1xudmFyIHByZXZHcm91cEVuZDtcblxuZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuXG5kaXNhYmxlZExvZy5fX3JlYWN0RGlzYWJsZWRMb2cgPSB0cnVlO1xuZnVuY3Rpb24gZGlzYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XG4gICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgIHByZXZXYXJuID0gY29uc29sZS53YXJuO1xuICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQgPSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkO1xuICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xOTA5OVxuXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGRpc2FibGVkTG9nLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBpbmZvOiBwcm9wcyxcbiAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgIGVycm9yOiBwcm9wcyxcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgIGdyb3VwRW5kOiBwcm9wc1xuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGRpc2FibGVkRGVwdGgrKztcbiAgfVxufVxuZnVuY3Rpb24gcmVlbmFibGVMb2dzKCkge1xuICB7XG4gICAgZGlzYWJsZWREZXB0aC0tO1xuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgY29uc3RydWN0KSB7XG4gIC8vIElmIHNvbWV0aGluZyBhc2tlZCBmb3IgYSBzdGFjayBpbnNpZGUgYSBmYWtlIHJlbmRlciwgaXQgc2hvdWxkIGdldCBpZ25vcmVkLlxuICBpZiAoICFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbnRyb2w7XG4gIHJlZW50cnkgPSB0cnVlO1xuICB2YXIgcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlOyAvLyAkRmxvd0ZpeE1lIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIFRoaXMgc2hvdWxkIHRocm93LlxuICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgIC8vIFNvbWV0aGluZyBzaG91bGQgYmUgc2V0dGluZyB0aGUgcHJvcHMgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lXG5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCAncHJvcHMnLCB7XG4gICAgICAgIHNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgd29uJ3QgdGhyb3cgaW4gYSBub24tc3RyaWN0IG1vZGUgZnVuY3Rpb24uXG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAvLyBmcmFtZXMgYWRkZWQgYnkgdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBjb250cm9sID0geDtcbiAgICAgIH1cblxuICAgICAgZm4oKTtcbiAgICB9XG4gIH0gY2F0Y2ggKHNhbXBsZSkge1xuICAgIC8vIFRoaXMgaXMgaW5saW5lZCBtYW51YWxseSBiZWNhdXNlIGNsb3N1cmUgZG9lc24ndCBkbyBpdCBmb3IgdXMuXG4gICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBUaGlzIGV4dHJhY3RzIHRoZSBmaXJzdCBmcmFtZSBmcm9tIHRoZSBzYW1wbGUgdGhhdCBpc24ndCBhbHNvIGluIHRoZSBjb250cm9sLlxuICAgICAgLy8gU2tpcHBpbmcgb25lIGZyYW1lIHRoYXQgd2UgYXNzdW1lIGlzIHRoZSBmcmFtZSB0aGF0IGNhbGxzIHRoZSB0d28uXG4gICAgICB2YXIgc2FtcGxlTGluZXMgPSBzYW1wbGUuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2wuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgdmFyIGMgPSBjb250cm9sTGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAvLyBXZSBleHBlY3QgYXQgbGVhc3Qgb25lIHN0YWNrIGZyYW1lIHRvIGJlIHNoYXJlZC5cbiAgICAgICAgLy8gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB0aGUgcm9vdCBtb3N0IG9uZS4gSG93ZXZlciwgc3RhY2sgZnJhbWVzIG1heSBiZVxuICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAvLyBlYXJsaWVyIHRoYW4gdGhlIG90aGVyLiBXZSBhc3N1bWUgdGhhdCB0aGUgc2FtcGxlIGlzIGxvbmdlciBvciB0aGUgc2FtZVxuICAgICAgICAvLyBhbmQgdGhlcmUgZm9yIGN1dCBvZmYgZWFybGllci4gU28gd2Ugc2hvdWxkIGZpbmQgdGhlIHJvb3QgbW9zdCBmcmFtZSBpblxuICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgYy0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgcyA+PSAxICYmIGMgPj0gMDsgcy0tLCBjLS0pIHtcbiAgICAgICAgLy8gTmV4dCB3ZSBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSB3aGljaCBzaG91bGQgYmUgdGhlXG4gICAgICAgIC8vIGZyYW1lIHRoYXQgY2FsbGVkIG91ciBzYW1wbGUgZnVuY3Rpb24gYW5kIHRoZSBjb250cm9sLlxuICAgICAgICBpZiAoc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIEluIFY4LCB0aGUgZmlyc3QgbGluZSBpcyBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGJ1dCBvdGhlciBWTXMgZG9uJ3QuXG4gICAgICAgICAgLy8gSWYgd2UncmUgYWJvdXQgdG8gcmV0dXJuIHRoZSBmaXJzdCBsaW5lLCBhbmQgdGhlIGNvbnRyb2wgaXMgYWxzbyBvbiB0aGUgc2FtZVxuICAgICAgICAgIC8vIGxpbmUsIHRoYXQncyBhIHByZXR0eSBnb29kIGluZGljYXRvciB0aGF0IG91ciBzYW1wbGUgdGhyZXcgYXQgc2FtZSBsaW5lIGFzXG4gICAgICAgICAgLy8gdGhlIGNvbnRyb2wuIEkuZS4gYmVmb3JlIHdlIGVudGVyZWQgdGhlIHNhbXBsZSBmcmFtZS4gU28gd2UgaWdub3JlIHRoaXMgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgcGFzc2VkIGEgY2xhc3MgdG8gZnVuY3Rpb24gY29tcG9uZW50LCBvciBub24tZnVuY3Rpb24uXG4gICAgICAgICAgaWYgKHMgIT09IDEgfHwgYyAhPT0gMSkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICBzLS07XG4gICAgICAgICAgICAgIGMtLTsgLy8gV2UgbWF5IHN0aWxsIGhhdmUgc2ltaWxhciBpbnRlcm1lZGlhdGUgZnJhbWVzIGZyb20gdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSBzaG91bGQgYmUgb3VyIG1hdGNoIHRob3VnaC5cblxuICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgICAgICAgIC8vIFY4IGFkZHMgYSBcIm5ld1wiIHByZWZpeCBmb3IgbmF0aXZlIGNsYXNzZXMuIExldCdzIHJlbW92ZSBpdCB0byBtYWtlIGl0IHByZXR0aWVyLlxuICAgICAgICAgICAgICAgIHZhciBfZnJhbWUgPSAnXFxuJyArIHNhbXBsZUxpbmVzW3NdLnJlcGxhY2UoJyBhdCBuZXcgJywgJyBhdCAnKTsgLy8gSWYgb3VyIGNvbXBvbmVudCBmcmFtZSBpcyBsYWJlbGVkIFwiPGFub255bW91cz5cIlxuICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIGEgdXNlci1wcm92aWRlZCBcImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAvLyBzcGxpY2UgaXQgaW4gdG8gbWFrZSB0aGUgc3RhY2sgbW9yZSByZWFkYWJsZS5cblxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLmRpc3BsYXlOYW1lICYmIF9mcmFtZS5pbmNsdWRlcygnPGFub255bW91cz4nKSkge1xuICAgICAgICAgICAgICAgICAgX2ZyYW1lID0gX2ZyYW1lLnJlcGxhY2UoJzxhbm9ueW1vdXM+JywgZm4uZGlzcGxheU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIF9mcmFtZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAvLyBSZXR1cm4gdGhlIGxpbmUgd2UgZm91bmQuXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfZnJhbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHMgPj0gMSAmJiBjID49IDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlZW50cnkgPSBmYWxzZTtcblxuICAgIHtcbiAgICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IHByZXZpb3VzRGlzcGF0Y2hlcjtcbiAgICAgIHJlZW5hYmxlTG9ncygpO1xuICAgIH1cblxuICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZTtcbiAgfSAvLyBGYWxsYmFjayB0byBqdXN0IHVzaW5nIHRoZSBuYW1lIGlmIHdlIGNvdWxkbid0IG1ha2UgaXQgdGhyb3cuXG5cblxuICB2YXIgbmFtZSA9IGZuID8gZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSA6ICcnO1xuICB2YXIgc3ludGhldGljRnJhbWUgPSBuYW1lID8gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSkgOiAnJztcblxuICB7XG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIHN5bnRoZXRpY0ZyYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ludGhldGljRnJhbWU7XG59XG5mdW5jdGlvbiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUoZm4sIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7XG4gIHZhciBwcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuICByZXR1cm4gISEocHJvdG90eXBlICYmIHByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUsIHNvdXJjZSwgb3duZXJGbikge1xuXG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB7XG4gICAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSh0eXBlLCBzaG91bGRDb25zdHJ1Y3QodHlwZSkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUodHlwZSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlJyk7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2VMaXN0Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUodHlwZS5yZW5kZXIpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgLy8gTWVtbyBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLnR5cGUsIHNvdXJjZSwgb3duZXJGbik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTGF6eSBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoaW5pdChwYXlsb2FkKSwgc291cmNlLCBvd25lckZuKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQpIHtcbiAge1xuICAgIC8vICRGbG93Rml4TWUgVGhpcyBpcyBva2F5IGJ1dCBGbG93IGRvZXNuJ3Qga25vdyBpdC5cbiAgICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKGhhc093blByb3BlcnR5KTtcblxuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvciQxID0gdm9pZCAwOyAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvcHJvZC1lcnJvci1jb2Rlc1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgKyAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJyk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlcnJvciQxID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciQxID0gZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSAmJiAhKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IkMS5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvciQxLm1lc3NhZ2VdID0gdHJ1ZTtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCdGYWlsZWQgJXMgdHlwZTogJXMnLCBsb2NhdGlvbiwgZXJyb3IkMS5tZXNzYWdlKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcblxuZnVuY3Rpb24gaXNBcnJheShhKSB7XG4gIHJldHVybiBpc0FycmF5SW1wbChhKTtcbn1cblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICByZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG52YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG52YXIgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XG52YXIgZGlkV2FybkFib3V0U3RyaW5nUmVmcztcblxue1xuICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzID0ge307XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlZiA9PT0gJ3N0cmluZycgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBzZWxmICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuc3RhdGVOb2RlICE9PSBzZWxmKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnR5cGUpO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0pIHtcbiAgICAgICAgZXJyb3IoJ0NvbXBvbmVudCBcIiVzXCIgY29udGFpbnMgdGhlIHN0cmluZyByZWYgXCIlc1wiLiAnICsgJ1N1cHBvcnQgZm9yIHN0cmluZyByZWZzIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiAnICsgJ1RoaXMgY2FzZSBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gYW4gYXJyb3cgZnVuY3Rpb24uICcgKyAnV2UgYXNrIHlvdSB0byBtYW51YWxseSBmaXggdGhpcyBjYXNlIGJ5IHVzaW5nIHVzZVJlZigpIG9yIGNyZWF0ZVJlZigpIGluc3RlYWQuICcgKyAnTGVhcm4gbW9yZSBhYm91dCB1c2luZyByZWZzIHNhZmVseSBoZXJlOiAnICsgJ2h0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zdHJpY3QtbW9kZS1zdHJpbmctcmVmJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSksIGNvbmZpZy5yZWYpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGByZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgbm90IHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQGludGVybmFsXG4gKi9cblxuXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxlbWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvd3MgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc2VsZlxuICAgIH0pOyAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNvdXJjZVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmZjcy9wdWxsLzEwN1xuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqL1xuXG5mdW5jdGlvbiBqc3hERVYodHlwZSwgY29uZmlnLCBtYXliZUtleSwgc291cmNlLCBzZWxmKSB7XG4gIHtcbiAgICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICAgIHZhciBwcm9wcyA9IHt9O1xuICAgIHZhciBrZXkgPSBudWxsO1xuICAgIHZhciByZWYgPSBudWxsOyAvLyBDdXJyZW50bHksIGtleSBjYW4gYmUgc3ByZWFkIGluIGFzIGEgcHJvcC4gVGhpcyBjYXVzZXMgYSBwb3RlbnRpYWxcbiAgICAvLyBpc3N1ZSBpZiBrZXkgaXMgYWxzbyBleHBsaWNpdGx5IGRlY2xhcmVkIChpZS4gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz5cbiAgICAvLyBvciA8ZGl2IGtleT1cIkhpXCIgey4uLnByb3BzfSAvPiApLiBXZSB3YW50IHRvIGRlcHJlY2F0ZSBrZXkgc3ByZWFkLFxuICAgIC8vIGJ1dCBhcyBhbiBpbnRlcm1lZGlhcnkgc3RlcCwgd2Ugd2lsbCB1c2UganN4REVWIGZvciBldmVyeXRoaW5nIGV4Y2VwdFxuICAgIC8vIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+LCBiZWNhdXNlIHdlIGFyZW4ndCBjdXJyZW50bHkgYWJsZSB0byB0ZWxsIGlmXG4gICAgLy8ga2V5IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQgdG8gYmUgdW5kZWZpbmVkIG9yIG5vdC5cblxuICAgIGlmIChtYXliZUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24obWF5YmVLZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIG1heWJlS2V5O1xuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpO1xuICAgIH0gLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuXG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH0gLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cblxuICAgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG5cbiAgICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyO1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgZWxlbWVudC5fc291cmNlLCBvd25lciA/IG93bmVyLnR5cGUgOiBudWxsKTtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cbi8qKlxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgUmVhY3RFbGVtZW50LlxuICogQGZpbmFsXG4gKi9cblxuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudChvYmplY3QpIHtcbiAge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICB7XG4gICAgaWYgKFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudCkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50LnR5cGUpO1xuXG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSkge1xuICB7XG4gICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZmlsZU5hbWUgPSBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpO1xuICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICB2YXIgaW5mbyA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuXG4gICAgaWYgKCFpbmZvKSB7XG4gICAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTtcblxuICAgICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmZvO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcbiAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG5cbiAgICBpZiAob3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dID0gdHJ1ZTsgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gICAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuXG4gICAgdmFyIGNoaWxkT3duZXIgPSAnJztcblxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLlxuICAgICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgIGVycm9yKCdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIpO1xuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgfVxufVxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuXG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUpIHtcbiAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyB1c2VkIHRvIHByb3ZpZGUgaW1wbGljaXQga2V5cyxcbiAgICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcFR5cGVzO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBOb3RlOiBNZW1vIG9ubHkgY2hlY2tzIG91dGVyIHByb3BzIGhlcmUuXG4gICAgLy8gSW5uZXIgcHJvcHMgYXJlIGNoZWNrZWQgaW4gdGhlIHJlY29uY2lsZXIuXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSkge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcFR5cGVzKSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG4gICAgICBjaGVja1Byb3BUeXBlcyhwcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmICh0eXBlLlByb3BUeXBlcyAhPT0gdW5kZWZpbmVkICYmICFwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93bikge1xuICAgICAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSB0cnVlOyAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuXG4gICAgICB2YXIgX25hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG5cbiAgICAgIGVycm9yKCdDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD8nLCBfbmFtZSB8fCAnVW5rbm93bicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdHlwZS5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicgJiYgIXR5cGUuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkKSB7XG4gICAgICBlcnJvcignZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzICcgKyAnZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBHaXZlbiBhIGZyYWdtZW50LCB2YWxpZGF0ZSB0aGF0IGl0IGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdpdGggZnJhZ21lbnQgcHJvcHNcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBmcmFnbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVGcmFnbWVudFByb3BzKGZyYWdtZW50KSB7XG4gIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyYWdtZW50LnByb3BzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09ICdjaGlsZHJlbicgJiYga2V5ICE9PSAna2V5Jykge1xuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYWdtZW50LnJlZiAhPT0gbnVsbCkge1xuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgIGVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBgcmVmYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLicpO1xuXG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpIHtcbiAge1xuICAgIHZhciB2YWxpZFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSk7IC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci5cblxuICAgIGlmICghdmFsaWRUeXBlKSB7XG4gICAgICB2YXIgaW5mbyA9ICcnO1xuXG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlSW5mbyA9IGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSk7XG5cbiAgICAgIGlmIChzb3VyY2VJbmZvKSB7XG4gICAgICAgIGluZm8gKz0gc291cmNlSW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICB0eXBlU3RyaW5nID0gJ251bGwnO1xuICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSAnYXJyYXknO1xuICAgICAgfSBlbHNlIGlmICh0eXBlICE9PSB1bmRlZmluZWQgJiYgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgICAgaW5mbyA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgICAgfVxuXG4gICAgICBlcnJvcignUmVhY3QuanN4OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50ID0ganN4REVWKHR5cGUsIHByb3BzLCBrZXksIHNvdXJjZSwgc2VsZik7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuXG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpY1xuICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cbiAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXNcbiAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXG5cblxuICAgIGlmICh2YWxpZFR5cGUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuXG4gICAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaXNTdGF0aWNDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpXSwgdHlwZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICAgICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvcignUmVhY3QuanN4OiBTdGF0aWMgY2hpbGRyZW4gc2hvdWxkIGFsd2F5cyBiZSBhbiBhcnJheS4gJyArICdZb3UgYXJlIGxpa2VseSBleHBsaWNpdGx5IGNhbGxpbmcgUmVhY3QuanN4cyBvciBSZWFjdC5qc3hERVYuICcgKyAnVXNlIHRoZSBCYWJlbCB0cmFuc2Zvcm0gaW5zdGVhZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHtcbiAgICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn0gLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBleGlzdCB0byBzdGlsbCBnZXQgY2hpbGQgd2FybmluZ3MgaW4gZGV2XG4vLyBldmVuIHdpdGggdGhlIHByb2QgdHJhbnNmb3JtLiBUaGlzIG1lYW5zIHRoYXQganN4REVWIGlzIHB1cmVseVxuLy8gb3B0LWluIGJlaGF2aW9yIGZvciBiZXR0ZXIgbWVzc2FnZXMgYnV0IHRoYXQgd2Ugd29uJ3Qgc3RvcFxuLy8gZ2l2aW5nIHlvdSB3YXJuaW5ncyBpZiB5b3UgdXNlIHByb2R1Y3Rpb24gYXBpcy5cblxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb25TdGF0aWModHlwZSwgcHJvcHMsIGtleSkge1xuICB7XG4gICAgcmV0dXJuIGpzeFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBrZXksIHRydWUpO1xuICB9XG59XG5mdW5jdGlvbiBqc3hXaXRoVmFsaWRhdGlvbkR5bmFtaWModHlwZSwgcHJvcHMsIGtleSkge1xuICB7XG4gICAgcmV0dXJuIGpzeFdpdGhWYWxpZGF0aW9uKHR5cGUsIHByb3BzLCBrZXksIGZhbHNlKTtcbiAgfVxufVxuXG52YXIganN4ID0gIGpzeFdpdGhWYWxpZGF0aW9uRHluYW1pYyA7IC8vIHdlIG1heSB3YW50IHRvIHNwZWNpYWwgY2FzZSBqc3hzIGludGVybmFsbHkgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3RhdGljIGNoaWxkcmVuLlxuLy8gZm9yIG5vdyB3ZSBjYW4gc2hpcCBpZGVudGljYWwgcHJvZCBmdW5jdGlvbnNcblxudmFyIGpzeHMgPSAganN4V2l0aFZhbGlkYXRpb25TdGF0aWMgO1xuXG5leHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbmV4cG9ydHMuanN4ID0ganN4O1xuZXhwb3J0cy5qc3hzID0ganN4cztcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/react/cjs/react-jsx-runtime.development.js\n");
407
396
 
408
397
  /***/ }),
409
398
 
@@ -1292,7 +1281,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1292
1281
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1293
1282
 
1294
1283
  "use strict";
1295
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Checkbox {\\n margin: 4px 0.3em;\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n -webkit-user-select: none;\\n user-select: none;\\n -webkit-tap-highlight-color: transparent;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n box-shadow: 0 0 0 2px #4dabf7;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) svg {\\n display: block;\\n opacity: 0.3;\\n}\\n.excalidraw .Checkbox:active .Checkbox-box {\\n box-shadow: 0 0 2px 1px inset #1c7ed6 !important;\\n}\\n.excalidraw .Checkbox:hover .Checkbox-box {\\n background-color: rgba(208, 235, 255, 0.2);\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box {\\n background-color: #d0ebff;\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box svg {\\n display: block;\\n}\\n.excalidraw .Checkbox.is-checked:hover .Checkbox-box {\\n background-color: #a5d8ff;\\n}\\n.excalidraw .Checkbox .Checkbox-box {\\n width: 22px;\\n height: 22px;\\n padding: 0;\\n flex: 0 0 auto;\\n margin: 0 1em;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0 0 0 2px #1c7ed6;\\n background-color: transparent;\\n border-radius: 4px;\\n color: #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box:focus {\\n box-shadow: 0 0 0 3px #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box svg {\\n display: none;\\n width: 16px;\\n height: 16px;\\n stroke-width: 3px;\\n}\\n.excalidraw .Checkbox .Checkbox-label {\\n display: flex;\\n align-items: center;\\n}\\n.excalidraw .Checkbox .excalidraw-tooltip-icon {\\n width: 1em;\\n height: 1em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/CheckboxItem.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AAAE;EACE,iBAAA;EACA,aAAA;EACA,mBAAA;EAEA,eAAA;EACA,yBAAA;UAAA,iBAAA;EAEA,wCAAA;AACJ;AACI;EACE,6BAAA;AACN;AAGM;EACE,cAAA;EACA,YAAA;AADR;AAMM;EACE,gDAAA;AAJR;AASM;EACE,0CAAA;AAPR;AAYM;EACE,yBAAA;AAVR;AAWQ;EACE,cAAA;AATV;AAYM;EACE,yBAAA;AAVR;AAcI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,cAAA;EAEA,aAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,6BAAA;EACA,6BAAA;EACA,kBAAA;EAEA,cAAA;AAhBN;AAkBM;EACE,6BAAA;AAhBR;AAmBM;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AAjBR;AAqBI;EACE,aAAA;EACA,mBAAA;AAnBN;AAsBI;EACE,UAAA;EACA,WAAA;AApBN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .Checkbox {\\n margin: 4px 0.3em;\\n display: flex;\\n align-items: center;\\n\\n cursor: pointer;\\n user-select: none;\\n\\n -webkit-tap-highlight-color: transparent;\\n\\n &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n box-shadow: 0 0 0 2px #{$oc-blue-4};\\n }\\n\\n &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n svg {\\n display: block;\\n opacity: 0.3;\\n }\\n }\\n\\n &:active {\\n .Checkbox-box {\\n box-shadow: 0 0 2px 1px inset #{$oc-blue-7} !important;\\n }\\n }\\n\\n &:hover {\\n .Checkbox-box {\\n background-color: fade-out($oc-blue-1, 0.8);\\n }\\n }\\n\\n &.is-checked {\\n .Checkbox-box {\\n background-color: #{$oc-blue-1};\\n svg {\\n display: block;\\n }\\n }\\n &:hover .Checkbox-box {\\n background-color: #{$oc-blue-2};\\n }\\n }\\n\\n .Checkbox-box {\\n width: 22px;\\n height: 22px;\\n padding: 0;\\n flex: 0 0 auto;\\n\\n margin: 0 1em;\\n\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n box-shadow: 0 0 0 2px #{$oc-blue-7};\\n background-color: transparent;\\n border-radius: 4px;\\n\\n color: #{$oc-blue-7};\\n\\n &:focus {\\n box-shadow: 0 0 0 3px #{$oc-blue-7};\\n }\\n\\n svg {\\n display: none;\\n width: 16px;\\n height: 16px;\\n stroke-width: 3px;\\n }\\n }\\n\\n .Checkbox-label {\\n display: flex;\\n align-items: center;\\n }\\n\\n .excalidraw-tooltip-icon {\\n width: 1em;\\n height: 1em;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxtREFBbUQsZ0RBQWdELDZCQUE2QixHQUFHLDJCQUEyQixzQkFBc0Isa0JBQWtCLHdCQUF3QixvQkFBb0IsOEJBQThCLDhCQUE4Qiw2Q0FBNkMsR0FBRywwRUFBMEUsa0NBQWtDLEdBQUcsOEVBQThFLG1CQUFtQixpQkFBaUIsR0FBRyw4Q0FBOEMscURBQXFELEdBQUcsNkNBQTZDLCtDQUErQyxHQUFHLGtEQUFrRCw4QkFBOEIsR0FBRyxzREFBc0QsbUJBQW1CLEdBQUcsd0RBQXdELDhCQUE4QixHQUFHLHVDQUF1QyxnQkFBZ0IsaUJBQWlCLGVBQWUsbUJBQW1CLGtCQUFrQixrQkFBa0Isd0JBQXdCLDRCQUE0QixrQ0FBa0Msa0NBQWtDLHVCQUF1QixtQkFBbUIsR0FBRyw2Q0FBNkMsa0NBQWtDLEdBQUcsMkNBQTJDLGtCQUFrQixnQkFBZ0IsaUJBQWlCLHNCQUFzQixHQUFHLHlDQUF5QyxrQkFBa0Isd0JBQXdCLEdBQUcsa0RBQWtELGVBQWUsZ0JBQWdCLEdBQUcsT0FBTyxvSkFBb0osV0FBVyxXQUFXLE9BQU8sS0FBSyxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsVUFBVSxpRUFBaUUsdUJBQXVCLGtDQUFrQyxJQUFJLGVBQWUsS0FBSyxHQUFHLHFDQUFxQyxzREFBc0Qsa0NBQWtDLCtDQUErQyxPQUFPLG1DQUFtQyx5Q0FBeUMsNkJBQTZCLFdBQVcsOEJBQThCLFdBQVcsT0FBTywwQ0FBMEMsZ0RBQWdELE9BQU8sS0FBSyw2QkFBNkIsa0JBQWtCLGlCQUFpQixLQUFLLEdBQUcsc0RBQXNELGtDQUFrQyxhQUFhLHdDQUF3QyxxREFBcUQsR0FBRyx5Q0FBeUMsaUJBQWlCLGVBQWUsd0JBQXdCLG9CQUFvQiwwQkFBMEIsd0JBQXdCLHdCQUF3QixpREFBaUQsNERBQTRELGdDQUFnQyxZQUFZLE9BQU8sNERBQTRELGFBQWEseUJBQXlCLHVCQUF1QixTQUFTLE9BQU8sa0JBQWtCLHVCQUF1QiwwQ0FBMEMsWUFBWSxXQUFXLFNBQVMsT0FBTyxpQkFBaUIsdUJBQXVCLHNEQUFzRCxTQUFTLE9BQU8sc0JBQXNCLHVCQUF1Qiw4QkFBOEIsWUFBWSxlQUFlLDJCQUEyQixXQUFXLFNBQVMsK0JBQStCLDhCQUE4QixZQUFZLFNBQVMsT0FBTyx1QkFBdUIsb0JBQW9CLHFCQUFxQixtQkFBbUIsdUJBQXVCLHdCQUF3Qix3QkFBd0IsNEJBQTRCLGdDQUFnQyxrQ0FBa0MsWUFBWSxzQ0FBc0MsMkJBQTJCLG1CQUFtQixZQUFZLG1CQUFtQixrQ0FBa0MsWUFBWSxTQUFTLGVBQWUsd0JBQXdCLHNCQUFzQix1QkFBdUIsNEJBQTRCLFNBQVMsT0FBTyx5QkFBeUIsc0JBQXNCLDRCQUE0QixPQUFPLGtDQUFrQyxtQkFBbUIsb0JBQW9CLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN0Mko7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NoZWNrYm94SXRlbS5zY3NzPzRlMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IDMwMnB4O1xcbn1cXG5cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3gge1xcbiAgbWFyZ2luOiA0cHggMC4zZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94OmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggIzRkYWJmNztcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94OmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSBzdmcge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBvcGFjaXR5OiAwLjM7XFxufVxcbi5leGNhbGlkcmF3IC5DaGVja2JveDphY3RpdmUgLkNoZWNrYm94LWJveCB7XFxuICBib3gtc2hhZG93OiAwIDAgMnB4IDFweCBpbnNldCAjMWM3ZWQ2ICFpbXBvcnRhbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5DaGVja2JveDpob3ZlciAuQ2hlY2tib3gtYm94IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjA4LCAyMzUsIDI1NSwgMC4yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94LmlzLWNoZWNrZWQgLkNoZWNrYm94LWJveCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlYmZmO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3guaXMtY2hlY2tlZCAuQ2hlY2tib3gtYm94IHN2ZyB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94LmlzLWNoZWNrZWQ6aG92ZXIgLkNoZWNrYm94LWJveCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkOGZmO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWJveCB7XFxuICB3aWR0aDogMjJweDtcXG4gIGhlaWdodDogMjJweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmbGV4OiAwIDAgYXV0bztcXG4gIG1hcmdpbjogMCAxZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICMxYzdlZDY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGNvbG9yOiAjMWM3ZWQ2O1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWJveDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAzcHggIzFjN2VkNjtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94IC5DaGVja2JveC1ib3ggc3ZnIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMTZweDtcXG4gIGhlaWdodDogMTZweDtcXG4gIHN0cm9rZS13aWR0aDogM3B4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWxhYmVsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLmV4Y2FsaWRyYXctdG9vbHRpcC1pY29uIHtcXG4gIHdpZHRoOiAxZW07XFxuICBoZWlnaHQ6IDFlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBQUFFO0VBQ0UsaUJBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFFQSxlQUFBO0VBQ0EseUJBQUE7VUFBQSxpQkFBQTtFQUVBLHdDQUFBO0FBQ0o7QUFDSTtFQUNFLDZCQUFBO0FBQ047QUFHTTtFQUNFLGNBQUE7RUFDQSxZQUFBO0FBRFI7QUFNTTtFQUNFLGdEQUFBO0FBSlI7QUFTTTtFQUNFLDBDQUFBO0FBUFI7QUFZTTtFQUNFLHlCQUFBO0FBVlI7QUFXUTtFQUNFLGNBQUE7QUFUVjtBQVlNO0VBQ0UseUJBQUE7QUFWUjtBQWNJO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTtFQUVBLGFBQUE7RUFFQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUVBLDZCQUFBO0VBQ0EsNkJBQUE7RUFDQSxrQkFBQTtFQUVBLGNBQUE7QUFoQk47QUFrQk07RUFDRSw2QkFBQTtBQWhCUjtBQW1CTTtFQUNFLGFBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FBakJSO0FBcUJJO0VBQ0UsYUFBQTtFQUNBLG1CQUFBO0FBbkJOO0FBc0JJO0VBQ0UsVUFBQTtFQUNBLFdBQUE7QUFwQk5cIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcblxcbkBtaXhpbiBpc01vYmlsZSgpIHtcXG4gIEBhdC1yb290IC5leGNhbGlkcmF3LS1tb2JpbGUjeyZ9IHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbkBtaXhpbiB0b29sYmFyQnV0dG9uQ29sb3JTdGF0ZXMge1xcbiAgLlRvb2xJY29uX3R5cGVfcmFkaW8sXFxuICAuVG9vbEljb25fdHlwZV9jaGVja2JveCB7XFxuICAgICYgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgICBib3R0b206IDRweDtcXG4gICAgcmlnaHQ6IDRweDtcXG4gIH1cXG59XFxuXFxuJHRoZW1lLWZpbHRlcjogXFxcImludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKVxcXCI7XFxuJHJpZ2h0LXNpZGViYXItd2lkdGg6IFxcXCIzMDJweFxcXCI7XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogdW5xdW90ZSgkdGhlbWUtZmlsdGVyKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiB1bnF1b3RlKCRyaWdodC1zaWRlYmFyLXdpZHRoKTtcXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuLi9jc3MvdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgLkNoZWNrYm94IHtcXG4gICAgbWFyZ2luOiA0cHggMC4zZW07XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFxuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFxuICAgICY6aG92ZXI6bm90KC5pcy1jaGVja2VkKSAuQ2hlY2tib3gtYm94Om5vdCg6Zm9jdXMpIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggI3skb2MtYmx1ZS00fTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSB7XFxuICAgICAgc3ZnIHtcXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgICAgb3BhY2l0eTogMC4zO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgLkNoZWNrYm94LWJveCB7XFxuICAgICAgICBib3gtc2hhZG93OiAwIDAgMnB4IDFweCBpbnNldCAjeyRvYy1ibHVlLTd9ICFpbXBvcnRhbnQ7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIC5DaGVja2JveC1ib3gge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZmFkZS1vdXQoJG9jLWJsdWUtMSwgMC44KTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJi5pcy1jaGVja2VkIHtcXG4gICAgICAuQ2hlY2tib3gtYm94IHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICN7JG9jLWJsdWUtMX07XFxuICAgICAgICBzdmcge1xcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgJjpob3ZlciAuQ2hlY2tib3gtYm94IHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICN7JG9jLWJsdWUtMn07XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5DaGVja2JveC1ib3gge1xcbiAgICAgIHdpZHRoOiAyMnB4O1xcbiAgICAgIGhlaWdodDogMjJweDtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xcblxcbiAgICAgIG1hcmdpbjogMCAxZW07XFxuXFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCAjeyRvYy1ibHVlLTd9O1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG5cXG4gICAgICBjb2xvcjogI3skb2MtYmx1ZS03fTtcXG5cXG4gICAgICAmOmZvY3VzIHtcXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAjeyRvYy1ibHVlLTd9O1xcbiAgICAgIH1cXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xcbiAgICAgICAgc3Ryb2tlLXdpZHRoOiAzcHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5DaGVja2JveC1sYWJlbCB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB9XFxuXFxuICAgIC5leGNhbGlkcmF3LXRvb2x0aXAtaWNvbiB7XFxuICAgICAgd2lkdGg6IDFlbTtcXG4gICAgICBoZWlnaHQ6IDFlbTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss\n");
1284
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Checkbox {\\n margin: 4px 0.3em;\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n user-select: none;\\n -webkit-tap-highlight-color: transparent;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n box-shadow: 0 0 0 2px #4dabf7;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) svg {\\n display: block;\\n opacity: 0.3;\\n}\\n.excalidraw .Checkbox:active .Checkbox-box {\\n box-shadow: 0 0 2px 1px inset #1c7ed6 !important;\\n}\\n.excalidraw .Checkbox:hover .Checkbox-box {\\n background-color: rgba(208, 235, 255, 0.2);\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box {\\n background-color: #d0ebff;\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box svg {\\n display: block;\\n}\\n.excalidraw .Checkbox.is-checked:hover .Checkbox-box {\\n background-color: #a5d8ff;\\n}\\n.excalidraw .Checkbox .Checkbox-box {\\n width: 22px;\\n height: 22px;\\n padding: 0;\\n flex: 0 0 auto;\\n margin: 0 1em;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0 0 0 2px #1c7ed6;\\n background-color: transparent;\\n border-radius: 4px;\\n color: #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box:focus {\\n box-shadow: 0 0 0 3px #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box svg {\\n display: none;\\n width: 16px;\\n height: 16px;\\n stroke-width: 3px;\\n}\\n.excalidraw .Checkbox .Checkbox-label {\\n display: flex;\\n align-items: center;\\n}\\n.excalidraw .Checkbox .excalidraw-tooltip-icon {\\n width: 1em;\\n height: 1em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/CheckboxItem.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AAAE;EACE,iBAAA;EACA,aAAA;EACA,mBAAA;EAEA,eAAA;EACA,iBAAA;EAEA,wCAAA;AACJ;AACI;EACE,6BAAA;AACN;AAGM;EACE,cAAA;EACA,YAAA;AADR;AAMM;EACE,gDAAA;AAJR;AASM;EACE,0CAAA;AAPR;AAYM;EACE,yBAAA;AAVR;AAWQ;EACE,cAAA;AATV;AAYM;EACE,yBAAA;AAVR;AAcI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,cAAA;EAEA,aAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,6BAAA;EACA,6BAAA;EACA,kBAAA;EAEA,cAAA;AAhBN;AAkBM;EACE,6BAAA;AAhBR;AAmBM;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AAjBR;AAqBI;EACE,aAAA;EACA,mBAAA;AAnBN;AAsBI;EACE,UAAA;EACA,WAAA;AApBN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .Checkbox {\\n margin: 4px 0.3em;\\n display: flex;\\n align-items: center;\\n\\n cursor: pointer;\\n user-select: none;\\n\\n -webkit-tap-highlight-color: transparent;\\n\\n &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n box-shadow: 0 0 0 2px #{$oc-blue-4};\\n }\\n\\n &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n svg {\\n display: block;\\n opacity: 0.3;\\n }\\n }\\n\\n &:active {\\n .Checkbox-box {\\n box-shadow: 0 0 2px 1px inset #{$oc-blue-7} !important;\\n }\\n }\\n\\n &:hover {\\n .Checkbox-box {\\n background-color: fade-out($oc-blue-1, 0.8);\\n }\\n }\\n\\n &.is-checked {\\n .Checkbox-box {\\n background-color: #{$oc-blue-1};\\n svg {\\n display: block;\\n }\\n }\\n &:hover .Checkbox-box {\\n background-color: #{$oc-blue-2};\\n }\\n }\\n\\n .Checkbox-box {\\n width: 22px;\\n height: 22px;\\n padding: 0;\\n flex: 0 0 auto;\\n\\n margin: 0 1em;\\n\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n box-shadow: 0 0 0 2px #{$oc-blue-7};\\n background-color: transparent;\\n border-radius: 4px;\\n\\n color: #{$oc-blue-7};\\n\\n &:focus {\\n box-shadow: 0 0 0 3px #{$oc-blue-7};\\n }\\n\\n svg {\\n display: none;\\n width: 16px;\\n height: 16px;\\n stroke-width: 3px;\\n }\\n }\\n\\n .Checkbox-label {\\n display: flex;\\n align-items: center;\\n }\\n\\n .excalidraw-tooltip-icon {\\n width: 1em;\\n height: 1em;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxtREFBbUQsZ0RBQWdELDZCQUE2QixHQUFHLDJCQUEyQixzQkFBc0Isa0JBQWtCLHdCQUF3QixvQkFBb0Isc0JBQXNCLDZDQUE2QyxHQUFHLDBFQUEwRSxrQ0FBa0MsR0FBRyw4RUFBOEUsbUJBQW1CLGlCQUFpQixHQUFHLDhDQUE4QyxxREFBcUQsR0FBRyw2Q0FBNkMsK0NBQStDLEdBQUcsa0RBQWtELDhCQUE4QixHQUFHLHNEQUFzRCxtQkFBbUIsR0FBRyx3REFBd0QsOEJBQThCLEdBQUcsdUNBQXVDLGdCQUFnQixpQkFBaUIsZUFBZSxtQkFBbUIsa0JBQWtCLGtCQUFrQix3QkFBd0IsNEJBQTRCLGtDQUFrQyxrQ0FBa0MsdUJBQXVCLG1CQUFtQixHQUFHLDZDQUE2QyxrQ0FBa0MsR0FBRywyQ0FBMkMsa0JBQWtCLGdCQUFnQixpQkFBaUIsc0JBQXNCLEdBQUcseUNBQXlDLGtCQUFrQix3QkFBd0IsR0FBRyxrREFBa0QsZUFBZSxnQkFBZ0IsR0FBRyxPQUFPLG9KQUFvSixXQUFXLFdBQVcsT0FBTyxLQUFLLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsVUFBVSxpRUFBaUUsdUJBQXVCLGtDQUFrQyxJQUFJLGVBQWUsS0FBSyxHQUFHLHFDQUFxQyxzREFBc0Qsa0NBQWtDLCtDQUErQyxPQUFPLG1DQUFtQyx5Q0FBeUMsNkJBQTZCLFdBQVcsOEJBQThCLFdBQVcsT0FBTywwQ0FBMEMsZ0RBQWdELE9BQU8sS0FBSyw2QkFBNkIsa0JBQWtCLGlCQUFpQixLQUFLLEdBQUcsc0RBQXNELGtDQUFrQyxhQUFhLHdDQUF3QyxxREFBcUQsR0FBRyx5Q0FBeUMsaUJBQWlCLGVBQWUsd0JBQXdCLG9CQUFvQiwwQkFBMEIsd0JBQXdCLHdCQUF3QixpREFBaUQsNERBQTRELGdDQUFnQyxZQUFZLE9BQU8sNERBQTRELGFBQWEseUJBQXlCLHVCQUF1QixTQUFTLE9BQU8sa0JBQWtCLHVCQUF1QiwwQ0FBMEMsWUFBWSxXQUFXLFNBQVMsT0FBTyxpQkFBaUIsdUJBQXVCLHNEQUFzRCxTQUFTLE9BQU8sc0JBQXNCLHVCQUF1Qiw4QkFBOEIsWUFBWSxlQUFlLDJCQUEyQixXQUFXLFNBQVMsK0JBQStCLDhCQUE4QixZQUFZLFNBQVMsT0FBTyx1QkFBdUIsb0JBQW9CLHFCQUFxQixtQkFBbUIsdUJBQXVCLHdCQUF3Qix3QkFBd0IsNEJBQTRCLGdDQUFnQyxrQ0FBa0MsWUFBWSxzQ0FBc0MsMkJBQTJCLG1CQUFtQixZQUFZLG1CQUFtQixrQ0FBa0MsWUFBWSxTQUFTLGVBQWUsd0JBQXdCLHNCQUFzQix1QkFBdUIsNEJBQTRCLFNBQVMsT0FBTyx5QkFBeUIsc0JBQXNCLDRCQUE0QixPQUFPLGtDQUFrQyxtQkFBbUIsb0JBQW9CLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUNyeko7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NoZWNrYm94SXRlbS5zY3NzPzRlMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IDMwMnB4O1xcbn1cXG5cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3gge1xcbiAgbWFyZ2luOiA0cHggMC4zZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94OmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggIzRkYWJmNztcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94OmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSBzdmcge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBvcGFjaXR5OiAwLjM7XFxufVxcbi5leGNhbGlkcmF3IC5DaGVja2JveDphY3RpdmUgLkNoZWNrYm94LWJveCB7XFxuICBib3gtc2hhZG93OiAwIDAgMnB4IDFweCBpbnNldCAjMWM3ZWQ2ICFpbXBvcnRhbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5DaGVja2JveDpob3ZlciAuQ2hlY2tib3gtYm94IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjA4LCAyMzUsIDI1NSwgMC4yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94LmlzLWNoZWNrZWQgLkNoZWNrYm94LWJveCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDBlYmZmO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3guaXMtY2hlY2tlZCAuQ2hlY2tib3gtYm94IHN2ZyB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94LmlzLWNoZWNrZWQ6aG92ZXIgLkNoZWNrYm94LWJveCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkOGZmO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWJveCB7XFxuICB3aWR0aDogMjJweDtcXG4gIGhlaWdodDogMjJweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmbGV4OiAwIDAgYXV0bztcXG4gIG1hcmdpbjogMCAxZW07XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICMxYzdlZDY7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGNvbG9yOiAjMWM3ZWQ2O1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWJveDpmb2N1cyB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAzcHggIzFjN2VkNjtcXG59XFxuLmV4Y2FsaWRyYXcgLkNoZWNrYm94IC5DaGVja2JveC1ib3ggc3ZnIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMTZweDtcXG4gIGhlaWdodDogMTZweDtcXG4gIHN0cm9rZS13aWR0aDogM3B4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLkNoZWNrYm94LWxhYmVsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQ2hlY2tib3ggLmV4Y2FsaWRyYXctdG9vbHRpcC1pY29uIHtcXG4gIHdpZHRoOiAxZW07XFxuICBoZWlnaHQ6IDFlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBQUFFO0VBQ0UsaUJBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFFQSxlQUFBO0VBQ0EsaUJBQUE7RUFFQSx3Q0FBQTtBQUNKO0FBQ0k7RUFDRSw2QkFBQTtBQUNOO0FBR007RUFDRSxjQUFBO0VBQ0EsWUFBQTtBQURSO0FBTU07RUFDRSxnREFBQTtBQUpSO0FBU007RUFDRSwwQ0FBQTtBQVBSO0FBWU07RUFDRSx5QkFBQTtBQVZSO0FBV1E7RUFDRSxjQUFBO0FBVFY7QUFZTTtFQUNFLHlCQUFBO0FBVlI7QUFjSTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7RUFFQSxhQUFBO0VBRUEsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFFQSw2QkFBQTtFQUNBLDZCQUFBO0VBQ0Esa0JBQUE7RUFFQSxjQUFBO0FBaEJOO0FBa0JNO0VBQ0UsNkJBQUE7QUFoQlI7QUFtQk07RUFDRSxhQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQWpCUjtBQXFCSTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtBQW5CTjtBQXNCSTtFQUNFLFVBQUE7RUFDQSxXQUFBO0FBcEJOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5cXG5AbWl4aW4gaXNNb2JpbGUoKSB7XFxuICBAYXQtcm9vdCAuZXhjYWxpZHJhdy0tbW9iaWxlI3smfSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gdG9vbGJhckJ1dHRvbkNvbG9yU3RhdGVzIHtcXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICAmICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19rZXliaW5kaW5nIHtcXG4gICAgYm90dG9tOiA0cHg7XFxuICAgIHJpZ2h0OiA0cHg7XFxuICB9XFxufVxcblxcbiR0aGVtZS1maWx0ZXI6IFxcXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcXFwiO1xcbiRyaWdodC1zaWRlYmFyLXdpZHRoOiBcXFwiMzAycHhcXFwiO1xcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IHVucXVvdGUoJHRoZW1lLWZpbHRlcik7XFxuICByaWdodFNpZGViYXJXaWR0aDogdW5xdW90ZSgkcmlnaHQtc2lkZWJhci13aWR0aCk7XFxufVxcblwiLFwiQGltcG9ydCBcXFwiLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGVcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC5DaGVja2JveCB7XFxuICAgIG1hcmdpbjogNHB4IDAuM2VtO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcblxcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcbiAgICAmOmhvdmVyOm5vdCguaXMtY2hlY2tlZCkgLkNoZWNrYm94LWJveDpub3QoOmZvY3VzKSB7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICN7JG9jLWJsdWUtNH07XFxuICAgIH1cXG5cXG4gICAgJjpob3Zlcjpub3QoLmlzLWNoZWNrZWQpIC5DaGVja2JveC1ib3g6bm90KDpmb2N1cykge1xcbiAgICAgIHN2ZyB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICAgIG9wYWNpdHk6IDAuMztcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIC5DaGVja2JveC1ib3gge1xcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAxcHggaW5zZXQgI3skb2MtYmx1ZS03fSAhaW1wb3J0YW50O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICAuQ2hlY2tib3gtYm94IHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGZhZGUtb3V0KCRvYy1ibHVlLTEsIDAuOCk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICYuaXMtY2hlY2tlZCB7XFxuICAgICAgLkNoZWNrYm94LWJveCB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjeyRvYy1ibHVlLTF9O1xcbiAgICAgICAgc3ZnIHtcXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgICY6aG92ZXIgLkNoZWNrYm94LWJveCB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjeyRvYy1ibHVlLTJ9O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuQ2hlY2tib3gtYm94IHtcXG4gICAgICB3aWR0aDogMjJweDtcXG4gICAgICBoZWlnaHQ6IDIycHg7XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgICBmbGV4OiAwIDAgYXV0bztcXG5cXG4gICAgICBtYXJnaW46IDAgMWVtO1xcblxcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggI3skb2MtYmx1ZS03fTtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuXFxuICAgICAgY29sb3I6ICN7JG9jLWJsdWUtN307XFxuXFxuICAgICAgJjpmb2N1cyB7XFxuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggI3skb2MtYmx1ZS03fTtcXG4gICAgICB9XFxuXFxuICAgICAgc3ZnIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB3aWR0aDogMTZweDtcXG4gICAgICAgIGhlaWdodDogMTZweDtcXG4gICAgICAgIHN0cm9rZS13aWR0aDogM3B4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuQ2hlY2tib3gtbGFiZWwge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgfVxcblxcbiAgICAuZXhjYWxpZHJhdy10b29sdGlwLWljb24ge1xcbiAgICAgIHdpZHRoOiAxZW07XFxuICAgICAgaGVpZ2h0OiAxZW07XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss\n");
1296
1285
 
1297
1286
  /***/ }),
1298
1287
 
@@ -1336,7 +1325,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1336
1325
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1337
1326
 
1338
1327
  "use strict";
1339
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\n:export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .context-menu {\\n position: relative;\\n border-radius: 4px;\\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\\n padding: 0;\\n list-style: none;\\n -webkit-user-select: none;\\n user-select: none;\\n margin: -0.25rem 0 0 0.125rem;\\n padding: 0.5rem 0;\\n background-color: var(--popup-secondary-bg-color);\\n border: 1px solid var(--button-gray-3);\\n cursor: default;\\n}\\n.excalidraw .context-menu button {\\n color: var(--popup-text-color);\\n}\\n.excalidraw .context-menu-option {\\n position: relative;\\n width: 100%;\\n min-width: 9.5rem;\\n margin: 0;\\n padding: 0.25rem 1rem 0.25rem 1.25rem;\\n text-align: start;\\n border-radius: 0;\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n display: grid;\\n grid-template-columns: 1fr 0.2fr;\\n align-items: center;\\n}\\n.excalidraw .context-menu-option.checkmark::before {\\n position: absolute;\\n left: 6px;\\n margin-bottom: 1px;\\n content: \\\"✓\\\";\\n}\\n.excalidraw .context-menu-option.dangerous .context-menu-option__label {\\n color: #f03e3e;\\n}\\n.excalidraw .context-menu-option .context-menu-option__label {\\n justify-self: start;\\n margin-inline-end: 20px;\\n}\\n.excalidraw .context-menu-option .context-menu-option__shortcut {\\n justify-self: end;\\n opacity: 0.6;\\n font-family: inherit;\\n font-size: 0.7rem;\\n}\\n.excalidraw .context-menu-option:hover {\\n color: var(--popup-bg-color);\\n background-color: var(--select-highlight-color);\\n}\\n.excalidraw .context-menu-option:hover.dangerous {\\n background-color: #fa5252;\\n}\\n.excalidraw .context-menu-option:hover.dangerous .context-menu-option__label {\\n color: var(--popup-bg-color);\\n}\\n.excalidraw .context-menu-option:focus {\\n z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option {\\n display: block;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option .context-menu-option__label {\\n margin-inline-end: 0;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option .context-menu-option__shortcut {\\n display: none;\\n}\\n\\n.excalidraw .context-menu-option-separator {\\n border: none;\\n border-top: 1px solid #adb5bd;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../components/ContextMenu.scss\",\"webpack://./../../css/variables.module.scss\",\"webpack://./../../../node_modules/open-color/open-color.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACiChB;EACE,2CAAA;EACA,wBAAA;AD/BF;;AADE;EACE,kBAAA;EACA,kBAAA;EACA,yCAAA;EACA,UAAA;EACA,gBAAA;EACA,yBAAA;UAAA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,iDAAA;EACA,sCAAA;EACA,eAAA;AAIJ;AADE;EACE,8BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,qCAAA;EACA,iBAAA;EACA,gBAAA;EACA,6BAAA;EACA,YAAA;EACA,mBAAA;EAEA,aAAA;EACA,gCAAA;EACA,mBAAA;AACJ;AACI;EACE,kBAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;AACN;AAGM;EACE,cEoBG;AFrBX;AAKI;EACE,mBAAA;EACA,uBAAA;AAHN;AAKI;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;AAHN;AAOE;EACE,4BAAA;EACA,+CAAA;AALJ;AAOI;EAIE,yBELK;AFHX;AAKM;EACE,4BAAA;AAHR;AASE;EACE,UAAA;AAPJ;AAWI;EACE,cAAA;AATN;AAWM;EACE,oBAAA;AATR;AAYM;EACE,aAAA;AAVR;;AAeE;EACE,YAAA;EACA,6BAAA;AAZJ\",\"sourcesContent\":[\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .context-menu {\\n position: relative;\\n border-radius: 4px;\\n box-shadow: 0 3px 10px transparentize($oc-black, 0.8);\\n padding: 0;\\n list-style: none;\\n user-select: none;\\n margin: -0.25rem 0 0 0.125rem;\\n padding: 0.5rem 0;\\n background-color: var(--popup-secondary-bg-color);\\n border: 1px solid var(--button-gray-3);\\n cursor: default;\\n }\\n\\n .context-menu button {\\n color: var(--popup-text-color);\\n }\\n\\n .context-menu-option {\\n position: relative;\\n width: 100%;\\n min-width: 9.5rem;\\n margin: 0;\\n padding: 0.25rem 1rem 0.25rem 1.25rem;\\n text-align: start;\\n border-radius: 0;\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n\\n display: grid;\\n grid-template-columns: 1fr 0.2fr;\\n align-items: center;\\n\\n &.checkmark::before {\\n position: absolute;\\n left: 6px;\\n margin-bottom: 1px;\\n content: \\\"\\\\2713\\\";\\n }\\n\\n &.dangerous {\\n .context-menu-option__label {\\n color: $oc-red-7;\\n }\\n }\\n\\n .context-menu-option__label {\\n justify-self: start;\\n margin-inline-end: 20px;\\n }\\n .context-menu-option__shortcut {\\n justify-self: end;\\n opacity: 0.6;\\n font-family: inherit;\\n font-size: 0.7rem;\\n }\\n }\\n\\n .context-menu-option:hover {\\n color: var(--popup-bg-color);\\n background-color: var(--select-highlight-color);\\n\\n &.dangerous {\\n .context-menu-option__label {\\n color: var(--popup-bg-color);\\n }\\n background-color: $oc-red-6;\\n }\\n }\\n\\n .context-menu-option:focus {\\n z-index: 1;\\n }\\n\\n @include isMobile {\\n .context-menu-option {\\n display: block;\\n\\n .context-menu-option__label {\\n margin-inline-end: 0;\\n }\\n\\n .context-menu-option__shortcut {\\n display: none;\\n }\\n }\\n }\\n\\n .context-menu-option-separator {\\n border: none;\\n border-top: 1px solid $oc-gray-5;\\n }\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"//\\n//\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\n// v 1.9.1\\n//\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\\n\\n// General\\n// ───────────────────────────────────\\n\\n$oc-white: #ffffff;\\n$oc-black: #000000;\\n\\n\\n// Gray\\n// ───────────────────────────────────\\n\\n$oc-gray-list: (\\n \\\"0\\\": #f8f9fa,\\n \\\"1\\\": #f1f3f5,\\n \\\"2\\\": #e9ecef,\\n \\\"3\\\": #dee2e6,\\n \\\"4\\\": #ced4da,\\n \\\"5\\\": #adb5bd,\\n \\\"6\\\": #868e96,\\n \\\"7\\\": #495057,\\n \\\"8\\\": #343a40,\\n \\\"9\\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\\"0\\\");\\n$oc-gray-1: map-get($oc-gray-list, \\\"1\\\");\\n$oc-gray-2: map-get($oc-gray-list, \\\"2\\\");\\n$oc-gray-3: map-get($oc-gray-list, \\\"3\\\");\\n$oc-gray-4: map-get($oc-gray-list, \\\"4\\\");\\n$oc-gray-5: map-get($oc-gray-list, \\\"5\\\");\\n$oc-gray-6: map-get($oc-gray-list, \\\"6\\\");\\n$oc-gray-7: map-get($oc-gray-list, \\\"7\\\");\\n$oc-gray-8: map-get($oc-gray-list, \\\"8\\\");\\n$oc-gray-9: map-get($oc-gray-list, \\\"9\\\");\\n\\n\\n// Red\\n// ───────────────────────────────────\\n\\n$oc-red-list: (\\n \\\"0\\\": #fff5f5,\\n \\\"1\\\": #ffe3e3,\\n \\\"2\\\": #ffc9c9,\\n \\\"3\\\": #ffa8a8,\\n \\\"4\\\": #ff8787,\\n \\\"5\\\": #ff6b6b,\\n \\\"6\\\": #fa5252,\\n \\\"7\\\": #f03e3e,\\n \\\"8\\\": #e03131,\\n \\\"9\\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\\"0\\\");\\n$oc-red-1: map-get($oc-red-list, \\\"1\\\");\\n$oc-red-2: map-get($oc-red-list, \\\"2\\\");\\n$oc-red-3: map-get($oc-red-list, \\\"3\\\");\\n$oc-red-4: map-get($oc-red-list, \\\"4\\\");\\n$oc-red-5: map-get($oc-red-list, \\\"5\\\");\\n$oc-red-6: map-get($oc-red-list, \\\"6\\\");\\n$oc-red-7: map-get($oc-red-list, \\\"7\\\");\\n$oc-red-8: map-get($oc-red-list, \\\"8\\\");\\n$oc-red-9: map-get($oc-red-list, \\\"9\\\");\\n\\n\\n// Pink\\n// ───────────────────────────────────\\n\\n$oc-pink-list: (\\n \\\"0\\\": #fff0f6,\\n \\\"1\\\": #ffdeeb,\\n \\\"2\\\": #fcc2d7,\\n \\\"3\\\": #faa2c1,\\n \\\"4\\\": #f783ac,\\n \\\"5\\\": #f06595,\\n \\\"6\\\": #e64980,\\n \\\"7\\\": #d6336c,\\n \\\"8\\\": #c2255c,\\n \\\"9\\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\\"0\\\");\\n$oc-pink-1: map-get($oc-pink-list, \\\"1\\\");\\n$oc-pink-2: map-get($oc-pink-list, \\\"2\\\");\\n$oc-pink-3: map-get($oc-pink-list, \\\"3\\\");\\n$oc-pink-4: map-get($oc-pink-list, \\\"4\\\");\\n$oc-pink-5: map-get($oc-pink-list, \\\"5\\\");\\n$oc-pink-6: map-get($oc-pink-list, \\\"6\\\");\\n$oc-pink-7: map-get($oc-pink-list, \\\"7\\\");\\n$oc-pink-8: map-get($oc-pink-list, \\\"8\\\");\\n$oc-pink-9: map-get($oc-pink-list, \\\"9\\\");\\n\\n\\n// Grape\\n// ───────────────────────────────────\\n\\n$oc-grape-list: (\\n \\\"0\\\": #f8f0fc,\\n \\\"1\\\": #f3d9fa,\\n \\\"2\\\": #eebefa,\\n \\\"3\\\": #e599f7,\\n \\\"4\\\": #da77f2,\\n \\\"5\\\": #cc5de8,\\n \\\"6\\\": #be4bdb,\\n \\\"7\\\": #ae3ec9,\\n \\\"8\\\": #9c36b5,\\n \\\"9\\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\\"0\\\");\\n$oc-grape-1: map-get($oc-grape-list, \\\"1\\\");\\n$oc-grape-2: map-get($oc-grape-list, \\\"2\\\");\\n$oc-grape-3: map-get($oc-grape-list, \\\"3\\\");\\n$oc-grape-4: map-get($oc-grape-list, \\\"4\\\");\\n$oc-grape-5: map-get($oc-grape-list, \\\"5\\\");\\n$oc-grape-6: map-get($oc-grape-list, \\\"6\\\");\\n$oc-grape-7: map-get($oc-grape-list, \\\"7\\\");\\n$oc-grape-8: map-get($oc-grape-list, \\\"8\\\");\\n$oc-grape-9: map-get($oc-grape-list, \\\"9\\\");\\n\\n\\n// Violet\\n// ───────────────────────────────────\\n\\n$oc-violet-list: (\\n \\\"0\\\": #f3f0ff,\\n \\\"1\\\": #e5dbff,\\n \\\"2\\\": #d0bfff,\\n \\\"3\\\": #b197fc,\\n \\\"4\\\": #9775fa,\\n \\\"5\\\": #845ef7,\\n \\\"6\\\": #7950f2,\\n \\\"7\\\": #7048e8,\\n \\\"8\\\": #6741d9,\\n \\\"9\\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\\"0\\\");\\n$oc-violet-1: map-get($oc-violet-list, \\\"1\\\");\\n$oc-violet-2: map-get($oc-violet-list, \\\"2\\\");\\n$oc-violet-3: map-get($oc-violet-list, \\\"3\\\");\\n$oc-violet-4: map-get($oc-violet-list, \\\"4\\\");\\n$oc-violet-5: map-get($oc-violet-list, \\\"5\\\");\\n$oc-violet-6: map-get($oc-violet-list, \\\"6\\\");\\n$oc-violet-7: map-get($oc-violet-list, \\\"7\\\");\\n$oc-violet-8: map-get($oc-violet-list, \\\"8\\\");\\n$oc-violet-9: map-get($oc-violet-list, \\\"9\\\");\\n\\n\\n// Indigo\\n// ───────────────────────────────────\\n\\n$oc-indigo-list: (\\n \\\"0\\\": #edf2ff,\\n \\\"1\\\": #dbe4ff,\\n \\\"2\\\": #bac8ff,\\n \\\"3\\\": #91a7ff,\\n \\\"4\\\": #748ffc,\\n \\\"5\\\": #5c7cfa,\\n \\\"6\\\": #4c6ef5,\\n \\\"7\\\": #4263eb,\\n \\\"8\\\": #3b5bdb,\\n \\\"9\\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\\"0\\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\\"1\\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\\"2\\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\\"3\\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\\"4\\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\\"5\\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\\"6\\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\\"7\\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\\"8\\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\\"9\\\");\\n\\n\\n// Blue\\n// ───────────────────────────────────\\n\\n$oc-blue-list: (\\n \\\"0\\\": #e7f5ff,\\n \\\"1\\\": #d0ebff,\\n \\\"2\\\": #a5d8ff,\\n \\\"3\\\": #74c0fc,\\n \\\"4\\\": #4dabf7,\\n \\\"5\\\": #339af0,\\n \\\"6\\\": #228be6,\\n \\\"7\\\": #1c7ed6,\\n \\\"8\\\": #1971c2,\\n \\\"9\\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\\"0\\\");\\n$oc-blue-1: map-get($oc-blue-list, \\\"1\\\");\\n$oc-blue-2: map-get($oc-blue-list, \\\"2\\\");\\n$oc-blue-3: map-get($oc-blue-list, \\\"3\\\");\\n$oc-blue-4: map-get($oc-blue-list, \\\"4\\\");\\n$oc-blue-5: map-get($oc-blue-list, \\\"5\\\");\\n$oc-blue-6: map-get($oc-blue-list, \\\"6\\\");\\n$oc-blue-7: map-get($oc-blue-list, \\\"7\\\");\\n$oc-blue-8: map-get($oc-blue-list, \\\"8\\\");\\n$oc-blue-9: map-get($oc-blue-list, \\\"9\\\");\\n\\n\\n// Cyan\\n// ───────────────────────────────────\\n\\n$oc-cyan-list: (\\n \\\"0\\\": #e3fafc,\\n \\\"1\\\": #c5f6fa,\\n \\\"2\\\": #99e9f2,\\n \\\"3\\\": #66d9e8,\\n \\\"4\\\": #3bc9db,\\n \\\"5\\\": #22b8cf,\\n \\\"6\\\": #15aabf,\\n \\\"7\\\": #1098ad,\\n \\\"8\\\": #0c8599,\\n \\\"9\\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\\"0\\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\\"1\\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\\"2\\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\\"3\\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\\"4\\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\\"5\\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\\"6\\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\\"7\\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\\"8\\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\\"9\\\");\\n\\n\\n// Teal\\n// ───────────────────────────────────\\n\\n$oc-teal-list: (\\n \\\"0\\\": #e6fcf5,\\n \\\"1\\\": #c3fae8,\\n \\\"2\\\": #96f2d7,\\n \\\"3\\\": #63e6be,\\n \\\"4\\\": #38d9a9,\\n \\\"5\\\": #20c997,\\n \\\"6\\\": #12b886,\\n \\\"7\\\": #0ca678,\\n \\\"8\\\": #099268,\\n \\\"9\\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\\"0\\\");\\n$oc-teal-1: map-get($oc-teal-list, \\\"1\\\");\\n$oc-teal-2: map-get($oc-teal-list, \\\"2\\\");\\n$oc-teal-3: map-get($oc-teal-list, \\\"3\\\");\\n$oc-teal-4: map-get($oc-teal-list, \\\"4\\\");\\n$oc-teal-5: map-get($oc-teal-list, \\\"5\\\");\\n$oc-teal-6: map-get($oc-teal-list, \\\"6\\\");\\n$oc-teal-7: map-get($oc-teal-list, \\\"7\\\");\\n$oc-teal-8: map-get($oc-teal-list, \\\"8\\\");\\n$oc-teal-9: map-get($oc-teal-list, \\\"9\\\");\\n\\n\\n// Green\\n// ───────────────────────────────────\\n\\n$oc-green-list: (\\n \\\"0\\\": #ebfbee,\\n \\\"1\\\": #d3f9d8,\\n \\\"2\\\": #b2f2bb,\\n \\\"3\\\": #8ce99a,\\n \\\"4\\\": #69db7c,\\n \\\"5\\\": #51cf66,\\n \\\"6\\\": #40c057,\\n \\\"7\\\": #37b24d,\\n \\\"8\\\": #2f9e44,\\n \\\"9\\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\\"0\\\");\\n$oc-green-1: map-get($oc-green-list, \\\"1\\\");\\n$oc-green-2: map-get($oc-green-list, \\\"2\\\");\\n$oc-green-3: map-get($oc-green-list, \\\"3\\\");\\n$oc-green-4: map-get($oc-green-list, \\\"4\\\");\\n$oc-green-5: map-get($oc-green-list, \\\"5\\\");\\n$oc-green-6: map-get($oc-green-list, \\\"6\\\");\\n$oc-green-7: map-get($oc-green-list, \\\"7\\\");\\n$oc-green-8: map-get($oc-green-list, \\\"8\\\");\\n$oc-green-9: map-get($oc-green-list, \\\"9\\\");\\n\\n\\n// Lime\\n// ───────────────────────────────────\\n\\n$oc-lime-list: (\\n \\\"0\\\": #f4fce3,\\n \\\"1\\\": #e9fac8,\\n \\\"2\\\": #d8f5a2,\\n \\\"3\\\": #c0eb75,\\n \\\"4\\\": #a9e34b,\\n \\\"5\\\": #94d82d,\\n \\\"6\\\": #82c91e,\\n \\\"7\\\": #74b816,\\n \\\"8\\\": #66a80f,\\n \\\"9\\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\\"0\\\");\\n$oc-lime-1: map-get($oc-lime-list, \\\"1\\\");\\n$oc-lime-2: map-get($oc-lime-list, \\\"2\\\");\\n$oc-lime-3: map-get($oc-lime-list, \\\"3\\\");\\n$oc-lime-4: map-get($oc-lime-list, \\\"4\\\");\\n$oc-lime-5: map-get($oc-lime-list, \\\"5\\\");\\n$oc-lime-6: map-get($oc-lime-list, \\\"6\\\");\\n$oc-lime-7: map-get($oc-lime-list, \\\"7\\\");\\n$oc-lime-8: map-get($oc-lime-list, \\\"8\\\");\\n$oc-lime-9: map-get($oc-lime-list, \\\"9\\\");\\n\\n\\n// Yellow\\n// ───────────────────────────────────\\n\\n$oc-yellow-list: (\\n \\\"0\\\": #fff9db,\\n \\\"1\\\": #fff3bf,\\n \\\"2\\\": #ffec99,\\n \\\"3\\\": #ffe066,\\n \\\"4\\\": #ffd43b,\\n \\\"5\\\": #fcc419,\\n \\\"6\\\": #fab005,\\n \\\"7\\\": #f59f00,\\n \\\"8\\\": #f08c00,\\n \\\"9\\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\\"0\\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\\"1\\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\\"2\\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\\"3\\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\\"4\\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\\"5\\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\\"6\\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\\"7\\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\\"8\\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\\"9\\\");\\n\\n\\n// Orange\\n// ───────────────────────────────────\\n\\n$oc-orange-list: (\\n \\\"0\\\": #fff4e6,\\n \\\"1\\\": #ffe8cc,\\n \\\"2\\\": #ffd8a8,\\n \\\"3\\\": #ffc078,\\n \\\"4\\\": #ffa94d,\\n \\\"5\\\": #ff922b,\\n \\\"6\\\": #fd7e14,\\n \\\"7\\\": #f76707,\\n \\\"8\\\": #e8590c,\\n \\\"9\\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\\"0\\\");\\n$oc-orange-1: map-get($oc-orange-list, \\\"1\\\");\\n$oc-orange-2: map-get($oc-orange-list, \\\"2\\\");\\n$oc-orange-3: map-get($oc-orange-list, \\\"3\\\");\\n$oc-orange-4: map-get($oc-orange-list, \\\"4\\\");\\n$oc-orange-5: map-get($oc-orange-list, \\\"5\\\");\\n$oc-orange-6: map-get($oc-orange-list, \\\"6\\\");\\n$oc-orange-7: map-get($oc-orange-list, \\\"7\\\");\\n$oc-orange-8: map-get($oc-orange-list, \\\"8\\\");\\n$oc-orange-9: map-get($oc-orange-list, \\\"9\\\");\\n\\n\\n// Color list\\n// ───────────────────────────────────\\n\\n$oc-color-spectrum: 9;\\n\\n$oc-color-list: (\\n $oc-gray-list: \\\"gray\\\",\\n $oc-red-list: \\\"red\\\",\\n $oc-pink-list: \\\"pink\\\",\\n $oc-grape-list: \\\"grape\\\",\\n $oc-violet-list: \\\"violet\\\",\\n $oc-indigo-list: \\\"indigo\\\",\\n $oc-blue-list: \\\"blue\\\",\\n $oc-cyan-list: \\\"cyan\\\",\\n $oc-teal-list: \\\"teal\\\",\\n $oc-green-list: \\\"green\\\",\\n $oc-lime-list: \\\"lime\\\",\\n $oc-yellow-list: \\\"yellow\\\",\\n $oc-orange-list: \\\"orange\\\"\\n);\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDZEQUE2RCxXQUFXLGdEQUFnRCw2QkFBNkIsR0FBRywrQkFBK0IsdUJBQXVCLHVCQUF1Qiw4Q0FBOEMsZUFBZSxxQkFBcUIsOEJBQThCLDhCQUE4QixrQ0FBa0Msc0JBQXNCLHNEQUFzRCwyQ0FBMkMsb0JBQW9CLEdBQUcsb0NBQW9DLG1DQUFtQyxHQUFHLG9DQUFvQyx1QkFBdUIsZ0JBQWdCLHNCQUFzQixjQUFjLDBDQUEwQyxzQkFBc0IscUJBQXFCLGtDQUFrQyxpQkFBaUIsd0JBQXdCLGtCQUFrQixxQ0FBcUMsd0JBQXdCLEdBQUcsc0RBQXNELHVCQUF1QixjQUFjLHVCQUF1QixtQkFBbUIsR0FBRywwRUFBMEUsbUJBQW1CLEdBQUcsZ0VBQWdFLHdCQUF3Qiw0QkFBNEIsR0FBRyxtRUFBbUUsc0JBQXNCLGlCQUFpQix5QkFBeUIsc0JBQXNCLEdBQUcsMENBQTBDLGlDQUFpQyxvREFBb0QsR0FBRyxvREFBb0QsOEJBQThCLEdBQUcsZ0ZBQWdGLGlDQUFpQyxHQUFHLDBDQUEwQyxlQUFlLEdBQUcsdURBQXVELG1CQUFtQixHQUFHLG1GQUFtRix5QkFBeUIsR0FBRyxzRkFBc0Ysa0JBQWtCLEdBQUcsZ0RBQWdELGlCQUFpQixrQ0FBa0MsR0FBRyxPQUFPLHdOQUF3TixPQUFPLFdBQVcsV0FBVyxPQUFPLEtBQUssV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcs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REFBZ0QsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0QyxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QseUZBQXlGLHVkQUF1ZCxxQkFBcUI7QUFDcDdmO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzP2E2MzUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBwYWRkaW5nOiAwO1xcbiAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgbWFyZ2luOiAtMC4yNXJlbSAwIDAgMC4xMjVyZW07XFxuICBwYWRkaW5nOiAwLjVyZW0gMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuLmV4Y2FsaWRyYXcgLmNvbnRleHQtbWVudSBidXR0b24ge1xcbiAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1pbi13aWR0aDogOS41cmVtO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtIDAuMjVyZW0gMS4yNXJlbTtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyOiBub25lO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAwLjJmcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uLmNoZWNrbWFyazo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDZweDtcXG4gIG1hcmdpbi1ib3R0b206IDFweDtcXG4gIGNvbnRlbnQ6IFxcXCLinJNcXFwiO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbi5kYW5nZXJvdXMgLmNvbnRleHQtbWVudS1vcHRpb25fX2xhYmVsIHtcXG4gIGNvbG9yOiAjZjAzZTNlO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiAuY29udGV4dC1tZW51LW9wdGlvbl9fbGFiZWwge1xcbiAganVzdGlmeS1zZWxmOiBzdGFydDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAyMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiAuY29udGV4dC1tZW51LW9wdGlvbl9fc2hvcnRjdXQge1xcbiAganVzdGlmeS1zZWxmOiBlbmQ7XFxuICBvcGFjaXR5OiAwLjY7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbjpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0tcG9wdXAtYmctY29sb3IpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uOmhvdmVyLmRhbmdlcm91cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmE1MjUyO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbjpob3Zlci5kYW5nZXJvdXMgLmNvbnRleHQtbWVudS1vcHRpb25fX2xhYmVsIHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC1iZy1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uOmZvY3VzIHtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICBtYXJnaW4taW5saW5lLWVuZDogMDtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uIC5jb250ZXh0LW1lbnUtb3B0aW9uX19zaG9ydGN1dCB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbi1zZXBhcmF0b3Ige1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhZGI1YmQ7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvQ29udGV4dE1lbnUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL29wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ2lDaEI7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FEL0JGOztBQURFO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlDQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7VUFBQSxpQkFBQTtFQUNBLDZCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpREFBQTtFQUNBLHNDQUFBO0VBQ0EsZUFBQTtBQUlKO0FBREU7RUFDRSw4QkFBQTtBQUdKO0FBQUU7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxxQ0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSw2QkFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUVBLGFBQUE7RUFDQSxnQ0FBQTtFQUNBLG1CQUFBO0FBQ0o7QUFDSTtFQUNFLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtBQUNOO0FBR007RUFDRSxjRW9CRztBRnJCWDtBQUtJO0VBQ0UsbUJBQUE7RUFDQSx1QkFBQTtBQUhOO0FBS0k7RUFDRSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxvQkFBQTtFQUNBLGlCQUFBO0FBSE47QUFPRTtFQUNFLDRCQUFBO0VBQ0EsK0NBQUE7QUFMSjtBQU9JO0VBSUUseUJFTEs7QUZIWDtBQUtNO0VBQ0UsNEJBQUE7QUFIUjtBQVNFO0VBQ0UsVUFBQTtBQVBKO0FBV0k7RUFDRSxjQUFBO0FBVE47QUFXTTtFQUNFLG9CQUFBO0FBVFI7QUFZTTtFQUNFLGFBQUE7QUFWUjs7QUFlRTtFQUNFLFlBQUE7RUFDQSw2QkFBQTtBQVpKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcIi4uL2Nzcy92YXJpYWJsZXMubW9kdWxlXFxcIjtcXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAuY29udGV4dC1tZW51IHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIGJveC1zaGFkb3c6IDAgM3B4IDEwcHggdHJhbnNwYXJlbnRpemUoJG9jLWJsYWNrLCAwLjgpO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBsaXN0LXN0eWxlOiBub25lO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgbWFyZ2luOiAtMC4yNXJlbSAwIDAgMC4xMjVyZW07XFxuICAgIHBhZGRpbmc6IDAuNXJlbSAwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3IpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgfVxcblxcbiAgLmNvbnRleHQtbWVudSBidXR0b24ge1xcbiAgICBjb2xvcjogdmFyKC0tcG9wdXAtdGV4dC1jb2xvcik7XFxuICB9XFxuXFxuICAuY29udGV4dC1tZW51LW9wdGlvbiB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG1pbi13aWR0aDogOS41cmVtO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDAuMjVyZW0gMXJlbSAwLjI1cmVtIDEuMjVyZW07XFxuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgICBib3JkZXItcmFkaXVzOiAwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAwLjJmcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgJi5jaGVja21hcms6OmJlZm9yZSB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGxlZnQ6IDZweDtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAxcHg7XFxuICAgICAgY29udGVudDogXFxcIlxcXFwyNzEzXFxcIjtcXG4gICAgfVxcblxcbiAgICAmLmRhbmdlcm91cyB7XFxuICAgICAgLmNvbnRleHQtbWVudS1vcHRpb25fX2xhYmVsIHtcXG4gICAgICAgIGNvbG9yOiAkb2MtcmVkLTc7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcXG4gICAgICBtYXJnaW4taW5saW5lLWVuZDogMjBweDtcXG4gICAgfVxcbiAgICAuY29udGV4dC1tZW51LW9wdGlvbl9fc2hvcnRjdXQge1xcbiAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xcbiAgICAgIG9wYWNpdHk6IDAuNjtcXG4gICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gICAgICBmb250LXNpemU6IDAuN3JlbTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNvbnRleHQtbWVudS1vcHRpb246aG92ZXIge1xcbiAgICBjb2xvcjogdmFyKC0tcG9wdXAtYmctY29sb3IpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yKTtcXG5cXG4gICAgJi5kYW5nZXJvdXMge1xcbiAgICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICAgICAgICBjb2xvcjogdmFyKC0tcG9wdXAtYmctY29sb3IpO1xcbiAgICAgIH1cXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2MtcmVkLTY7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jb250ZXh0LW1lbnUtb3B0aW9uOmZvY3VzIHtcXG4gICAgei1pbmRleDogMTtcXG4gIH1cXG5cXG4gIEBpbmNsdWRlIGlzTW9iaWxlIHtcXG4gICAgLmNvbnRleHQtbWVudS1vcHRpb24ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcblxcbiAgICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogMDtcXG4gICAgICB9XFxuXFxuICAgICAgLmNvbnRleHQtbWVudS1vcHRpb25fX3Nob3J0Y3V0IHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuY29udGV4dC1tZW51LW9wdGlvbi1zZXBhcmF0b3Ige1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkb2MtZ3JheS01O1xcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5cXG5AbWl4aW4gaXNNb2JpbGUoKSB7XFxuICBAYXQtcm9vdCAuZXhjYWxpZHJhdy0tbW9iaWxlI3smfSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gdG9vbGJhckJ1dHRvbkNvbG9yU3RhdGVzIHtcXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICAmICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19rZXliaW5kaW5nIHtcXG4gICAgYm90dG9tOiA0cHg7XFxuICAgIHJpZ2h0OiA0cHg7XFxuICB9XFxufVxcblxcbiR0aGVtZS1maWx0ZXI6IFxcXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcXFwiO1xcbiRyaWdodC1zaWRlYmFyLXdpZHRoOiBcXFwiMzAycHhcXFwiO1xcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IHVucXVvdGUoJHRoZW1lLWZpbHRlcik7XFxuICByaWdodFNpZGViYXJXaWR0aDogdW5xdW90ZSgkcmlnaHQtc2lkZWJhci13aWR0aCk7XFxufVxcblwiLFwiLy9cXG4vL1xcbi8vICDwnZeWIPCdl6Ig8J2XnyDwnZeiIPCdl6VcXG4vLyAgdiAxLjkuMVxcbi8vXFxuLy8gIOKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgVxcblxcblxcbi8vICBHZW5lcmFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy13aGl0ZTogICAgICAgICAjZmZmZmZmO1xcbiRvYy1ibGFjazogICAgICAgICAjMDAwMDAwO1xcblxcblxcbi8vICBHcmF5XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmF5LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjlmYSxcXG4gIFxcXCIxXFxcIjogI2YxZjNmNSxcXG4gIFxcXCIyXFxcIjogI2U5ZWNlZixcXG4gIFxcXCIzXFxcIjogI2RlZTJlNixcXG4gIFxcXCI0XFxcIjogI2NlZDRkYSxcXG4gIFxcXCI1XFxcIjogI2FkYjViZCxcXG4gIFxcXCI2XFxcIjogIzg2OGU5NixcXG4gIFxcXCI3XFxcIjogIzQ5NTA1NyxcXG4gIFxcXCI4XFxcIjogIzM0M2E0MCxcXG4gIFxcXCI5XFxcIjogIzIxMjUyOVxcbik7XFxuXFxuJG9jLWdyYXktMDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmF5LTE6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JheS0yOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXktMzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmF5LTQ6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JheS01OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXktNjogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmF5LTc6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JheS04OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXktOTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBSZWRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXJlZC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY1ZjUsXFxuICBcXFwiMVxcXCI6ICNmZmUzZTMsXFxuICBcXFwiMlxcXCI6ICNmZmM5YzksXFxuICBcXFwiM1xcXCI6ICNmZmE4YTgsXFxuICBcXFwiNFxcXCI6ICNmZjg3ODcsXFxuICBcXFwiNVxcXCI6ICNmZjZiNmIsXFxuICBcXFwiNlxcXCI6ICNmYTUyNTIsXFxuICBcXFwiN1xcXCI6ICNmMDNlM2UsXFxuICBcXFwiOFxcXCI6ICNlMDMxMzEsXFxuICBcXFwiOVxcXCI6ICNjOTJhMmFcXG4pO1xcblxcbiRvYy1yZWQtMDogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXJlZC0xOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtcmVkLTI6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1yZWQtMzogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXJlZC00OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtcmVkLTU6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1yZWQtNjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXJlZC03OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtcmVkLTg6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1yZWQtOTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFBpbmtcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXBpbmstbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmMGY2LFxcbiAgXFxcIjFcXFwiOiAjZmZkZWViLFxcbiAgXFxcIjJcXFwiOiAjZmNjMmQ3LFxcbiAgXFxcIjNcXFwiOiAjZmFhMmMxLFxcbiAgXFxcIjRcXFwiOiAjZjc4M2FjLFxcbiAgXFxcIjVcXFwiOiAjZjA2NTk1LFxcbiAgXFxcIjZcXFwiOiAjZTY0OTgwLFxcbiAgXFxcIjdcXFwiOiAjZDYzMzZjLFxcbiAgXFxcIjhcXFwiOiAjYzIyNTVjLFxcbiAgXFxcIjlcXFwiOiAjYTYxZTRkXFxuKTtcXG5cXG4kb2MtcGluay0wOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXBpbmstMTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1waW5rLTI6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtcGluay0zOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXBpbmstNDogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1waW5rLTU6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtcGluay02OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXBpbmstNzogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1waW5rLTg6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtcGluay05OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEdyYXBlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmFwZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmOGYwZmMsXFxuICBcXFwiMVxcXCI6ICNmM2Q5ZmEsXFxuICBcXFwiMlxcXCI6ICNlZWJlZmEsXFxuICBcXFwiM1xcXCI6ICNlNTk5ZjcsXFxuICBcXFwiNFxcXCI6ICNkYTc3ZjIsXFxuICBcXFwiNVxcXCI6ICNjYzVkZTgsXFxuICBcXFwiNlxcXCI6ICNiZTRiZGIsXFxuICBcXFwiN1xcXCI6ICNhZTNlYzksXFxuICBcXFwiOFxcXCI6ICM5YzM2YjUsXFxuICBcXFwiOVxcXCI6ICM4NjJlOWNcXG4pO1xcblxcbiRvYy1ncmFwZS0wOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmFwZS0xOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmFwZS0yOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmFwZS0zOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmFwZS00OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmFwZS01OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmFwZS02OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmFwZS03OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmFwZS04OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmFwZS05OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBWaW9sZXRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXZpb2xldC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmM2YwZmYsXFxuICBcXFwiMVxcXCI6ICNlNWRiZmYsXFxuICBcXFwiMlxcXCI6ICNkMGJmZmYsXFxuICBcXFwiM1xcXCI6ICNiMTk3ZmMsXFxuICBcXFwiNFxcXCI6ICM5Nzc1ZmEsXFxuICBcXFwiNVxcXCI6ICM4NDVlZjcsXFxuICBcXFwiNlxcXCI6ICM3OTUwZjIsXFxuICBcXFwiN1xcXCI6ICM3MDQ4ZTgsXFxuICBcXFwiOFxcXCI6ICM2NzQxZDksXFxuICBcXFwiOVxcXCI6ICM1ZjNkYzRcXG4pO1xcblxcbiRvYy12aW9sZXQtMDogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXZpb2xldC0xOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdmlvbGV0LTI6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy12aW9sZXQtMzogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXZpb2xldC00OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdmlvbGV0LTU6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy12aW9sZXQtNjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXZpb2xldC03OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdmlvbGV0LTg6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy12aW9sZXQtOTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEluZGlnb1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtaW5kaWdvLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2VkZjJmZixcXG4gIFxcXCIxXFxcIjogI2RiZTRmZixcXG4gIFxcXCIyXFxcIjogI2JhYzhmZixcXG4gIFxcXCIzXFxcIjogIzkxYTdmZixcXG4gIFxcXCI0XFxcIjogIzc0OGZmYyxcXG4gIFxcXCI1XFxcIjogIzVjN2NmYSxcXG4gIFxcXCI2XFxcIjogIzRjNmVmNSxcXG4gIFxcXCI3XFxcIjogIzQyNjNlYixcXG4gIFxcXCI4XFxcIjogIzNiNWJkYixcXG4gIFxcXCI5XFxcIjogIzM2NGZjN1xcbik7XFxuXFxuJG9jLWluZGlnby0wOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtaW5kaWdvLTE6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1pbmRpZ28tMjogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWluZGlnby0zOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtaW5kaWdvLTQ6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1pbmRpZ28tNTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWluZGlnby02OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtaW5kaWdvLTc6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1pbmRpZ28tODogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWluZGlnby05OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQmx1ZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtYmx1ZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlN2Y1ZmYsXFxuICBcXFwiMVxcXCI6ICNkMGViZmYsXFxuICBcXFwiMlxcXCI6ICNhNWQ4ZmYsXFxuICBcXFwiM1xcXCI6ICM3NGMwZmMsXFxuICBcXFwiNFxcXCI6ICM0ZGFiZjcsXFxuICBcXFwiNVxcXCI6ICMzMzlhZjAsXFxuICBcXFwiNlxcXCI6ICMyMjhiZTYsXFxuICBcXFwiN1xcXCI6ICMxYzdlZDYsXFxuICBcXFwiOFxcXCI6ICMxOTcxYzIsXFxuICBcXFwiOVxcXCI6ICMxODY0YWJcXG4pO1xcblxcbiRvYy1ibHVlLTA6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtYmx1ZS0xOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWJsdWUtMjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ibHVlLTM6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtYmx1ZS00OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWJsdWUtNTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ibHVlLTY6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtYmx1ZS03OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWJsdWUtODogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ibHVlLTk6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQ3lhblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtY3lhbi1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlM2ZhZmMsXFxuICBcXFwiMVxcXCI6ICNjNWY2ZmEsXFxuICBcXFwiMlxcXCI6ICM5OWU5ZjIsXFxuICBcXFwiM1xcXCI6ICM2NmQ5ZTgsXFxuICBcXFwiNFxcXCI6ICMzYmM5ZGIsXFxuICBcXFwiNVxcXCI6ICMyMmI4Y2YsXFxuICBcXFwiNlxcXCI6ICMxNWFhYmYsXFxuICBcXFwiN1xcXCI6ICMxMDk4YWQsXFxuICBcXFwiOFxcXCI6ICMwYzg1OTksXFxuICBcXFwiOVxcXCI6ICMwYjcyODVcXG4pO1xcblxcbiRvYy1jeWFuLTA6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtY3lhbi0xOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWN5YW4tMjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1jeWFuLTM6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtY3lhbi00OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWN5YW4tNTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1jeWFuLTY6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtY3lhbi03OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWN5YW4tODogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1jeWFuLTk6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgVGVhbFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdGVhbC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlNmZjZjUsXFxuICBcXFwiMVxcXCI6ICNjM2ZhZTgsXFxuICBcXFwiMlxcXCI6ICM5NmYyZDcsXFxuICBcXFwiM1xcXCI6ICM2M2U2YmUsXFxuICBcXFwiNFxcXCI6ICMzOGQ5YTksXFxuICBcXFwiNVxcXCI6ICMyMGM5OTcsXFxuICBcXFwiNlxcXCI6ICMxMmI4ODYsXFxuICBcXFwiN1xcXCI6ICMwY2E2NzgsXFxuICBcXFwiOFxcXCI6ICMwOTkyNjgsXFxuICBcXFwiOVxcXCI6ICMwODdmNWJcXG4pO1xcblxcbiRvYy10ZWFsLTA6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdGVhbC0xOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXRlYWwtMjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy10ZWFsLTM6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdGVhbC00OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXRlYWwtNTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy10ZWFsLTY6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdGVhbC03OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXRlYWwtODogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy10ZWFsLTk6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JlZW5cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyZWVuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ViZmJlZSxcXG4gIFxcXCIxXFxcIjogI2QzZjlkOCxcXG4gIFxcXCIyXFxcIjogI2IyZjJiYixcXG4gIFxcXCIzXFxcIjogIzhjZTk5YSxcXG4gIFxcXCI0XFxcIjogIzY5ZGI3YyxcXG4gIFxcXCI1XFxcIjogIzUxY2Y2NixcXG4gIFxcXCI2XFxcIjogIzQwYzA1NyxcXG4gIFxcXCI3XFxcIjogIzM3YjI0ZCxcXG4gIFxcXCI4XFxcIjogIzJmOWU0NCxcXG4gIFxcXCI5XFxcIjogIzJiOGEzZVxcbik7XFxuXFxuJG9jLWdyZWVuLTA6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyZWVuLTE6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyZWVuLTI6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyZWVuLTM6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyZWVuLTQ6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyZWVuLTU6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyZWVuLTY6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyZWVuLTc6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyZWVuLTg6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyZWVuLTk6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIExpbWVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWxpbWUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjRmY2UzLFxcbiAgXFxcIjFcXFwiOiAjZTlmYWM4LFxcbiAgXFxcIjJcXFwiOiAjZDhmNWEyLFxcbiAgXFxcIjNcXFwiOiAjYzBlYjc1LFxcbiAgXFxcIjRcXFwiOiAjYTllMzRiLFxcbiAgXFxcIjVcXFwiOiAjOTRkODJkLFxcbiAgXFxcIjZcXFwiOiAjODJjOTFlLFxcbiAgXFxcIjdcXFwiOiAjNzRiODE2LFxcbiAgXFxcIjhcXFwiOiAjNjZhODBmLFxcbiAgXFxcIjlcXFwiOiAjNWM5NDBkXFxuKTtcXG5cXG4kb2MtbGltZS0wOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWxpbWUtMTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1saW1lLTI6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtbGltZS0zOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWxpbWUtNDogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1saW1lLTU6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtbGltZS02OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWxpbWUtNzogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1saW1lLTg6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtbGltZS05OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFllbGxvd1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MteWVsbG93LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjlkYixcXG4gIFxcXCIxXFxcIjogI2ZmZjNiZixcXG4gIFxcXCIyXFxcIjogI2ZmZWM5OSxcXG4gIFxcXCIzXFxcIjogI2ZmZTA2NixcXG4gIFxcXCI0XFxcIjogI2ZmZDQzYixcXG4gIFxcXCI1XFxcIjogI2ZjYzQxOSxcXG4gIFxcXCI2XFxcIjogI2ZhYjAwNSxcXG4gIFxcXCI3XFxcIjogI2Y1OWYwMCxcXG4gIFxcXCI4XFxcIjogI2YwOGMwMCxcXG4gIFxcXCI5XFxcIjogI2U2NzcwMFxcbik7XFxuXFxuJG9jLXllbGxvdy0wOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MteWVsbG93LTE6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy15ZWxsb3ctMjogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXllbGxvdy0zOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MteWVsbG93LTQ6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy15ZWxsb3ctNTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXllbGxvdy02OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MteWVsbG93LTc6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy15ZWxsb3ctODogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXllbGxvdy05OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgT3JhbmdlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1vcmFuZ2UtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmNGU2LFxcbiAgXFxcIjFcXFwiOiAjZmZlOGNjLFxcbiAgXFxcIjJcXFwiOiAjZmZkOGE4LFxcbiAgXFxcIjNcXFwiOiAjZmZjMDc4LFxcbiAgXFxcIjRcXFwiOiAjZmZhOTRkLFxcbiAgXFxcIjVcXFwiOiAjZmY5MjJiLFxcbiAgXFxcIjZcXFwiOiAjZmQ3ZTE0LFxcbiAgXFxcIjdcXFwiOiAjZjc2NzA3LFxcbiAgXFxcIjhcXFwiOiAjZTg1OTBjLFxcbiAgXFxcIjlcXFwiOiAjZDk0ODBmXFxuKTtcXG5cXG4kb2Mtb3JhbmdlLTA6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1vcmFuZ2UtMTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLW9yYW5nZS0yOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2Mtb3JhbmdlLTM6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1vcmFuZ2UtNDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLW9yYW5nZS01OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2Mtb3JhbmdlLTY6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1vcmFuZ2UtNzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLW9yYW5nZS04OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2Mtb3JhbmdlLTk6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDb2xvciBsaXN0XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jb2xvci1zcGVjdHJ1bTogICA5O1xcblxcbiRvYy1jb2xvci1saXN0OiAoXFxuICAkb2MtZ3JheS1saXN0OiAgICAgIFxcXCJncmF5XFxcIixcXG4gICRvYy1yZWQtbGlzdDogICAgICBcXFwicmVkXFxcIixcXG4gICRvYy1waW5rLWxpc3Q6ICAgICAgXFxcInBpbmtcXFwiLFxcbiAgJG9jLWdyYXBlLWxpc3Q6ICAgICAgXFxcImdyYXBlXFxcIixcXG4gICRvYy12aW9sZXQtbGlzdDogICAgICBcXFwidmlvbGV0XFxcIixcXG4gICRvYy1pbmRpZ28tbGlzdDogICAgICBcXFwiaW5kaWdvXFxcIixcXG4gICRvYy1ibHVlLWxpc3Q6ICAgICAgXFxcImJsdWVcXFwiLFxcbiAgJG9jLWN5YW4tbGlzdDogICAgICBcXFwiY3lhblxcXCIsXFxuICAkb2MtdGVhbC1saXN0OiAgICAgIFxcXCJ0ZWFsXFxcIixcXG4gICRvYy1ncmVlbi1saXN0OiAgICAgIFxcXCJncmVlblxcXCIsXFxuICAkb2MtbGltZS1saXN0OiAgICAgIFxcXCJsaW1lXFxcIixcXG4gICRvYy15ZWxsb3ctbGlzdDogICAgICBcXFwieWVsbG93XFxcIixcXG4gICRvYy1vcmFuZ2UtbGlzdDogICAgICBcXFwib3JhbmdlXFxcIlxcbik7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss\n");
1328
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\n:export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .context-menu {\\n position: relative;\\n border-radius: 4px;\\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\\n padding: 0;\\n list-style: none;\\n user-select: none;\\n margin: -0.25rem 0 0 0.125rem;\\n padding: 0.5rem 0;\\n background-color: var(--popup-secondary-bg-color);\\n border: 1px solid var(--button-gray-3);\\n cursor: default;\\n}\\n.excalidraw .context-menu button {\\n color: var(--popup-text-color);\\n}\\n.excalidraw .context-menu-option {\\n position: relative;\\n width: 100%;\\n min-width: 9.5rem;\\n margin: 0;\\n padding: 0.25rem 1rem 0.25rem 1.25rem;\\n text-align: start;\\n border-radius: 0;\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n display: grid;\\n grid-template-columns: 1fr 0.2fr;\\n align-items: center;\\n}\\n.excalidraw .context-menu-option.checkmark::before {\\n position: absolute;\\n left: 6px;\\n margin-bottom: 1px;\\n content: \\\"✓\\\";\\n}\\n.excalidraw .context-menu-option.dangerous .context-menu-option__label {\\n color: #f03e3e;\\n}\\n.excalidraw .context-menu-option .context-menu-option__label {\\n justify-self: start;\\n margin-inline-end: 20px;\\n}\\n.excalidraw .context-menu-option .context-menu-option__shortcut {\\n justify-self: end;\\n opacity: 0.6;\\n font-family: inherit;\\n font-size: 0.7rem;\\n}\\n.excalidraw .context-menu-option:hover {\\n color: var(--popup-bg-color);\\n background-color: var(--select-highlight-color);\\n}\\n.excalidraw .context-menu-option:hover.dangerous {\\n background-color: #fa5252;\\n}\\n.excalidraw .context-menu-option:hover.dangerous .context-menu-option__label {\\n color: var(--popup-bg-color);\\n}\\n.excalidraw .context-menu-option:focus {\\n z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option {\\n display: block;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option .context-menu-option__label {\\n margin-inline-end: 0;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-option .context-menu-option__shortcut {\\n display: none;\\n}\\n\\n.excalidraw .context-menu-option-separator {\\n border: none;\\n border-top: 1px solid #adb5bd;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../components/ContextMenu.scss\",\"webpack://./../../css/variables.module.scss\",\"webpack://./../../../node_modules/open-color/open-color.scss\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;ACiChB;EACE,2CAAA;EACA,wBAAA;AD/BF;;AADE;EACE,kBAAA;EACA,kBAAA;EACA,yCAAA;EACA,UAAA;EACA,gBAAA;EACA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,iDAAA;EACA,sCAAA;EACA,eAAA;AAIJ;AADE;EACE,8BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,qCAAA;EACA,iBAAA;EACA,gBAAA;EACA,6BAAA;EACA,YAAA;EACA,mBAAA;EAEA,aAAA;EACA,gCAAA;EACA,mBAAA;AACJ;AACI;EACE,kBAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;AACN;AAGM;EACE,cEoBG;AFrBX;AAKI;EACE,mBAAA;EACA,uBAAA;AAHN;AAKI;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;AAHN;AAOE;EACE,4BAAA;EACA,+CAAA;AALJ;AAOI;EAIE,yBELK;AFHX;AAKM;EACE,4BAAA;AAHR;AASE;EACE,UAAA;AAPJ;AAWI;EACE,cAAA;AATN;AAWM;EACE,oBAAA;AATR;AAYM;EACE,aAAA;AAVR;;AAeE;EACE,YAAA;EACA,6BAAA;AAZJ\",\"sourcesContent\":[\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .context-menu {\\n position: relative;\\n border-radius: 4px;\\n box-shadow: 0 3px 10px transparentize($oc-black, 0.8);\\n padding: 0;\\n list-style: none;\\n user-select: none;\\n margin: -0.25rem 0 0 0.125rem;\\n padding: 0.5rem 0;\\n background-color: var(--popup-secondary-bg-color);\\n border: 1px solid var(--button-gray-3);\\n cursor: default;\\n }\\n\\n .context-menu button {\\n color: var(--popup-text-color);\\n }\\n\\n .context-menu-option {\\n position: relative;\\n width: 100%;\\n min-width: 9.5rem;\\n margin: 0;\\n padding: 0.25rem 1rem 0.25rem 1.25rem;\\n text-align: start;\\n border-radius: 0;\\n background-color: transparent;\\n border: none;\\n white-space: nowrap;\\n\\n display: grid;\\n grid-template-columns: 1fr 0.2fr;\\n align-items: center;\\n\\n &.checkmark::before {\\n position: absolute;\\n left: 6px;\\n margin-bottom: 1px;\\n content: \\\"\\\\2713\\\";\\n }\\n\\n &.dangerous {\\n .context-menu-option__label {\\n color: $oc-red-7;\\n }\\n }\\n\\n .context-menu-option__label {\\n justify-self: start;\\n margin-inline-end: 20px;\\n }\\n .context-menu-option__shortcut {\\n justify-self: end;\\n opacity: 0.6;\\n font-family: inherit;\\n font-size: 0.7rem;\\n }\\n }\\n\\n .context-menu-option:hover {\\n color: var(--popup-bg-color);\\n background-color: var(--select-highlight-color);\\n\\n &.dangerous {\\n .context-menu-option__label {\\n color: var(--popup-bg-color);\\n }\\n background-color: $oc-red-6;\\n }\\n }\\n\\n .context-menu-option:focus {\\n z-index: 1;\\n }\\n\\n @include isMobile {\\n .context-menu-option {\\n display: block;\\n\\n .context-menu-option__label {\\n margin-inline-end: 0;\\n }\\n\\n .context-menu-option__shortcut {\\n display: none;\\n }\\n }\\n }\\n\\n .context-menu-option-separator {\\n border: none;\\n border-top: 1px solid $oc-gray-5;\\n }\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"//\\n//\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\n// v 1.9.1\\n//\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\\n\\n// General\\n// ───────────────────────────────────\\n\\n$oc-white: #ffffff;\\n$oc-black: #000000;\\n\\n\\n// Gray\\n// ───────────────────────────────────\\n\\n$oc-gray-list: (\\n \\\"0\\\": #f8f9fa,\\n \\\"1\\\": #f1f3f5,\\n \\\"2\\\": #e9ecef,\\n \\\"3\\\": #dee2e6,\\n \\\"4\\\": #ced4da,\\n \\\"5\\\": #adb5bd,\\n \\\"6\\\": #868e96,\\n \\\"7\\\": #495057,\\n \\\"8\\\": #343a40,\\n \\\"9\\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\\"0\\\");\\n$oc-gray-1: map-get($oc-gray-list, \\\"1\\\");\\n$oc-gray-2: map-get($oc-gray-list, \\\"2\\\");\\n$oc-gray-3: map-get($oc-gray-list, \\\"3\\\");\\n$oc-gray-4: map-get($oc-gray-list, \\\"4\\\");\\n$oc-gray-5: map-get($oc-gray-list, \\\"5\\\");\\n$oc-gray-6: map-get($oc-gray-list, \\\"6\\\");\\n$oc-gray-7: map-get($oc-gray-list, \\\"7\\\");\\n$oc-gray-8: map-get($oc-gray-list, \\\"8\\\");\\n$oc-gray-9: map-get($oc-gray-list, \\\"9\\\");\\n\\n\\n// Red\\n// ───────────────────────────────────\\n\\n$oc-red-list: (\\n \\\"0\\\": #fff5f5,\\n \\\"1\\\": #ffe3e3,\\n \\\"2\\\": #ffc9c9,\\n \\\"3\\\": #ffa8a8,\\n \\\"4\\\": #ff8787,\\n \\\"5\\\": #ff6b6b,\\n \\\"6\\\": #fa5252,\\n \\\"7\\\": #f03e3e,\\n \\\"8\\\": #e03131,\\n \\\"9\\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\\"0\\\");\\n$oc-red-1: map-get($oc-red-list, \\\"1\\\");\\n$oc-red-2: map-get($oc-red-list, \\\"2\\\");\\n$oc-red-3: map-get($oc-red-list, \\\"3\\\");\\n$oc-red-4: map-get($oc-red-list, \\\"4\\\");\\n$oc-red-5: map-get($oc-red-list, \\\"5\\\");\\n$oc-red-6: map-get($oc-red-list, \\\"6\\\");\\n$oc-red-7: map-get($oc-red-list, \\\"7\\\");\\n$oc-red-8: map-get($oc-red-list, \\\"8\\\");\\n$oc-red-9: map-get($oc-red-list, \\\"9\\\");\\n\\n\\n// Pink\\n// ───────────────────────────────────\\n\\n$oc-pink-list: (\\n \\\"0\\\": #fff0f6,\\n \\\"1\\\": #ffdeeb,\\n \\\"2\\\": #fcc2d7,\\n \\\"3\\\": #faa2c1,\\n \\\"4\\\": #f783ac,\\n \\\"5\\\": #f06595,\\n \\\"6\\\": #e64980,\\n \\\"7\\\": #d6336c,\\n \\\"8\\\": #c2255c,\\n \\\"9\\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\\"0\\\");\\n$oc-pink-1: map-get($oc-pink-list, \\\"1\\\");\\n$oc-pink-2: map-get($oc-pink-list, \\\"2\\\");\\n$oc-pink-3: map-get($oc-pink-list, \\\"3\\\");\\n$oc-pink-4: map-get($oc-pink-list, \\\"4\\\");\\n$oc-pink-5: map-get($oc-pink-list, \\\"5\\\");\\n$oc-pink-6: map-get($oc-pink-list, \\\"6\\\");\\n$oc-pink-7: map-get($oc-pink-list, \\\"7\\\");\\n$oc-pink-8: map-get($oc-pink-list, \\\"8\\\");\\n$oc-pink-9: map-get($oc-pink-list, \\\"9\\\");\\n\\n\\n// Grape\\n// ───────────────────────────────────\\n\\n$oc-grape-list: (\\n \\\"0\\\": #f8f0fc,\\n \\\"1\\\": #f3d9fa,\\n \\\"2\\\": #eebefa,\\n \\\"3\\\": #e599f7,\\n \\\"4\\\": #da77f2,\\n \\\"5\\\": #cc5de8,\\n \\\"6\\\": #be4bdb,\\n \\\"7\\\": #ae3ec9,\\n \\\"8\\\": #9c36b5,\\n \\\"9\\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\\"0\\\");\\n$oc-grape-1: map-get($oc-grape-list, \\\"1\\\");\\n$oc-grape-2: map-get($oc-grape-list, \\\"2\\\");\\n$oc-grape-3: map-get($oc-grape-list, \\\"3\\\");\\n$oc-grape-4: map-get($oc-grape-list, \\\"4\\\");\\n$oc-grape-5: map-get($oc-grape-list, \\\"5\\\");\\n$oc-grape-6: map-get($oc-grape-list, \\\"6\\\");\\n$oc-grape-7: map-get($oc-grape-list, \\\"7\\\");\\n$oc-grape-8: map-get($oc-grape-list, \\\"8\\\");\\n$oc-grape-9: map-get($oc-grape-list, \\\"9\\\");\\n\\n\\n// Violet\\n// ───────────────────────────────────\\n\\n$oc-violet-list: (\\n \\\"0\\\": #f3f0ff,\\n \\\"1\\\": #e5dbff,\\n \\\"2\\\": #d0bfff,\\n \\\"3\\\": #b197fc,\\n \\\"4\\\": #9775fa,\\n \\\"5\\\": #845ef7,\\n \\\"6\\\": #7950f2,\\n \\\"7\\\": #7048e8,\\n \\\"8\\\": #6741d9,\\n \\\"9\\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\\"0\\\");\\n$oc-violet-1: map-get($oc-violet-list, \\\"1\\\");\\n$oc-violet-2: map-get($oc-violet-list, \\\"2\\\");\\n$oc-violet-3: map-get($oc-violet-list, \\\"3\\\");\\n$oc-violet-4: map-get($oc-violet-list, \\\"4\\\");\\n$oc-violet-5: map-get($oc-violet-list, \\\"5\\\");\\n$oc-violet-6: map-get($oc-violet-list, \\\"6\\\");\\n$oc-violet-7: map-get($oc-violet-list, \\\"7\\\");\\n$oc-violet-8: map-get($oc-violet-list, \\\"8\\\");\\n$oc-violet-9: map-get($oc-violet-list, \\\"9\\\");\\n\\n\\n// Indigo\\n// ───────────────────────────────────\\n\\n$oc-indigo-list: (\\n \\\"0\\\": #edf2ff,\\n \\\"1\\\": #dbe4ff,\\n \\\"2\\\": #bac8ff,\\n \\\"3\\\": #91a7ff,\\n \\\"4\\\": #748ffc,\\n \\\"5\\\": #5c7cfa,\\n \\\"6\\\": #4c6ef5,\\n \\\"7\\\": #4263eb,\\n \\\"8\\\": #3b5bdb,\\n \\\"9\\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\\"0\\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\\"1\\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\\"2\\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\\"3\\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\\"4\\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\\"5\\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\\"6\\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\\"7\\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\\"8\\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\\"9\\\");\\n\\n\\n// Blue\\n// ───────────────────────────────────\\n\\n$oc-blue-list: (\\n \\\"0\\\": #e7f5ff,\\n \\\"1\\\": #d0ebff,\\n \\\"2\\\": #a5d8ff,\\n \\\"3\\\": #74c0fc,\\n \\\"4\\\": #4dabf7,\\n \\\"5\\\": #339af0,\\n \\\"6\\\": #228be6,\\n \\\"7\\\": #1c7ed6,\\n \\\"8\\\": #1971c2,\\n \\\"9\\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\\"0\\\");\\n$oc-blue-1: map-get($oc-blue-list, \\\"1\\\");\\n$oc-blue-2: map-get($oc-blue-list, \\\"2\\\");\\n$oc-blue-3: map-get($oc-blue-list, \\\"3\\\");\\n$oc-blue-4: map-get($oc-blue-list, \\\"4\\\");\\n$oc-blue-5: map-get($oc-blue-list, \\\"5\\\");\\n$oc-blue-6: map-get($oc-blue-list, \\\"6\\\");\\n$oc-blue-7: map-get($oc-blue-list, \\\"7\\\");\\n$oc-blue-8: map-get($oc-blue-list, \\\"8\\\");\\n$oc-blue-9: map-get($oc-blue-list, \\\"9\\\");\\n\\n\\n// Cyan\\n// ───────────────────────────────────\\n\\n$oc-cyan-list: (\\n \\\"0\\\": #e3fafc,\\n \\\"1\\\": #c5f6fa,\\n \\\"2\\\": #99e9f2,\\n \\\"3\\\": #66d9e8,\\n \\\"4\\\": #3bc9db,\\n \\\"5\\\": #22b8cf,\\n \\\"6\\\": #15aabf,\\n \\\"7\\\": #1098ad,\\n \\\"8\\\": #0c8599,\\n \\\"9\\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\\"0\\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\\"1\\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\\"2\\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\\"3\\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\\"4\\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\\"5\\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\\"6\\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\\"7\\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\\"8\\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\\"9\\\");\\n\\n\\n// Teal\\n// ───────────────────────────────────\\n\\n$oc-teal-list: (\\n \\\"0\\\": #e6fcf5,\\n \\\"1\\\": #c3fae8,\\n \\\"2\\\": #96f2d7,\\n \\\"3\\\": #63e6be,\\n \\\"4\\\": #38d9a9,\\n \\\"5\\\": #20c997,\\n \\\"6\\\": #12b886,\\n \\\"7\\\": #0ca678,\\n \\\"8\\\": #099268,\\n \\\"9\\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\\"0\\\");\\n$oc-teal-1: map-get($oc-teal-list, \\\"1\\\");\\n$oc-teal-2: map-get($oc-teal-list, \\\"2\\\");\\n$oc-teal-3: map-get($oc-teal-list, \\\"3\\\");\\n$oc-teal-4: map-get($oc-teal-list, \\\"4\\\");\\n$oc-teal-5: map-get($oc-teal-list, \\\"5\\\");\\n$oc-teal-6: map-get($oc-teal-list, \\\"6\\\");\\n$oc-teal-7: map-get($oc-teal-list, \\\"7\\\");\\n$oc-teal-8: map-get($oc-teal-list, \\\"8\\\");\\n$oc-teal-9: map-get($oc-teal-list, \\\"9\\\");\\n\\n\\n// Green\\n// ───────────────────────────────────\\n\\n$oc-green-list: (\\n \\\"0\\\": #ebfbee,\\n \\\"1\\\": #d3f9d8,\\n \\\"2\\\": #b2f2bb,\\n \\\"3\\\": #8ce99a,\\n \\\"4\\\": #69db7c,\\n \\\"5\\\": #51cf66,\\n \\\"6\\\": #40c057,\\n \\\"7\\\": #37b24d,\\n \\\"8\\\": #2f9e44,\\n \\\"9\\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\\"0\\\");\\n$oc-green-1: map-get($oc-green-list, \\\"1\\\");\\n$oc-green-2: map-get($oc-green-list, \\\"2\\\");\\n$oc-green-3: map-get($oc-green-list, \\\"3\\\");\\n$oc-green-4: map-get($oc-green-list, \\\"4\\\");\\n$oc-green-5: map-get($oc-green-list, \\\"5\\\");\\n$oc-green-6: map-get($oc-green-list, \\\"6\\\");\\n$oc-green-7: map-get($oc-green-list, \\\"7\\\");\\n$oc-green-8: map-get($oc-green-list, \\\"8\\\");\\n$oc-green-9: map-get($oc-green-list, \\\"9\\\");\\n\\n\\n// Lime\\n// ───────────────────────────────────\\n\\n$oc-lime-list: (\\n \\\"0\\\": #f4fce3,\\n \\\"1\\\": #e9fac8,\\n \\\"2\\\": #d8f5a2,\\n \\\"3\\\": #c0eb75,\\n \\\"4\\\": #a9e34b,\\n \\\"5\\\": #94d82d,\\n \\\"6\\\": #82c91e,\\n \\\"7\\\": #74b816,\\n \\\"8\\\": #66a80f,\\n \\\"9\\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\\"0\\\");\\n$oc-lime-1: map-get($oc-lime-list, \\\"1\\\");\\n$oc-lime-2: map-get($oc-lime-list, \\\"2\\\");\\n$oc-lime-3: map-get($oc-lime-list, \\\"3\\\");\\n$oc-lime-4: map-get($oc-lime-list, \\\"4\\\");\\n$oc-lime-5: map-get($oc-lime-list, \\\"5\\\");\\n$oc-lime-6: map-get($oc-lime-list, \\\"6\\\");\\n$oc-lime-7: map-get($oc-lime-list, \\\"7\\\");\\n$oc-lime-8: map-get($oc-lime-list, \\\"8\\\");\\n$oc-lime-9: map-get($oc-lime-list, \\\"9\\\");\\n\\n\\n// Yellow\\n// ───────────────────────────────────\\n\\n$oc-yellow-list: (\\n \\\"0\\\": #fff9db,\\n \\\"1\\\": #fff3bf,\\n \\\"2\\\": #ffec99,\\n \\\"3\\\": #ffe066,\\n \\\"4\\\": #ffd43b,\\n \\\"5\\\": #fcc419,\\n \\\"6\\\": #fab005,\\n \\\"7\\\": #f59f00,\\n \\\"8\\\": #f08c00,\\n \\\"9\\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\\"0\\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\\"1\\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\\"2\\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\\"3\\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\\"4\\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\\"5\\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\\"6\\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\\"7\\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\\"8\\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\\"9\\\");\\n\\n\\n// Orange\\n// ───────────────────────────────────\\n\\n$oc-orange-list: (\\n \\\"0\\\": #fff4e6,\\n \\\"1\\\": #ffe8cc,\\n \\\"2\\\": #ffd8a8,\\n \\\"3\\\": #ffc078,\\n \\\"4\\\": #ffa94d,\\n \\\"5\\\": #ff922b,\\n \\\"6\\\": #fd7e14,\\n \\\"7\\\": #f76707,\\n \\\"8\\\": #e8590c,\\n \\\"9\\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\\"0\\\");\\n$oc-orange-1: map-get($oc-orange-list, \\\"1\\\");\\n$oc-orange-2: map-get($oc-orange-list, \\\"2\\\");\\n$oc-orange-3: map-get($oc-orange-list, \\\"3\\\");\\n$oc-orange-4: map-get($oc-orange-list, \\\"4\\\");\\n$oc-orange-5: map-get($oc-orange-list, \\\"5\\\");\\n$oc-orange-6: map-get($oc-orange-list, \\\"6\\\");\\n$oc-orange-7: map-get($oc-orange-list, \\\"7\\\");\\n$oc-orange-8: map-get($oc-orange-list, \\\"8\\\");\\n$oc-orange-9: map-get($oc-orange-list, \\\"9\\\");\\n\\n\\n// Color list\\n// ───────────────────────────────────\\n\\n$oc-color-spectrum: 9;\\n\\n$oc-color-list: (\\n $oc-gray-list: \\\"gray\\\",\\n $oc-red-list: \\\"red\\\",\\n $oc-pink-list: \\\"pink\\\",\\n $oc-grape-list: \\\"grape\\\",\\n $oc-violet-list: \\\"violet\\\",\\n $oc-indigo-list: \\\"indigo\\\",\\n $oc-blue-list: \\\"blue\\\",\\n $oc-cyan-list: \\\"cyan\\\",\\n $oc-teal-list: \\\"teal\\\",\\n $oc-green-list: \\\"green\\\",\\n $oc-lime-list: \\\"lime\\\",\\n $oc-yellow-list: \\\"yellow\\\",\\n $oc-orange-list: \\\"orange\\\"\\n);\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDZEQUE2RCxXQUFXLGdEQUFnRCw2QkFBNkIsR0FBRywrQkFBK0IsdUJBQXVCLHVCQUF1Qiw4Q0FBOEMsZUFBZSxxQkFBcUIsc0JBQXNCLGtDQUFrQyxzQkFBc0Isc0RBQXNELDJDQUEyQyxvQkFBb0IsR0FBRyxvQ0FBb0MsbUNBQW1DLEdBQUcsb0NBQW9DLHVCQUF1QixnQkFBZ0Isc0JBQXNCLGNBQWMsMENBQTBDLHNCQUFzQixxQkFBcUIsa0NBQWtDLGlCQUFpQix3QkFBd0Isa0JBQWtCLHFDQUFxQyx3QkFBd0IsR0FBRyxzREFBc0QsdUJBQXVCLGNBQWMsdUJBQXVCLG1CQUFtQixHQUFHLDBFQUEwRSxtQkFBbUIsR0FBRyxnRUFBZ0Usd0JBQXdCLDRCQUE0QixHQUFHLG1FQUFtRSxzQkFBc0IsaUJBQWlCLHlCQUF5QixzQkFBc0IsR0FBRywwQ0FBMEMsaUNBQWlDLG9EQUFvRCxHQUFHLG9EQUFvRCw4QkFBOEIsR0FBRyxnRkFBZ0YsaUNBQWlDLEdBQUcsMENBQTBDLGVBQWUsR0FBRyx1REFBdUQsbUJBQW1CLEdBQUcsbUZBQW1GLHlCQUF5QixHQUFHLHNGQUFzRixrQkFBa0IsR0FBRyxnREFBZ0QsaUJBQWlCLGtDQUFrQyxHQUFHLE9BQU8sd05BQXdOLE9BQU8sV0FBVyxXQUFXLE9BQU8sS0FBSyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsTUFBTSxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLFdBQVcsNkRBQTZELGlCQUFpQixtQkFBbUIseUJBQXlCLHlCQUF5Qiw0REFBNEQsaUJBQWlCLHVCQUF1Qix3QkFBd0Isb0NBQW9DLHdCQUF3Qix3REFBd0QsNkNBQTZDLHNCQUFzQixLQUFLLDRCQUE0QixxQ0FBcUMsS0FBSyw0QkFBNEIseUJBQXlCLGtCQUFrQix3QkFBd0IsZ0JBQWdCLDRDQUE0Qyx3QkFBd0IsdUJBQXVCLG9DQUFvQyxtQkFBbUIsMEJBQTBCLHNCQUFzQix1Q0FBdUMsMEJBQTBCLDZCQUE2QiwyQkFBMkIsa0JBQWtCLDJCQUEyQiw0QkFBNEIsT0FBTyxxQkFBcUIscUNBQXFDLDJCQUEyQixTQUFTLE9BQU8scUNBQXFDLDRCQUE0QixnQ0FBZ0MsT0FBTyxzQ0FBc0MsMEJBQTBCLHFCQUFxQiw2QkFBNkIsMEJBQTBCLE9BQU8sS0FBSyxrQ0FBa0MsbUNBQW1DLHNEQUFzRCxxQkFBcUIscUNBQXFDLHVDQUF1QyxTQUFTLG9DQUFvQyxPQUFPLEtBQUssa0NBQWtDLGlCQUFpQixLQUFLLHlCQUF5Qiw0QkFBNEIsdUJBQXVCLHVDQUF1QywrQkFBK0IsU0FBUywwQ0FBMEMsd0JBQXdCLFNBQVMsT0FBTyxLQUFLLHNDQUFzQyxtQkFBbUIsdUNBQXVDLEtBQUssR0FBRyw0Q0FBNEMsdUJBQXVCLGtDQUFrQyxJQUFJLGVBQWUsS0FBSyxHQUFHLHFDQUFxQyxzREFBc0Qsa0NBQWtDLCtDQUErQyxPQUFPLG1DQUFtQyx5Q0FBeUMsNkJBQTZCLFdBQVcsOEJBQThCLFdBQVcsT0FBTywwQ0FBMEMsZ0RBQWdELE9BQU8sS0FBSyw2QkFBNkIsa0JBQWtCLGlCQUFpQixLQUFLLEdBQUcsc0RBQXNELGtDQUFrQyxhQUFhLHdDQUF3QyxxREFBcUQsR0FBRyxrTEFBa0wsNkJBQTZCLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsMFFBQTBRLDRDQUE0QywwQ0FBMEMsMENBQTBDLDBDQUEwQywwQ0FBMEMsMENBQTBDLDBDQUEwQywwQ0FBMEMsMENBQTBDLDBDQUEwQyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDhRQUE4USxnREFBZ0QsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsZ1JBQWdSLGtEQUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDhRQUE4USxnREFBZ0QsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0QyxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QseUZBQXlGLHVkQUF1ZCxxQkFBcUI7QUFDbjRmO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzP2E2MzUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBwYWRkaW5nOiAwO1xcbiAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgbWFyZ2luOiAtMC4yNXJlbSAwIDAgMC4xMjVyZW07XFxuICBwYWRkaW5nOiAwLjVyZW0gMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuLmV4Y2FsaWRyYXcgLmNvbnRleHQtbWVudSBidXR0b24ge1xcbiAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1pbi13aWR0aDogOS41cmVtO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtIDAuMjVyZW0gMS4yNXJlbTtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyOiBub25lO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAwLjJmcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uLmNoZWNrbWFyazo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDZweDtcXG4gIG1hcmdpbi1ib3R0b206IDFweDtcXG4gIGNvbnRlbnQ6IFxcXCLinJNcXFwiO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbi5kYW5nZXJvdXMgLmNvbnRleHQtbWVudS1vcHRpb25fX2xhYmVsIHtcXG4gIGNvbG9yOiAjZjAzZTNlO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiAuY29udGV4dC1tZW51LW9wdGlvbl9fbGFiZWwge1xcbiAganVzdGlmeS1zZWxmOiBzdGFydDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAyMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiAuY29udGV4dC1tZW51LW9wdGlvbl9fc2hvcnRjdXQge1xcbiAganVzdGlmeS1zZWxmOiBlbmQ7XFxuICBvcGFjaXR5OiAwLjY7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbjpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0tcG9wdXAtYmctY29sb3IpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uOmhvdmVyLmRhbmdlcm91cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmE1MjUyO1xcbn1cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbjpob3Zlci5kYW5nZXJvdXMgLmNvbnRleHQtbWVudS1vcHRpb25fX2xhYmVsIHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC1iZy1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uOmZvY3VzIHtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICBtYXJnaW4taW5saW5lLWVuZDogMDtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5jb250ZXh0LW1lbnUtb3B0aW9uIC5jb250ZXh0LW1lbnUtb3B0aW9uX19zaG9ydGN1dCB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyAuY29udGV4dC1tZW51LW9wdGlvbi1zZXBhcmF0b3Ige1xcbiAgYm9yZGVyOiBub25lO1xcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNhZGI1YmQ7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvQ29udGV4dE1lbnUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL29wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUFnQjtBQ2lDaEI7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FEL0JGOztBQURFO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlDQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSw2QkFBQTtFQUNBLGlCQUFBO0VBQ0EsaURBQUE7RUFDQSxzQ0FBQTtFQUNBLGVBQUE7QUFJSjtBQURFO0VBQ0UsOEJBQUE7QUFHSjtBQUFFO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxTQUFBO0VBQ0EscUNBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsNkJBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFFQSxhQUFBO0VBQ0EsZ0NBQUE7RUFDQSxtQkFBQTtBQUNKO0FBQ0k7RUFDRSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7QUFDTjtBQUdNO0VBQ0UsY0VvQkc7QUZyQlg7QUFLSTtFQUNFLG1CQUFBO0VBQ0EsdUJBQUE7QUFITjtBQUtJO0VBQ0UsaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSxpQkFBQTtBQUhOO0FBT0U7RUFDRSw0QkFBQTtFQUNBLCtDQUFBO0FBTEo7QUFPSTtFQUlFLHlCRUxLO0FGSFg7QUFLTTtFQUNFLDRCQUFBO0FBSFI7QUFTRTtFQUNFLFVBQUE7QUFQSjtBQVdJO0VBQ0UsY0FBQTtBQVROO0FBV007RUFDRSxvQkFBQTtBQVRSO0FBWU07RUFDRSxhQUFBO0FBVlI7O0FBZUU7RUFDRSxZQUFBO0VBQ0EsNkJBQUE7QUFaSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCIuLi9jc3MvdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgLmNvbnRleHQtbWVudSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDNweCAxMHB4IHRyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC44KTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgIG1hcmdpbjogLTAuMjVyZW0gMCAwIDAuMTI1cmVtO1xcbiAgICBwYWRkaW5nOiAwLjVyZW0gMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gIH1cXG5cXG4gIC5jb250ZXh0LW1lbnUgYnV0dG9uIHtcXG4gICAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbiAgfVxcblxcbiAgLmNvbnRleHQtbWVudS1vcHRpb24ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBtaW4td2lkdGg6IDkuNXJlbTtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDFyZW0gMC4yNXJlbSAxLjI1cmVtO1xcbiAgICB0ZXh0LWFsaWduOiBzdGFydDtcXG4gICAgYm9yZGVyLXJhZGl1czogMDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgZGlzcGxheTogZ3JpZDtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMC4yZnI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgICYuY2hlY2ttYXJrOjpiZWZvcmUge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBsZWZ0OiA2cHg7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xcbiAgICAgIGNvbnRlbnQ6IFxcXCJcXFxcMjcxM1xcXCI7XFxuICAgIH1cXG5cXG4gICAgJi5kYW5nZXJvdXMge1xcbiAgICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uX19sYWJlbCB7XFxuICAgICAgICBjb2xvcjogJG9jLXJlZC03O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuY29udGV4dC1tZW51LW9wdGlvbl9fbGFiZWwge1xcbiAgICAgIGp1c3RpZnktc2VsZjogc3RhcnQ7XFxuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDIwcHg7XFxuICAgIH1cXG4gICAgLmNvbnRleHQtbWVudS1vcHRpb25fX3Nob3J0Y3V0IHtcXG4gICAgICBqdXN0aWZ5LXNlbGY6IGVuZDtcXG4gICAgICBvcGFjaXR5OiAwLjY7XFxuICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICAgICAgZm9udC1zaXplOiAwLjdyZW07XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jb250ZXh0LW1lbnUtb3B0aW9uOmhvdmVyIHtcXG4gICAgY29sb3I6IHZhcigtLXBvcHVwLWJnLWNvbG9yKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcik7XFxuXFxuICAgICYuZGFuZ2Vyb3VzIHtcXG4gICAgICAuY29udGV4dC1tZW51LW9wdGlvbl9fbGFiZWwge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXBvcHVwLWJnLWNvbG9yKTtcXG4gICAgICB9XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9jLXJlZC02O1xcbiAgICB9XFxuICB9XFxuXFxuICAuY29udGV4dC1tZW51LW9wdGlvbjpmb2N1cyB7XFxuICAgIHotaW5kZXg6IDE7XFxuICB9XFxuXFxuICBAaW5jbHVkZSBpc01vYmlsZSB7XFxuICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG5cXG4gICAgICAuY29udGV4dC1tZW51LW9wdGlvbl9fbGFiZWwge1xcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDA7XFxuICAgICAgfVxcblxcbiAgICAgIC5jb250ZXh0LW1lbnUtb3B0aW9uX19zaG9ydGN1dCB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLmNvbnRleHQtbWVudS1vcHRpb24tc2VwYXJhdG9yIHtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJG9jLWdyYXktNTtcXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuQG1peGluIHRvb2xiYXJCdXR0b25Db2xvclN0YXRlcyB7XFxuICAuVG9vbEljb25fdHlwZV9yYWRpbyxcXG4gIC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gICAgJiArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgICAtLWtleWJpbmRpbmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fa2V5YmluZGluZyB7XFxuICAgIGJvdHRvbTogNHB4O1xcbiAgICByaWdodDogNHB4O1xcbiAgfVxcbn1cXG5cXG4kdGhlbWUtZmlsdGVyOiBcXFwiaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpXFxcIjtcXG4kcmlnaHQtc2lkZWJhci13aWR0aDogXFxcIjMwMnB4XFxcIjtcXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiB1bnF1b3RlKCR0aGVtZS1maWx0ZXIpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IHVucXVvdGUoJHJpZ2h0LXNpZGViYXItd2lkdGgpO1xcbn1cXG5cIixcIi8vXFxuLy9cXG4vLyAg8J2XliDwnZeiIPCdl58g8J2XoiDwnZelXFxuLy8gIHYgMS45LjFcXG4vL1xcbi8vICDilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIFcXG5cXG5cXG4vLyAgR2VuZXJhbFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2Mtd2hpdGU6ICAgICAgICAgI2ZmZmZmZjtcXG4kb2MtYmxhY2s6ICAgICAgICAgIzAwMDAwMDtcXG5cXG5cXG4vLyAgR3JheVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtZ3JheS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmOGY5ZmEsXFxuICBcXFwiMVxcXCI6ICNmMWYzZjUsXFxuICBcXFwiMlxcXCI6ICNlOWVjZWYsXFxuICBcXFwiM1xcXCI6ICNkZWUyZTYsXFxuICBcXFwiNFxcXCI6ICNjZWQ0ZGEsXFxuICBcXFwiNVxcXCI6ICNhZGI1YmQsXFxuICBcXFwiNlxcXCI6ICM4NjhlOTYsXFxuICBcXFwiN1xcXCI6ICM0OTUwNTcsXFxuICBcXFwiOFxcXCI6ICMzNDNhNDAsXFxuICBcXFwiOVxcXCI6ICMyMTI1MjlcXG4pO1xcblxcbiRvYy1ncmF5LTA6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtZ3JheS0xOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyYXktMjogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmF5LTM6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtZ3JheS00OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyYXktNTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmF5LTY6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtZ3JheS03OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyYXktODogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmF5LTk6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgUmVkXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1yZWQtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmNWY1LFxcbiAgXFxcIjFcXFwiOiAjZmZlM2UzLFxcbiAgXFxcIjJcXFwiOiAjZmZjOWM5LFxcbiAgXFxcIjNcXFwiOiAjZmZhOGE4LFxcbiAgXFxcIjRcXFwiOiAjZmY4Nzg3LFxcbiAgXFxcIjVcXFwiOiAjZmY2YjZiLFxcbiAgXFxcIjZcXFwiOiAjZmE1MjUyLFxcbiAgXFxcIjdcXFwiOiAjZjAzZTNlLFxcbiAgXFxcIjhcXFwiOiAjZTAzMTMxLFxcbiAgXFxcIjlcXFwiOiAjYzkyYTJhXFxuKTtcXG5cXG4kb2MtcmVkLTA6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1yZWQtMTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXJlZC0yOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtcmVkLTM6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1yZWQtNDogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXJlZC01OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtcmVkLTY6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1yZWQtNzogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXJlZC04OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtcmVkLTk6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBQaW5rXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1waW5rLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjBmNixcXG4gIFxcXCIxXFxcIjogI2ZmZGVlYixcXG4gIFxcXCIyXFxcIjogI2ZjYzJkNyxcXG4gIFxcXCIzXFxcIjogI2ZhYTJjMSxcXG4gIFxcXCI0XFxcIjogI2Y3ODNhYyxcXG4gIFxcXCI1XFxcIjogI2YwNjU5NSxcXG4gIFxcXCI2XFxcIjogI2U2NDk4MCxcXG4gIFxcXCI3XFxcIjogI2Q2MzM2YyxcXG4gIFxcXCI4XFxcIjogI2MyMjU1YyxcXG4gIFxcXCI5XFxcIjogI2E2MWU0ZFxcbik7XFxuXFxuJG9jLXBpbmstMDogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1waW5rLTE6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtcGluay0yOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXBpbmstMzogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1waW5rLTQ6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtcGluay01OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXBpbmstNjogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1waW5rLTc6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtcGluay04OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXBpbmstOTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBHcmFwZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtZ3JhcGUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjhmMGZjLFxcbiAgXFxcIjFcXFwiOiAjZjNkOWZhLFxcbiAgXFxcIjJcXFwiOiAjZWViZWZhLFxcbiAgXFxcIjNcXFwiOiAjZTU5OWY3LFxcbiAgXFxcIjRcXFwiOiAjZGE3N2YyLFxcbiAgXFxcIjVcXFwiOiAjY2M1ZGU4LFxcbiAgXFxcIjZcXFwiOiAjYmU0YmRiLFxcbiAgXFxcIjdcXFwiOiAjYWUzZWM5LFxcbiAgXFxcIjhcXFwiOiAjOWMzNmI1LFxcbiAgXFxcIjlcXFwiOiAjODYyZTljXFxuKTtcXG5cXG4kb2MtZ3JhcGUtMDogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtZ3JhcGUtMTogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JhcGUtMjogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JhcGUtMzogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtZ3JhcGUtNDogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JhcGUtNTogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JhcGUtNjogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtZ3JhcGUtNzogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JhcGUtODogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JhcGUtOTogbWFwLWdldCgkb2MtZ3JhcGUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgVmlvbGV0XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy12aW9sZXQtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjNmMGZmLFxcbiAgXFxcIjFcXFwiOiAjZTVkYmZmLFxcbiAgXFxcIjJcXFwiOiAjZDBiZmZmLFxcbiAgXFxcIjNcXFwiOiAjYjE5N2ZjLFxcbiAgXFxcIjRcXFwiOiAjOTc3NWZhLFxcbiAgXFxcIjVcXFwiOiAjODQ1ZWY3LFxcbiAgXFxcIjZcXFwiOiAjNzk1MGYyLFxcbiAgXFxcIjdcXFwiOiAjNzA0OGU4LFxcbiAgXFxcIjhcXFwiOiAjNjc0MWQ5LFxcbiAgXFxcIjlcXFwiOiAjNWYzZGM0XFxuKTtcXG5cXG4kb2MtdmlvbGV0LTA6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy12aW9sZXQtMTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXZpb2xldC0yOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtdmlvbGV0LTM6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy12aW9sZXQtNDogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXZpb2xldC01OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtdmlvbGV0LTY6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy12aW9sZXQtNzogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXZpb2xldC04OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtdmlvbGV0LTk6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBJbmRpZ29cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWluZGlnby1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlZGYyZmYsXFxuICBcXFwiMVxcXCI6ICNkYmU0ZmYsXFxuICBcXFwiMlxcXCI6ICNiYWM4ZmYsXFxuICBcXFwiM1xcXCI6ICM5MWE3ZmYsXFxuICBcXFwiNFxcXCI6ICM3NDhmZmMsXFxuICBcXFwiNVxcXCI6ICM1YzdjZmEsXFxuICBcXFwiNlxcXCI6ICM0YzZlZjUsXFxuICBcXFwiN1xcXCI6ICM0MjYzZWIsXFxuICBcXFwiOFxcXCI6ICMzYjViZGIsXFxuICBcXFwiOVxcXCI6ICMzNjRmYzdcXG4pO1xcblxcbiRvYy1pbmRpZ28tMDogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWluZGlnby0xOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtaW5kaWdvLTI6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1pbmRpZ28tMzogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWluZGlnby00OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtaW5kaWdvLTU6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1pbmRpZ28tNjogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWluZGlnby03OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtaW5kaWdvLTg6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1pbmRpZ28tOTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEJsdWVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWJsdWUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZTdmNWZmLFxcbiAgXFxcIjFcXFwiOiAjZDBlYmZmLFxcbiAgXFxcIjJcXFwiOiAjYTVkOGZmLFxcbiAgXFxcIjNcXFwiOiAjNzRjMGZjLFxcbiAgXFxcIjRcXFwiOiAjNGRhYmY3LFxcbiAgXFxcIjVcXFwiOiAjMzM5YWYwLFxcbiAgXFxcIjZcXFwiOiAjMjI4YmU2LFxcbiAgXFxcIjdcXFwiOiAjMWM3ZWQ2LFxcbiAgXFxcIjhcXFwiOiAjMTk3MWMyLFxcbiAgXFxcIjlcXFwiOiAjMTg2NGFiXFxuKTtcXG5cXG4kb2MtYmx1ZS0wOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWJsdWUtMTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ibHVlLTI6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtYmx1ZS0zOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWJsdWUtNDogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ibHVlLTU6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtYmx1ZS02OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWJsdWUtNzogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ibHVlLTg6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtYmx1ZS05OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEN5YW5cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWN5YW4tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZTNmYWZjLFxcbiAgXFxcIjFcXFwiOiAjYzVmNmZhLFxcbiAgXFxcIjJcXFwiOiAjOTllOWYyLFxcbiAgXFxcIjNcXFwiOiAjNjZkOWU4LFxcbiAgXFxcIjRcXFwiOiAjM2JjOWRiLFxcbiAgXFxcIjVcXFwiOiAjMjJiOGNmLFxcbiAgXFxcIjZcXFwiOiAjMTVhYWJmLFxcbiAgXFxcIjdcXFwiOiAjMTA5OGFkLFxcbiAgXFxcIjhcXFwiOiAjMGM4NTk5LFxcbiAgXFxcIjlcXFwiOiAjMGI3Mjg1XFxuKTtcXG5cXG4kb2MtY3lhbi0wOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWN5YW4tMTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1jeWFuLTI6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtY3lhbi0zOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWN5YW4tNDogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1jeWFuLTU6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtY3lhbi02OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWN5YW4tNzogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1jeWFuLTg6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtY3lhbi05OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFRlYWxcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXRlYWwtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZTZmY2Y1LFxcbiAgXFxcIjFcXFwiOiAjYzNmYWU4LFxcbiAgXFxcIjJcXFwiOiAjOTZmMmQ3LFxcbiAgXFxcIjNcXFwiOiAjNjNlNmJlLFxcbiAgXFxcIjRcXFwiOiAjMzhkOWE5LFxcbiAgXFxcIjVcXFwiOiAjMjBjOTk3LFxcbiAgXFxcIjZcXFwiOiAjMTJiODg2LFxcbiAgXFxcIjdcXFwiOiAjMGNhNjc4LFxcbiAgXFxcIjhcXFwiOiAjMDk5MjY4LFxcbiAgXFxcIjlcXFwiOiAjMDg3ZjViXFxuKTtcXG5cXG4kb2MtdGVhbC0wOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXRlYWwtMTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy10ZWFsLTI6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtdGVhbC0zOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXRlYWwtNDogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy10ZWFsLTU6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtdGVhbC02OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXRlYWwtNzogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy10ZWFsLTg6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtdGVhbC05OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEdyZWVuXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmVlbi1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlYmZiZWUsXFxuICBcXFwiMVxcXCI6ICNkM2Y5ZDgsXFxuICBcXFwiMlxcXCI6ICNiMmYyYmIsXFxuICBcXFwiM1xcXCI6ICM4Y2U5OWEsXFxuICBcXFwiNFxcXCI6ICM2OWRiN2MsXFxuICBcXFwiNVxcXCI6ICM1MWNmNjYsXFxuICBcXFwiNlxcXCI6ICM0MGMwNTcsXFxuICBcXFwiN1xcXCI6ICMzN2IyNGQsXFxuICBcXFwiOFxcXCI6ICMyZjllNDQsXFxuICBcXFwiOVxcXCI6ICMyYjhhM2VcXG4pO1xcblxcbiRvYy1ncmVlbi0wOiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmVlbi0xOiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmVlbi0yOiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmVlbi0zOiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmVlbi00OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmVlbi01OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmVlbi02OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmVlbi03OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmVlbi04OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmVlbi05OiBtYXAtZ2V0KCRvYy1ncmVlbi1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBMaW1lXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1saW1lLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y0ZmNlMyxcXG4gIFxcXCIxXFxcIjogI2U5ZmFjOCxcXG4gIFxcXCIyXFxcIjogI2Q4ZjVhMixcXG4gIFxcXCIzXFxcIjogI2MwZWI3NSxcXG4gIFxcXCI0XFxcIjogI2E5ZTM0YixcXG4gIFxcXCI1XFxcIjogIzk0ZDgyZCxcXG4gIFxcXCI2XFxcIjogIzgyYzkxZSxcXG4gIFxcXCI3XFxcIjogIzc0YjgxNixcXG4gIFxcXCI4XFxcIjogIzY2YTgwZixcXG4gIFxcXCI5XFxcIjogIzVjOTQwZFxcbik7XFxuXFxuJG9jLWxpbWUtMDogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1saW1lLTE6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtbGltZS0yOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWxpbWUtMzogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1saW1lLTQ6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtbGltZS01OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWxpbWUtNjogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1saW1lLTc6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtbGltZS04OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWxpbWUtOTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBZZWxsb3dcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXllbGxvdy1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY5ZGIsXFxuICBcXFwiMVxcXCI6ICNmZmYzYmYsXFxuICBcXFwiMlxcXCI6ICNmZmVjOTksXFxuICBcXFwiM1xcXCI6ICNmZmUwNjYsXFxuICBcXFwiNFxcXCI6ICNmZmQ0M2IsXFxuICBcXFwiNVxcXCI6ICNmY2M0MTksXFxuICBcXFwiNlxcXCI6ICNmYWIwMDUsXFxuICBcXFwiN1xcXCI6ICNmNTlmMDAsXFxuICBcXFwiOFxcXCI6ICNmMDhjMDAsXFxuICBcXFwiOVxcXCI6ICNlNjc3MDBcXG4pO1xcblxcbiRvYy15ZWxsb3ctMDogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXllbGxvdy0xOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MteWVsbG93LTI6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy15ZWxsb3ctMzogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXllbGxvdy00OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MteWVsbG93LTU6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy15ZWxsb3ctNjogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXllbGxvdy03OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MteWVsbG93LTg6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy15ZWxsb3ctOTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIE9yYW5nZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2Mtb3JhbmdlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjRlNixcXG4gIFxcXCIxXFxcIjogI2ZmZThjYyxcXG4gIFxcXCIyXFxcIjogI2ZmZDhhOCxcXG4gIFxcXCIzXFxcIjogI2ZmYzA3OCxcXG4gIFxcXCI0XFxcIjogI2ZmYTk0ZCxcXG4gIFxcXCI1XFxcIjogI2ZmOTIyYixcXG4gIFxcXCI2XFxcIjogI2ZkN2UxNCxcXG4gIFxcXCI3XFxcIjogI2Y3NjcwNyxcXG4gIFxcXCI4XFxcIjogI2U4NTkwYyxcXG4gIFxcXCI5XFxcIjogI2Q5NDgwZlxcbik7XFxuXFxuJG9jLW9yYW5nZS0wOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2Mtb3JhbmdlLTE6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1vcmFuZ2UtMjogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLW9yYW5nZS0zOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2Mtb3JhbmdlLTQ6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1vcmFuZ2UtNTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLW9yYW5nZS02OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2Mtb3JhbmdlLTc6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1vcmFuZ2UtODogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLW9yYW5nZS05OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQ29sb3IgbGlzdFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtY29sb3Itc3BlY3RydW06ICAgOTtcXG5cXG4kb2MtY29sb3ItbGlzdDogKFxcbiAgJG9jLWdyYXktbGlzdDogICAgICBcXFwiZ3JheVxcXCIsXFxuICAkb2MtcmVkLWxpc3Q6ICAgICAgXFxcInJlZFxcXCIsXFxuICAkb2MtcGluay1saXN0OiAgICAgIFxcXCJwaW5rXFxcIixcXG4gICRvYy1ncmFwZS1saXN0OiAgICAgIFxcXCJncmFwZVxcXCIsXFxuICAkb2MtdmlvbGV0LWxpc3Q6ICAgICAgXFxcInZpb2xldFxcXCIsXFxuICAkb2MtaW5kaWdvLWxpc3Q6ICAgICAgXFxcImluZGlnb1xcXCIsXFxuICAkb2MtYmx1ZS1saXN0OiAgICAgIFxcXCJibHVlXFxcIixcXG4gICRvYy1jeWFuLWxpc3Q6ICAgICAgXFxcImN5YW5cXFwiLFxcbiAgJG9jLXRlYWwtbGlzdDogICAgICBcXFwidGVhbFxcXCIsXFxuICAkb2MtZ3JlZW4tbGlzdDogICAgICBcXFwiZ3JlZW5cXFwiLFxcbiAgJG9jLWxpbWUtbGlzdDogICAgICBcXFwibGltZVxcXCIsXFxuICAkb2MteWVsbG93LWxpc3Q6ICAgICAgXFxcInllbGxvd1xcXCIsXFxuICAkb2Mtb3JhbmdlLWxpc3Q6ICAgICAgXFxcIm9yYW5nZVxcXCJcXG4pO1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss\n");
1340
1329
 
1341
1330
  /***/ }),
1342
1331
 
@@ -1347,7 +1336,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1347
1336
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1348
1337
 
1349
1338
  "use strict";
1350
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Dialog {\\n -webkit-user-select: text;\\n user-select: text;\\n cursor: auto;\\n}\\n.excalidraw .Dialog__title {\\n display: grid;\\n align-items: center;\\n margin-top: 0;\\n grid-template-columns: 1fr calc(var(--space-factor) * 7);\\n grid-gap: var(--metric);\\n padding: calc(var(--space-factor) * 2);\\n text-align: center;\\n font-variant: small-caps;\\n font-size: 1.2em;\\n}\\n.excalidraw .Dialog__titleContent {\\n flex: 1;\\n}\\n.excalidraw .Dialog .Modal__close {\\n color: var(--icon-fill-color);\\n margin: 0;\\n}\\n.excalidraw .Dialog__content {\\n padding: 0 16px 16px;\\n}\\n.excalidraw--mobile.excalidraw .Dialog {\\n --metric: calc(var(--space-factor) * 4);\\n --inset-left: max(var(--metric), var(--sal));\\n --inset-right: max(var(--metric), var(--sar));\\n}\\n.excalidraw--mobile.excalidraw .Dialog__title {\\n grid-template-columns: calc(var(--space-factor) * 7) 1fr calc(var(--space-factor) * 7);\\n position: sticky;\\n top: 0;\\n padding: calc(var(--space-factor) * 2);\\n background: var(--island-bg-color);\\n font-size: 1.25em;\\n box-sizing: border-box;\\n border-bottom: 1px solid var(--button-gray-2);\\n z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .Dialog__titleContent {\\n text-align: center;\\n}\\n.excalidraw--mobile.excalidraw .Dialog .Island {\\n width: 100vw;\\n height: 100%;\\n box-sizing: border-box;\\n overflow-y: auto;\\n padding-left: max(calc(var(--padding) * var(--space-factor)), var(--sal));\\n padding-right: max(calc(var(--padding) * var(--space-factor)), var(--sar));\\n padding-bottom: max(calc(var(--padding) * var(--space-factor)), var(--sab));\\n}\\n.excalidraw--mobile.excalidraw .Dialog .Modal__close {\\n order: -1;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/Dialog.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AAAE;EACE,yBAAA;UAAA,iBAAA;EACA,YAAA;AAGJ;AAAE;EACE,aAAA;EACA,mBAAA;EACA,aAAA;EACA,wDAAA;EACA,uBAAA;EACA,sCAAA;EACA,kBAAA;EACA,wBAAA;EACA,gBAAA;AAEJ;AACE;EACE,OAAA;AACJ;AAEE;EACE,6BAAA;EACA,SAAA;AAAJ;AAGE;EACE,oBAAA;AADJ;AAKI;EACE,uCAAA;EACA,4CAAA;EACA,6CAAA;AAHN;AAMI;EACE,sFAAA;EAGA,gBAAA;EACA,MAAA;EACA,sCAAA;EACA,kCAAA;EACA,iBAAA;EAEA,sBAAA;EACA,6CAAA;EACA,UAAA;AAPN;AAUI;EACE,kBAAA;AARN;AAWI;EACE,YAAA;EACA,YAAA;EACA,sBAAA;EACA,gBAAA;EACA,yEAAA;EACA,0EAAA;EACA,2EAAA;AATN;AAYI;EACE,SAAA;AAVN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .Dialog {\\n user-select: text;\\n cursor: auto;\\n }\\n\\n .Dialog__title {\\n display: grid;\\n align-items: center;\\n margin-top: 0;\\n grid-template-columns: 1fr calc(var(--space-factor) * 7);\\n grid-gap: var(--metric);\\n padding: calc(var(--space-factor) * 2);\\n text-align: center;\\n font-variant: small-caps;\\n font-size: 1.2em;\\n }\\n\\n .Dialog__titleContent {\\n flex: 1;\\n }\\n\\n .Dialog .Modal__close {\\n color: var(--icon-fill-color);\\n margin: 0;\\n }\\n\\n .Dialog__content {\\n padding: 0 16px 16px;\\n }\\n\\n @include isMobile {\\n .Dialog {\\n --metric: calc(var(--space-factor) * 4);\\n --inset-left: #{\\\"max(var(--metric), var(--sal))\\\"};\\n --inset-right: #{\\\"max(var(--metric), var(--sar))\\\"};\\n }\\n\\n .Dialog__title {\\n grid-template-columns: calc(var(--space-factor) * 7) 1fr calc(\\n var(--space-factor) * 7\\n );\\n position: sticky;\\n top: 0;\\n padding: calc(var(--space-factor) * 2);\\n background: var(--island-bg-color);\\n font-size: 1.25em;\\n\\n box-sizing: border-box;\\n border-bottom: 1px solid var(--button-gray-2);\\n z-index: 1;\\n }\\n\\n .Dialog__titleContent {\\n text-align: center;\\n }\\n\\n .Dialog .Island {\\n width: 100vw;\\n height: 100%;\\n box-sizing: border-box;\\n overflow-y: auto;\\n padding-left: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sal))\\\"};\\n padding-right: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sar))\\\"};\\n padding-bottom: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sab))\\\"};\\n }\\n\\n .Dialog .Modal__close {\\n order: -1;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9EaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxtREFBbUQsZ0RBQWdELDZCQUE2QixHQUFHLHlCQUF5Qiw4QkFBOEIsOEJBQThCLGlCQUFpQixHQUFHLDhCQUE4QixrQkFBa0Isd0JBQXdCLGtCQUFrQiw2REFBNkQsNEJBQTRCLDJDQUEyQyx1QkFBdUIsNkJBQTZCLHFCQUFxQixHQUFHLHFDQUFxQyxZQUFZLEdBQUcscUNBQXFDLGtDQUFrQyxjQUFjLEdBQUcsZ0NBQWdDLHlCQUF5QixHQUFHLDBDQUEwQyw0Q0FBNEMsaURBQWlELGtEQUFrRCxHQUFHLGlEQUFpRCwyRkFBMkYscUJBQXFCLFdBQVcsMkNBQTJDLHVDQUF1QyxzQkFBc0IsMkJBQTJCLGtEQUFrRCxlQUFlLEdBQUcsd0RBQXdELHVCQUF1QixHQUFHLGtEQUFrRCxpQkFBaUIsaUJBQWlCLDJCQUEyQixxQkFBcUIsOEVBQThFLCtFQUErRSxnRkFBZ0YsR0FBRyx3REFBd0QsY0FBYyxHQUFHLE9BQU8sOElBQThJLFdBQVcsV0FBVyxPQUFPLEtBQUssV0FBVyxXQUFXLFVBQVUsS0FBSyxLQUFLLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxnRUFBZ0UsdUJBQXVCLGtDQUFrQyxJQUFJLGVBQWUsS0FBSyxHQUFHLHFDQUFxQyxzREFBc0Qsa0NBQWtDLCtDQUErQyxPQUFPLG1DQUFtQyx5Q0FBeUMsNkJBQTZCLFdBQVcsOEJBQThCLFdBQVcsT0FBTywwQ0FBMEMsZ0RBQWdELE9BQU8sS0FBSyw2QkFBNkIsa0JBQWtCLGlCQUFpQixLQUFLLEdBQUcsc0RBQXNELGtDQUFrQyxhQUFhLHdDQUF3QyxxREFBcUQsR0FBRyx5Q0FBeUMsaUJBQWlCLGFBQWEsd0JBQXdCLG1CQUFtQixLQUFLLHNCQUFzQixvQkFBb0IsMEJBQTBCLG9CQUFvQiwrREFBK0QsOEJBQThCLDZDQUE2Qyx5QkFBeUIsK0JBQStCLHVCQUF1QixLQUFLLDZCQUE2QixjQUFjLEtBQUssNkJBQTZCLG9DQUFvQyxnQkFBZ0IsS0FBSyx3QkFBd0IsMkJBQTJCLEtBQUsseUJBQXlCLGVBQWUsZ0RBQWdELHdCQUF3QixvQ0FBb0MseUJBQXlCLG9DQUFvQyxPQUFPLHdCQUF3QixxSEFBcUgseUJBQXlCLGVBQWUsK0NBQStDLDJDQUEyQywwQkFBMEIsaUNBQWlDLHNEQUFzRCxtQkFBbUIsT0FBTywrQkFBK0IsMkJBQTJCLE9BQU8seUJBQXlCLHFCQUFxQixxQkFBcUIsK0JBQStCLHlCQUF5Qix3QkFBd0IsaUVBQWlFLHlCQUF5QixpRUFBaUUsMEJBQTBCLGlFQUFpRSxPQUFPLCtCQUErQixrQkFBa0IsT0FBTyxLQUFLLEdBQUcscUJBQXFCO0FBQzNoSztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRGlhbG9nLnNjc3M/MGQ4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCI6ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5EaWFsb2cge1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuICBjdXJzb3I6IGF1dG87XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIDcpO1xcbiAgZ3JpZC1nYXA6IHZhcigtLW1ldHJpYyk7XFxuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiAyKTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtdmFyaWFudDogc21hbGwtY2FwcztcXG4gIGZvbnQtc2l6ZTogMS4yZW07XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICBmbGV4OiAxO1xcbn1cXG4uZXhjYWxpZHJhdyAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBtYXJnaW46IDA7XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX2NvbnRlbnQge1xcbiAgcGFkZGluZzogMCAxNnB4IDE2cHg7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIHtcXG4gIC0tbWV0cmljOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA0KTtcXG4gIC0taW5zZXQtbGVmdDogbWF4KHZhcigtLW1ldHJpYyksIHZhcigtLXNhbCkpO1xcbiAgLS1pbnNldC1yaWdodDogbWF4KHZhcigtLW1ldHJpYyksIHZhcigtLXNhcikpO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLkRpYWxvZ19fdGl0bGUge1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA3KSAxZnIgY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogNyk7XFxuICBwb3NpdGlvbjogc3RpY2t5O1xcbiAgdG9wOiAwO1xcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogMik7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1pc2xhbmQtYmctY29sb3IpO1xcbiAgZm9udC1zaXplOiAxLjI1ZW07XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIC5Jc2xhbmQge1xcbiAgd2lkdGg6IDEwMHZ3O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwYWRkaW5nLWxlZnQ6IG1heChjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSksIHZhcigtLXNhbCkpO1xcbiAgcGFkZGluZy1yaWdodDogbWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FyKSk7XFxuICBwYWRkaW5nLWJvdHRvbTogbWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FiKSk7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgb3JkZXI6IC0xO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL0RpYWxvZy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQWlDQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUNoQ0Y7O0FBQUU7RUFDRSx5QkFBQTtVQUFBLGlCQUFBO0VBQ0EsWUFBQTtBQUdKO0FBQUU7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0Esd0RBQUE7RUFDQSx1QkFBQTtFQUNBLHNDQUFBO0VBQ0Esa0JBQUE7RUFDQSx3QkFBQTtFQUNBLGdCQUFBO0FBRUo7QUFDRTtFQUNFLE9BQUE7QUFDSjtBQUVFO0VBQ0UsNkJBQUE7RUFDQSxTQUFBO0FBQUo7QUFHRTtFQUNFLG9CQUFBO0FBREo7QUFLSTtFQUNFLHVDQUFBO0VBQ0EsNENBQUE7RUFDQSw2Q0FBQTtBQUhOO0FBTUk7RUFDRSxzRkFBQTtFQUdBLGdCQUFBO0VBQ0EsTUFBQTtFQUNBLHNDQUFBO0VBQ0Esa0NBQUE7RUFDQSxpQkFBQTtFQUVBLHNCQUFBO0VBQ0EsNkNBQUE7RUFDQSxVQUFBO0FBUE47QUFVSTtFQUNFLGtCQUFBO0FBUk47QUFXSTtFQUNFLFlBQUE7RUFDQSxZQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtFQUNBLHlFQUFBO0VBQ0EsMEVBQUE7RUFDQSwyRUFBQTtBQVROO0FBWUk7RUFDRSxTQUFBO0FBVk5cIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcblxcbkBtaXhpbiBpc01vYmlsZSgpIHtcXG4gIEBhdC1yb290IC5leGNhbGlkcmF3LS1tb2JpbGUjeyZ9IHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbkBtaXhpbiB0b29sYmFyQnV0dG9uQ29sb3JTdGF0ZXMge1xcbiAgLlRvb2xJY29uX3R5cGVfcmFkaW8sXFxuICAuVG9vbEljb25fdHlwZV9jaGVja2JveCB7XFxuICAgICYgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgICBib3R0b206IDRweDtcXG4gICAgcmlnaHQ6IDRweDtcXG4gIH1cXG59XFxuXFxuJHRoZW1lLWZpbHRlcjogXFxcImludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKVxcXCI7XFxuJHJpZ2h0LXNpZGViYXItd2lkdGg6IFxcXCIzMDJweFxcXCI7XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogdW5xdW90ZSgkdGhlbWUtZmlsdGVyKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiB1bnF1b3RlKCRyaWdodC1zaWRlYmFyLXdpZHRoKTtcXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuLi9jc3MvdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuXFxuLmV4Y2FsaWRyYXcge1xcbiAgLkRpYWxvZyB7XFxuICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICBjdXJzb3I6IGF1dG87XFxuICB9XFxuXFxuICAuRGlhbG9nX190aXRsZSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIDcpO1xcbiAgICBncmlkLWdhcDogdmFyKC0tbWV0cmljKTtcXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogMik7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzO1xcbiAgICBmb250LXNpemU6IDEuMmVtO1xcbiAgfVxcblxcbiAgLkRpYWxvZ19fdGl0bGVDb250ZW50IHtcXG4gICAgZmxleDogMTtcXG4gIH1cXG5cXG4gIC5EaWFsb2cgLk1vZGFsX19jbG9zZSB7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuXFxuICAuRGlhbG9nX19jb250ZW50IHtcXG4gICAgcGFkZGluZzogMCAxNnB4IDE2cHg7XFxuICB9XFxuXFxuICBAaW5jbHVkZSBpc01vYmlsZSB7XFxuICAgIC5EaWFsb2cge1xcbiAgICAgIC0tbWV0cmljOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA0KTtcXG4gICAgICAtLWluc2V0LWxlZnQ6ICN7XFxcIm1heCh2YXIoLS1tZXRyaWMpLCB2YXIoLS1zYWwpKVxcXCJ9O1xcbiAgICAgIC0taW5zZXQtcmlnaHQ6ICN7XFxcIm1heCh2YXIoLS1tZXRyaWMpLCB2YXIoLS1zYXIpKVxcXCJ9O1xcbiAgICB9XFxuXFxuICAgIC5EaWFsb2dfX3RpdGxlIHtcXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIDcpIDFmciBjYWxjKFxcbiAgICAgICAgICB2YXIoLS1zcGFjZS1mYWN0b3IpICogN1xcbiAgICAgICAgKTtcXG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiAyKTtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pc2xhbmQtYmctY29sb3IpO1xcbiAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xcblxcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICAgIHotaW5kZXg6IDE7XFxuICAgIH1cXG5cXG4gICAgLkRpYWxvZ19fdGl0bGVDb250ZW50IHtcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIH1cXG5cXG4gICAgLkRpYWxvZyAuSXNsYW5kIHtcXG4gICAgICB3aWR0aDogMTAwdnc7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgICBwYWRkaW5nLWxlZnQ6ICN7XFxcIm1heChjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSksIHZhcigtLXNhbCkpXFxcIn07XFxuICAgICAgcGFkZGluZy1yaWdodDogI3tcXFwibWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FyKSlcXFwifTtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogI3tcXFwibWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FiKSlcXFwifTtcXG4gICAgfVxcblxcbiAgICAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgICAgIG9yZGVyOiAtMTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss\n");
1339
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Dialog {\\n user-select: text;\\n cursor: auto;\\n}\\n.excalidraw .Dialog__title {\\n display: grid;\\n align-items: center;\\n margin-top: 0;\\n grid-template-columns: 1fr calc(var(--space-factor) * 7);\\n grid-gap: var(--metric);\\n padding: calc(var(--space-factor) * 2);\\n text-align: center;\\n font-variant: small-caps;\\n font-size: 1.2em;\\n}\\n.excalidraw .Dialog__titleContent {\\n flex: 1;\\n}\\n.excalidraw .Dialog .Modal__close {\\n color: var(--icon-fill-color);\\n margin: 0;\\n}\\n.excalidraw .Dialog__content {\\n padding: 0 16px 16px;\\n}\\n.excalidraw--mobile.excalidraw .Dialog {\\n --metric: calc(var(--space-factor) * 4);\\n --inset-left: max(var(--metric), var(--sal));\\n --inset-right: max(var(--metric), var(--sar));\\n}\\n.excalidraw--mobile.excalidraw .Dialog__title {\\n grid-template-columns: calc(var(--space-factor) * 7) 1fr calc(var(--space-factor) * 7);\\n position: sticky;\\n top: 0;\\n padding: calc(var(--space-factor) * 2);\\n background: var(--island-bg-color);\\n font-size: 1.25em;\\n box-sizing: border-box;\\n border-bottom: 1px solid var(--button-gray-2);\\n z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .Dialog__titleContent {\\n text-align: center;\\n}\\n.excalidraw--mobile.excalidraw .Dialog .Island {\\n width: 100vw;\\n height: 100%;\\n box-sizing: border-box;\\n overflow-y: auto;\\n padding-left: max(calc(var(--padding) * var(--space-factor)), var(--sal));\\n padding-right: max(calc(var(--padding) * var(--space-factor)), var(--sar));\\n padding-bottom: max(calc(var(--padding) * var(--space-factor)), var(--sab));\\n}\\n.excalidraw--mobile.excalidraw .Dialog .Modal__close {\\n order: -1;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/Dialog.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AAAE;EACE,iBAAA;EACA,YAAA;AAGJ;AAAE;EACE,aAAA;EACA,mBAAA;EACA,aAAA;EACA,wDAAA;EACA,uBAAA;EACA,sCAAA;EACA,kBAAA;EACA,wBAAA;EACA,gBAAA;AAEJ;AACE;EACE,OAAA;AACJ;AAEE;EACE,6BAAA;EACA,SAAA;AAAJ;AAGE;EACE,oBAAA;AADJ;AAKI;EACE,uCAAA;EACA,4CAAA;EACA,6CAAA;AAHN;AAMI;EACE,sFAAA;EAGA,gBAAA;EACA,MAAA;EACA,sCAAA;EACA,kCAAA;EACA,iBAAA;EAEA,sBAAA;EACA,6CAAA;EACA,UAAA;AAPN;AAUI;EACE,kBAAA;AARN;AAWI;EACE,YAAA;EACA,YAAA;EACA,sBAAA;EACA,gBAAA;EACA,yEAAA;EACA,0EAAA;EACA,2EAAA;AATN;AAYI;EACE,SAAA;AAVN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .Dialog {\\n user-select: text;\\n cursor: auto;\\n }\\n\\n .Dialog__title {\\n display: grid;\\n align-items: center;\\n margin-top: 0;\\n grid-template-columns: 1fr calc(var(--space-factor) * 7);\\n grid-gap: var(--metric);\\n padding: calc(var(--space-factor) * 2);\\n text-align: center;\\n font-variant: small-caps;\\n font-size: 1.2em;\\n }\\n\\n .Dialog__titleContent {\\n flex: 1;\\n }\\n\\n .Dialog .Modal__close {\\n color: var(--icon-fill-color);\\n margin: 0;\\n }\\n\\n .Dialog__content {\\n padding: 0 16px 16px;\\n }\\n\\n @include isMobile {\\n .Dialog {\\n --metric: calc(var(--space-factor) * 4);\\n --inset-left: #{\\\"max(var(--metric), var(--sal))\\\"};\\n --inset-right: #{\\\"max(var(--metric), var(--sar))\\\"};\\n }\\n\\n .Dialog__title {\\n grid-template-columns: calc(var(--space-factor) * 7) 1fr calc(\\n var(--space-factor) * 7\\n );\\n position: sticky;\\n top: 0;\\n padding: calc(var(--space-factor) * 2);\\n background: var(--island-bg-color);\\n font-size: 1.25em;\\n\\n box-sizing: border-box;\\n border-bottom: 1px solid var(--button-gray-2);\\n z-index: 1;\\n }\\n\\n .Dialog__titleContent {\\n text-align: center;\\n }\\n\\n .Dialog .Island {\\n width: 100vw;\\n height: 100%;\\n box-sizing: border-box;\\n overflow-y: auto;\\n padding-left: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sal))\\\"};\\n padding-right: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sar))\\\"};\\n padding-bottom: #{\\\"max(calc(var(--padding) * var(--space-factor)), var(--sab))\\\"};\\n }\\n\\n .Dialog .Modal__close {\\n order: -1;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9EaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxtREFBbUQsZ0RBQWdELDZCQUE2QixHQUFHLHlCQUF5QixzQkFBc0IsaUJBQWlCLEdBQUcsOEJBQThCLGtCQUFrQix3QkFBd0Isa0JBQWtCLDZEQUE2RCw0QkFBNEIsMkNBQTJDLHVCQUF1Qiw2QkFBNkIscUJBQXFCLEdBQUcscUNBQXFDLFlBQVksR0FBRyxxQ0FBcUMsa0NBQWtDLGNBQWMsR0FBRyxnQ0FBZ0MseUJBQXlCLEdBQUcsMENBQTBDLDRDQUE0QyxpREFBaUQsa0RBQWtELEdBQUcsaURBQWlELDJGQUEyRixxQkFBcUIsV0FBVywyQ0FBMkMsdUNBQXVDLHNCQUFzQiwyQkFBMkIsa0RBQWtELGVBQWUsR0FBRyx3REFBd0QsdUJBQXVCLEdBQUcsa0RBQWtELGlCQUFpQixpQkFBaUIsMkJBQTJCLHFCQUFxQiw4RUFBOEUsK0VBQStFLGdGQUFnRixHQUFHLHdEQUF3RCxjQUFjLEdBQUcsT0FBTyw4SUFBOEksV0FBVyxXQUFXLE9BQU8sS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxnRUFBZ0UsdUJBQXVCLGtDQUFrQyxJQUFJLGVBQWUsS0FBSyxHQUFHLHFDQUFxQyxzREFBc0Qsa0NBQWtDLCtDQUErQyxPQUFPLG1DQUFtQyx5Q0FBeUMsNkJBQTZCLFdBQVcsOEJBQThCLFdBQVcsT0FBTywwQ0FBMEMsZ0RBQWdELE9BQU8sS0FBSyw2QkFBNkIsa0JBQWtCLGlCQUFpQixLQUFLLEdBQUcsc0RBQXNELGtDQUFrQyxhQUFhLHdDQUF3QyxxREFBcUQsR0FBRyx5Q0FBeUMsaUJBQWlCLGFBQWEsd0JBQXdCLG1CQUFtQixLQUFLLHNCQUFzQixvQkFBb0IsMEJBQTBCLG9CQUFvQiwrREFBK0QsOEJBQThCLDZDQUE2Qyx5QkFBeUIsK0JBQStCLHVCQUF1QixLQUFLLDZCQUE2QixjQUFjLEtBQUssNkJBQTZCLG9DQUFvQyxnQkFBZ0IsS0FBSyx3QkFBd0IsMkJBQTJCLEtBQUsseUJBQXlCLGVBQWUsZ0RBQWdELHdCQUF3QixvQ0FBb0MseUJBQXlCLG9DQUFvQyxPQUFPLHdCQUF3QixxSEFBcUgseUJBQXlCLGVBQWUsK0NBQStDLDJDQUEyQywwQkFBMEIsaUNBQWlDLHNEQUFzRCxtQkFBbUIsT0FBTywrQkFBK0IsMkJBQTJCLE9BQU8seUJBQXlCLHFCQUFxQixxQkFBcUIsK0JBQStCLHlCQUF5Qix3QkFBd0IsaUVBQWlFLHlCQUF5QixpRUFBaUUsMEJBQTBCLGlFQUFpRSxPQUFPLCtCQUErQixrQkFBa0IsT0FBTyxLQUFLLEdBQUcscUJBQXFCO0FBQzErSjtBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRGlhbG9nLnNjc3M/MGQ4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCI6ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5EaWFsb2cge1xcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuICBjdXJzb3I6IGF1dG87XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIDcpO1xcbiAgZ3JpZC1nYXA6IHZhcigtLW1ldHJpYyk7XFxuICBwYWRkaW5nOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiAyKTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtdmFyaWFudDogc21hbGwtY2FwcztcXG4gIGZvbnQtc2l6ZTogMS4yZW07XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICBmbGV4OiAxO1xcbn1cXG4uZXhjYWxpZHJhdyAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBtYXJnaW46IDA7XFxufVxcbi5leGNhbGlkcmF3IC5EaWFsb2dfX2NvbnRlbnQge1xcbiAgcGFkZGluZzogMCAxNnB4IDE2cHg7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIHtcXG4gIC0tbWV0cmljOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA0KTtcXG4gIC0taW5zZXQtbGVmdDogbWF4KHZhcigtLW1ldHJpYyksIHZhcigtLXNhbCkpO1xcbiAgLS1pbnNldC1yaWdodDogbWF4KHZhcigtLW1ldHJpYyksIHZhcigtLXNhcikpO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLkRpYWxvZ19fdGl0bGUge1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA3KSAxZnIgY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogNyk7XFxuICBwb3NpdGlvbjogc3RpY2t5O1xcbiAgdG9wOiAwO1xcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogMik7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1pc2xhbmQtYmctY29sb3IpO1xcbiAgZm9udC1zaXplOiAxLjI1ZW07XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgei1pbmRleDogMTtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIC5Jc2xhbmQge1xcbiAgd2lkdGg6IDEwMHZ3O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBwYWRkaW5nLWxlZnQ6IG1heChjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSksIHZhcigtLXNhbCkpO1xcbiAgcGFkZGluZy1yaWdodDogbWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FyKSk7XFxuICBwYWRkaW5nLWJvdHRvbTogbWF4KGNhbGModmFyKC0tcGFkZGluZykgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKSwgdmFyKC0tc2FiKSk7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgb3JkZXI6IC0xO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL0RpYWxvZy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQWlDQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUNoQ0Y7O0FBQUU7RUFDRSxpQkFBQTtFQUNBLFlBQUE7QUFHSjtBQUFFO0VBQ0UsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLHdEQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQ0FBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxnQkFBQTtBQUVKO0FBQ0U7RUFDRSxPQUFBO0FBQ0o7QUFFRTtFQUNFLDZCQUFBO0VBQ0EsU0FBQTtBQUFKO0FBR0U7RUFDRSxvQkFBQTtBQURKO0FBS0k7RUFDRSx1Q0FBQTtFQUNBLDRDQUFBO0VBQ0EsNkNBQUE7QUFITjtBQU1JO0VBQ0Usc0ZBQUE7RUFHQSxnQkFBQTtFQUNBLE1BQUE7RUFDQSxzQ0FBQTtFQUNBLGtDQUFBO0VBQ0EsaUJBQUE7RUFFQSxzQkFBQTtFQUNBLDZDQUFBO0VBQ0EsVUFBQTtBQVBOO0FBVUk7RUFDRSxrQkFBQTtBQVJOO0FBV0k7RUFDRSxZQUFBO0VBQ0EsWUFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx5RUFBQTtFQUNBLDBFQUFBO0VBQ0EsMkVBQUE7QUFUTjtBQVlJO0VBQ0UsU0FBQTtBQVZOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5cXG5AbWl4aW4gaXNNb2JpbGUoKSB7XFxuICBAYXQtcm9vdCAuZXhjYWxpZHJhdy0tbW9iaWxlI3smfSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gdG9vbGJhckJ1dHRvbkNvbG9yU3RhdGVzIHtcXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICAmICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19rZXliaW5kaW5nIHtcXG4gICAgYm90dG9tOiA0cHg7XFxuICAgIHJpZ2h0OiA0cHg7XFxuICB9XFxufVxcblxcbiR0aGVtZS1maWx0ZXI6IFxcXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcXFwiO1xcbiRyaWdodC1zaWRlYmFyLXdpZHRoOiBcXFwiMzAycHhcXFwiO1xcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IHVucXVvdGUoJHRoZW1lLWZpbHRlcik7XFxuICByaWdodFNpZGViYXJXaWR0aDogdW5xdW90ZSgkcmlnaHQtc2lkZWJhci13aWR0aCk7XFxufVxcblwiLFwiQGltcG9ydCBcXFwiLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGVcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC5EaWFsb2cge1xcbiAgICB1c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgY3Vyc29yOiBhdXRvO1xcbiAgfVxcblxcbiAgLkRpYWxvZ19fdGl0bGUge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA3KTtcXG4gICAgZ3JpZC1nYXA6IHZhcigtLW1ldHJpYyk7XFxuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIDIpO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIGZvbnQtdmFyaWFudDogc21hbGwtY2FwcztcXG4gICAgZm9udC1zaXplOiAxLjJlbTtcXG4gIH1cXG5cXG4gIC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICAgIGZsZXg6IDE7XFxuICB9XFxuXFxuICAuRGlhbG9nIC5Nb2RhbF9fY2xvc2Uge1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLkRpYWxvZ19fY29udGVudCB7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAxNnB4O1xcbiAgfVxcblxcbiAgQGluY2x1ZGUgaXNNb2JpbGUge1xcbiAgICAuRGlhbG9nIHtcXG4gICAgICAtLW1ldHJpYzogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogNCk7XFxuICAgICAgLS1pbnNldC1sZWZ0OiAje1xcXCJtYXgodmFyKC0tbWV0cmljKSwgdmFyKC0tc2FsKSlcXFwifTtcXG4gICAgICAtLWluc2V0LXJpZ2h0OiAje1xcXCJtYXgodmFyKC0tbWV0cmljKSwgdmFyKC0tc2FyKSlcXFwifTtcXG4gICAgfVxcblxcbiAgICAuRGlhbG9nX190aXRsZSB7XFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKHZhcigtLXNwYWNlLWZhY3RvcikgKiA3KSAxZnIgY2FsYyhcXG4gICAgICAgICAgdmFyKC0tc3BhY2UtZmFjdG9yKSAqIDdcXG4gICAgICAgICk7XFxuICAgICAgcG9zaXRpb246IHN0aWNreTtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgcGFkZGluZzogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogMik7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0taXNsYW5kLWJnLWNvbG9yKTtcXG4gICAgICBmb250LXNpemU6IDEuMjVlbTtcXG5cXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICB6LWluZGV4OiAxO1xcbiAgICB9XFxuXFxuICAgIC5EaWFsb2dfX3RpdGxlQ29udGVudCB7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB9XFxuXFxuICAgIC5EaWFsb2cgLklzbGFuZCB7XFxuICAgICAgd2lkdGg6IDEwMHZ3O1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgICAgcGFkZGluZy1sZWZ0OiAje1xcXCJtYXgoY2FsYyh2YXIoLS1wYWRkaW5nKSAqIHZhcigtLXNwYWNlLWZhY3RvcikpLCB2YXIoLS1zYWwpKVxcXCJ9O1xcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICN7XFxcIm1heChjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSksIHZhcigtLXNhcikpXFxcIn07XFxuICAgICAgcGFkZGluZy1ib3R0b206ICN7XFxcIm1heChjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSksIHZhcigtLXNhYikpXFxcIn07XFxuICAgIH1cXG5cXG4gICAgLkRpYWxvZyAuTW9kYWxfX2Nsb3NlIHtcXG4gICAgICBvcmRlcjogLTE7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss\n");
1351
1340
 
1352
1341
  /***/ }),
1353
1342
 
@@ -1490,7 +1479,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1490
1479
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1491
1480
 
1492
1481
  "use strict";
1493
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".excalidraw .popover {\\n position: absolute;\\n z-index: 10;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../components/Popover.scss\"],\"names\":[],\"mappings\":\"AACE;EACE,kBAAA;EACA,WAAA;AAAJ\",\"sourcesContent\":[\".excalidraw {\\n .popover {\\n position: absolute;\\n z-index: 10;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUM3Ryw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsZ0VBQWdFLHVCQUF1QixnQkFBZ0IsR0FBRyxPQUFPLGdHQUFnRyxXQUFXLFVBQVUsc0NBQXNDLGNBQWMseUJBQXlCLGtCQUFrQixLQUFLLEdBQUcscUJBQXFCO0FBQ2xXO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3M/NjllZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXhjYWxpZHJhdyAucG9wb3ZlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAxMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0U7RUFDRSxrQkFBQTtFQUNBLFdBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZXhjYWxpZHJhdyB7XFxuICAucG9wb3ZlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss\n");
1482
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".excalidraw .popover {\\n position: absolute;\\n z-index: 10;\\n padding: 5px 0 5px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../components/Popover.scss\"],\"names\":[],\"mappings\":\"AACE;EACE,kBAAA;EACA,WAAA;EACA,kBAAA;AAAJ\",\"sourcesContent\":[\".excalidraw {\\n .popover {\\n position: absolute;\\n z-index: 10;\\n padding: 5px 0 5px;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUM3Ryw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsZ0VBQWdFLHVCQUF1QixnQkFBZ0IsdUJBQXVCLEdBQUcsT0FBTyxnR0FBZ0csV0FBVyxVQUFVLFdBQVcsc0NBQXNDLGNBQWMseUJBQXlCLGtCQUFrQix5QkFBeUIsS0FBSyxHQUFHLHFCQUFxQjtBQUM3WjtBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUG9wb3Zlci5zY3NzPzY5ZWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLnBvcG92ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTA7XFxuICBwYWRkaW5nOiA1cHggMCA1cHg7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvUG9wb3Zlci5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNFO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZXhjYWxpZHJhdyB7XFxuICAucG9wb3ZlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBhZGRpbmc6IDVweCAwIDVweDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss\n");
1494
1483
 
1495
1484
  /***/ }),
1496
1485
 
@@ -1600,7 +1589,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1600
1589
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1601
1590
 
1602
1591
  "use strict";
1603
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ToolIcon {\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n.excalidraw .ToolIcon--plain {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon--plain .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon:hover,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon:active,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__icon {\\n width: 2.5rem;\\n height: 2.5rem;\\n color: var(--icon-fill-color);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .ToolIcon__icon + .ToolIcon__label {\\n margin-inline-start: 0;\\n}\\n.excalidraw .ToolIcon__icon svg {\\n position: relative;\\n height: 1em;\\n fill: var(--icon-fill-color);\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon__label {\\n display: flex;\\n align-items: center;\\n color: var(--icon-fill-color);\\n font-family: var(--ui-font);\\n margin: 0 0.8em;\\n text-overflow: ellipsis;\\n}\\n.excalidraw .ToolIcon__label .Spinner {\\n margin-left: 0.6em;\\n}\\n.excalidraw .ToolIcon_size_small .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n font-size: 0.8em;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button,\\n.excalidraw .Modal .ToolIcon_type_button,\\n.excalidraw .ToolIcon_type_button {\\n padding: 0;\\n border: none;\\n margin: 0;\\n font-size: inherit;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:focus-visible,\\n.excalidraw .Modal .ToolIcon_type_button:focus-visible,\\n.excalidraw .ToolIcon_type_button:focus-visible {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:hover,\\n.excalidraw .Modal .ToolIcon_type_button:hover,\\n.excalidraw .ToolIcon_type_button:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:active,\\n.excalidraw .Modal .ToolIcon_type_button:active,\\n.excalidraw .ToolIcon_type_button:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button--show,\\n.excalidraw .Modal .ToolIcon_type_button--show,\\n.excalidraw .ToolIcon_type_button--show {\\n visibility: visible;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button--hide,\\n.excalidraw .Modal .ToolIcon_type_button--hide,\\n.excalidraw .ToolIcon_type_button--hide {\\n visibility: hidden;\\n}\\n.excalidraw .ToolIcon_type_radio,\\n.excalidraw .ToolIcon_type_checkbox {\\n position: absolute;\\n opacity: 0;\\n pointer-events: none;\\n}\\n.excalidraw .ToolIcon_type_radio:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_radio:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon:active,\\n.excalidraw .ToolIcon_type_checkbox:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_radio:focus-visible + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:focus-visible + .ToolIcon__icon {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .ToolIcon_type_radio:active + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:active + .ToolIcon__icon {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_floating {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:hover {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:active {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n width: 2rem;\\n height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__keybinding {\\n position: absolute;\\n bottom: 2px;\\n right: 3px;\\n font-size: 0.5em;\\n color: var(--keybinding-color);\\n font-family: var(--ui-font);\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n@media (max-width: 425px) {\\n .excalidraw .Shape .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n }\\n .excalidraw .Shape .ToolIcon__icon svg {\\n height: 0.8em;\\n }\\n}\\n@media (max-width: 760px) {\\n .excalidraw .ToolIcon.ToolIcon_type_floating {\\n display: inline-block;\\n position: absolute;\\n right: -8px;\\n margin-left: 0;\\n border-radius: 20px 0 0 20px;\\n z-index: 1;\\n background-color: var(--button-gray-1);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating:hover {\\n background-color: var(--button-gray-1);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating:active {\\n background-color: var(--button-gray-2);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating .ToolIcon__icon {\\n border-radius: inherit;\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating svg {\\n position: static;\\n }\\n .excalidraw .ToolIcon.ToolIcon__library {\\n top: calc(var(--sat) + 100px);\\n }\\n .excalidraw .ToolIcon.ToolIcon__lock {\\n top: calc(var(--sat) + 60px);\\n }\\n .excalidraw .ToolIcon.ToolIcon__penMode {\\n top: calc(var(--sat) + 140px);\\n }\\n}\\n:root[dir=ltr] .excalidraw .unlocked-icon {\\n left: 2px;\\n}\\n:root[dir=rtl] .excalidraw .unlocked-icon {\\n right: 2px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/ToolIcon.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AACE;EACE,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,wCAAA;EACA,yBAAA;UAAA,iBAAA;AAEJ;AACE;EACE,6BAAA;AACJ;AAAI;EACE,WAAA;EACA,YAAA;AAEN;AAII;;EACE,sCAAA;AADN;AAGM;;EACE,sCAAA;AAAR;AAEM;;EACE,sCAAA;AACR;AAIE;EACE,aAAA;EACA,cAAA;EACA,6BAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,sCAAA;AAJJ;AAMI;EACE,sBAAA;AAJN;AAOI;EACE,kBAAA;EACA,WAAA;EACA,4BAAA;EACA,6BAAA;AALN;AASE;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,2BAAA;EACA,eAAA;EACA,uBAAA;AAPJ;AASI;EACE,kBAAA;AAPN;AAWE;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AATJ;AAYE;;;EAGE,UAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;AAVJ;AAYI;;;EACE,kDAAA;AARN;AAWI;;;EACE,sCAAA;AAPN;AASM;;;EACE,sCAAA;AALR;AASI;;;EACE,sCAAA;AALN;AAQI;;;EACE,sCAAA;AAJN;AAOI;;;EACE,mBAAA;AAHN;AAMI;;;EACE,kBAAA;AAFN;AAME;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AAJJ;AAMI;;EACE,sCAAA;AAHN;AAIM;;EACE,sCAAA;AADR;AAKI;;EACE,kDAAA;AAFN;AAKI;;EACE,sCAAA;AAFN;AAME;EACE,6BAAA;AAJJ;AAMI;EACE,6BAAA;AAJN;AAOI;EACE,6BAAA;AALN;AAQI;EACE,sCAAA;EAQA,WAAA;EACA,YAAA;AAbN;AAKM;EACE,sCAAA;AAHR;AAKM;EACE,sCAAA;AAHR;AAWE;EACE,kBAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,2BAAA;EACA,yBAAA;UAAA,iBAAA;AATJ;AAaE;EACE;IACE,WAAA;IACA,YAAA;EAXJ;EAaI;IACE,aAAA;EAXN;AACF;AAiBE;EACE;IACE,qBAAA;IACA,kBAAA;IACA,WAAA;IAEA,cAAA;IACA,4BAAA;IACA,UAAA;IAEA,sCAAA;EAjBJ;EAmBI;IACE,sCAAA;EAjBN;EAoBI;IACE,sCAAA;EAlBN;EAqBI;IACE,sBAAA;EAnBN;EAsBI;IACE,gBAAA;EApBN;EAuBE;IACE,6BAAA;EArBJ;EAwBE;IACE,4BAAA;EAtBJ;EAwBE;IACE,6BAAA;EAtBJ;AACF;AA0BI;EACE,SAAA;AAxBN;AA2BI;EACE,UAAA;AAzBN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .ToolIcon {\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n user-select: none;\\n }\\n\\n .ToolIcon--plain {\\n background-color: transparent;\\n .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n }\\n }\\n\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n }\\n\\n .ToolIcon__icon {\\n width: 2.5rem;\\n height: 2.5rem;\\n color: var(--icon-fill-color);\\n\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n border-radius: var(--border-radius-lg);\\n\\n & + .ToolIcon__label {\\n margin-inline-start: 0;\\n }\\n\\n svg {\\n position: relative;\\n height: 1em;\\n fill: var(--icon-fill-color);\\n color: var(--icon-fill-color);\\n }\\n }\\n\\n .ToolIcon__label {\\n display: flex;\\n align-items: center;\\n color: var(--icon-fill-color);\\n font-family: var(--ui-font);\\n margin: 0 0.8em;\\n text-overflow: ellipsis;\\n\\n .Spinner {\\n margin-left: 0.6em;\\n }\\n }\\n\\n .ToolIcon_size_small .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n font-size: 0.8em;\\n }\\n\\n .excalidraw .ToolIcon_type_button,\\n .Modal .ToolIcon_type_button,\\n .ToolIcon_type_button {\\n padding: 0;\\n border: none;\\n margin: 0;\\n font-size: inherit;\\n\\n &:focus-visible {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &.ToolIcon--selected {\\n background-color: var(--button-gray-2);\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &--show {\\n visibility: visible;\\n }\\n\\n &--hide {\\n visibility: hidden;\\n }\\n }\\n\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n position: absolute;\\n opacity: 0;\\n pointer-events: none;\\n\\n &:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon {\\n background-color: var(--button-gray-2);\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n &:focus-visible + .ToolIcon__icon {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:active + .ToolIcon__icon {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n .ToolIcon_type_floating {\\n background-color: transparent;\\n\\n &:hover {\\n background-color: transparent;\\n }\\n\\n &:active {\\n background-color: transparent;\\n }\\n\\n .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n width: 2rem;\\n height: 2rem;\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n position: absolute;\\n bottom: 2px;\\n right: 3px;\\n font-size: 0.5em;\\n color: var(--keybinding-color);\\n font-family: var(--ui-font);\\n user-select: none;\\n }\\n\\n // shrink shape icons on small viewports to make them fit\\n @media (max-width: 425px) {\\n .Shape .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n\\n svg {\\n height: 0.8em;\\n }\\n }\\n }\\n\\n // move the lock button out of the way on small viewports\\n // it begins to collide with the GitHub icon before we switch to mobile mode\\n @media (max-width: 760px) {\\n .ToolIcon.ToolIcon_type_floating {\\n display: inline-block;\\n position: absolute;\\n right: -8px;\\n\\n margin-left: 0;\\n border-radius: 20px 0 0 20px;\\n z-index: 1;\\n\\n background-color: var(--button-gray-1);\\n\\n &:hover {\\n background-color: var(--button-gray-1);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-2);\\n }\\n\\n .ToolIcon__icon {\\n border-radius: inherit;\\n }\\n\\n svg {\\n position: static;\\n }\\n }\\n .ToolIcon.ToolIcon__library {\\n top: calc(var(--sat) + 100px);\\n }\\n\\n .ToolIcon.ToolIcon__lock {\\n top: calc(var(--sat) + 60px);\\n }\\n .ToolIcon.ToolIcon__penMode {\\n top: calc(var(--sat) + 140px);\\n }\\n }\\n\\n .unlocked-icon {\\n :root[dir=\\\"ltr\\\"] & {\\n left: 2px;\\n }\\n\\n :root[dir=\\\"rtl\\\"] & {\\n right: 2px;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Ub29sSWNvbi5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLG1EQUFtRCxnREFBZ0QsNkJBQTZCLEdBQUcsMkJBQTJCLHlCQUF5Qix3QkFBd0IsdUJBQXVCLG9CQUFvQiw2Q0FBNkMsOEJBQThCLDhCQUE4QixHQUFHLGdDQUFnQyxrQ0FBa0MsR0FBRyxnREFBZ0QsZ0JBQWdCLGlCQUFpQixHQUFHLDhHQUE4RywyQ0FBMkMsR0FBRywwSEFBMEgsMkNBQTJDLEdBQUcsNEhBQTRILDJDQUEyQyxHQUFHLCtCQUErQixrQkFBa0IsbUJBQW1CLGtDQUFrQyxrQkFBa0IsNEJBQTRCLHdCQUF3QiwyQ0FBMkMsR0FBRyxrREFBa0QsMkJBQTJCLEdBQUcsbUNBQW1DLHVCQUF1QixnQkFBZ0IsaUNBQWlDLGtDQUFrQyxHQUFHLGdDQUFnQyxrQkFBa0Isd0JBQXdCLGtDQUFrQyxnQ0FBZ0Msb0JBQW9CLDRCQUE0QixHQUFHLHlDQUF5Qyx1QkFBdUIsR0FBRyxvREFBb0QsZ0JBQWdCLGlCQUFpQixxQkFBcUIsR0FBRyxnSUFBZ0ksZUFBZSxpQkFBaUIsY0FBYyx1QkFBdUIsR0FBRywwS0FBMEssdURBQXVELEdBQUcseUxBQXlMLDJDQUEyQyxHQUFHLDhNQUE4TSwyQ0FBMkMsR0FBRyxrSkFBa0osMkNBQTJDLEdBQUcscUpBQXFKLDJDQUEyQyxHQUFHLGtKQUFrSix3QkFBd0IsR0FBRyxrSkFBa0osdUJBQXVCLEdBQUcsMEVBQTBFLHVCQUF1QixlQUFlLHlCQUF5QixHQUFHLHdM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QW1CLGlEQUFpRCxTQUFTLG9CQUFvQixpREFBaUQsU0FBUywyQkFBMkIsaUNBQWlDLFNBQVMsZUFBZSwyQkFBMkIsU0FBUyxPQUFPLG1DQUFtQyxzQ0FBc0MsT0FBTyxrQ0FBa0MscUNBQXFDLE9BQU8sbUNBQW1DLHNDQUFzQyxPQUFPLEtBQUssc0JBQXNCLDRCQUE0QixrQkFBa0IsT0FBTyw4QkFBOEIsbUJBQW1CLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUMxNWE7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1Rvb2xJY29uLnNjc3M/YTBkNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCI6ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbi0tcGxhaW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbi0tcGxhaW4gLlRvb2xJY29uX19pY29uIHtcXG4gIHdpZHRoOiAycmVtO1xcbiAgaGVpZ2h0OiAycmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9yYWRpbyArIC5Ub29sSWNvbl9faWNvbixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW8gKyAuVG9vbEljb25fX2ljb246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfY2hlY2tib3ggKyAuVG9vbEljb25fX2ljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl9faWNvbiB7XFxuICB3aWR0aDogMi41cmVtO1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX19pY29uICsgLlRvb2xJY29uX19sYWJlbCB7XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2ljb24gc3ZnIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMWVtO1xcbiAgZmlsbDogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2xhYmVsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBmb250LWZhbWlseTogdmFyKC0tdWktZm9udCk7XFxuICBtYXJnaW46IDAgMC44ZW07XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX19sYWJlbCAuU3Bpbm5lciB7XFxuICBtYXJnaW4tbGVmdDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl9zaXplX3NtYWxsIC5Ub29sSWNvbl9faWNvbiB7XFxuICB3aWR0aDogMnJlbTtcXG4gIGhlaWdodDogMnJlbTtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbixcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbiB7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiBub25lO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbn1cXG4uZXhjYWxpZHJhdyAuZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246Zm9jdXMtdmlzaWJsZSxcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmZvY3VzLXZpc2libGUsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmZvY3VzLXZpc2libGUge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLlRvb2xJY29uLS1zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLlRvb2xJY29uLS1zZWxlY3RlZDphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQ6YWN0aXZlLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQ6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbjpob3ZlcixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1zaG93LFxcbi5leGNhbGlkcmF3IC5Nb2RhbCAuVG9vbEljb25fdHlwZV9idXR0b24tLXNob3csXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1zaG93IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi0taGlkZSxcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1oaWRlLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi0taGlkZSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW86bm90KC5Ub29sSWNvbl90b2dnbGVfb3BhcXVlKTpjaGVja2VkICsgLlRvb2xJY29uX19pY29uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94Om5vdCguVG9vbEljb25fdG9nZ2xlX29wYXF1ZSk6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW86bm90KC5Ub29sSWNvbl90b2dnbGVfb3BhcXVlKTpjaGVja2VkICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveDpub3QoLlRvb2xJY29uX3RvZ2dsZV9vcGFxdWUpOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9yYWRpbzpmb2N1cy12aXNpYmxlICsgLlRvb2xJY29uX19pY29uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94OmZvY3VzLXZpc2libGUgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvOmFjdGl2ZSArIC5Ub29sSWNvbl9faWNvbixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveDphY3RpdmUgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZzpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfZmxvYXRpbmc6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICB3aWR0aDogMnJlbTtcXG4gIGhlaWdodDogMnJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfZmxvYXRpbmcgLlRvb2xJY29uX19pY29uOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAycHg7XFxuICByaWdodDogM3B4O1xcbiAgZm9udC1zaXplOiAwLjVlbTtcXG4gIGNvbG9yOiB2YXIoLS1rZXliaW5kaW5nLWNvbG9yKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogNDI1cHgpIHtcXG4gIC5leGNhbGlkcmF3IC5TaGFwZSAuVG9vbEljb25fX2ljb24ge1xcbiAgICB3aWR0aDogMnJlbTtcXG4gICAgaGVpZ2h0OiAycmVtO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlNoYXBlIC5Ub29sSWNvbl9faWNvbiBzdmcge1xcbiAgICBoZWlnaHQ6IDAuOGVtO1xcbiAgfVxcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHtcXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHJpZ2h0OiAtOHB4O1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAwIDAgMjBweDtcXG4gICAgei1pbmRleDogMTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICB9XFxuICAuZXhjYWxpZHJhdyAuVG9vbEljb24uVG9vbEljb25fdHlwZV9mbG9hdGluZzpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX3R5cGVfZmxvYXRpbmc6YWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICB9XFxuICAuZXhjYWxpZHJhdyAuVG9vbEljb24uVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb24ge1xcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX3R5cGVfZmxvYXRpbmcgc3ZnIHtcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXG4gIH1cXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl9fbGlicmFyeSB7XFxuICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTAwcHgpO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX19sb2NrIHtcXG4gICAgdG9wOiBjYWxjKHZhcigtLXNhdCkgKyA2MHB4KTtcXG4gIH1cXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl9fcGVuTW9kZSB7XFxuICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTQwcHgpO1xcbiAgfVxcbn1cXG46cm9vdFtkaXI9bHRyXSAuZXhjYWxpZHJhdyAudW5sb2NrZWQtaWNvbiB7XFxuICBsZWZ0OiAycHg7XFxufVxcbjpyb290W2Rpcj1ydGxdIC5leGNhbGlkcmF3IC51bmxvY2tlZC1pY29uIHtcXG4gIHJpZ2h0OiAycHg7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvVG9vbEljb24uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBQUNFO0VBQ0Usb0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLHdDQUFBO0VBQ0EseUJBQUE7VUFBQSxpQkFBQTtBQUVKO0FBQ0U7RUFDRSw2QkFBQTtBQUNKO0FBQUk7RUFDRSxXQUFBO0VBQ0EsWUFBQTtBQUVOO0FBSUk7O0VBQ0Usc0NBQUE7QUFETjtBQUdNOztFQUNFLHNDQUFBO0FBQVI7QUFFTTs7RUFDRSxzQ0FBQTtBQUNSO0FBSUU7RUFDRSxhQUFBO0VBQ0EsY0FBQTtFQUNBLDZCQUFBO0VBRUEsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFFQSxzQ0FBQTtBQUpKO0FBTUk7RUFDRSxzQkFBQTtBQUpOO0FBT0k7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSw0QkFBQTtFQUNBLDZCQUFBO0FBTE47QUFTRTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLDZCQUFBO0VBQ0EsMkJBQUE7RUFDQSxlQUFBO0VBQ0EsdUJBQUE7QUFQSjtBQVNJO0VBQ0Usa0JBQUE7QUFQTjtBQVdFO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtBQVRKO0FBWUU7OztFQUdFLFVBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLGtCQUFBO0FBVko7QUFZSTs7O0VBQ0Usa0RBQUE7QUFSTjtBQVdJOzs7RUFDRSxzQ0FBQTtBQVBOO0FBU007OztFQUNFLHNDQUFBO0FBTFI7QUFTSTs7O0VBQ0Usc0NBQUE7QUFMTjtBQVFJOzs7RUFDRSxzQ0FBQTtBQUpOO0FBT0k7OztFQUNFLG1CQUFBO0FBSE47QUFNSTs7O0VBQ0Usa0JBQUE7QUFGTjtBQU1FOztFQUVFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLG9CQUFBO0FBSko7QUFNSTs7RUFDRSxzQ0FBQTtBQUhOO0FBSU07O0VBQ0Usc0NBQUE7QUFEUjtBQUtJOztFQUNFLGtEQUFBO0FBRk47QUFLSTs7RUFDRSxzQ0FBQTtBQUZOO0FBTUU7RUFDRSw2QkFBQTtBQUpKO0FBTUk7RUFDRSw2QkFBQTtBQUpOO0FBT0k7RUFDRSw2QkFBQTtBQUxOO0FBUUk7RUFDRSxzQ0FBQTtFQVFBLFdBQUE7RUFDQSxZQUFBO0FBYk47QUFLTTtFQUNFLHNDQUFBO0FBSFI7QUFLTTtFQUNFLHNDQUFBO0FBSFI7QUFXRTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLDhCQUFBO0VBQ0EsMkJBQUE7RUFDQSx5QkFBQTtVQUFBLGlCQUFBO0FBVEo7QUFhRTtFQUNFO0lBQ0UsV0FBQTtJQUNBLFlBQUE7RUFYSjtFQWFJO0lBQ0UsYUFBQTtFQVhOO0FBQ0Y7QUFpQkU7RUFDRTtJQUNFLHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxXQUFBO0lBRUEsY0FBQTtJQUNBLDRCQUFBO0lBQ0EsVUFBQTtJQUVBLHNDQUFBO0VBakJKO0VBbUJJO0lBQ0Usc0NBQUE7RUFqQk47RUFvQkk7SUFDRSxzQ0FBQTtFQWxCTjtFQXFCSTtJQUNFLHNCQUFBO0VBbkJOO0VBc0JJO0lBQ0UsZ0JBQUE7RUFwQk47RUF1QkU7SUFDRSw2QkFBQTtFQXJCSjtFQXdCRTtJQUNFLDRCQUFBO0VBdEJKO0VBd0JFO0lBQ0UsNkJBQUE7RUF0Qko7QUFDRjtBQTBCSTtFQUNFLFNBQUE7QUF4Qk47QUEyQkk7RUFDRSxVQUFBO0FBekJOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcIm9wZW4tY29sb3Ivb3Blbi1jb2xvci5zY3NzXFxcIjtcXG5cXG5AbWl4aW4gaXNNb2JpbGUoKSB7XFxuICBAYXQtcm9vdCAuZXhjYWxpZHJhdy0tbW9iaWxlI3smfSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gdG9vbGJhckJ1dHRvbkNvbG9yU3RhdGVzIHtcXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICAmICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICAtLWljb24tZmlsbC1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2Mtd2hpdGV9O1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19rZXliaW5kaW5nIHtcXG4gICAgYm90dG9tOiA0cHg7XFxuICAgIHJpZ2h0OiA0cHg7XFxuICB9XFxufVxcblxcbiR0aGVtZS1maWx0ZXI6IFxcXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcXFwiO1xcbiRyaWdodC1zaWRlYmFyLXdpZHRoOiBcXFwiMzAycHhcXFwiO1xcblxcbjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IHVucXVvdGUoJHRoZW1lLWZpbHRlcik7XFxuICByaWdodFNpZGViYXJXaWR0aDogdW5xdW90ZSgkcmlnaHQtc2lkZWJhci13aWR0aCk7XFxufVxcblwiLFwiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcbkBpbXBvcnQgXFxcIi4uL2Nzcy92YXJpYWJsZXMubW9kdWxlXFxcIjtcXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAuVG9vbEljb24ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgfVxcblxcbiAgLlRvb2xJY29uLS1wbGFpbiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIHdpZHRoOiAycmVtO1xcbiAgICAgIGhlaWdodDogMnJlbTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX3R5cGVfcmFkaW8sXFxuICAuVG9vbEljb25fdHlwZV9jaGVja2JveCB7XFxuICAgICYgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcblxcbiAgICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgICAgfVxcbiAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19pY29uIHtcXG4gICAgd2lkdGg6IDIuNXJlbTtcXG4gICAgaGVpZ2h0OiAyLjVyZW07XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcblxcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7XFxuXFxuICAgICYgKyAuVG9vbEljb25fX2xhYmVsIHtcXG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwO1xcbiAgICB9XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgIGhlaWdodDogMWVtO1xcbiAgICAgIGZpbGw6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICAgICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fbGFiZWwge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbiAgICBtYXJnaW46IDAgMC44ZW07XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcbiAgICAuU3Bpbm5lciB7XFxuICAgICAgbWFyZ2luLWxlZnQ6IDAuNmVtO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fc2l6ZV9zbWFsbCAuVG9vbEljb25fX2ljb24ge1xcbiAgICB3aWR0aDogMnJlbTtcXG4gICAgaGVpZ2h0OiAycmVtO1xcbiAgICBmb250LXNpemU6IDAuOGVtO1xcbiAgfVxcblxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLFxcbiAgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbixcXG4gIC5Ub29sSWNvbl90eXBlX2J1dHRvbiB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG5cXG4gICAgJi5Ub29sSWNvbi0tc2VsZWN0ZWQge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcblxcbiAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG5cXG4gICAgJi0tc2hvdyB7XFxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgfVxcblxcbiAgICAmLS1oaWRlIHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbiAgLlRvb2xJY29uX3R5cGVfY2hlY2tib3gge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICAmOm5vdCguVG9vbEljb25fdG9nZ2xlX29wYXF1ZSk6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMtdmlzaWJsZSArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fdHlwZV9mbG9hdGluZyB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIH1cXG5cXG4gICAgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICAgIH1cXG4gICAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgICB9XFxuXFxuICAgICAgd2lkdGg6IDJyZW07XFxuICAgICAgaGVpZ2h0OiAycmVtO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMnB4O1xcbiAgICByaWdodDogM3B4O1xcbiAgICBmb250LXNpemU6IDAuNWVtO1xcbiAgICBjb2xvcjogdmFyKC0ta2V5YmluZGluZy1jb2xvcik7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB9XFxuXFxuICAvLyBzaHJpbmsgc2hhcGUgaWNvbnMgb24gc21hbGwgdmlld3BvcnRzIHRvIG1ha2UgdGhlbSBmaXRcXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA0MjVweCkge1xcbiAgICAuU2hhcGUgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICB3aWR0aDogMnJlbTtcXG4gICAgICBoZWlnaHQ6IDJyZW07XFxuXFxuICAgICAgc3ZnIHtcXG4gICAgICAgIGhlaWdodDogMC44ZW07XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAvLyBtb3ZlIHRoZSBsb2NrIGJ1dHRvbiBvdXQgb2YgdGhlIHdheSBvbiBzbWFsbCB2aWV3cG9ydHNcXG4gIC8vIGl0IGJlZ2lucyB0byBjb2xsaWRlIHdpdGggdGhlIEdpdEh1YiBpY29uIGJlZm9yZSB3ZSBzd2l0Y2ggdG8gbW9iaWxlIG1vZGVcXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjBweCkge1xcbiAgICAuVG9vbEljb24uVG9vbEljb25fdHlwZV9mbG9hdGluZyB7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICByaWdodDogLThweDtcXG5cXG4gICAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgICBib3JkZXItcmFkaXVzOiAyMHB4IDAgMCAyMHB4O1xcbiAgICAgIHotaW5kZXg6IDE7XFxuXFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuXFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgICB9XFxuXFxuICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgICAgfVxcblxcbiAgICAgIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcbiAgICAgIH1cXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgLlRvb2xJY29uLlRvb2xJY29uX19saWJyYXJ5IHtcXG4gICAgICB0b3A6IGNhbGModmFyKC0tc2F0KSArIDEwMHB4KTtcXG4gICAgfVxcblxcbiAgICAuVG9vbEljb24uVG9vbEljb25fX2xvY2sge1xcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgNjBweCk7XFxuICAgIH1cXG4gICAgLlRvb2xJY29uLlRvb2xJY29uX19wZW5Nb2RlIHtcXG4gICAgICB0b3A6IGNhbGModmFyKC0tc2F0KSArIDE0MHB4KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnVubG9ja2VkLWljb24ge1xcbiAgICA6cm9vdFtkaXI9XFxcImx0clxcXCJdICYge1xcbiAgICAgIGxlZnQ6IDJweDtcXG4gICAgfVxcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHJpZ2h0OiAycHg7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss\n");
1592
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ToolIcon {\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n user-select: none;\\n}\\n.excalidraw .ToolIcon--plain {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon--plain .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon:hover,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_radio + .ToolIcon__icon:active,\\n.excalidraw .ToolIcon_type_checkbox + .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__icon {\\n width: 2.5rem;\\n height: 2.5rem;\\n color: var(--icon-fill-color);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .ToolIcon__icon + .ToolIcon__label {\\n margin-inline-start: 0;\\n}\\n.excalidraw .ToolIcon__icon svg {\\n position: relative;\\n height: 1em;\\n fill: var(--icon-fill-color);\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon__label {\\n display: flex;\\n align-items: center;\\n color: var(--icon-fill-color);\\n font-family: var(--ui-font);\\n margin: 0 0.8em;\\n text-overflow: ellipsis;\\n}\\n.excalidraw .ToolIcon__label .Spinner {\\n margin-left: 0.6em;\\n}\\n.excalidraw .ToolIcon_size_small .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n font-size: 0.8em;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button,\\n.excalidraw .Modal .ToolIcon_type_button,\\n.excalidraw .ToolIcon_type_button {\\n padding: 0;\\n border: none;\\n margin: 0;\\n font-size: inherit;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:focus-visible,\\n.excalidraw .Modal .ToolIcon_type_button:focus-visible,\\n.excalidraw .ToolIcon_type_button:focus-visible {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:hover,\\n.excalidraw .Modal .ToolIcon_type_button:hover,\\n.excalidraw .ToolIcon_type_button:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button:active,\\n.excalidraw .Modal .ToolIcon_type_button:active,\\n.excalidraw .ToolIcon_type_button:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button--show,\\n.excalidraw .Modal .ToolIcon_type_button--show,\\n.excalidraw .ToolIcon_type_button--show {\\n visibility: visible;\\n}\\n.excalidraw .excalidraw .ToolIcon_type_button--hide,\\n.excalidraw .Modal .ToolIcon_type_button--hide,\\n.excalidraw .ToolIcon_type_button--hide {\\n visibility: hidden;\\n}\\n.excalidraw .ToolIcon_type_radio,\\n.excalidraw .ToolIcon_type_checkbox {\\n position: absolute;\\n opacity: 0;\\n pointer-events: none;\\n}\\n.excalidraw .ToolIcon_type_radio:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_radio:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon:active,\\n.excalidraw .ToolIcon_type_checkbox:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_radio:focus-visible + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:focus-visible + .ToolIcon__icon {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .ToolIcon_type_radio:active + .ToolIcon__icon,\\n.excalidraw .ToolIcon_type_checkbox:active + .ToolIcon__icon {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_floating {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:hover {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:active {\\n background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n width: 2rem;\\n height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__keybinding {\\n position: absolute;\\n bottom: 2px;\\n right: 3px;\\n font-size: 0.5em;\\n color: var(--keybinding-color);\\n font-family: var(--ui-font);\\n user-select: none;\\n}\\n@media (max-width: 425px) {\\n .excalidraw .Shape .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n }\\n .excalidraw .Shape .ToolIcon__icon svg {\\n height: 0.8em;\\n }\\n}\\n@media (max-width: 760px) {\\n .excalidraw .ToolIcon.ToolIcon_type_floating {\\n display: inline-block;\\n position: absolute;\\n right: -8px;\\n margin-left: 0;\\n border-radius: 20px 0 0 20px;\\n z-index: 1;\\n background-color: var(--button-gray-1);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating:hover {\\n background-color: var(--button-gray-1);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating:active {\\n background-color: var(--button-gray-2);\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating .ToolIcon__icon {\\n border-radius: inherit;\\n }\\n .excalidraw .ToolIcon.ToolIcon_type_floating svg {\\n position: static;\\n }\\n .excalidraw .ToolIcon.ToolIcon__library {\\n top: calc(var(--sat) + 100px);\\n }\\n .excalidraw .ToolIcon.ToolIcon__lock {\\n top: calc(var(--sat) + 60px);\\n }\\n .excalidraw .ToolIcon.ToolIcon__penMode {\\n top: calc(var(--sat) + 140px);\\n }\\n}\\n:root[dir=ltr] .excalidraw .unlocked-icon {\\n left: 2px;\\n}\\n:root[dir=rtl] .excalidraw .unlocked-icon {\\n right: 2px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../components/ToolIcon.scss\"],\"names\":[],\"mappings\":\"AAiCA;EACE,2CAAA;EACA,wBAAA;AChCF;;AACE;EACE,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,wCAAA;EACA,iBAAA;AAEJ;AACE;EACE,6BAAA;AACJ;AAAI;EACE,WAAA;EACA,YAAA;AAEN;AAII;;EACE,sCAAA;AADN;AAGM;;EACE,sCAAA;AAAR;AAEM;;EACE,sCAAA;AACR;AAIE;EACE,aAAA;EACA,cAAA;EACA,6BAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,sCAAA;AAJJ;AAMI;EACE,sBAAA;AAJN;AAOI;EACE,kBAAA;EACA,WAAA;EACA,4BAAA;EACA,6BAAA;AALN;AASE;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,2BAAA;EACA,eAAA;EACA,uBAAA;AAPJ;AASI;EACE,kBAAA;AAPN;AAWE;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AATJ;AAYE;;;EAGE,UAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;AAVJ;AAYI;;;EACE,kDAAA;AARN;AAWI;;;EACE,sCAAA;AAPN;AASM;;;EACE,sCAAA;AALR;AASI;;;EACE,sCAAA;AALN;AAQI;;;EACE,sCAAA;AAJN;AAOI;;;EACE,mBAAA;AAHN;AAMI;;;EACE,kBAAA;AAFN;AAME;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AAJJ;AAMI;;EACE,sCAAA;AAHN;AAIM;;EACE,sCAAA;AADR;AAKI;;EACE,kDAAA;AAFN;AAKI;;EACE,sCAAA;AAFN;AAME;EACE,6BAAA;AAJJ;AAMI;EACE,6BAAA;AAJN;AAOI;EACE,6BAAA;AALN;AAQI;EACE,sCAAA;EAQA,WAAA;EACA,YAAA;AAbN;AAKM;EACE,sCAAA;AAHR;AAKM;EACE,sCAAA;AAHR;AAWE;EACE,kBAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,2BAAA;EACA,iBAAA;AATJ;AAaE;EACE;IACE,WAAA;IACA,YAAA;EAXJ;EAaI;IACE,aAAA;EAXN;AACF;AAiBE;EACE;IACE,qBAAA;IACA,kBAAA;IACA,WAAA;IAEA,cAAA;IACA,4BAAA;IACA,UAAA;IAEA,sCAAA;EAjBJ;EAmBI;IACE,sCAAA;EAjBN;EAoBI;IACE,sCAAA;EAlBN;EAqBI;IACE,sBAAA;EAnBN;EAsBI;IACE,gBAAA;EApBN;EAuBE;IACE,6BAAA;EArBJ;EAwBE;IACE,4BAAA;EAtBJ;EAwBE;IACE,6BAAA;EAtBJ;AACF;AA0BI;EACE,SAAA;AAxBN;AA2BI;EACE,UAAA;AAzBN\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n@import \\\"../css/variables.module\\\";\\n\\n.excalidraw {\\n .ToolIcon {\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n cursor: pointer;\\n -webkit-tap-highlight-color: transparent;\\n user-select: none;\\n }\\n\\n .ToolIcon--plain {\\n background-color: transparent;\\n .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n }\\n }\\n\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n }\\n\\n .ToolIcon__icon {\\n width: 2.5rem;\\n height: 2.5rem;\\n color: var(--icon-fill-color);\\n\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n border-radius: var(--border-radius-lg);\\n\\n & + .ToolIcon__label {\\n margin-inline-start: 0;\\n }\\n\\n svg {\\n position: relative;\\n height: 1em;\\n fill: var(--icon-fill-color);\\n color: var(--icon-fill-color);\\n }\\n }\\n\\n .ToolIcon__label {\\n display: flex;\\n align-items: center;\\n color: var(--icon-fill-color);\\n font-family: var(--ui-font);\\n margin: 0 0.8em;\\n text-overflow: ellipsis;\\n\\n .Spinner {\\n margin-left: 0.6em;\\n }\\n }\\n\\n .ToolIcon_size_small .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n font-size: 0.8em;\\n }\\n\\n .excalidraw .ToolIcon_type_button,\\n .Modal .ToolIcon_type_button,\\n .ToolIcon_type_button {\\n padding: 0;\\n border: none;\\n margin: 0;\\n font-size: inherit;\\n\\n &:focus-visible {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &.ToolIcon--selected {\\n background-color: var(--button-gray-2);\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &--show {\\n visibility: visible;\\n }\\n\\n &--hide {\\n visibility: hidden;\\n }\\n }\\n\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n position: absolute;\\n opacity: 0;\\n pointer-events: none;\\n\\n &:not(.ToolIcon_toggle_opaque):checked + .ToolIcon__icon {\\n background-color: var(--button-gray-2);\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n &:focus-visible + .ToolIcon__icon {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:active + .ToolIcon__icon {\\n background-color: var(--button-gray-3);\\n }\\n }\\n\\n .ToolIcon_type_floating {\\n background-color: transparent;\\n\\n &:hover {\\n background-color: transparent;\\n }\\n\\n &:active {\\n background-color: transparent;\\n }\\n\\n .ToolIcon__icon {\\n background-color: var(--button-gray-1);\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n width: 2rem;\\n height: 2rem;\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n position: absolute;\\n bottom: 2px;\\n right: 3px;\\n font-size: 0.5em;\\n color: var(--keybinding-color);\\n font-family: var(--ui-font);\\n user-select: none;\\n }\\n\\n // shrink shape icons on small viewports to make them fit\\n @media (max-width: 425px) {\\n .Shape .ToolIcon__icon {\\n width: 2rem;\\n height: 2rem;\\n\\n svg {\\n height: 0.8em;\\n }\\n }\\n }\\n\\n // move the lock button out of the way on small viewports\\n // it begins to collide with the GitHub icon before we switch to mobile mode\\n @media (max-width: 760px) {\\n .ToolIcon.ToolIcon_type_floating {\\n display: inline-block;\\n position: absolute;\\n right: -8px;\\n\\n margin-left: 0;\\n border-radius: 20px 0 0 20px;\\n z-index: 1;\\n\\n background-color: var(--button-gray-1);\\n\\n &:hover {\\n background-color: var(--button-gray-1);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-2);\\n }\\n\\n .ToolIcon__icon {\\n border-radius: inherit;\\n }\\n\\n svg {\\n position: static;\\n }\\n }\\n .ToolIcon.ToolIcon__library {\\n top: calc(var(--sat) + 100px);\\n }\\n\\n .ToolIcon.ToolIcon__lock {\\n top: calc(var(--sat) + 60px);\\n }\\n .ToolIcon.ToolIcon__penMode {\\n top: calc(var(--sat) + 140px);\\n }\\n }\\n\\n .unlocked-icon {\\n :root[dir=\\\"ltr\\\"] & {\\n left: 2px;\\n }\\n\\n :root[dir=\\\"rtl\\\"] & {\\n right: 2px;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Ub29sSWNvbi5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLG1EQUFtRCxnREFBZ0QsNkJBQTZCLEdBQUcsMkJBQTJCLHlCQUF5Qix3QkFBd0IsdUJBQXVCLG9CQUFvQiw2Q0FBNkMsc0JBQXNCLEdBQUcsZ0NBQWdDLGtDQUFrQyxHQUFHLGdEQUFnRCxnQkFBZ0IsaUJBQWlCLEdBQUcsOEdBQThHLDJDQUEyQyxHQUFHLDBIQUEwSCwyQ0FBMkMsR0FBRyw0SEFBNEgsMkNBQTJDLEdBQUcsK0JBQStCLGtCQUFrQixtQkFBbUIsa0NBQWtDLGtCQUFrQiw0QkFBNEIsd0JBQXdCLDJDQUEyQyxHQUFHLGtEQUFrRCwyQkFBMkIsR0FBRyxtQ0FBbUMsdUJBQXVCLGdCQUFnQixpQ0FBaUMsa0NBQWtDLEdBQUcsZ0NBQWdDLGtCQUFrQix3QkFBd0Isa0NBQWtDLGdDQUFnQyxvQkFBb0IsNEJBQTRCLEdBQUcseUNBQXlDLHVCQUF1QixHQUFHLG9EQUFvRCxnQkFBZ0IsaUJBQWlCLHFCQUFxQixHQUFHLGdJQUFnSSxlQUFlLGlCQUFpQixjQUFjLHVCQUF1QixHQUFHLDBLQUEwSyx1REFBdUQsR0FBRyx5TEFBeUwsMkNBQTJDLEdBQUcsOE1BQThNLDJDQUEyQyxHQUFHLGtKQUFrSiwyQ0FBMkMsR0FBRyxxSkFBcUosMkNBQTJDLEdBQUcsa0pBQWtKLHdCQUF3QixHQUFHLGtKQUFrSix1QkFBdUIsR0FBRywwRUFBMEUsdUJBQXVCLGVBQWUseUJBQXlCLEdBQUcsd0xBQXdMLDJD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REFBaUQsU0FBUywyQkFBMkIsaUNBQWlDLFNBQVMsZUFBZSwyQkFBMkIsU0FBUyxPQUFPLG1DQUFtQyxzQ0FBc0MsT0FBTyxrQ0FBa0MscUNBQXFDLE9BQU8sbUNBQW1DLHNDQUFzQyxPQUFPLEtBQUssc0JBQXNCLDRCQUE0QixrQkFBa0IsT0FBTyw4QkFBOEIsbUJBQW1CLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN4emE7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1Rvb2xJY29uLnNjc3M/YTBkNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCI6ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICByaWdodFNpZGViYXJXaWR0aDogMzAycHg7XFxufVxcblxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbi0tcGxhaW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbi0tcGxhaW4gLlRvb2xJY29uX19pY29uIHtcXG4gIHdpZHRoOiAycmVtO1xcbiAgaGVpZ2h0OiAycmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9yYWRpbyArIC5Ub29sSWNvbl9faWNvbixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW8gKyAuVG9vbEljb25fX2ljb246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfY2hlY2tib3ggKyAuVG9vbEljb25fX2ljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveCArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl9faWNvbiB7XFxuICB3aWR0aDogMi41cmVtO1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX19pY29uICsgLlRvb2xJY29uX19sYWJlbCB7XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2ljb24gc3ZnIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMWVtO1xcbiAgZmlsbDogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2xhYmVsIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBmb250LWZhbWlseTogdmFyKC0tdWktZm9udCk7XFxuICBtYXJnaW46IDAgMC44ZW07XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX19sYWJlbCAuU3Bpbm5lciB7XFxuICBtYXJnaW4tbGVmdDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl9zaXplX3NtYWxsIC5Ub29sSWNvbl9faWNvbiB7XFxuICB3aWR0aDogMnJlbTtcXG4gIGhlaWdodDogMnJlbTtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbixcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbiB7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiBub25lO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbn1cXG4uZXhjYWxpZHJhdyAuZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246Zm9jdXMtdmlzaWJsZSxcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmZvY3VzLXZpc2libGUsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmZvY3VzLXZpc2libGUge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLlRvb2xJY29uLS1zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLlRvb2xJY29uLS1zZWxlY3RlZDphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQ6YWN0aXZlLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi5Ub29sSWNvbi0tc2VsZWN0ZWQ6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbjpob3ZlcixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLk1vZGFsIC5Ub29sSWNvbl90eXBlX2J1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1zaG93LFxcbi5leGNhbGlkcmF3IC5Nb2RhbCAuVG9vbEljb25fdHlwZV9idXR0b24tLXNob3csXFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1zaG93IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxufVxcbi5leGNhbGlkcmF3IC5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi0taGlkZSxcXG4uZXhjYWxpZHJhdyAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uLS1oaWRlLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2J1dHRvbi0taGlkZSB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW86bm90KC5Ub29sSWNvbl90b2dnbGVfb3BhcXVlKTpjaGVja2VkICsgLlRvb2xJY29uX19pY29uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94Om5vdCguVG9vbEljb25fdG9nZ2xlX29wYXF1ZSk6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfcmFkaW86bm90KC5Ub29sSWNvbl90b2dnbGVfb3BhcXVlKTpjaGVja2VkICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveDpub3QoLlRvb2xJY29uX3RvZ2dsZV9vcGFxdWUpOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9yYWRpbzpmb2N1cy12aXNpYmxlICsgLlRvb2xJY29uX19pY29uLFxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2NoZWNrYm94OmZvY3VzLXZpc2libGUgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX3JhZGlvOmFjdGl2ZSArIC5Ub29sSWNvbl9faWNvbixcXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9jaGVja2JveDphY3RpdmUgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxufVxcbi5leGNhbGlkcmF3IC5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZzpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfZmxvYXRpbmc6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICB3aWR0aDogMnJlbTtcXG4gIGhlaWdodDogMnJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLlRvb2xJY29uX3R5cGVfZmxvYXRpbmcgLlRvb2xJY29uX19pY29uOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAycHg7XFxuICByaWdodDogM3B4O1xcbiAgZm9udC1zaXplOiAwLjVlbTtcXG4gIGNvbG9yOiB2YXIoLS1rZXliaW5kaW5nLWNvbG9yKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogNDI1cHgpIHtcXG4gIC5leGNhbGlkcmF3IC5TaGFwZSAuVG9vbEljb25fX2ljb24ge1xcbiAgICB3aWR0aDogMnJlbTtcXG4gICAgaGVpZ2h0OiAycmVtO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlNoYXBlIC5Ub29sSWNvbl9faWNvbiBzdmcge1xcbiAgICBoZWlnaHQ6IDAuOGVtO1xcbiAgfVxcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHtcXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHJpZ2h0OiAtOHB4O1xcbiAgICBtYXJnaW4tbGVmdDogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogMjBweCAwIDAgMjBweDtcXG4gICAgei1pbmRleDogMTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICB9XFxuICAuZXhjYWxpZHJhdyAuVG9vbEljb24uVG9vbEljb25fdHlwZV9mbG9hdGluZzpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX3R5cGVfZmxvYXRpbmc6YWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICB9XFxuICAuZXhjYWxpZHJhdyAuVG9vbEljb24uVG9vbEljb25fdHlwZV9mbG9hdGluZyAuVG9vbEljb25fX2ljb24ge1xcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX3R5cGVfZmxvYXRpbmcgc3ZnIHtcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXG4gIH1cXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl9fbGlicmFyeSB7XFxuICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTAwcHgpO1xcbiAgfVxcbiAgLmV4Y2FsaWRyYXcgLlRvb2xJY29uLlRvb2xJY29uX19sb2NrIHtcXG4gICAgdG9wOiBjYWxjKHZhcigtLXNhdCkgKyA2MHB4KTtcXG4gIH1cXG4gIC5leGNhbGlkcmF3IC5Ub29sSWNvbi5Ub29sSWNvbl9fcGVuTW9kZSB7XFxuICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTQwcHgpO1xcbiAgfVxcbn1cXG46cm9vdFtkaXI9bHRyXSAuZXhjYWxpZHJhdyAudW5sb2NrZWQtaWNvbiB7XFxuICBsZWZ0OiAycHg7XFxufVxcbjpyb290W2Rpcj1ydGxdIC5leGNhbGlkcmF3IC51bmxvY2tlZC1pY29uIHtcXG4gIHJpZ2h0OiAycHg7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvVG9vbEljb24uc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBQUNFO0VBQ0Usb0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLHdDQUFBO0VBQ0EsaUJBQUE7QUFFSjtBQUNFO0VBQ0UsNkJBQUE7QUFDSjtBQUFJO0VBQ0UsV0FBQTtFQUNBLFlBQUE7QUFFTjtBQUlJOztFQUNFLHNDQUFBO0FBRE47QUFHTTs7RUFDRSxzQ0FBQTtBQUFSO0FBRU07O0VBQ0Usc0NBQUE7QUFDUjtBQUlFO0VBQ0UsYUFBQTtFQUNBLGNBQUE7RUFDQSw2QkFBQTtFQUVBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0VBRUEsc0NBQUE7QUFKSjtBQU1JO0VBQ0Usc0JBQUE7QUFKTjtBQU9JO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0VBQ0EsNEJBQUE7RUFDQSw2QkFBQTtBQUxOO0FBU0U7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDJCQUFBO0VBQ0EsZUFBQTtFQUNBLHVCQUFBO0FBUEo7QUFTSTtFQUNFLGtCQUFBO0FBUE47QUFXRTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7QUFUSjtBQVlFOzs7RUFHRSxVQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQUE7RUFDQSxrQkFBQTtBQVZKO0FBWUk7OztFQUNFLGtEQUFBO0FBUk47QUFXSTs7O0VBQ0Usc0NBQUE7QUFQTjtBQVNNOzs7RUFDRSxzQ0FBQTtBQUxSO0FBU0k7OztFQUNFLHNDQUFBO0FBTE47QUFRSTs7O0VBQ0Usc0NBQUE7QUFKTjtBQU9JOzs7RUFDRSxtQkFBQTtBQUhOO0FBTUk7OztFQUNFLGtCQUFBO0FBRk47QUFNRTs7RUFFRSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxvQkFBQTtBQUpKO0FBTUk7O0VBQ0Usc0NBQUE7QUFITjtBQUlNOztFQUNFLHNDQUFBO0FBRFI7QUFLSTs7RUFDRSxrREFBQTtBQUZOO0FBS0k7O0VBQ0Usc0NBQUE7QUFGTjtBQU1FO0VBQ0UsNkJBQUE7QUFKSjtBQU1JO0VBQ0UsNkJBQUE7QUFKTjtBQU9JO0VBQ0UsNkJBQUE7QUFMTjtBQVFJO0VBQ0Usc0NBQUE7RUFRQSxXQUFBO0VBQ0EsWUFBQTtBQWJOO0FBS007RUFDRSxzQ0FBQTtBQUhSO0FBS007RUFDRSxzQ0FBQTtBQUhSO0FBV0U7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSw4QkFBQTtFQUNBLDJCQUFBO0VBQ0EsaUJBQUE7QUFUSjtBQWFFO0VBQ0U7SUFDRSxXQUFBO0lBQ0EsWUFBQTtFQVhKO0VBYUk7SUFDRSxhQUFBO0VBWE47QUFDRjtBQWlCRTtFQUNFO0lBQ0UscUJBQUE7SUFDQSxrQkFBQTtJQUNBLFdBQUE7SUFFQSxjQUFBO0lBQ0EsNEJBQUE7SUFDQSxVQUFBO0lBRUEsc0NBQUE7RUFqQko7RUFtQkk7SUFDRSxzQ0FBQTtFQWpCTjtFQW9CSTtJQUNFLHNDQUFBO0VBbEJOO0VBcUJJO0lBQ0Usc0JBQUE7RUFuQk47RUFzQkk7SUFDRSxnQkFBQTtFQXBCTjtFQXVCRTtJQUNFLDZCQUFBO0VBckJKO0VBd0JFO0lBQ0UsNEJBQUE7RUF0Qko7RUF3QkU7SUFDRSw2QkFBQTtFQXRCSjtBQUNGO0FBMEJJO0VBQ0UsU0FBQTtBQXhCTjtBQTJCSTtFQUNFLFVBQUE7QUF6Qk5cIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcblxcbkBtaXhpbiBpc01vYmlsZSgpIHtcXG4gIEBhdC1yb290IC5leGNhbGlkcmF3LS1tb2JpbGUjeyZ9IHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbkBtaXhpbiB0b29sYmFyQnV0dG9uQ29sb3JTdGF0ZXMge1xcbiAgLlRvb2xJY29uX3R5cGVfcmFkaW8sXFxuICAuVG9vbEljb25fdHlwZV9jaGVja2JveCB7XFxuICAgICYgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbiAgICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuICAgIH1cXG4gICAgJjpjaGVja2VkICsgLlRvb2xJY29uX19pY29uOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fX2tleWJpbmRpbmcge1xcbiAgICBib3R0b206IDRweDtcXG4gICAgcmlnaHQ6IDRweDtcXG4gIH1cXG59XFxuXFxuJHRoZW1lLWZpbHRlcjogXFxcImludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKVxcXCI7XFxuJHJpZ2h0LXNpZGViYXItd2lkdGg6IFxcXCIzMDJweFxcXCI7XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogdW5xdW90ZSgkdGhlbWUtZmlsdGVyKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiB1bnF1b3RlKCRyaWdodC1zaWRlYmFyLXdpZHRoKTtcXG59XFxuXCIsXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuQGltcG9ydCBcXFwiLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGVcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC5Ub29sSWNvbiB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB9XFxuXFxuICAuVG9vbEljb24tLXBsYWluIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgd2lkdGg6IDJyZW07XFxuICAgICAgaGVpZ2h0OiAycmVtO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fdHlwZV9yYWRpbyxcXG4gIC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gICAgJiArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuXFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICB9XFxuICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuVG9vbEljb25fX2ljb24ge1xcbiAgICB3aWR0aDogMi41cmVtO1xcbiAgICBoZWlnaHQ6IDIuNXJlbTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcXG5cXG4gICAgJiArIC5Ub29sSWNvbl9fbGFiZWwge1xcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XFxuICAgIH1cXG5cXG4gICAgc3ZnIHtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgaGVpZ2h0OiAxZW07XFxuICAgICAgZmlsbDogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gICAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX19sYWJlbCB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tdWktZm9udCk7XFxuICAgIG1hcmdpbjogMCAwLjhlbTtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXFxuICAgIC5TcGlubmVyIHtcXG4gICAgICBtYXJnaW4tbGVmdDogMC42ZW07XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9zaXplX3NtYWxsIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgIHdpZHRoOiAycmVtO1xcbiAgICBoZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtc2l6ZTogMC44ZW07XFxuICB9XFxuXFxuICAuZXhjYWxpZHJhdyAuVG9vbEljb25fdHlwZV9idXR0b24sXFxuICAuTW9kYWwgLlRvb2xJY29uX3R5cGVfYnV0dG9uLFxcbiAgLlRvb2xJY29uX3R5cGVfYnV0dG9uIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG5cXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmLlRvb2xJY29uLS1zZWxlY3RlZCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuXFxuICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgfVxcblxcbiAgICAmLS1zaG93IHtcXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICB9XFxuXFxuICAgICYtLWhpZGUge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgfVxcbiAgfVxcblxcbiAgLlRvb2xJY29uX3R5cGVfcmFkaW8sXFxuICAuVG9vbEljb25fdHlwZV9jaGVja2JveCB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAgICY6bm90KC5Ub29sSWNvbl90b2dnbGVfb3BhcXVlKTpjaGVja2VkICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cy12aXNpYmxlICsgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgfVxcblxcbiAgICAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgICAgfVxcbiAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgICAgIH1cXG5cXG4gICAgICB3aWR0aDogMnJlbTtcXG4gICAgICBoZWlnaHQ6IDJyZW07XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fa2V5YmluZGluZyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAycHg7XFxuICAgIHJpZ2h0OiAzcHg7XFxuICAgIGZvbnQtc2l6ZTogMC41ZW07XFxuICAgIGNvbG9yOiB2YXIoLS1rZXliaW5kaW5nLWNvbG9yKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIH1cXG5cXG4gIC8vIHNocmluayBzaGFwZSBpY29ucyBvbiBzbWFsbCB2aWV3cG9ydHMgdG8gbWFrZSB0aGVtIGZpdFxcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDQyNXB4KSB7XFxuICAgIC5TaGFwZSAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgIHdpZHRoOiAycmVtO1xcbiAgICAgIGhlaWdodDogMnJlbTtcXG5cXG4gICAgICBzdmcge1xcbiAgICAgICAgaGVpZ2h0OiAwLjhlbTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIG1vdmUgdGhlIGxvY2sgYnV0dG9uIG91dCBvZiB0aGUgd2F5IG9uIHNtYWxsIHZpZXdwb3J0c1xcbiAgLy8gaXQgYmVnaW5zIHRvIGNvbGxpZGUgd2l0aCB0aGUgR2l0SHViIGljb24gYmVmb3JlIHdlIHN3aXRjaCB0byBtb2JpbGUgbW9kZVxcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7XFxuICAgIC5Ub29sSWNvbi5Ub29sSWNvbl90eXBlX2Zsb2F0aW5nIHtcXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHJpZ2h0OiAtOHB4O1xcblxcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMCAwIDIwcHg7XFxuICAgICAgei1pbmRleDogMTtcXG5cXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG5cXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XFxuICAgICAgfVxcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICAuVG9vbEljb24uVG9vbEljb25fX2xpYnJhcnkge1xcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTAwcHgpO1xcbiAgICB9XFxuXFxuICAgIC5Ub29sSWNvbi5Ub29sSWNvbl9fbG9jayB7XFxuICAgICAgdG9wOiBjYWxjKHZhcigtLXNhdCkgKyA2MHB4KTtcXG4gICAgfVxcbiAgICAuVG9vbEljb24uVG9vbEljb25fX3Blbk1vZGUge1xcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1zYXQpICsgMTQwcHgpO1xcbiAgICB9XFxuICB9XFxuXFxuICAudW5sb2NrZWQtaWNvbiB7XFxuICAgIDpyb290W2Rpcj1cXFwibHRyXFxcIl0gJiB7XFxuICAgICAgbGVmdDogMnB4O1xcbiAgICB9XFxuXFxuICAgIDpyb290W2Rpcj1cXFwicnRsXFxcIl0gJiB7XFxuICAgICAgcmlnaHQ6IDJweDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss\n");
1604
1593
 
1605
1594
  /***/ }),
1606
1595
 
@@ -1644,7 +1633,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1644
1633
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1645
1634
 
1646
1635
  "use strict";
1647
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visually-hidden {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n white-space: nowrap;\\n /* added line */\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n\\n.LoadingMessage {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 999;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none;\\n}\\n.LoadingMessage .Spinner {\\n font-size: 2.8em;\\n}\\n.LoadingMessage .LoadingMessage-text {\\n margin-top: 1em;\\n font-size: 0.8em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/app.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,mBAAA;EAAqB,eAAA;EACrB,yBAAA;UAAA,iBAAA;AAEF;;AACA;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,oBAAA;AAEF;AAAE;EACE,gBAAA;AAEJ;AACE;EACE,eAAA;EACA,gBAAA;AACJ\",\"sourcesContent\":[\".visually-hidden {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n white-space: nowrap; /* added line */\\n user-select: none;\\n}\\n\\n.LoadingMessage {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 999;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none;\\n\\n .Spinner {\\n font-size: 2.8em;\\n }\\n\\n .LoadingMessage-text {\\n margin-top: 1em;\\n font-size: 0.8em;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL2FwcC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDREQUE0RCxrQ0FBa0MsZ0JBQWdCLGVBQWUscUJBQXFCLG1DQUFtQyx3QkFBd0Isa0RBQWtELDhCQUE4QixHQUFHLHFCQUFxQix1QkFBdUIsV0FBVyxhQUFhLGNBQWMsWUFBWSxpQkFBaUIsa0JBQWtCLDJCQUEyQix3QkFBd0IsNEJBQTRCLHlCQUF5QixHQUFHLDRCQUE0QixxQkFBcUIsR0FBRyx3Q0FBd0Msb0JBQW9CLHFCQUFxQixHQUFHLE9BQU8scUZBQXFGLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsWUFBWSxXQUFXLE1BQU0sS0FBSyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVywyQ0FBMkMsa0NBQWtDLGdCQUFnQixlQUFlLHFCQUFxQixtQ0FBbUMseUJBQXlCLHNDQUFzQyxHQUFHLHFCQUFxQix1QkFBdUIsV0FBVyxhQUFhLGNBQWMsWUFBWSxpQkFBaUIsa0JBQWtCLDJCQUEyQix3QkFBd0IsNEJBQTRCLHlCQUF5QixnQkFBZ0IsdUJBQXVCLEtBQUssNEJBQTRCLHNCQUFzQix1QkFBdUIsS0FBSyxHQUFHLHFCQUFxQjtBQUNybUQ7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvYXBwLnNjc3M/ODE1MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudmlzdWFsbHktaGlkZGVuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OiAxcHg7XFxuICB3aWR0aDogMXB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAvKiBhZGRlZCBsaW5lICovXFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLkxvYWRpbmdNZXNzYWdlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5Mb2FkaW5nTWVzc2FnZSAuU3Bpbm5lciB7XFxuICBmb250LXNpemU6IDIuOGVtO1xcbn1cXG4uTG9hZGluZ01lc3NhZ2UgLkxvYWRpbmdNZXNzYWdlLXRleHQge1xcbiAgbWFyZ2luLXRvcDogMWVtO1xcbiAgZm9udC1zaXplOiAwLjhlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY3NzL2FwcC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsNkJBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtFQUFxQixlQUFBO0VBQ3JCLHlCQUFBO1VBQUEsaUJBQUE7QUFFRjs7QUFDQTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0Esb0JBQUE7QUFFRjtBQUFFO0VBQ0UsZ0JBQUE7QUFFSjtBQUNFO0VBQ0UsZUFBQTtFQUNBLGdCQUFBO0FBQ0pcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnZpc3VhbGx5LWhpZGRlbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcXG4gIGhlaWdodDogMXB4O1xcbiAgd2lkdGg6IDFweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBhZGRlZCBsaW5lICovXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLkxvYWRpbmdNZXNzYWdlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAuU3Bpbm5lciB7XFxuICAgIGZvbnQtc2l6ZTogMi44ZW07XFxuICB9XFxuXFxuICAuTG9hZGluZ01lc3NhZ2UtdGV4dCB7XFxuICAgIG1hcmdpbi10b3A6IDFlbTtcXG4gICAgZm9udC1zaXplOiAwLjhlbTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss\n");
1636
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visually-hidden {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n white-space: nowrap;\\n /* added line */\\n user-select: none;\\n}\\n\\n.LoadingMessage {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 999;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none;\\n}\\n.LoadingMessage .Spinner {\\n font-size: 2.8em;\\n}\\n.LoadingMessage .LoadingMessage-text {\\n margin-top: 1em;\\n font-size: 0.8em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/app.scss\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,mBAAA;EAAqB,eAAA;EACrB,iBAAA;AAEF;;AACA;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,oBAAA;AAEF;AAAE;EACE,gBAAA;AAEJ;AACE;EACE,eAAA;EACA,gBAAA;AACJ\",\"sourcesContent\":[\".visually-hidden {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n white-space: nowrap; /* added line */\\n user-select: none;\\n}\\n\\n.LoadingMessage {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 999;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none;\\n\\n .Spinner {\\n font-size: 2.8em;\\n }\\n\\n .LoadingMessage-text {\\n margin-top: 1em;\\n font-size: 0.8em;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL2FwcC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDREQUE0RCxrQ0FBa0MsZ0JBQWdCLGVBQWUscUJBQXFCLG1DQUFtQyx3QkFBd0IsMENBQTBDLEdBQUcscUJBQXFCLHVCQUF1QixXQUFXLGFBQWEsY0FBYyxZQUFZLGlCQUFpQixrQkFBa0IsMkJBQTJCLHdCQUF3Qiw0QkFBNEIseUJBQXlCLEdBQUcsNEJBQTRCLHFCQUFxQixHQUFHLHdDQUF3QyxvQkFBb0IscUJBQXFCLEdBQUcsT0FBTyxxRkFBcUYsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxZQUFZLE1BQU0sS0FBSyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVywyQ0FBMkMsa0NBQWtDLGdCQUFnQixlQUFlLHFCQUFxQixtQ0FBbUMseUJBQXlCLHNDQUFzQyxHQUFHLHFCQUFxQix1QkFBdUIsV0FBVyxhQUFhLGNBQWMsWUFBWSxpQkFBaUIsa0JBQWtCLDJCQUEyQix3QkFBd0IsNEJBQTRCLHlCQUF5QixnQkFBZ0IsdUJBQXVCLEtBQUssNEJBQTRCLHNCQUFzQix1QkFBdUIsS0FBSyxHQUFHLHFCQUFxQjtBQUNwakQ7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvYXBwLnNjc3M/ODE1MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIudmlzdWFsbHktaGlkZGVuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xcbiAgaGVpZ2h0OiAxcHg7XFxuICB3aWR0aDogMXB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAvKiBhZGRlZCBsaW5lICovXFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLkxvYWRpbmdNZXNzYWdlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHotaW5kZXg6IDk5OTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5Mb2FkaW5nTWVzc2FnZSAuU3Bpbm5lciB7XFxuICBmb250LXNpemU6IDIuOGVtO1xcbn1cXG4uTG9hZGluZ01lc3NhZ2UgLkxvYWRpbmdNZXNzYWdlLXRleHQge1xcbiAgbWFyZ2luLXRvcDogMWVtO1xcbiAgZm9udC1zaXplOiAwLjhlbTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY3NzL2FwcC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsNkJBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtFQUFxQixlQUFBO0VBQ3JCLGlCQUFBO0FBRUY7O0FBQ0E7RUFDRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLG9CQUFBO0FBRUY7QUFBRTtFQUNFLGdCQUFBO0FBRUo7QUFDRTtFQUNFLGVBQUE7RUFDQSxnQkFBQTtBQUNKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi52aXN1YWxseS1oaWRkZW4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XFxuICBoZWlnaHQ6IDFweDtcXG4gIHdpZHRoOiAxcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogYWRkZWQgbGluZSAqL1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxufVxcblxcbi5Mb2FkaW5nTWVzc2FnZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICB6LWluZGV4OiA5OTk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgLlNwaW5uZXIge1xcbiAgICBmb250LXNpemU6IDIuOGVtO1xcbiAgfVxcblxcbiAgLkxvYWRpbmdNZXNzYWdlLXRleHQge1xcbiAgICBtYXJnaW4tdG9wOiAxZW07XFxuICAgIGZvbnQtc2l6ZTogMC44ZW07XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss\n");
1648
1637
 
1649
1638
  /***/ }),
1650
1639
 
@@ -1655,7 +1644,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1655
1644
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1656
1645
 
1657
1646
  "use strict";
1658
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\" viewBox=\"0 0 292 292\"><path d=\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\"/></svg> */ \"data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\" viewBox=\"0 0 292 292\"><path fill=\"%23ced4da\" d=\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\"/></svg> */ \"data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n:export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n --theme-filter: none;\\n --button-destructive-bg-color: #ffe3e3;\\n --button-destructive-color: #c92a2a;\\n --button-gray-1: #e9ecef;\\n --button-gray-2: #ced4da;\\n --button-gray-3: #adb5bd;\\n --button-special-active-bg-color: #ebfbee;\\n --dialog-border-color: #868e96;\\n --dropdown-icon: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n --focus-highlight-color: #a5d8ff;\\n --icon-fill-color: #212529;\\n --icon-green-fill-color: #2b8a3e;\\n --default-bg-color: #ffffff;\\n --input-bg-color: #ffffff;\\n --input-border-color: #ced4da;\\n --input-hover-bg-color: #f1f3f5;\\n --input-label-color: #495057;\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\n --keybinding-color: #adb5bd;\\n --link-color: #1c7ed6;\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n --popup-bg-color: #ffffff;\\n --popup-secondary-bg-color: #f1f3f5;\\n --popup-text-color: #000000;\\n --popup-text-inverted-color: #ffffff;\\n --sab: env(safe-area-inset-bottom);\\n --sal: env(safe-area-inset-left);\\n --sar: env(safe-area-inset-right);\\n --sat: env(safe-area-inset-top);\\n --select-highlight-color: #339af0;\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\n --space-factor: 0.25rem;\\n --text-primary-color: #343a40;\\n --color-primary: #6965db;\\n --color-primary-darker: #5b57d1;\\n --color-primary-darkest: #4a47b1;\\n --color-primary-light: #e2e1fc;\\n --border-radius-md: 0.375rem;\\n --border-radius-lg: 0.5rem;\\n}\\n.excalidraw.theme--dark {\\n background: #000000;\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n background: none;\\n}\\n.excalidraw.theme--dark {\\n --theme-filter: invert(93%) hue-rotate(180deg);\\n --button-destructive-bg-color: #5a0000;\\n --button-destructive-color: #ffa8a8;\\n --button-gray-1: #363636;\\n --button-gray-2: #272727;\\n --button-gray-3: #222;\\n --button-special-active-bg-color: #204624;\\n --dialog-border-color: #212529;\\n --dropdown-icon: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");\\n --focus-highlight-color: #228be6;\\n --icon-fill-color: #ced4da;\\n --icon-green-fill-color: #69db7c;\\n --default-bg-color: #121212;\\n --input-bg-color: #121212;\\n --input-border-color: #2e2e2e;\\n --input-hover-bg-color: #181818;\\n --input-label-color: #e9ecef;\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\n --keybinding-color: #868e96;\\n --link-color: #4dabf7;\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n --popup-bg-color: #2c2c2c;\\n --popup-secondary-bg-color: #222;\\n --popup-text-color: #ced4da;\\n --popup-text-inverted-color: #2c2c2c;\\n --select-highlight-color: #4dabf7;\\n --shadow-island: 1px 1px 5px rgba(0, 0, 0, 0.3);\\n --text-primary-color: #ced4da;\\n --color-primary: #5650f0;\\n --color-primary-darker: #4b46d8;\\n --color-primary-darkest: #3e39be;\\n --color-primary-light: #3f3d64;\\n}\\n\\n:root {\\n --zIndex-canvas: 1;\\n --zIndex-wysiwyg: 2;\\n --zIndex-layerUI: 3;\\n}\\n\\n.excalidraw {\\n position: relative;\\n overflow: hidden;\\n color: var(--text-primary-color);\\n display: flex;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n.excalidraw:focus {\\n outline: none;\\n}\\n.excalidraw a {\\n font-weight: 500;\\n text-decoration: none;\\n color: var(--link-color);\\n}\\n.excalidraw a:hover {\\n text-decoration: underline;\\n}\\n.excalidraw canvas {\\n touch-action: none;\\n image-rendering: pixelated;\\n image-rendering: -moz-crisp-edges;\\n z-index: var(--zIndex-canvas);\\n}\\n.excalidraw__canvas {\\n position: absolute;\\n}\\n.excalidraw.theme--dark canvas {\\n filter: var(--theme-filter);\\n}\\n.excalidraw .FixedSideContainer {\\n padding-top: var(--sat, 0);\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n}\\n.excalidraw .panelRow {\\n display: flex;\\n justify-content: space-between;\\n}\\n.excalidraw .panelColumn {\\n display: flex;\\n flex-direction: column;\\n}\\n.excalidraw .panelColumn h3,\\n.excalidraw .panelColumn legend,\\n.excalidraw .panelColumn .control-label {\\n margin-top: 0.333rem;\\n margin-bottom: 0.333rem;\\n font-size: 0.75rem;\\n color: var(--text-primary-color);\\n font-weight: bold;\\n display: block;\\n}\\n.excalidraw .panelColumn .control-label input {\\n display: block;\\n width: 100%;\\n}\\n.excalidraw .panelColumn h3:first-child,\\n.excalidraw .panelColumn legend:first-child,\\n.excalidraw .panelColumn .control-label:first-child {\\n margin-top: 0;\\n}\\n.excalidraw .panelColumn legend {\\n padding: 0;\\n}\\n.excalidraw .panelColumn .iconSelectList {\\n flex-wrap: wrap;\\n position: relative;\\n}\\n.excalidraw .panelColumn .buttonList {\\n flex-wrap: wrap;\\n}\\n.excalidraw .panelColumn .buttonList label {\\n margin-right: 0.25rem;\\n font-size: 0.75rem;\\n display: inline-block;\\n}\\n.excalidraw .panelColumn .buttonList input[type=radio],\\n.excalidraw .panelColumn .buttonList input[type=button] {\\n opacity: 0;\\n position: absolute;\\n pointer-events: none;\\n}\\n.excalidraw .panelColumn .buttonList .iconRow {\\n margin-top: 8px;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\n margin: 0;\\n margin-inline-end: 8px;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\n cursor: not-allowed;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\n width: 28px;\\n height: 28px;\\n}\\n.excalidraw .panelColumn fieldset {\\n margin: 0;\\n margin-top: 0.333rem;\\n padding: 0;\\n border: none;\\n}\\n.excalidraw .divider {\\n width: 1px;\\n background-color: #e9ecef;\\n margin: 1px;\\n}\\n.excalidraw .buttonList label:focus-within,\\n.excalidraw input:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw button,\\n.excalidraw .buttonList label {\\n -webkit-user-select: none;\\n user-select: none;\\n background-color: var(--button-gray-1);\\n border: 0;\\n border-radius: var(--border-radius-md);\\n margin: 0.125rem 0;\\n padding: 0.25rem;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.excalidraw button:focus-visible,\\n.excalidraw .buttonList label:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw button:hover,\\n.excalidraw .buttonList label:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw button:active,\\n.excalidraw .buttonList label:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw button:disabled,\\n.excalidraw .buttonList label:disabled {\\n cursor: not-allowed;\\n}\\n.excalidraw .active,\\n.excalidraw .buttonList label.active {\\n background-color: var(--color-primary);\\n --icon-fill-color: #ffffff;\\n}\\n.excalidraw .active:hover,\\n.excalidraw .buttonList label.active:hover {\\n background-color: var(--color-primary-darker);\\n}\\n.excalidraw .active:active,\\n.excalidraw .buttonList label.active:active {\\n background-color: var(--color-primary-darkest);\\n}\\n.excalidraw .buttonList.buttonListIcon label {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.excalidraw .buttonList.buttonListIcon label svg {\\n width: 35px;\\n height: 14px;\\n padding: 2px;\\n opacity: 0.6;\\n}\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\n opacity: 1;\\n}\\n.excalidraw .App-top-bar {\\n z-index: var(--zIndex-layerUI);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n}\\n.excalidraw .App-bottom-bar {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n --bar-padding: calc(4 * var(--space-factor));\\n padding-top: max(var(--bar-padding), var(--sat,0));\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n z-index: 4;\\n display: flex;\\n align-items: flex-end;\\n pointer-events: none;\\n}\\n.excalidraw .App-bottom-bar > .Island {\\n width: 100%;\\n max-width: 100%;\\n min-width: 100%;\\n box-sizing: border-box;\\n max-height: 100%;\\n display: flex;\\n flex-direction: column;\\n pointer-events: initial;\\n}\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\n padding: 8px 8px 0 8px;\\n}\\n.excalidraw .App-toolbar {\\n width: 100%;\\n box-sizing: border-box;\\n}\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\n --icon-fill-color: #fff;\\n --keybinding-color: #fff;\\n}\\n.excalidraw .App-toolbar .eraser.active {\\n background-color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar-content {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 8px;\\n}\\n.excalidraw .App-mobile-menu {\\n width: 100%;\\n overflow-x: visible;\\n overflow-y: auto;\\n box-sizing: border-box;\\n margin-bottom: var(--bar-padding);\\n}\\n.excalidraw .App-menu {\\n display: grid;\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .App-menu_top {\\n grid-template-columns: auto max-content auto;\\n grid-gap: 4px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n}\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\n pointer-events: all;\\n}\\n.excalidraw .App-menu_top > *:first-child {\\n justify-self: flex-start;\\n}\\n.excalidraw .App-menu_top > *:last-child {\\n justify-self: flex-end;\\n}\\n.excalidraw .App-menu_bottom {\\n position: absolute;\\n bottom: 0;\\n grid-template-columns: min-content auto min-content;\\n grid-gap: 15px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n}\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\n left: 0.25rem;\\n}\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\n right: 0.25rem;\\n}\\n.excalidraw .App-menu_bottom--transition-left section {\\n width: 185px;\\n}\\n.excalidraw .App-menu_bottom section {\\n display: flex;\\n}\\n.excalidraw .App-menu_bottom > *:first-child {\\n justify-self: flex-start;\\n}\\n.excalidraw .App-menu_bottom > *:last-child {\\n justify-self: flex-end;\\n}\\n.excalidraw .App-menu_left {\\n grid-template-rows: 1fr auto 1fr;\\n height: 100%;\\n}\\n.excalidraw .App-menu_right {\\n grid-template-rows: 1fr;\\n height: 100%;\\n}\\n.excalidraw .App-menu__left {\\n overflow-y: auto;\\n box-shadow: var(--shadow-island);\\n}\\n.excalidraw .dropdown-select {\\n height: 1.5rem;\\n padding: 0;\\n padding-inline-start: 0.5rem;\\n padding-inline-end: 1.5rem;\\n color: var(--icon-fill-color);\\n background-color: var(--button-gray-1);\\n border-radius: var(--space-factor);\\n border: 1px solid var(--button-gray-2);\\n font-size: 0.8rem;\\n outline: none;\\n appearance: none;\\n background-image: var(--dropdown-icon);\\n background-repeat: no-repeat;\\n background-position: right 0.7rem top 50%, 0 0;\\n background-size: 0.65em auto, 100%;\\n}\\n:root[dir=rtl] .excalidraw .dropdown-select {\\n background-position: left 0.7rem top 50%, 0 0;\\n}\\n.excalidraw .dropdown-select:focus {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .dropdown-select:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select:active {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .zIndexButton {\\n margin: 0;\\n margin-inline-end: 8px;\\n padding: 5px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.excalidraw .zIndexButton svg {\\n width: 18px;\\n height: 18px;\\n}\\n.excalidraw .scroll-back-to-content {\\n color: var(--popup-text-color);\\n position: absolute;\\n left: 50%;\\n bottom: 30px;\\n transform: translateX(-50%);\\n padding: 10px 20px;\\n pointer-events: all;\\n}\\n.excalidraw .help-icon {\\n display: flex;\\n cursor: pointer;\\n fill: #868e96;\\n padding: 0;\\n margin: 0;\\n background: none;\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .help-icon svg {\\n width: 1.5rem;\\n height: 1.5rem;\\n}\\n.excalidraw .help-icon:hover {\\n background: none;\\n}\\n.excalidraw .reset-zoom-button {\\n padding: 0.2em;\\n background: transparent;\\n color: var(--text-primary-color);\\n font-family: var(--ui-font);\\n}\\n.excalidraw .finalize-button {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n}\\n.excalidraw .undo-redo-buttons,\\n.excalidraw .eraser-buttons {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n}\\n.excalidraw--mobile.excalidraw aside {\\n display: none;\\n}\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\n bottom: calc(80px + var(--sab, 0));\\n z-index: -1;\\n}\\n\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\n transform: scaleX(-1);\\n}\\n.excalidraw .zen-mode-visibility {\\n visibility: visible;\\n opacity: 1;\\n height: auto;\\n width: auto;\\n transition: opacity 0.5s;\\n}\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\n visibility: hidden;\\n opacity: 0;\\n height: 0;\\n width: 0;\\n transition: opacity 0.5s;\\n}\\n.excalidraw .disable-pointerEvents {\\n pointer-events: none !important;\\n}\\n.excalidraw.excalidraw--view-mode .App-menu {\\n display: flex;\\n justify-content: space-between;\\n}\\n.excalidraw input[type=text],\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\n color: var(--text-primary-color);\\n border: 1.5px solid var(--input-border-color);\\n padding: 0.75rem;\\n white-space: nowrap;\\n border-radius: var(--space-factor);\\n background-color: var(--input-bg-color);\\n}\\n.excalidraw input[type=text]:not(:focus):hover,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\n background-color: var(--input-hover-bg-color);\\n}\\n.excalidraw input[type=text]:focus,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\n outline: none;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n@media print {\\n .excalidraw .App-bottom-bar,\\n.excalidraw .FixedSideContainer,\\n.excalidraw .layer-ui__wrapper {\\n display: none;\\n }\\n}\\n.excalidraw ::-webkit-scrollbar {\\n width: 5px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb {\\n background: var(--button-gray-2);\\n border-radius: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\n background: var(--button-gray-3);\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\n background: var(--button-gray-2);\\n}\\n\\n.ErrorSplash.excalidraw {\\n min-height: 100vh;\\n padding: 20px 0;\\n overflow: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: text;\\n user-select: text;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n padding: 40px;\\n background-color: #ffe3e3;\\n border: 3px solid #c92a2a;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\n margin: 15px 0;\\n max-width: 600px;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\n text-align: center;\\n}\\n.ErrorSplash.excalidraw .bigger,\\n.ErrorSplash.excalidraw .bigger button {\\n font-size: 1.1em;\\n}\\n.ErrorSplash.excalidraw .smaller,\\n.ErrorSplash.excalidraw .smaller button {\\n font-size: 0.9em;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\n width: 100%;\\n margin: 10px 0;\\n font-family: \\\"Cascadia\\\";\\n font-size: 0.8em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../css/styles.scss\",\"webpack://./../../css/theme.scss\",\"webpack://./../../../node_modules/open-color/open-color.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"./variables.module\\\";\\n@import \\\"./theme\\\";\\n\\n:root {\\n --zIndex-canvas: 1;\\n --zIndex-wysiwyg: 2;\\n --zIndex-layerUI: 3;\\n}\\n\\n.excalidraw {\\n position: relative;\\n overflow: hidden;\\n color: var(--text-primary-color);\\n display: flex;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n // serves 2 purposes:\\n // 1. prevent selecting text outside the component when double-clicking or\\n // dragging inside it (e.g. on canvas)\\n // 2. prevent selecting UI, both from the inside, and from outside the\\n // component (e.g. if you select text in a sidebar)\\n user-select: none;\\n\\n a {\\n font-weight: 500;\\n text-decoration: none;\\n color: var(--link-color);\\n\\n &:hover {\\n text-decoration: underline;\\n }\\n }\\n\\n canvas {\\n touch-action: none;\\n\\n // following props improve blurriness at certain devicePixelRatios.\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\n\\n image-rendering: pixelated; // chromium\\n // NOTE: must be declared *after* the above\\n image-rendering: -moz-crisp-edges; // FF\\n\\n z-index: var(--zIndex-canvas);\\n\\n // Remove the main canvas from document flow to avoid resizeObserver\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\n }\\n\\n &__canvas {\\n position: absolute;\\n }\\n\\n &.theme--dark {\\n // The percentage is inspired by\\n // https://material.io/design/color/dark-theme.html#properties, which\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\n\\n canvas {\\n filter: var(--theme-filter);\\n }\\n }\\n\\n .FixedSideContainer {\\n padding-top: var(--sat, 0);\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n }\\n\\n .panelRow {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n .panelColumn {\\n display: flex;\\n flex-direction: column;\\n\\n h3,\\n legend,\\n .control-label {\\n margin-top: 0.333rem;\\n margin-bottom: 0.333rem;\\n font-size: 0.75rem;\\n color: var(--text-primary-color);\\n font-weight: bold;\\n display: block;\\n }\\n\\n .control-label input {\\n display: block;\\n width: 100%;\\n }\\n\\n h3:first-child,\\n legend:first-child,\\n .control-label:first-child {\\n margin-top: 0;\\n }\\n\\n legend {\\n padding: 0;\\n }\\n\\n .iconSelectList {\\n flex-wrap: wrap;\\n position: relative;\\n }\\n\\n .buttonList {\\n flex-wrap: wrap;\\n\\n label {\\n margin-right: 0.25rem;\\n font-size: 0.75rem;\\n display: inline-block;\\n }\\n\\n input[type=\\\"radio\\\"],\\n input[type=\\\"button\\\"] {\\n opacity: 0;\\n position: absolute;\\n pointer-events: none;\\n }\\n\\n .iconRow {\\n margin-top: 8px;\\n }\\n\\n .ToolIcon {\\n margin: 0;\\n margin-inline-end: 8px;\\n\\n &:focus {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n }\\n\\n .ToolIcon__icon {\\n width: 28px;\\n height: 28px;\\n }\\n }\\n\\n fieldset {\\n margin: 0;\\n margin-top: 0.333rem;\\n padding: 0;\\n border: none;\\n }\\n }\\n\\n .divider {\\n width: 1px;\\n background-color: $oc-gray-2;\\n margin: 1px;\\n }\\n\\n .buttonList label:focus-within,\\n input:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n button,\\n .buttonList label {\\n user-select: none;\\n background-color: var(--button-gray-1);\\n border: 0;\\n border-radius: var(--border-radius-md);\\n margin: 0.125rem 0;\\n padding: 0.25rem;\\n white-space: nowrap;\\n\\n cursor: pointer;\\n\\n &:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n }\\n\\n .active,\\n .buttonList label.active {\\n background-color: var(--color-primary);\\n\\n --icon-fill-color: #{$oc-white};\\n\\n &:hover {\\n background-color: var(--color-primary-darker);\\n }\\n\\n &:active {\\n background-color: var(--color-primary-darkest);\\n }\\n }\\n\\n .buttonList.buttonListIcon {\\n label {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n svg {\\n width: 35px;\\n height: 14px;\\n padding: 2px;\\n opacity: 0.6;\\n }\\n &.active svg {\\n opacity: 1;\\n }\\n }\\n }\\n\\n .App-top-bar {\\n z-index: var(--zIndex-layerUI);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n }\\n\\n .App-bottom-bar {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n --bar-padding: calc(4 * var(--space-factor));\\n padding-top: #{\\\"max(var(--bar-padding), var(--sat,0))\\\"};\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n z-index: 4;\\n display: flex;\\n align-items: flex-end;\\n pointer-events: none;\\n\\n > .Island {\\n width: 100%;\\n max-width: 100%;\\n min-width: 100%;\\n box-sizing: border-box;\\n max-height: 100%;\\n display: flex;\\n flex-direction: column;\\n pointer-events: initial;\\n\\n .panelColumn {\\n padding: 8px 8px 0 8px;\\n }\\n }\\n }\\n\\n .App-toolbar {\\n width: 100%;\\n\\n box-sizing: border-box;\\n\\n .eraser {\\n &.ToolIcon:hover {\\n --icon-fill-color: #fff;\\n --keybinding-color: #fff;\\n }\\n &.active {\\n background-color: var(--color-primary);\\n }\\n }\\n }\\n\\n .App-toolbar-content {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 8px;\\n }\\n\\n .App-mobile-menu {\\n width: 100%;\\n overflow-x: visible;\\n overflow-y: auto;\\n box-sizing: border-box;\\n margin-bottom: var(--bar-padding);\\n }\\n\\n .App-menu {\\n display: grid;\\n color: var(--icon-fill-color);\\n }\\n\\n .App-menu_top {\\n grid-template-columns: auto max-content auto;\\n grid-gap: 4px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n }\\n\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\n pointer-events: all;\\n }\\n\\n .App-menu_top > *:first-child {\\n justify-self: flex-start;\\n }\\n\\n .App-menu_top > *:last-child {\\n justify-self: flex-end;\\n }\\n\\n .App-menu_bottom {\\n position: absolute;\\n bottom: 0;\\n grid-template-columns: min-content auto min-content;\\n grid-gap: 15px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n\\n :root[dir=\\\"ltr\\\"] & {\\n left: 0.25rem;\\n }\\n\\n :root[dir=\\\"rtl\\\"] & {\\n right: 0.25rem;\\n }\\n\\n &--transition-left {\\n section {\\n width: 185px;\\n }\\n }\\n\\n section {\\n display: flex;\\n }\\n }\\n\\n .App-menu_bottom > *:first-child {\\n justify-self: flex-start;\\n }\\n\\n .App-menu_bottom > *:last-child {\\n justify-self: flex-end;\\n }\\n\\n .App-menu_left {\\n grid-template-rows: 1fr auto 1fr;\\n height: 100%;\\n }\\n\\n .App-menu_right {\\n grid-template-rows: 1fr;\\n height: 100%;\\n }\\n\\n .App-menu__left {\\n overflow-y: auto;\\n box-shadow: var(--shadow-island);\\n }\\n\\n .dropdown-select {\\n height: 1.5rem;\\n padding: 0;\\n padding-inline-start: 0.5rem;\\n padding-inline-end: 1.5rem;\\n color: var(--icon-fill-color);\\n background-color: var(--button-gray-1);\\n border-radius: var(--space-factor);\\n border: 1px solid var(--button-gray-2);\\n font-size: 0.8rem;\\n outline: none;\\n appearance: none;\\n background-image: var(--dropdown-icon);\\n background-repeat: no-repeat;\\n background-position: right 0.7rem top 50%, 0 0;\\n\\n :root[dir=\\\"rtl\\\"] & {\\n background-position: left 0.7rem top 50%, 0 0;\\n }\\n\\n background-size: 0.65em auto, 100%;\\n\\n &:focus {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-2);\\n }\\n }\\n\\n .zIndexButton {\\n margin: 0;\\n margin-inline-end: 8px;\\n padding: 5px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n svg {\\n width: 18px;\\n height: 18px;\\n }\\n }\\n\\n .scroll-back-to-content {\\n color: var(--popup-text-color);\\n position: absolute;\\n left: 50%;\\n bottom: 30px;\\n transform: translateX(-50%);\\n padding: 10px 20px;\\n pointer-events: all;\\n }\\n\\n .help-icon {\\n display: flex;\\n cursor: pointer;\\n fill: $oc-gray-6;\\n padding: 0;\\n margin: 0;\\n background: none;\\n color: var(--icon-fill-color);\\n\\n svg {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n\\n &:hover {\\n background: none;\\n }\\n }\\n\\n .reset-zoom-button {\\n padding: 0.2em;\\n background: transparent;\\n color: var(--text-primary-color);\\n font-family: var(--ui-font);\\n }\\n\\n .finalize-button {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n }\\n\\n .undo-redo-buttons,\\n .eraser-buttons {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n }\\n\\n @include isMobile {\\n aside {\\n display: none;\\n }\\n .scroll-back-to-content {\\n bottom: calc(80px + var(--sab, 0));\\n z-index: -1;\\n }\\n }\\n\\n .rtl-mirror {\\n :root[dir=\\\"rtl\\\"] & {\\n transform: scaleX(-1);\\n }\\n }\\n\\n .zen-mode-visibility {\\n visibility: visible;\\n opacity: 1;\\n height: auto;\\n width: auto;\\n transition: opacity 0.5s;\\n\\n &.zen-mode-visibility--hidden {\\n visibility: hidden;\\n opacity: 0;\\n height: 0;\\n width: 0;\\n transition: opacity 0.5s;\\n }\\n }\\n\\n .disable-pointerEvents {\\n pointer-events: none !important;\\n }\\n\\n &.excalidraw--view-mode {\\n .App-menu {\\n display: flex;\\n justify-content: space-between;\\n }\\n }\\n\\n input[type=\\\"text\\\"],\\n textarea:not(.excalidraw-wysiwyg) {\\n color: var(--text-primary-color);\\n border: 1.5px solid var(--input-border-color);\\n padding: 0.75rem;\\n white-space: nowrap;\\n border-radius: var(--space-factor);\\n background-color: var(--input-bg-color);\\n\\n &:not(:focus) {\\n &:hover {\\n background-color: var(--input-hover-bg-color);\\n }\\n }\\n\\n &:focus {\\n outline: none;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n }\\n\\n @media print {\\n .App-bottom-bar,\\n .FixedSideContainer,\\n .layer-ui__wrapper {\\n display: none;\\n }\\n }\\n\\n // use custom, minimalistic scrollbar\\n // (doesn't work in Firefox)\\n ::-webkit-scrollbar {\\n width: 5px;\\n }\\n ::-webkit-scrollbar-thumb {\\n background: var(--button-gray-2);\\n border-radius: 10px;\\n }\\n ::-webkit-scrollbar-thumb:hover {\\n background: var(--button-gray-3);\\n }\\n ::-webkit-scrollbar-thumb:active {\\n background: var(--button-gray-2);\\n }\\n}\\n\\n.ErrorSplash.excalidraw {\\n min-height: 100vh;\\n padding: 20px 0;\\n overflow: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n user-select: text;\\n\\n .ErrorSplash-messageContainer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n\\n padding: 40px;\\n background-color: $oc-red-1;\\n border: 3px solid $oc-red-9;\\n }\\n\\n .ErrorSplash-paragraph {\\n margin: 15px 0;\\n max-width: 600px;\\n\\n &.align-center {\\n text-align: center;\\n }\\n }\\n\\n .bigger,\\n .bigger button {\\n font-size: 1.1em;\\n }\\n\\n .smaller,\\n .smaller button {\\n font-size: 0.9em;\\n }\\n\\n .ErrorSplash-details {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n\\n textarea {\\n width: 100%;\\n margin: 10px 0;\\n font-family: \\\"Cascadia\\\";\\n font-size: 0.8em;\\n }\\n }\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n@import \\\"./variables.module.scss\\\";\\n\\n.excalidraw {\\n --theme-filter: none;\\n --button-destructive-bg-color: #{$oc-red-1};\\n --button-destructive-color: #{$oc-red-9};\\n --button-gray-1: #{$oc-gray-2};\\n --button-gray-2: #{$oc-gray-4};\\n --button-gray-3: #{$oc-gray-5};\\n --button-special-active-bg-color: #{$oc-green-0};\\n --dialog-border-color: #{$oc-gray-6};\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>');\\n --focus-highlight-color: #{$oc-blue-2};\\n --icon-fill-color: #{$oc-gray-9};\\n --icon-green-fill-color: #{$oc-green-9};\\n --default-bg-color: #{$oc-white};\\n --input-bg-color: #{$oc-white};\\n --input-border-color: #{$oc-gray-4};\\n --input-hover-bg-color: #{$oc-gray-1};\\n --input-label-color: #{$oc-gray-7};\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\n --keybinding-color: #{$oc-gray-5};\\n --link-color: #{$oc-blue-7};\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n --popup-bg-color: #{$oc-white};\\n --popup-secondary-bg-color: #{$oc-gray-1};\\n --popup-text-color: #{$oc-black};\\n --popup-text-inverted-color: #{$oc-white};\\n --sab: env(safe-area-inset-bottom);\\n --sal: env(safe-area-inset-left);\\n --sar: env(safe-area-inset-right);\\n --sat: env(safe-area-inset-top);\\n --select-highlight-color: #{$oc-blue-5};\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\n\\n --space-factor: 0.25rem;\\n --text-primary-color: #{$oc-gray-8};\\n\\n --color-primary: #6965db;\\n --color-primary-darker: #5b57d1;\\n --color-primary-darkest: #4a47b1;\\n --color-primary-light: #e2e1fc;\\n\\n --border-radius-md: 0.375rem;\\n --border-radius-lg: 0.5rem;\\n\\n &.theme--dark {\\n background: $oc-black;\\n\\n &.theme--dark-background-none {\\n background: none;\\n }\\n }\\n\\n &.theme--dark {\\n --theme-filter: #{$theme-filter};\\n --button-destructive-bg-color: #5a0000;\\n --button-destructive-color: #{$oc-red-3};\\n --button-gray-1: #363636;\\n --button-gray-2: #272727;\\n --button-gray-3: #222;\\n --button-special-active-bg-color: #204624;\\n --dialog-border-color: #{$oc-gray-9};\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>');\\n --focus-highlight-color: #{$oc-blue-6};\\n --icon-fill-color: #{$oc-gray-4};\\n --icon-green-fill-color: #{$oc-green-4};\\n --default-bg-color: #121212;\\n --input-bg-color: #121212;\\n --input-border-color: #2e2e2e;\\n --input-hover-bg-color: #181818;\\n --input-label-color: #{$oc-gray-2};\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\n --keybinding-color: #{$oc-gray-6};\\n --link-color: #{$oc-blue-4};\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n --popup-bg-color: #2c2c2c;\\n --popup-secondary-bg-color: #222;\\n --popup-text-color: #{$oc-gray-4};\\n --popup-text-inverted-color: #2c2c2c;\\n --select-highlight-color: #{$oc-blue-4};\\n --shadow-island: 1px 1px 5px #{transparentize($oc-black, 0.7)};\\n --text-primary-color: #{$oc-gray-4};\\n\\n --color-primary: #5650f0;\\n --color-primary-darker: #4b46d8;\\n --color-primary-darkest: #3e39be;\\n --color-primary-light: #3f3d64;\\n }\\n}\\n\",\"//\\n//\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\n// v 1.9.1\\n//\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\\n\\n// General\\n// ───────────────────────────────────\\n\\n$oc-white: #ffffff;\\n$oc-black: #000000;\\n\\n\\n// Gray\\n// ───────────────────────────────────\\n\\n$oc-gray-list: (\\n \\\"0\\\": #f8f9fa,\\n \\\"1\\\": #f1f3f5,\\n \\\"2\\\": #e9ecef,\\n \\\"3\\\": #dee2e6,\\n \\\"4\\\": #ced4da,\\n \\\"5\\\": #adb5bd,\\n \\\"6\\\": #868e96,\\n \\\"7\\\": #495057,\\n \\\"8\\\": #343a40,\\n \\\"9\\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\\"0\\\");\\n$oc-gray-1: map-get($oc-gray-list, \\\"1\\\");\\n$oc-gray-2: map-get($oc-gray-list, \\\"2\\\");\\n$oc-gray-3: map-get($oc-gray-list, \\\"3\\\");\\n$oc-gray-4: map-get($oc-gray-list, \\\"4\\\");\\n$oc-gray-5: map-get($oc-gray-list, \\\"5\\\");\\n$oc-gray-6: map-get($oc-gray-list, \\\"6\\\");\\n$oc-gray-7: map-get($oc-gray-list, \\\"7\\\");\\n$oc-gray-8: map-get($oc-gray-list, \\\"8\\\");\\n$oc-gray-9: map-get($oc-gray-list, \\\"9\\\");\\n\\n\\n// Red\\n// ───────────────────────────────────\\n\\n$oc-red-list: (\\n \\\"0\\\": #fff5f5,\\n \\\"1\\\": #ffe3e3,\\n \\\"2\\\": #ffc9c9,\\n \\\"3\\\": #ffa8a8,\\n \\\"4\\\": #ff8787,\\n \\\"5\\\": #ff6b6b,\\n \\\"6\\\": #fa5252,\\n \\\"7\\\": #f03e3e,\\n \\\"8\\\": #e03131,\\n \\\"9\\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\\"0\\\");\\n$oc-red-1: map-get($oc-red-list, \\\"1\\\");\\n$oc-red-2: map-get($oc-red-list, \\\"2\\\");\\n$oc-red-3: map-get($oc-red-list, \\\"3\\\");\\n$oc-red-4: map-get($oc-red-list, \\\"4\\\");\\n$oc-red-5: map-get($oc-red-list, \\\"5\\\");\\n$oc-red-6: map-get($oc-red-list, \\\"6\\\");\\n$oc-red-7: map-get($oc-red-list, \\\"7\\\");\\n$oc-red-8: map-get($oc-red-list, \\\"8\\\");\\n$oc-red-9: map-get($oc-red-list, \\\"9\\\");\\n\\n\\n// Pink\\n// ───────────────────────────────────\\n\\n$oc-pink-list: (\\n \\\"0\\\": #fff0f6,\\n \\\"1\\\": #ffdeeb,\\n \\\"2\\\": #fcc2d7,\\n \\\"3\\\": #faa2c1,\\n \\\"4\\\": #f783ac,\\n \\\"5\\\": #f06595,\\n \\\"6\\\": #e64980,\\n \\\"7\\\": #d6336c,\\n \\\"8\\\": #c2255c,\\n \\\"9\\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\\"0\\\");\\n$oc-pink-1: map-get($oc-pink-list, \\\"1\\\");\\n$oc-pink-2: map-get($oc-pink-list, \\\"2\\\");\\n$oc-pink-3: map-get($oc-pink-list, \\\"3\\\");\\n$oc-pink-4: map-get($oc-pink-list, \\\"4\\\");\\n$oc-pink-5: map-get($oc-pink-list, \\\"5\\\");\\n$oc-pink-6: map-get($oc-pink-list, \\\"6\\\");\\n$oc-pink-7: map-get($oc-pink-list, \\\"7\\\");\\n$oc-pink-8: map-get($oc-pink-list, \\\"8\\\");\\n$oc-pink-9: map-get($oc-pink-list, \\\"9\\\");\\n\\n\\n// Grape\\n// ───────────────────────────────────\\n\\n$oc-grape-list: (\\n \\\"0\\\": #f8f0fc,\\n \\\"1\\\": #f3d9fa,\\n \\\"2\\\": #eebefa,\\n \\\"3\\\": #e599f7,\\n \\\"4\\\": #da77f2,\\n \\\"5\\\": #cc5de8,\\n \\\"6\\\": #be4bdb,\\n \\\"7\\\": #ae3ec9,\\n \\\"8\\\": #9c36b5,\\n \\\"9\\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\\"0\\\");\\n$oc-grape-1: map-get($oc-grape-list, \\\"1\\\");\\n$oc-grape-2: map-get($oc-grape-list, \\\"2\\\");\\n$oc-grape-3: map-get($oc-grape-list, \\\"3\\\");\\n$oc-grape-4: map-get($oc-grape-list, \\\"4\\\");\\n$oc-grape-5: map-get($oc-grape-list, \\\"5\\\");\\n$oc-grape-6: map-get($oc-grape-list, \\\"6\\\");\\n$oc-grape-7: map-get($oc-grape-list, \\\"7\\\");\\n$oc-grape-8: map-get($oc-grape-list, \\\"8\\\");\\n$oc-grape-9: map-get($oc-grape-list, \\\"9\\\");\\n\\n\\n// Violet\\n// ───────────────────────────────────\\n\\n$oc-violet-list: (\\n \\\"0\\\": #f3f0ff,\\n \\\"1\\\": #e5dbff,\\n \\\"2\\\": #d0bfff,\\n \\\"3\\\": #b197fc,\\n \\\"4\\\": #9775fa,\\n \\\"5\\\": #845ef7,\\n \\\"6\\\": #7950f2,\\n \\\"7\\\": #7048e8,\\n \\\"8\\\": #6741d9,\\n \\\"9\\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\\"0\\\");\\n$oc-violet-1: map-get($oc-violet-list, \\\"1\\\");\\n$oc-violet-2: map-get($oc-violet-list, \\\"2\\\");\\n$oc-violet-3: map-get($oc-violet-list, \\\"3\\\");\\n$oc-violet-4: map-get($oc-violet-list, \\\"4\\\");\\n$oc-violet-5: map-get($oc-violet-list, \\\"5\\\");\\n$oc-violet-6: map-get($oc-violet-list, \\\"6\\\");\\n$oc-violet-7: map-get($oc-violet-list, \\\"7\\\");\\n$oc-violet-8: map-get($oc-violet-list, \\\"8\\\");\\n$oc-violet-9: map-get($oc-violet-list, \\\"9\\\");\\n\\n\\n// Indigo\\n// ───────────────────────────────────\\n\\n$oc-indigo-list: (\\n \\\"0\\\": #edf2ff,\\n \\\"1\\\": #dbe4ff,\\n \\\"2\\\": #bac8ff,\\n \\\"3\\\": #91a7ff,\\n \\\"4\\\": #748ffc,\\n \\\"5\\\": #5c7cfa,\\n \\\"6\\\": #4c6ef5,\\n \\\"7\\\": #4263eb,\\n \\\"8\\\": #3b5bdb,\\n \\\"9\\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\\"0\\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\\"1\\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\\"2\\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\\"3\\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\\"4\\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\\"5\\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\\"6\\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\\"7\\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\\"8\\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\\"9\\\");\\n\\n\\n// Blue\\n// ───────────────────────────────────\\n\\n$oc-blue-list: (\\n \\\"0\\\": #e7f5ff,\\n \\\"1\\\": #d0ebff,\\n \\\"2\\\": #a5d8ff,\\n \\\"3\\\": #74c0fc,\\n \\\"4\\\": #4dabf7,\\n \\\"5\\\": #339af0,\\n \\\"6\\\": #228be6,\\n \\\"7\\\": #1c7ed6,\\n \\\"8\\\": #1971c2,\\n \\\"9\\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\\"0\\\");\\n$oc-blue-1: map-get($oc-blue-list, \\\"1\\\");\\n$oc-blue-2: map-get($oc-blue-list, \\\"2\\\");\\n$oc-blue-3: map-get($oc-blue-list, \\\"3\\\");\\n$oc-blue-4: map-get($oc-blue-list, \\\"4\\\");\\n$oc-blue-5: map-get($oc-blue-list, \\\"5\\\");\\n$oc-blue-6: map-get($oc-blue-list, \\\"6\\\");\\n$oc-blue-7: map-get($oc-blue-list, \\\"7\\\");\\n$oc-blue-8: map-get($oc-blue-list, \\\"8\\\");\\n$oc-blue-9: map-get($oc-blue-list, \\\"9\\\");\\n\\n\\n// Cyan\\n// ───────────────────────────────────\\n\\n$oc-cyan-list: (\\n \\\"0\\\": #e3fafc,\\n \\\"1\\\": #c5f6fa,\\n \\\"2\\\": #99e9f2,\\n \\\"3\\\": #66d9e8,\\n \\\"4\\\": #3bc9db,\\n \\\"5\\\": #22b8cf,\\n \\\"6\\\": #15aabf,\\n \\\"7\\\": #1098ad,\\n \\\"8\\\": #0c8599,\\n \\\"9\\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\\"0\\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\\"1\\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\\"2\\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\\"3\\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\\"4\\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\\"5\\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\\"6\\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\\"7\\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\\"8\\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\\"9\\\");\\n\\n\\n// Teal\\n// ───────────────────────────────────\\n\\n$oc-teal-list: (\\n \\\"0\\\": #e6fcf5,\\n \\\"1\\\": #c3fae8,\\n \\\"2\\\": #96f2d7,\\n \\\"3\\\": #63e6be,\\n \\\"4\\\": #38d9a9,\\n \\\"5\\\": #20c997,\\n \\\"6\\\": #12b886,\\n \\\"7\\\": #0ca678,\\n \\\"8\\\": #099268,\\n \\\"9\\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\\"0\\\");\\n$oc-teal-1: map-get($oc-teal-list, \\\"1\\\");\\n$oc-teal-2: map-get($oc-teal-list, \\\"2\\\");\\n$oc-teal-3: map-get($oc-teal-list, \\\"3\\\");\\n$oc-teal-4: map-get($oc-teal-list, \\\"4\\\");\\n$oc-teal-5: map-get($oc-teal-list, \\\"5\\\");\\n$oc-teal-6: map-get($oc-teal-list, \\\"6\\\");\\n$oc-teal-7: map-get($oc-teal-list, \\\"7\\\");\\n$oc-teal-8: map-get($oc-teal-list, \\\"8\\\");\\n$oc-teal-9: map-get($oc-teal-list, \\\"9\\\");\\n\\n\\n// Green\\n// ───────────────────────────────────\\n\\n$oc-green-list: (\\n \\\"0\\\": #ebfbee,\\n \\\"1\\\": #d3f9d8,\\n \\\"2\\\": #b2f2bb,\\n \\\"3\\\": #8ce99a,\\n \\\"4\\\": #69db7c,\\n \\\"5\\\": #51cf66,\\n \\\"6\\\": #40c057,\\n \\\"7\\\": #37b24d,\\n \\\"8\\\": #2f9e44,\\n \\\"9\\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\\"0\\\");\\n$oc-green-1: map-get($oc-green-list, \\\"1\\\");\\n$oc-green-2: map-get($oc-green-list, \\\"2\\\");\\n$oc-green-3: map-get($oc-green-list, \\\"3\\\");\\n$oc-green-4: map-get($oc-green-list, \\\"4\\\");\\n$oc-green-5: map-get($oc-green-list, \\\"5\\\");\\n$oc-green-6: map-get($oc-green-list, \\\"6\\\");\\n$oc-green-7: map-get($oc-green-list, \\\"7\\\");\\n$oc-green-8: map-get($oc-green-list, \\\"8\\\");\\n$oc-green-9: map-get($oc-green-list, \\\"9\\\");\\n\\n\\n// Lime\\n// ───────────────────────────────────\\n\\n$oc-lime-list: (\\n \\\"0\\\": #f4fce3,\\n \\\"1\\\": #e9fac8,\\n \\\"2\\\": #d8f5a2,\\n \\\"3\\\": #c0eb75,\\n \\\"4\\\": #a9e34b,\\n \\\"5\\\": #94d82d,\\n \\\"6\\\": #82c91e,\\n \\\"7\\\": #74b816,\\n \\\"8\\\": #66a80f,\\n \\\"9\\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\\"0\\\");\\n$oc-lime-1: map-get($oc-lime-list, \\\"1\\\");\\n$oc-lime-2: map-get($oc-lime-list, \\\"2\\\");\\n$oc-lime-3: map-get($oc-lime-list, \\\"3\\\");\\n$oc-lime-4: map-get($oc-lime-list, \\\"4\\\");\\n$oc-lime-5: map-get($oc-lime-list, \\\"5\\\");\\n$oc-lime-6: map-get($oc-lime-list, \\\"6\\\");\\n$oc-lime-7: map-get($oc-lime-list, \\\"7\\\");\\n$oc-lime-8: map-get($oc-lime-list, \\\"8\\\");\\n$oc-lime-9: map-get($oc-lime-list, \\\"9\\\");\\n\\n\\n// Yellow\\n// ───────────────────────────────────\\n\\n$oc-yellow-list: (\\n \\\"0\\\": #fff9db,\\n \\\"1\\\": #fff3bf,\\n \\\"2\\\": #ffec99,\\n \\\"3\\\": #ffe066,\\n \\\"4\\\": #ffd43b,\\n \\\"5\\\": #fcc419,\\n \\\"6\\\": #fab005,\\n \\\"7\\\": #f59f00,\\n \\\"8\\\": #f08c00,\\n \\\"9\\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\\"0\\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\\"1\\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\\"2\\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\\"3\\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\\"4\\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\\"5\\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\\"6\\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\\"7\\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\\"8\\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\\"9\\\");\\n\\n\\n// Orange\\n// ───────────────────────────────────\\n\\n$oc-orange-list: (\\n \\\"0\\\": #fff4e6,\\n \\\"1\\\": #ffe8cc,\\n \\\"2\\\": #ffd8a8,\\n \\\"3\\\": #ffc078,\\n \\\"4\\\": #ffa94d,\\n \\\"5\\\": #ff922b,\\n \\\"6\\\": #fd7e14,\\n \\\"7\\\": #f76707,\\n \\\"8\\\": #e8590c,\\n \\\"9\\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\\"0\\\");\\n$oc-orange-1: map-get($oc-orange-list, \\\"1\\\");\\n$oc-orange-2: map-get($oc-orange-list, \\\"2\\\");\\n$oc-orange-3: map-get($oc-orange-list, \\\"3\\\");\\n$oc-orange-4: map-get($oc-orange-list, \\\"4\\\");\\n$oc-orange-5: map-get($oc-orange-list, \\\"5\\\");\\n$oc-orange-6: map-get($oc-orange-list, \\\"6\\\");\\n$oc-orange-7: map-get($oc-orange-list, \\\"7\\\");\\n$oc-orange-8: map-get($oc-orange-list, \\\"8\\\");\\n$oc-orange-9: map-get($oc-orange-list, \\\"9\\\");\\n\\n\\n// Color list\\n// ───────────────────────────────────\\n\\n$oc-color-spectrum: 9;\\n\\n$oc-color-list: (\\n $oc-gray-list: \\\"gray\\\",\\n $oc-red-list: \\\"red\\\",\\n $oc-pink-list: \\\"pink\\\",\\n $oc-grape-list: \\\"grape\\\",\\n $oc-violet-list: \\\"violet\\\",\\n $oc-indigo-list: \\\"indigo\\\",\\n $oc-blue-list: \\\"blue\\\",\\n $oc-cyan-list: \\\"cyan\\\",\\n $oc-teal-list: \\\"teal\\\",\\n $oc-green-list: \\\"green\\\",\\n $oc-lime-list: \\\"lime\\\",\\n $oc-yellow-list: \\\"yellow\\\",\\n $oc-orange-list: \\\"orange\\\"\\n);\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCw2QkFBNkIsR0FBRyxhQUFhLGdEQUFnRCw2QkFBNkIsR0FBRyxpQkFBaUIseUJBQXlCLDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyxpREFBaUQsZ0NBQWdDLDBCQUEwQixrREFBa0QsOEJBQThCLHdDQUF3QyxnQ0FBZ0MseUNBQXlDLHVDQUF1QyxxQ0FBcUMsc0NBQXNDLG9DQUFvQyxzQ0FBc0MsaUZBQWlGLDRCQUE0QixrQ0FBa0MsNkJBQTZCLG9DQUFvQyxxQ0FBcUMsbUNBQW1DLGlDQUFpQywrQkFBK0IsR0FBRywyQkFBMkIsd0JBQXdCLEdBQUcsdURBQXVELHFCQUFxQixHQUFHLDJCQUEyQixtREFBbUQsMkNBQTJDLHdDQUF3Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQiw4Q0FBOEMsbUNBQW1DLHFFQUFxRSxxQ0FBcUMsK0JBQStCLHFDQUFxQyxnQ0FBZ0MsOEJBQThCLGtDQUFrQyxvQ0FBb0MsaUNBQWlDLDhDQUE4QyxnQ0FBZ0MsMEJBQTBCLCtDQUErQyw4QkFBOEIscUNB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V0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sUUFBUSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxNQUFNLE1BQU0sVUFBVSxVQUFVLE1BQU0sUUFBUSxVQUFVLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sT0FBTyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxZQUFZLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxNQUFNLE9BQU8sV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxPQUFPLFdBQVcsV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxVQUFVLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxVQUFVLE1BQU0sS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLFVBQVUs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REFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ1JBQWdSLGtEQUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw4UUFBOFEsZ0RBQWdELDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsZ1JBQWdSLGtEQUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELHlGQUF5Rix1ZEFBdWQscUJBQXFCO0FBQ3Q2K0M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3Mvc3R5bGVzLnNjc3M/MGQ1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz5cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGZpbGw9XFxcIiUyM2NlZDRkYVxcXCIgZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+XCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IGludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiAzMDJweDtcXG59XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IDMwMnB4O1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAtLXRoZW1lLWZpbHRlcjogbm9uZTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjZmZlM2UzO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtY29sb3I6ICNjOTJhMmE7XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICNlOWVjZWY7XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICNjZWQ0ZGE7XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICNhZGI1YmQ7XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI2ViZmJlZTtcXG4gIC0tZGlhbG9nLWJvcmRlci1jb2xvcjogIzg2OGU5NjtcXG4gIC0tZHJvcGRvd24taWNvbjogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjYTVkOGZmO1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICMyMTI1Mjk7XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogIzJiOGEzZTtcXG4gIC0tZGVmYXVsdC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0taW5wdXQtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLWlucHV0LWJvcmRlci1jb2xvcjogI2NlZDRkYTtcXG4gIC0taW5wdXQtaG92ZXItYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLWlucHV0LWxhYmVsLWNvbG9yOiAjNDk1MDU3O1xcbiAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nik7XFxuICAtLWtleWJpbmRpbmctY29sb3I6ICNhZGI1YmQ7XFxuICAtLWxpbmstY29sb3I6ICMxYzdlZDY7XFxuICAtLW92ZXJsYXktYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44OCk7XFxuICAtLXBvcHVwLWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLXBvcHVwLXRleHQtY29sb3I6ICMwMDAwMDA7XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICNmZmZmZmY7XFxuICAtLXNhYjogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xcbiAgLS1zYWw6IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7XFxuICAtLXNhcjogZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCk7XFxuICAtLXNhdDogZW52KHNhZmUtYXJlYS1pbnNldC10b3ApO1xcbiAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjMzM5YWYwO1xcbiAgLS1zaGFkb3ctaXNsYW5kOiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjAxKSwgMXB4IDFweCA1cHggcmdiKDAgMCAwIC8gMTIlKTtcXG4gIC0tc3BhY2UtZmFjdG9yOiAwLjI1cmVtO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICMzNDNhNDA7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM2OTY1ZGI7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNWI1N2QxO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICM0YTQ3YjE7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICNlMmUxZmM7XFxuICAtLWJvcmRlci1yYWRpdXMtbWQ6IDAuMzc1cmVtO1xcbiAgLS1ib3JkZXItcmFkaXVzLWxnOiAwLjVyZW07XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrLnRoZW1lLS1kYXJrLWJhY2tncm91bmQtbm9uZSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyayB7XFxuICAtLXRoZW1lLWZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICM1YTAwMDA7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI2ZmYThhODtcXG4gIC0tYnV0dG9uLWdyYXktMTogIzM2MzYzNjtcXG4gIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gIC0tYnV0dG9uLWdyYXktMzogIzIyMjtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjMjA0NjI0O1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjMjEyNTI5O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICMyMjhiZTY7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2NlZDRkYTtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjNjlkYjdjO1xcbiAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogIzEyMTIxMjtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjMmUyZTJlO1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICNlOWVjZWY7XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgzMCwgMzAsIDMwLCAwLjk4KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogIzg2OGU5NjtcXG4gIC0tbGluay1jb2xvcjogIzRkYWJmNztcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogcmdiYSg1MiwgNTgsIDY0LCAwLjEyKTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICMyYzJjMmM7XFxuICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gIC0tcG9wdXAtdGV4dC1jb2xvcjogI2NlZDRkYTtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogIzJjMmMyYztcXG4gIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogIzRkYWJmNztcXG4gIC0tc2hhZG93LWlzbGFuZDogMXB4IDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICNjZWQ0ZGE7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNGI0NmQ4O1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICMzZTM5YmU7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxufVxcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXc6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgYSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBhOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG4uZXhjYWxpZHJhdyBjYW52YXMge1xcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7XFxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG59XFxuLmV4Y2FsaWRyYXdfX2NhbnZhcyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIGNhbnZhcyB7XFxuICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxufVxcbi5leGNhbGlkcmF3IC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbFJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMyxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGgzOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5pY29uU2VsZWN0TGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBpbnB1dFt0eXBlPXJhZGlvXSxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1idXR0b25dIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5pY29uUm93IHtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbiB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmZvY3VzIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb25fX2ljb24ge1xcbiAgd2lkdGg6IDI4cHg7XFxuICBoZWlnaHQ6IDI4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBmaWVsZHNldCB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5kaXZpZGVyIHtcXG4gIHdpZHRoOiAxcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgbWFyZ2luOiAxcHg7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4uZXhjYWxpZHJhdyBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICBtYXJnaW46IDAuMTI1cmVtIDA7XFxuICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmZvY3VzLXZpc2libGUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMtdmlzaWJsZSB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246ZGlzYWJsZWQsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6ZGlzYWJsZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZmZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTpob3ZlcixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYWN0aXZlOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VzdCk7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiBsYWJlbCBzdmcge1xcbiAgd2lkdGg6IDM1cHg7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICBwYWRkaW5nOiAycHg7XFxuICBvcGFjaXR5OiAwLjY7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsLmFjdGl2ZSBzdmcge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b3AtYmFyIHtcXG4gIHotaW5kZXg6IHZhcigtLXpJbmRleC1sYXllclVJKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1ib3R0b20tYmFyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgcGFkZGluZy10b3A6IG1heCh2YXIoLS1iYXItcGFkZGluZyksIHZhcigtLXNhdCwwKSk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxuICB6LWluZGV4OiA0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgbWluLXdpZHRoOiAxMDAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIC5wYW5lbENvbHVtbiB7XFxuICBwYWRkaW5nOiA4cHggOHB4IDAgOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIgLmVyYXNlci5Ub29sSWNvbjpob3ZlciB7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZjtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI2ZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b29sYmFyIC5lcmFzZXIuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXItY29udGVudCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIHBhZGRpbmc6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tb2JpbGUtbWVudSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51IHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCB7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWF4LWNvbnRlbnQgYXV0bztcXG4gIGdyaWQtZ2FwOiA0cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5sYXllci11aV9fd3JhcHBlcjpub3QoLmRpc2FibGUtcG9pbnRlckV2ZW50cykgLkFwcC1tZW51X3RvcCA+ICoge1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvIG1pbi1jb250ZW50O1xcbiAgZ3JpZC1nYXA6IDE1cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbjpyb290W2Rpcj1sdHJdIC5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgbGVmdDogMC4yNXJlbTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICByaWdodDogMC4yNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbS0tdHJhbnNpdGlvbi1sZWZ0IHNlY3Rpb24ge1xcbiAgd2lkdGg6IDE4NXB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHNlY3Rpb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9sZWZ0IHtcXG4gIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfcmlnaHQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9fbGVmdCB7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWlzbGFuZCk7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLnpJbmRleEJ1dHRvbiBzdmcge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvdHRvbTogMzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZpbGw6ICM4NjhlOTY7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuaGVscC1pY29uIHN2ZyB7XFxuICB3aWR0aDogMS41cmVtO1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnJlc2V0LXpvb20tYnV0dG9uIHtcXG4gIHBhZGRpbmc6IDAuMmVtO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG59XFxuLmV4Y2FsaWRyYXcgLmZpbmFsaXplLWJ1dHRvbiB7XFxuICBkaXNwbGF5OiBncmlkO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gIGdhcDogMC40ZW07XFxuICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgbWFyZ2luLWJvdHRvbTogYXV0bztcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMsXFxuLmV4Y2FsaWRyYXcgLmVyYXNlci1idXR0b25zIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgZ2FwOiAwLjRlbTtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyBhc2lkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAucnRsLW1pcnJvciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgd2lkdGg6IGF1dG87XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5Lnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcuZXhjYWxpZHJhdy0tdmlldy1tb2RlIC5BcHAtbWVudSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgaW5wdXRbdHlwZT10ZXh0XTpub3QoOmZvY3VzKTpob3ZlcixcXG4uZXhjYWxpZHJhdyB0ZXh0YXJlYTpub3QoLmV4Y2FsaWRyYXctd3lzaXd5Zyk6bm90KDpmb2N1cyk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtaG92ZXItYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbkBtZWRpYSBwcmludCB7XFxuICAuZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIsXFxuLmV4Y2FsaWRyYXcgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4uZXhjYWxpZHJhdyAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA1cHg7XFxufVxcbi5leGNhbGlkcmF3IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xcbiAgICAgICAgICB1c2VyLXNlbGVjdDogdGV4dDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLW1lc3NhZ2VDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBwYWRkaW5nOiA0MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTNlMztcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNjOTJhMmE7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgbWFyZ2luOiAxNXB4IDA7XFxuICBtYXgtd2lkdGg6IDYwMHB4O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoLmFsaWduLWNlbnRlciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLmJpZ2dlciBidXR0b24ge1xcbiAgZm9udC1zaXplOiAxLjFlbTtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMC45ZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHRleHRhcmVhIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAxMHB4IDA7XFxuICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3RoZW1lLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBRDhCQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUMzQkY7O0FDTEE7RUFDRSxvQkFBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFB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O0VBQ0Esa0RBQUE7QUFwQk47QUF3QkU7RUFDRTs7O0lBR0UsYUFBQTtFQXRCSjtBQUNGO0FBMkJFO0VBQ0UsVUFBQTtBQXpCSjtBQTJCRTtFQUNFLGdDQUFBO0VBQ0EsbUJBQUE7QUF6Qko7QUEyQkU7RUFDRSxnQ0FBQTtBQXpCSjtBQTJCRTtFQUNFLGdDQUFBO0FBekJKOztBQTZCQTtFQUNFLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLHlCQUFBO1VBQUEsaUJBQUE7QUExQkY7QUE0QkU7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBRUEsYUFBQTtFQUNBLHlCRWhpQk87RUZpaUJQLHlCQUFBO0FBM0JKO0FBOEJFO0VBQ0UsY0FBQTtFQUNBLGdCQUFBO0FBNUJKO0FBOEJJO0VBQ0Usa0JBQUE7QUE1Qk47QUFnQ0U7O0VBRUUsZ0JBQUE7QUE5Qko7QUFpQ0U7O0VBRUUsZ0JBQUE7QUEvQko7QUFrQ0U7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQWhDSjtBQWtDSTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBQWhDTlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuQG1peGluIHRvb2xiYXJCdXR0b25Db2xvclN0YXRlcyB7XFxuICAuVG9vbEljb25fdHlwZV9yYWRpbyxcXG4gIC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gICAgJiArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgICAtLWtleWJpbmRpbmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fa2V5YmluZGluZyB7XFxuICAgIGJvdHRvbTogNHB4O1xcbiAgICByaWdodDogNHB4O1xcbiAgfVxcbn1cXG5cXG4kdGhlbWUtZmlsdGVyOiBcXFwiaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpXFxcIjtcXG4kcmlnaHQtc2lkZWJhci13aWR0aDogXFxcIjMwMnB4XFxcIjtcXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiB1bnF1b3RlKCR0aGVtZS1maWx0ZXIpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IHVucXVvdGUoJHJpZ2h0LXNpZGViYXItd2lkdGgpO1xcbn1cXG5cIixcIkBpbXBvcnQgXFxcIi4vdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuQGltcG9ydCBcXFwiLi90aGVtZVxcXCI7XFxuXFxuOnJvb3Qge1xcbiAgLS16SW5kZXgtY2FudmFzOiAxO1xcbiAgLS16SW5kZXgtd3lzaXd5ZzogMjtcXG4gIC0tekluZGV4LWxheWVyVUk6IDM7XFxufVxcblxcbi5leGNhbGlkcmF3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG5cXG4gICY6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgLy8gc2VydmVzIDIgcHVycG9zZXM6XFxuICAvLyAxLiBwcmV2ZW50IHNlbGVjdGluZyB0ZXh0IG91dHNpZGUgdGhlIGNvbXBvbmVudCB3aGVuIGRvdWJsZS1jbGlja2luZyBvclxcbiAgLy8gICAgZHJhZ2dpbmcgaW5zaWRlIGl0IChlLmcuIG9uIGNhbnZhcylcXG4gIC8vIDIuIHByZXZlbnQgc2VsZWN0aW5nIFVJLCBib3RoIGZyb20gdGhlIGluc2lkZSwgYW5kIGZyb20gb3V0c2lkZSB0aGVcXG4gIC8vICAgIGNvbXBvbmVudCAoZS5nLiBpZiB5b3Ugc2VsZWN0IHRleHQgaW4gYSBzaWRlYmFyKVxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFxuICBhIHtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0tbGluay1jb2xvcik7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbiAgICB9XFxuICB9XFxuXFxuICBjYW52YXMge1xcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XFxuXFxuICAgIC8vIGZvbGxvd2luZyBwcm9wcyBpbXByb3ZlIGJsdXJyaW5lc3MgYXQgY2VydGFpbiBkZXZpY2VQaXhlbFJhdGlvcy5cXG4gICAgLy8gQUZBSUsgaXQgZG9lc24ndCBhZmZlY3QgZXhwb3J0IChpbiBmYWN0LCBleHBvcnQgc2VlbXMgc2hhcnAgZWl0aGVyIHdheSkuXFxuXFxuICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyAvLyBjaHJvbWl1bVxcbiAgICAvLyBOT1RFOiBtdXN0IGJlIGRlY2xhcmVkICphZnRlciogdGhlIGFib3ZlXFxuICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsgLy8gRkZcXG5cXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWNhbnZhcyk7XFxuXFxuICAgIC8vIFJlbW92ZSB0aGUgbWFpbiBjYW52YXMgZnJvbSBkb2N1bWVudCBmbG93IHRvIGF2b2lkIHJlc2l6ZU9ic2VydmVyXFxuICAgIC8vIGZlZWRiYWNrIGxvb3AgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L3B1bGwvMzM3OSlcXG4gIH1cXG5cXG4gICZfX2NhbnZhcyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIH1cXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBpbnNwaXJlZCBieVxcbiAgICAvLyBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb2xvci9kYXJrLXRoZW1lLmh0bWwjcHJvcGVydGllcywgd2hpY2hcXG4gICAgLy8gcmVjb21tZW5kcyBzdXJmYWNlIGNvbG9yIG9mICMxMjEyMTIsIDkzJSB5aWVsZHMgIzExMTExMSBmb3IgI0ZGRlxcblxcbiAgICBjYW52YXMge1xcbiAgICAgIGZpbHRlcjogdmFyKC0tdGhlbWUtZmlsdGVyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLkZpeGVkU2lkZUNvbnRhaW5lciB7XFxuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zYXQsIDApO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgfVxcblxcbiAgLnBhbmVsUm93IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgfVxcblxcbiAgLnBhbmVsQ29sdW1uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXG4gICAgaDMsXFxuICAgIGxlZ2VuZCxcXG4gICAgLmNvbnRyb2wtbGFiZWwge1xcbiAgICAgIG1hcmdpbi10b3A6IDAuMzMzcmVtO1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAuY29udHJvbC1sYWJlbCBpbnB1dCB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgIH1cXG5cXG4gICAgaDM6Zmlyc3QtY2hpbGQsXFxuICAgIGxlZ2VuZDpmaXJzdC1jaGlsZCxcXG4gICAgLmNvbnRyb2wtbGFiZWw6Zmlyc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIH1cXG5cXG4gICAgbGVnZW5kIHtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICB9XFxuXFxuICAgIC5pY29uU2VsZWN0TGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgfVxcblxcbiAgICAuYnV0dG9uTGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgICAgIGxhYmVsIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICB9XFxuXFxuICAgICAgaW5wdXRbdHlwZT1cXFwicmFkaW9cXFwiXSxcXG4gICAgICBpbnB1dFt0eXBlPVxcXCJidXR0b25cXFwiXSB7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgfVxcblxcbiAgICAgIC5pY29uUm93IHtcXG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uIHtcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuXFxuICAgICAgICAmOmZvY3VzIHtcXG4gICAgICAgICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6ZGlzYWJsZWQge1xcbiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgICAgd2lkdGg6IDI4cHg7XFxuICAgICAgICBoZWlnaHQ6IDI4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGZpZWxkc2V0IHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kaXZpZGVyIHtcXG4gICAgd2lkdGg6IDFweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9jLWdyYXktMjtcXG4gICAgbWFyZ2luOiAxcHg7XFxuICB9XFxuXFxuICAuYnV0dG9uTGlzdCBsYWJlbDpmb2N1cy13aXRoaW4sXFxuICBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgfVxcblxcbiAgYnV0dG9uLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICAgIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gICAgcGFkZGluZzogMC4yNXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgfVxcblxcbiAgICAmOmRpc2FibGVkIHtcXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYWN0aXZlLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFxuICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24ge1xcbiAgICBsYWJlbCB7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBzdmcge1xcbiAgICAgICAgd2lkdGg6IDM1cHg7XFxuICAgICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgICBwYWRkaW5nOiAycHg7XFxuICAgICAgICBvcGFjaXR5OiAwLjY7XFxuICAgICAgfVxcbiAgICAgICYuYWN0aXZlIHN2ZyB7XFxuICAgICAgICBvcGFjaXR5OiAxO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLkFwcC10b3AtYmFyIHtcXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWxheWVyVUkpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgfVxcblxcbiAgLkFwcC1ib3R0b20tYmFyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgICBwYWRkaW5nLXRvcDogI3tcXFwibWF4KHZhcigtLWJhci1wYWRkaW5nKSwgdmFyKC0tc2F0LDApKVxcXCJ9O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgICB6LWluZGV4OiA0O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICA+IC5Jc2xhbmQge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XFxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcXG5cXG4gICAgICAucGFuZWxDb2x1bW4ge1xcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCAwIDhweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcblxcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcbiAgICAuZXJhc2VyIHtcXG4gICAgICAmLlRvb2xJY29uOmhvdmVyIHtcXG4gICAgICAgIC0taWNvbi1maWxsLWNvbG9yOiAjZmZmO1xcbiAgICAgICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjZmZmO1xcbiAgICAgIH1cXG4gICAgICAmLmFjdGl2ZSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICB9XFxuXFxuICAuQXBwLW1vYmlsZS1tZW51IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgICBncmlkLWdhcDogNHB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICAgIGdyaWQtZ2FwOiAxNXB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcblxcbiAgICA6cm9vdFtkaXI9XFxcImx0clxcXCJdICYge1xcbiAgICAgIGxlZnQ6IDAuMjVyZW07XFxuICAgIH1cXG5cXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICByaWdodDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICAmLS10cmFuc2l0aW9uLWxlZnQge1xcbiAgICAgIHNlY3Rpb24ge1xcbiAgICAgICAgd2lkdGg6IDE4NXB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBzZWN0aW9uIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2xlZnQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciBhdXRvIDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3JpZ2h0IHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9fbGVmdCB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgfVxcblxcbiAgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICAgIGhlaWdodDogMS41cmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMC41cmVtO1xcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDEuNXJlbTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRyb3Bkb3duLWljb24pO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG4gICAgfVxcblxcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDAuNjVlbSBhdXRvLCAxMDAlO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC56SW5kZXhCdXR0b24ge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiAxOHB4O1xcbiAgICAgIGhlaWdodDogMThweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgICBjb2xvcjogdmFyKC0tcG9wdXAtdGV4dC1jb2xvcik7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBib3R0b206IDMwcHg7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgfVxcblxcbiAgLmhlbHAtaWNvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgZmlsbDogJG9jLWdyYXktNjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMS41cmVtO1xcbiAgICAgIGhlaWdodDogMS41cmVtO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5yZXNldC16b29tLWJ1dHRvbiB7XFxuICAgIHBhZGRpbmc6IDAuMmVtO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gIH1cXG5cXG4gIC5maW5hbGl6ZS1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBnYXA6IDAuNGVtO1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG4gIH1cXG5cXG4gIC51bmRvLXJlZG8tYnV0dG9ucyxcXG4gIC5lcmFzZXItYnV0dG9ucyB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XFxuICAgIGdhcDogMC40ZW07XFxuICAgIG1hcmdpbi10b3A6IGF1dG87XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XFxuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbiAgfVxcblxcbiAgQGluY2x1ZGUgaXNNb2JpbGUge1xcbiAgICBhc2lkZSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbiAgICAuc2Nyb2xsLWJhY2stdG8tY29udGVudCB7XFxuICAgICAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gICAgICB6LWluZGV4OiAtMTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnJ0bC1taXJyb3Ige1xcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnplbi1tb2RlLXZpc2liaWxpdHkge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxuXFxuICAgICYuemVuLW1vZGUtdmlzaWJpbGl0eS0taGlkZGVuIHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICBoZWlnaHQ6IDA7XFxuICAgICAgd2lkdGg6IDA7XFxuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZGlzYWJsZS1wb2ludGVyRXZlbnRzIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG5cXG4gICYuZXhjYWxpZHJhdy0tdmlldy1tb2RlIHtcXG4gICAgLkFwcC1tZW51IHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgfVxcbiAgfVxcblxcbiAgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpIHtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gICAgcGFkZGluZzogMC43NXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtYmctY29sb3IpO1xcblxcbiAgICAmOm5vdCg6Zm9jdXMpIHtcXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWhvdmVyLWJnLWNvbG9yKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIHByaW50IHtcXG4gICAgLkFwcC1ib3R0b20tYmFyLFxcbiAgICAuRml4ZWRTaWRlQ29udGFpbmVyLFxcbiAgICAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIHVzZSBjdXN0b20sIG1pbmltYWxpc3RpYyBzY3JvbGxiYXJcXG4gIC8vIChkb2Vzbid0IHdvcmsgaW4gRmlyZWZveClcXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgICB3aWR0aDogNXB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIH1cXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG5cXG4gIC5FcnJvclNwbGFzaC1tZXNzYWdlQ29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFxuICAgIHBhZGRpbmc6IDQwcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvYy1yZWQtMTtcXG4gICAgYm9yZGVyOiAzcHggc29saWQgJG9jLXJlZC05O1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLXBhcmFncmFwaCB7XFxuICAgIG1hcmdpbjogMTVweCAwO1xcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xcblxcbiAgICAmLmFsaWduLWNlbnRlciB7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYmlnZ2VyLFxcbiAgLmJpZ2dlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDEuMWVtO1xcbiAgfVxcblxcbiAgLnNtYWxsZXIsXFxuICAuc21hbGxlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDAuOWVtO1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLWRldGFpbHMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG5cXG4gICAgdGV4dGFyZWEge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1hcmdpbjogMTBweCAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBcXFwiQ2FzY2FkaWFcXFwiO1xcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuQGltcG9ydCBcXFwiLi92YXJpYWJsZXMubW9kdWxlLnNjc3NcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBub25lO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICN7JG9jLXJlZC0xfTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjeyRvYy1yZWQtOX07XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICN7JG9jLWdyYXktMn07XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICN7JG9jLWdyYXktNH07XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICN7JG9jLWdyYXktNX07XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI3skb2MtZ3JlZW4tMH07XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICN7JG9jLWdyYXktNn07XFxuICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz4nKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjeyRvYy1ibHVlLTJ9O1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktOX07XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogI3skb2MtZ3JlZW4tOX07XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI3skb2MtZ3JheS0xfTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICN7JG9jLWdyYXktN307XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS01fTtcXG4gIC0tbGluay1jb2xvcjogI3skb2MtYmx1ZS03fTtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2Mtd2hpdGUsIDAuMTIpfTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtNX07XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDEpLCAxcHggMXB4IDVweCByZ2IoMCAwIDAgLyAxMiUpO1xcblxcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS04fTtcXG5cXG4gIC0tY29sb3ItcHJpbWFyeTogIzY5NjVkYjtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM1YjU3ZDE7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VzdDogIzRhNDdiMTtcXG4gIC0tY29sb3ItcHJpbWFyeS1saWdodDogI2UyZTFmYztcXG5cXG4gIC0tYm9yZGVyLXJhZGl1cy1tZDogMC4zNzVyZW07XFxuICAtLWJvcmRlci1yYWRpdXMtbGc6IDAuNXJlbTtcXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICBiYWNrZ3JvdW5kOiAkb2MtYmxhY2s7XFxuXFxuICAgICYudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLS10aGVtZS1maWx0ZXI6ICN7JHRoZW1lLWZpbHRlcn07XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTN9O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAgIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gICAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gICAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTl9O1xcbiAgICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS02fTtcXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi00fTtcXG4gICAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gICAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gICAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS0yfTtcXG4gICAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gICAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLW92ZXJsYXktYmctY29sb3I6ICN7dHJhbnNwYXJlbnRpemUoJG9jLWdyYXktOCwgMC44OCl9O1xcbiAgICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gICAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS00fTtcXG4gICAgLS1zaGFkb3ctaXNsYW5kOiAxcHggMXB4IDVweCAje3RyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC43KX07XFxuICAgIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcblxcbiAgICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM0YjQ2ZDg7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjM2UzOWJlO1xcbiAgICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxuICB9XFxufVxcblwiLFwiLy9cXG4vL1xcbi8vICDwnZeWIPCdl6Ig8J2XnyDwnZeiIPCdl6VcXG4vLyAgdiAxLjkuMVxcbi8vXFxuLy8gIOKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgVxcblxcblxcbi8vICBHZW5lcmFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy13aGl0ZTogICAgICAgICAjZmZmZmZmO1xcbiRvYy1ibGFjazogICAgICAgICAjMDAwMDAwO1xcblxcblxcbi8vICBHcmF5XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmF5LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjlmYSxcXG4gIFxcXCIxXFxcIjogI2YxZjNmNSxcXG4gIFxcXCIyXFxcIjogI2U5ZWNlZixcXG4gIFxcXCIzXFxcIjogI2RlZTJlNixcXG4gIFxcXCI0XFxcIjogI2NlZDRkYSxcXG4gIFxcXCI1XFxcIjogI2FkYjViZCxcXG4gIFxcXCI2XFxcIjogIzg2OGU5NixcXG4gIFxcXCI3XFxcIjogIzQ5NTA1NyxcXG4gIFxcXCI4XFxcIjogIzM0M2E0MCxcXG4gIFxcXCI5XFxcIjogIzIxMjUyOVxcbik7XFxuXFxuJG9jLWdyYXktMDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmF5LTE6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JheS0yOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXktMzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmF5LTQ6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JheS01OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXktNjogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmF5LTc6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JheS04OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXktOTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBSZWRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXJlZC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY1ZjUsXFxuICBcXFwiMVxcXCI6ICNmZmUzZTMsXFxuICBcXFwiMlxcXCI6ICNmZmM5YzksXFxuICBcXFwiM1xcXCI6ICNmZmE4YTgsXFxuICBcXFwiNFxcXCI6ICNmZjg3ODcsXFxuICBcXFwiNVxcXCI6ICNmZjZiNmIsXFxuICBcXFwiNlxcXCI6ICNmYTUyNTIsXFxuICBcXFwiN1xcXCI6ICNmMDNlM2UsXFxuICBcXFwiOFxcXCI6ICNlMDMxMzEsXFxuICBcXFwiOVxcXCI6ICNjOTJhMmFcXG4pO1xcblxcbiRvYy1yZWQtMDogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXJlZC0xOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtcmVkLTI6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1yZWQtMzogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXJlZC00OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtcmVkLTU6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1yZWQtNjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXJlZC03OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtcmVkLTg6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1yZWQtOTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFBpbmtcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXBpbmstbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmMGY2LFxcbiAgXFxcIjFcXFwiOiAjZmZkZWViLFxcbiAgXFxcIjJcXFwiOiAjZmNjMmQ3LFxcbiAgXFxcIjNcXFwiOiAjZmFhMmMxLFxcbiAgXFxcIjRcXFwiOiAjZjc4M2FjLFxcbiAgXFxcIjVcXFwiOiAjZjA2NTk1LFxcbiAgXFxcIjZcXFwiOiAjZTY0OTgwLFxcbiAgXFxcIjdcXFwiOiAjZDYzMzZjLFxcbiAgXFxcIjhcXFwiOiAjYzIyNTVjLFxcbiAgXFxcIjlcXFwiOiAjYTYxZTRkXFxuKTtcXG5cXG4kb2MtcGluay0wOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXBpbmstMTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1waW5rLTI6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtcGluay0zOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXBpbmstNDogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1waW5rLTU6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtcGluay02OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXBpbmstNzogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1waW5rLTg6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtcGluay05OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEdyYXBlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmFwZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmOGYwZmMsXFxuICBcXFwiMVxcXCI6ICNmM2Q5ZmEsXFxuICBcXFwiMlxcXCI6ICNlZWJlZmEsXFxuICBcXFwiM1xcXCI6ICNlNTk5ZjcsXFxuICBcXFwiNFxcXCI6ICNkYTc3ZjIsXFxuICBcXFwiNVxcXCI6ICNjYzVkZTgsXFxuICBcXFwiNlxcXCI6ICNiZTRiZGIsXFxuICBcXFwiN1xcXCI6ICNhZTNlYzksXFxuICBcXFwiOFxcXCI6ICM5YzM2YjUsXFxuICBcXFwiOVxcXCI6ICM4NjJlOWNcXG4pO1xcblxcbiRvYy1ncmFwZS0wOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmFwZS0xOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmFwZS0yOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmFwZS0zOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmFwZS00OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmFwZS01OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmFwZS02OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmFwZS03OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmFwZS04OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmFwZS05OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBWaW9sZXRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXZpb2xldC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmM2YwZmYsXFxuICBcXFwiMVxcXCI6ICNlNWRiZmYsXFxuICBcXFwiMlxcXCI6ICNkMGJmZmYsXFxuICBcXFwiM1xcXCI6ICNiMTk3ZmMsXFxuICBcXFwiNFxcXCI6ICM5Nzc1ZmEsXFxuICBcXFwiNVxcXCI6ICM4NDVlZjcsXFxuICBcXFwiNlxcXCI6ICM3OTUwZjIsXFxuICBcXFwiN1xcXCI6ICM3MDQ4ZTgsXFxuICBcXFwiOFxcXCI6ICM2NzQxZDksXFxuICBcXFwiOVxcXCI6ICM1ZjNkYzRcXG4pO1xcblxcbiRvYy12aW9sZXQtMDogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXZpb2xldC0xOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdmlvbGV0LTI6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy12aW9sZXQtMzogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXZpb2xldC00OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdmlvbGV0LTU6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy12aW9sZXQtNjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXZpb2xldC03OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdmlvbGV0LTg6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy12aW9sZXQtOTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEluZGlnb1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtaW5kaWdvLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2VkZjJmZixcXG4gIFxcXCIxXFxcIjogI2RiZTRmZixcXG4gIFxcXCIyXFxcIjogI2JhYzhmZixcXG4gIFxcXCIzXFxcIjogIzkxYTdmZixcXG4gIFxcXCI0XFxcIjogIzc0OGZmYyxcXG4gIFxcXCI1XFxcIjogIzVjN2NmYSxcXG4gIFxcXCI2XFxcIjogIzRjNmVmNSxcXG4gIFxcXCI3XFxcIjogIzQyNjNlYixcXG4gIFxcXCI4XFxcIjogIzNiNWJkYixcXG4gIFxcXCI5XFxcIjogIzM2NGZjN1xcbik7XFxuXFxuJG9jLWluZGlnby0wOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtaW5kaWdvLTE6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1pbmRpZ28tMjogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWluZGlnby0zOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtaW5kaWdvLTQ6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1pbmRpZ28tNTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWluZGlnby02OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtaW5kaWdvLTc6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1pbmRpZ28tODogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWluZGlnby05OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQmx1ZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtYmx1ZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlN2Y1ZmYsXFxuICBcXFwiMVxcXCI6ICNkMGViZmYsXFxuICBcXFwiMlxcXCI6ICNhNWQ4ZmYsXFxuICBcXFwiM1xcXCI6ICM3NGMwZmMsXFxuICBcXFwiNFxcXCI6ICM0ZGFiZjcsXFxuICBcXFwiNVxcXCI6ICMzMzlhZjAsXFxuICBcXFwiNlxcXCI6ICMyMjhiZTYsXFxuICBcXFwiN1xcXCI6ICMxYzdlZDYsXFxuICBcXFwiOFxcXCI6ICMxOTcxYzIsXFxuICBcXFwiOVxcXCI6ICMxODY0YWJcXG4pO1xcblxcbiRvYy1ibHVlLTA6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtYmx1ZS0xOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWJsdWUtMjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ibHVlLTM6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtYmx1ZS00OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWJsdWUtNTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ibHVlLTY6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtYmx1ZS03OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWJsdWUtODogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ibHVlLTk6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQ3lhblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtY3lhbi1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlM2ZhZmMsXFxuICBcXFwiMVxcXCI6ICNjNWY2ZmEsXFxuICBcXFwiMlxcXCI6ICM5OWU5ZjIsXFxuICBcXFwiM1xcXCI6ICM2NmQ5ZTgsXFxuICBcXFwiNFxcXCI6ICMzYmM5ZGIsXFxuICBcXFwiNVxcXCI6ICMyMmI4Y2YsXFxuICBcXFwiNlxcXCI6ICMxNWFhYmYsXFxuICBcXFwiN1xcXCI6ICMxMDk4YWQsXFxuICBcXFwiOFxcXCI6ICMwYzg1OTksXFxuICBcXFwiOVxcXCI6ICMwYjcyODVcXG4pO1xcblxcbiRvYy1jeWFuLTA6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtY3lhbi0xOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWN5YW4tMjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1jeWFuLTM6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtY3lhbi00OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWN5YW4tNTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1jeWFuLTY6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtY3lhbi03OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWN5YW4tODogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1jeWFuLTk6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgVGVhbFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdGVhbC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlNmZjZjUsXFxuICBcXFwiMVxcXCI6ICNjM2ZhZTgsXFxuICBcXFwiMlxcXCI6ICM5NmYyZDcsXFxuICBcXFwiM1xcXCI6ICM2M2U2YmUsXFxuICBcXFwiNFxcXCI6ICMzOGQ5YTksXFxuICBcXFwiNVxcXCI6ICMyMGM5OTcsXFxuICBcXFwiNlxcXCI6ICMxMmI4ODYsXFxuICBcXFwiN1xcXCI6ICMwY2E2NzgsXFxuICBcXFwiOFxcXCI6ICMwOTkyNjgsXFxuICBcXFwiOVxcXCI6ICMwODdmNWJcXG4pO1xcblxcbiRvYy10ZWFsLTA6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdGVhbC0xOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXRlYWwtMjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy10ZWFsLTM6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdGVhbC00OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXRlYWwtNTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy10ZWFsLTY6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdGVhbC03OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXRlYWwtODogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy10ZWFsLTk6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JlZW5cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyZWVuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ViZmJlZSxcXG4gIFxcXCIxXFxcIjogI2QzZjlkOCxcXG4gIFxcXCIyXFxcIjogI2IyZjJiYixcXG4gIFxcXCIzXFxcIjogIzhjZTk5YSxcXG4gIFxcXCI0XFxcIjogIzY5ZGI3YyxcXG4gIFxcXCI1XFxcIjogIzUxY2Y2NixcXG4gIFxcXCI2XFxcIjogIzQwYzA1NyxcXG4gIFxcXCI3XFxcIjogIzM3YjI0ZCxcXG4gIFxcXCI4XFxcIjogIzJmOWU0NCxcXG4gIFxcXCI5XFxcIjogIzJiOGEzZVxcbik7XFxuXFxuJG9jLWdyZWVuLTA6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyZWVuLTE6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyZWVuLTI6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyZWVuLTM6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyZWVuLTQ6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyZWVuLTU6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyZWVuLTY6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyZWVuLTc6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyZWVuLTg6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyZWVuLTk6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIExpbWVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWxpbWUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjRmY2UzLFxcbiAgXFxcIjFcXFwiOiAjZTlmYWM4LFxcbiAgXFxcIjJcXFwiOiAjZDhmNWEyLFxcbiAgXFxcIjNcXFwiOiAjYzBlYjc1LFxcbiAgXFxcIjRcXFwiOiAjYTllMzRiLFxcbiAgXFxcIjVcXFwiOiAjOTRkODJkLFxcbiAgXFxcIjZcXFwiOiAjODJjOTFlLFxcbiAgXFxcIjdcXFwiOiAjNzRiODE2LFxcbiAgXFxcIjhcXFwiOiAjNjZhODBmLFxcbiAgXFxcIjlcXFwiOiAjNWM5NDBkXFxuKTtcXG5cXG4kb2MtbGltZS0wOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWxpbWUtMTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1saW1lLTI6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtbGltZS0zOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWxpbWUtNDogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1saW1lLTU6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtbGltZS02OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWxpbWUtNzogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1saW1lLTg6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtbGltZS05OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFllbGxvd1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MteWVsbG93LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjlkYixcXG4gIFxcXCIxXFxcIjogI2ZmZjNiZixcXG4gIFxcXCIyXFxcIjogI2ZmZWM5OSxcXG4gIFxcXCIzXFxcIjogI2ZmZTA2NixcXG4gIFxcXCI0XFxcIjogI2ZmZDQzYixcXG4gIFxcXCI1XFxcIjogI2ZjYzQxOSxcXG4gIFxcXCI2XFxcIjogI2ZhYjAwNSxcXG4gIFxcXCI3XFxcIjogI2Y1OWYwMCxcXG4gIFxcXCI4XFxcIjogI2YwOGMwMCxcXG4gIFxcXCI5XFxcIjogI2U2NzcwMFxcbik7XFxuXFxuJG9jLXllbGxvdy0wOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MteWVsbG93LTE6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy15ZWxsb3ctMjogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXllbGxvdy0zOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MteWVsbG93LTQ6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy15ZWxsb3ctNTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXllbGxvdy02OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MteWVsbG93LTc6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy15ZWxsb3ctODogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXllbGxvdy05OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgT3JhbmdlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1vcmFuZ2UtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmNGU2LFxcbiAgXFxcIjFcXFwiOiAjZmZlOGNjLFxcbiAgXFxcIjJcXFwiOiAjZmZkOGE4LFxcbiAgXFxcIjNcXFwiOiAjZmZjMDc4LFxcbiAgXFxcIjRcXFwiOiAjZmZhOTRkLFxcbiAgXFxcIjVcXFwiOiAjZmY5MjJiLFxcbiAgXFxcIjZcXFwiOiAjZmQ3ZTE0LFxcbiAgXFxcIjdcXFwiOiAjZjc2NzA3LFxcbiAgXFxcIjhcXFwiOiAjZTg1OTBjLFxcbiAgXFxcIjlcXFwiOiAjZDk0ODBmXFxuKTtcXG5cXG4kb2Mtb3JhbmdlLTA6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1vcmFuZ2UtMTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLW9yYW5nZS0yOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2Mtb3JhbmdlLTM6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1vcmFuZ2UtNDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLW9yYW5nZS01OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2Mtb3JhbmdlLTY6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1vcmFuZ2UtNzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLW9yYW5nZS04OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2Mtb3JhbmdlLTk6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDb2xvciBsaXN0XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jb2xvci1zcGVjdHJ1bTogICA5O1xcblxcbiRvYy1jb2xvci1saXN0OiAoXFxuICAkb2MtZ3JheS1saXN0OiAgICAgIFxcXCJncmF5XFxcIixcXG4gICRvYy1yZWQtbGlzdDogICAgICBcXFwicmVkXFxcIixcXG4gICRvYy1waW5rLWxpc3Q6ICAgICAgXFxcInBpbmtcXFwiLFxcbiAgJG9jLWdyYXBlLWxpc3Q6ICAgICAgXFxcImdyYXBlXFxcIixcXG4gICRvYy12aW9sZXQtbGlzdDogICAgICBcXFwidmlvbGV0XFxcIixcXG4gICRvYy1pbmRpZ28tbGlzdDogICAgICBcXFwiaW5kaWdvXFxcIixcXG4gICRvYy1ibHVlLWxpc3Q6ICAgICAgXFxcImJsdWVcXFwiLFxcbiAgJG9jLWN5YW4tbGlzdDogICAgICBcXFwiY3lhblxcXCIsXFxuICAkb2MtdGVhbC1saXN0OiAgICAgIFxcXCJ0ZWFsXFxcIixcXG4gICRvYy1ncmVlbi1saXN0OiAgICAgIFxcXCJncmVlblxcXCIsXFxuICAkb2MtbGltZS1saXN0OiAgICAgIFxcXCJsaW1lXFxcIixcXG4gICRvYy15ZWxsb3ctbGlzdDogICAgICBcXFwieWVsbG93XFxcIixcXG4gICRvYy1vcmFuZ2UtbGlzdDogICAgICBcXFwib3JhbmdlXFxcIlxcbik7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\n");
1647
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \"./node_modules/css-loader/dist/runtime/sourceMaps.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\" viewBox=\"0 0 292 292\"><path d=\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\"/></svg> */ \"data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"292.4\" height=\"292.4\" viewBox=\"0 0 292 292\"><path fill=\"%23ced4da\" d=\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\"/></svg> */ \"data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n:export {\\n themeFilter: invert(93%) hue-rotate(180deg);\\n rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n --theme-filter: none;\\n --button-destructive-bg-color: #ffe3e3;\\n --button-destructive-color: #c92a2a;\\n --button-gray-1: #e9ecef;\\n --button-gray-2: #ced4da;\\n --button-gray-3: #adb5bd;\\n --button-special-active-bg-color: #ebfbee;\\n --dialog-border-color: #868e96;\\n --dropdown-icon: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n --focus-highlight-color: #a5d8ff;\\n --icon-fill-color: #212529;\\n --icon-green-fill-color: #2b8a3e;\\n --default-bg-color: #ffffff;\\n --input-bg-color: #ffffff;\\n --input-border-color: #ced4da;\\n --input-hover-bg-color: #f1f3f5;\\n --input-label-color: #495057;\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\n --keybinding-color: #adb5bd;\\n --link-color: #1c7ed6;\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n --popup-bg-color: #ffffff;\\n --popup-secondary-bg-color: #f1f3f5;\\n --popup-text-color: #000000;\\n --popup-text-inverted-color: #ffffff;\\n --sab: env(safe-area-inset-bottom);\\n --sal: env(safe-area-inset-left);\\n --sar: env(safe-area-inset-right);\\n --sat: env(safe-area-inset-top);\\n --select-highlight-color: #339af0;\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\n --space-factor: 0.25rem;\\n --text-primary-color: #343a40;\\n --color-primary: #6965db;\\n --color-primary-darker: #5b57d1;\\n --color-primary-darkest: #4a47b1;\\n --color-primary-light: #e2e1fc;\\n --border-radius-md: 0.375rem;\\n --border-radius-lg: 0.5rem;\\n}\\n.excalidraw.theme--dark {\\n background: #000000;\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n background: none;\\n}\\n.excalidraw.theme--dark {\\n --theme-filter: invert(93%) hue-rotate(180deg);\\n --button-destructive-bg-color: #5a0000;\\n --button-destructive-color: #ffa8a8;\\n --button-gray-1: #363636;\\n --button-gray-2: #272727;\\n --button-gray-3: #222;\\n --button-special-active-bg-color: #204624;\\n --dialog-border-color: #212529;\\n --dropdown-icon: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");\\n --focus-highlight-color: #228be6;\\n --icon-fill-color: #ced4da;\\n --icon-green-fill-color: #69db7c;\\n --default-bg-color: #121212;\\n --input-bg-color: #121212;\\n --input-border-color: #2e2e2e;\\n --input-hover-bg-color: #181818;\\n --input-label-color: #e9ecef;\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\n --keybinding-color: #868e96;\\n --link-color: #4dabf7;\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n --popup-bg-color: #2c2c2c;\\n --popup-secondary-bg-color: #222;\\n --popup-text-color: #ced4da;\\n --popup-text-inverted-color: #2c2c2c;\\n --select-highlight-color: #4dabf7;\\n --shadow-island: 1px 1px 5px rgba(0, 0, 0, 0.3);\\n --text-primary-color: #ced4da;\\n --color-primary: #5650f0;\\n --color-primary-darker: #4b46d8;\\n --color-primary-darkest: #3e39be;\\n --color-primary-light: #3f3d64;\\n}\\n\\n:root {\\n --zIndex-canvas: 1;\\n --zIndex-wysiwyg: 2;\\n --zIndex-layerUI: 3;\\n}\\n\\n.excalidraw {\\n position: relative;\\n overflow: hidden;\\n color: var(--text-primary-color);\\n display: flex;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n user-select: none;\\n}\\n.excalidraw:focus {\\n outline: none;\\n}\\n.excalidraw a {\\n font-weight: 500;\\n text-decoration: none;\\n color: var(--link-color);\\n}\\n.excalidraw a:hover {\\n text-decoration: underline;\\n}\\n.excalidraw canvas {\\n touch-action: none;\\n image-rendering: pixelated;\\n image-rendering: -moz-crisp-edges;\\n z-index: var(--zIndex-canvas);\\n}\\n.excalidraw__canvas {\\n position: absolute;\\n}\\n.excalidraw.theme--dark canvas {\\n filter: var(--theme-filter);\\n}\\n.excalidraw .FixedSideContainer {\\n padding-top: var(--sat, 0);\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n}\\n.excalidraw .panelRow {\\n display: flex;\\n justify-content: space-between;\\n}\\n.excalidraw .panelColumn {\\n display: flex;\\n flex-direction: column;\\n}\\n.excalidraw .panelColumn h3,\\n.excalidraw .panelColumn legend,\\n.excalidraw .panelColumn .control-label {\\n margin-top: 0.333rem;\\n margin-bottom: 0.333rem;\\n font-size: 0.75rem;\\n color: var(--text-primary-color);\\n font-weight: bold;\\n display: block;\\n}\\n.excalidraw .panelColumn .control-label input {\\n display: block;\\n width: 100%;\\n}\\n.excalidraw .panelColumn h3:first-child,\\n.excalidraw .panelColumn legend:first-child,\\n.excalidraw .panelColumn .control-label:first-child {\\n margin-top: 0;\\n}\\n.excalidraw .panelColumn legend {\\n padding: 0;\\n}\\n.excalidraw .panelColumn .iconSelectList {\\n flex-wrap: wrap;\\n position: relative;\\n}\\n.excalidraw .panelColumn .buttonList {\\n flex-wrap: wrap;\\n}\\n.excalidraw .panelColumn .buttonList label {\\n margin-right: 0.25rem;\\n font-size: 0.75rem;\\n display: inline-block;\\n}\\n.excalidraw .panelColumn .buttonList input[type=radio],\\n.excalidraw .panelColumn .buttonList input[type=button] {\\n opacity: 0;\\n position: absolute;\\n pointer-events: none;\\n}\\n.excalidraw .panelColumn .buttonList .iconRow {\\n margin-top: 8px;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\n margin: 0;\\n margin-inline-end: 8px;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\n cursor: not-allowed;\\n}\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\n width: 28px;\\n height: 28px;\\n}\\n.excalidraw .panelColumn fieldset {\\n margin: 0;\\n margin-top: 0.333rem;\\n padding: 0;\\n border: none;\\n}\\n.excalidraw .divider {\\n width: 1px;\\n background-color: #e9ecef;\\n margin: 1px;\\n}\\n.excalidraw .buttonList label:focus-within,\\n.excalidraw input:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw button,\\n.excalidraw .buttonList label {\\n user-select: none;\\n background-color: var(--button-gray-1);\\n border: 0;\\n border-radius: var(--border-radius-md);\\n margin: 0.125rem 0;\\n padding: 0.25rem;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.excalidraw button:focus-visible,\\n.excalidraw .buttonList label:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw button:hover,\\n.excalidraw .buttonList label:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw button:active,\\n.excalidraw .buttonList label:active {\\n background-color: var(--button-gray-3);\\n}\\n.excalidraw button:disabled,\\n.excalidraw .buttonList label:disabled {\\n cursor: not-allowed;\\n}\\n.excalidraw .active,\\n.excalidraw .buttonList label.active {\\n background-color: var(--color-primary);\\n --icon-fill-color: #ffffff;\\n}\\n.excalidraw .active:hover,\\n.excalidraw .buttonList label.active:hover {\\n background-color: var(--color-primary-darker);\\n}\\n.excalidraw .active:active,\\n.excalidraw .buttonList label.active:active {\\n background-color: var(--color-primary-darkest);\\n}\\n.excalidraw .buttonList.buttonListIcon label {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.excalidraw .buttonList.buttonListIcon label svg {\\n width: 35px;\\n height: 14px;\\n padding: 2px;\\n opacity: 0.6;\\n}\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\n opacity: 1;\\n}\\n.excalidraw .App-top-bar {\\n z-index: var(--zIndex-layerUI);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n}\\n.excalidraw .App-bottom-bar {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n --bar-padding: calc(4 * var(--space-factor));\\n padding-top: max(var(--bar-padding), var(--sat,0));\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n z-index: 4;\\n display: flex;\\n align-items: flex-end;\\n pointer-events: none;\\n}\\n.excalidraw .App-bottom-bar > .Island {\\n width: 100%;\\n max-width: 100%;\\n min-width: 100%;\\n box-sizing: border-box;\\n max-height: 100%;\\n display: flex;\\n flex-direction: column;\\n pointer-events: initial;\\n}\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\n padding: 8px 8px 0 8px;\\n}\\n.excalidraw .App-toolbar {\\n width: 100%;\\n box-sizing: border-box;\\n}\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\n --icon-fill-color: #fff;\\n --keybinding-color: #fff;\\n}\\n.excalidraw .App-toolbar .eraser.active {\\n background-color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar-content {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 8px;\\n}\\n.excalidraw .App-mobile-menu {\\n width: 100%;\\n overflow-x: visible;\\n overflow-y: auto;\\n box-sizing: border-box;\\n margin-bottom: var(--bar-padding);\\n}\\n.excalidraw .App-menu {\\n display: grid;\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .App-menu_top {\\n grid-template-columns: auto max-content auto;\\n grid-gap: 4px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n}\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\n pointer-events: all;\\n}\\n.excalidraw .App-menu_top > *:first-child {\\n justify-self: flex-start;\\n}\\n.excalidraw .App-menu_top > *:last-child {\\n justify-self: flex-end;\\n}\\n.excalidraw .App-menu_bottom {\\n position: absolute;\\n bottom: 0;\\n grid-template-columns: min-content auto min-content;\\n grid-gap: 15px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n}\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\n left: 0.25rem;\\n}\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\n right: 0.25rem;\\n}\\n.excalidraw .App-menu_bottom--transition-left section {\\n width: 185px;\\n}\\n.excalidraw .App-menu_bottom section {\\n display: flex;\\n}\\n.excalidraw .App-menu_bottom > *:first-child {\\n justify-self: flex-start;\\n}\\n.excalidraw .App-menu_bottom > *:last-child {\\n justify-self: flex-end;\\n}\\n.excalidraw .App-menu_left {\\n grid-template-rows: 1fr auto 1fr;\\n height: 100%;\\n}\\n.excalidraw .App-menu_right {\\n grid-template-rows: 1fr;\\n height: 100%;\\n}\\n.excalidraw .App-menu__left {\\n overflow-y: auto;\\n box-shadow: var(--shadow-island);\\n}\\n.excalidraw .dropdown-select {\\n height: 1.5rem;\\n padding: 0;\\n padding-inline-start: 0.5rem;\\n padding-inline-end: 1.5rem;\\n color: var(--icon-fill-color);\\n background-color: var(--button-gray-1);\\n border-radius: var(--space-factor);\\n border: 1px solid var(--button-gray-2);\\n font-size: 0.8rem;\\n outline: none;\\n appearance: none;\\n background-image: var(--dropdown-icon);\\n background-repeat: no-repeat;\\n background-position: right 0.7rem top 50%, 0 0;\\n background-size: 0.65em auto, 100%;\\n}\\n:root[dir=rtl] .excalidraw .dropdown-select {\\n background-position: left 0.7rem top 50%, 0 0;\\n}\\n.excalidraw .dropdown-select:focus {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .dropdown-select:hover {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select:active {\\n background-color: var(--button-gray-2);\\n}\\n.excalidraw .zIndexButton {\\n margin: 0;\\n margin-inline-end: 8px;\\n padding: 5px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.excalidraw .zIndexButton svg {\\n width: 18px;\\n height: 18px;\\n}\\n.excalidraw .scroll-back-to-content {\\n color: var(--popup-text-color);\\n position: absolute;\\n left: 50%;\\n bottom: 30px;\\n transform: translateX(-50%);\\n padding: 10px 20px;\\n pointer-events: all;\\n}\\n.excalidraw .help-icon {\\n display: flex;\\n cursor: pointer;\\n fill: #868e96;\\n padding: 0;\\n margin: 0;\\n background: none;\\n color: var(--icon-fill-color);\\n}\\n.excalidraw .help-icon svg {\\n width: 1.5rem;\\n height: 1.5rem;\\n}\\n.excalidraw .help-icon:hover {\\n background: none;\\n}\\n.excalidraw .reset-zoom-button {\\n padding: 0.2em;\\n background: transparent;\\n color: var(--text-primary-color);\\n font-family: var(--ui-font);\\n}\\n.excalidraw .finalize-button {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n}\\n.excalidraw .undo-redo-buttons,\\n.excalidraw .eraser-buttons {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n}\\n.excalidraw--mobile.excalidraw aside {\\n display: none;\\n}\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\n bottom: calc(80px + var(--sab, 0));\\n z-index: -1;\\n}\\n\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\n transform: scaleX(-1);\\n}\\n.excalidraw .zen-mode-visibility {\\n visibility: visible;\\n opacity: 1;\\n height: auto;\\n width: auto;\\n transition: opacity 0.5s;\\n}\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\n visibility: hidden;\\n opacity: 0;\\n height: 0;\\n width: 0;\\n transition: opacity 0.5s;\\n}\\n.excalidraw .disable-pointerEvents {\\n pointer-events: none !important;\\n}\\n.excalidraw.excalidraw--view-mode .App-menu {\\n display: flex;\\n justify-content: space-between;\\n}\\n.excalidraw input[type=text],\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\n color: var(--text-primary-color);\\n border: 1.5px solid var(--input-border-color);\\n padding: 0.75rem;\\n white-space: nowrap;\\n border-radius: var(--space-factor);\\n background-color: var(--input-bg-color);\\n}\\n.excalidraw input[type=text]:not(:focus):hover,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\n background-color: var(--input-hover-bg-color);\\n}\\n.excalidraw input[type=text]:focus,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\n outline: none;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n@media print {\\n .excalidraw .App-bottom-bar,\\n.excalidraw .FixedSideContainer,\\n.excalidraw .layer-ui__wrapper {\\n display: none;\\n }\\n}\\n.excalidraw ::-webkit-scrollbar {\\n width: 5px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb {\\n background: var(--button-gray-2);\\n border-radius: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\n background: var(--button-gray-3);\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\n background: var(--button-gray-2);\\n}\\n\\n.ErrorSplash.excalidraw {\\n min-height: 100vh;\\n padding: 20px 0;\\n overflow: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n user-select: text;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n padding: 40px;\\n background-color: #ffe3e3;\\n border: 3px solid #c92a2a;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\n margin: 15px 0;\\n max-width: 600px;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\n text-align: center;\\n}\\n.ErrorSplash.excalidraw .bigger,\\n.ErrorSplash.excalidraw .bigger button {\\n font-size: 1.1em;\\n}\\n.ErrorSplash.excalidraw .smaller,\\n.ErrorSplash.excalidraw .smaller button {\\n font-size: 0.9em;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\n width: 100%;\\n margin: 10px 0;\\n font-family: \\\"Cascadia\\\";\\n font-size: 0.8em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../css/variables.module.scss\",\"webpack://./../../css/styles.scss\",\"webpack://./../../css/theme.scss\",\"webpack://./../../../node_modules/open-color/open-color.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import \\\"open-color/open-color.scss\\\";\\n\\n@mixin isMobile() {\\n @at-root .excalidraw--mobile#{&} {\\n @content;\\n }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n .ToolIcon_type_radio,\\n .ToolIcon_type_checkbox {\\n & + .ToolIcon__icon:active {\\n background: var(--color-primary-light);\\n }\\n &:checked + .ToolIcon__icon {\\n background: var(--color-primary);\\n --icon-fill-color: #{$oc-white};\\n --keybinding-color: #{$oc-white};\\n }\\n &:checked + .ToolIcon__icon:active {\\n background: var(--color-primary-darker);\\n }\\n }\\n\\n .ToolIcon__keybinding {\\n bottom: 4px;\\n right: 4px;\\n }\\n}\\n\\n$theme-filter: \\\"invert(93%) hue-rotate(180deg)\\\";\\n$right-sidebar-width: \\\"302px\\\";\\n\\n:export {\\n themeFilter: unquote($theme-filter);\\n rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n\",\"@import \\\"./variables.module\\\";\\n@import \\\"./theme\\\";\\n\\n:root {\\n --zIndex-canvas: 1;\\n --zIndex-wysiwyg: 2;\\n --zIndex-layerUI: 3;\\n}\\n\\n.excalidraw {\\n position: relative;\\n overflow: hidden;\\n color: var(--text-primary-color);\\n display: flex;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 100%;\\n width: 100%;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n // serves 2 purposes:\\n // 1. prevent selecting text outside the component when double-clicking or\\n // dragging inside it (e.g. on canvas)\\n // 2. prevent selecting UI, both from the inside, and from outside the\\n // component (e.g. if you select text in a sidebar)\\n user-select: none;\\n\\n a {\\n font-weight: 500;\\n text-decoration: none;\\n color: var(--link-color);\\n\\n &:hover {\\n text-decoration: underline;\\n }\\n }\\n\\n canvas {\\n touch-action: none;\\n\\n // following props improve blurriness at certain devicePixelRatios.\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\n\\n image-rendering: pixelated; // chromium\\n // NOTE: must be declared *after* the above\\n image-rendering: -moz-crisp-edges; // FF\\n\\n z-index: var(--zIndex-canvas);\\n\\n // Remove the main canvas from document flow to avoid resizeObserver\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\n }\\n\\n &__canvas {\\n position: absolute;\\n }\\n\\n &.theme--dark {\\n // The percentage is inspired by\\n // https://material.io/design/color/dark-theme.html#properties, which\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\n\\n canvas {\\n filter: var(--theme-filter);\\n }\\n }\\n\\n .FixedSideContainer {\\n padding-top: var(--sat, 0);\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n }\\n\\n .panelRow {\\n display: flex;\\n justify-content: space-between;\\n }\\n\\n .panelColumn {\\n display: flex;\\n flex-direction: column;\\n\\n h3,\\n legend,\\n .control-label {\\n margin-top: 0.333rem;\\n margin-bottom: 0.333rem;\\n font-size: 0.75rem;\\n color: var(--text-primary-color);\\n font-weight: bold;\\n display: block;\\n }\\n\\n .control-label input {\\n display: block;\\n width: 100%;\\n }\\n\\n h3:first-child,\\n legend:first-child,\\n .control-label:first-child {\\n margin-top: 0;\\n }\\n\\n legend {\\n padding: 0;\\n }\\n\\n .iconSelectList {\\n flex-wrap: wrap;\\n position: relative;\\n }\\n\\n .buttonList {\\n flex-wrap: wrap;\\n\\n label {\\n margin-right: 0.25rem;\\n font-size: 0.75rem;\\n display: inline-block;\\n }\\n\\n input[type=\\\"radio\\\"],\\n input[type=\\\"button\\\"] {\\n opacity: 0;\\n position: absolute;\\n pointer-events: none;\\n }\\n\\n .iconRow {\\n margin-top: 8px;\\n }\\n\\n .ToolIcon {\\n margin: 0;\\n margin-inline-end: 8px;\\n\\n &:focus {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n }\\n\\n .ToolIcon__icon {\\n width: 28px;\\n height: 28px;\\n }\\n }\\n\\n fieldset {\\n margin: 0;\\n margin-top: 0.333rem;\\n padding: 0;\\n border: none;\\n }\\n }\\n\\n .divider {\\n width: 1px;\\n background-color: $oc-gray-2;\\n margin: 1px;\\n }\\n\\n .buttonList label:focus-within,\\n input:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n button,\\n .buttonList label {\\n user-select: none;\\n background-color: var(--button-gray-1);\\n border: 0;\\n border-radius: var(--border-radius-md);\\n margin: 0.125rem 0;\\n padding: 0.25rem;\\n white-space: nowrap;\\n\\n cursor: pointer;\\n\\n &:focus-visible {\\n outline: transparent;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-3);\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n }\\n\\n .active,\\n .buttonList label.active {\\n background-color: var(--color-primary);\\n\\n --icon-fill-color: #{$oc-white};\\n\\n &:hover {\\n background-color: var(--color-primary-darker);\\n }\\n\\n &:active {\\n background-color: var(--color-primary-darkest);\\n }\\n }\\n\\n .buttonList.buttonListIcon {\\n label {\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n svg {\\n width: 35px;\\n height: 14px;\\n padding: 2px;\\n opacity: 0.6;\\n }\\n &.active svg {\\n opacity: 1;\\n }\\n }\\n }\\n\\n .App-top-bar {\\n z-index: var(--zIndex-layerUI);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n }\\n\\n .App-bottom-bar {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n --bar-padding: calc(4 * var(--space-factor));\\n padding-top: #{\\\"max(var(--bar-padding), var(--sat,0))\\\"};\\n padding-right: var(--sar, 0);\\n padding-bottom: var(--sab, 0);\\n padding-left: var(--sal, 0);\\n z-index: 4;\\n display: flex;\\n align-items: flex-end;\\n pointer-events: none;\\n\\n > .Island {\\n width: 100%;\\n max-width: 100%;\\n min-width: 100%;\\n box-sizing: border-box;\\n max-height: 100%;\\n display: flex;\\n flex-direction: column;\\n pointer-events: initial;\\n\\n .panelColumn {\\n padding: 8px 8px 0 8px;\\n }\\n }\\n }\\n\\n .App-toolbar {\\n width: 100%;\\n\\n box-sizing: border-box;\\n\\n .eraser {\\n &.ToolIcon:hover {\\n --icon-fill-color: #fff;\\n --keybinding-color: #fff;\\n }\\n &.active {\\n background-color: var(--color-primary);\\n }\\n }\\n }\\n\\n .App-toolbar-content {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 8px;\\n }\\n\\n .App-mobile-menu {\\n width: 100%;\\n overflow-x: visible;\\n overflow-y: auto;\\n box-sizing: border-box;\\n margin-bottom: var(--bar-padding);\\n }\\n\\n .App-menu {\\n display: grid;\\n color: var(--icon-fill-color);\\n }\\n\\n .App-menu_top {\\n grid-template-columns: auto max-content auto;\\n grid-gap: 4px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n }\\n\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\n pointer-events: all;\\n }\\n\\n .App-menu_top > *:first-child {\\n justify-self: flex-start;\\n }\\n\\n .App-menu_top > *:last-child {\\n justify-self: flex-end;\\n }\\n\\n .App-menu_bottom {\\n position: absolute;\\n bottom: 0;\\n grid-template-columns: min-content auto min-content;\\n grid-gap: 15px;\\n align-items: flex-start;\\n cursor: default;\\n pointer-events: none !important;\\n\\n :root[dir=\\\"ltr\\\"] & {\\n left: 0.25rem;\\n }\\n\\n :root[dir=\\\"rtl\\\"] & {\\n right: 0.25rem;\\n }\\n\\n &--transition-left {\\n section {\\n width: 185px;\\n }\\n }\\n\\n section {\\n display: flex;\\n }\\n }\\n\\n .App-menu_bottom > *:first-child {\\n justify-self: flex-start;\\n }\\n\\n .App-menu_bottom > *:last-child {\\n justify-self: flex-end;\\n }\\n\\n .App-menu_left {\\n grid-template-rows: 1fr auto 1fr;\\n height: 100%;\\n }\\n\\n .App-menu_right {\\n grid-template-rows: 1fr;\\n height: 100%;\\n }\\n\\n .App-menu__left {\\n overflow-y: auto;\\n box-shadow: var(--shadow-island);\\n }\\n\\n .dropdown-select {\\n height: 1.5rem;\\n padding: 0;\\n padding-inline-start: 0.5rem;\\n padding-inline-end: 1.5rem;\\n color: var(--icon-fill-color);\\n background-color: var(--button-gray-1);\\n border-radius: var(--space-factor);\\n border: 1px solid var(--button-gray-2);\\n font-size: 0.8rem;\\n outline: none;\\n appearance: none;\\n background-image: var(--dropdown-icon);\\n background-repeat: no-repeat;\\n background-position: right 0.7rem top 50%, 0 0;\\n\\n :root[dir=\\\"rtl\\\"] & {\\n background-position: left 0.7rem top 50%, 0 0;\\n }\\n\\n background-size: 0.65em auto, 100%;\\n\\n &:focus {\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n\\n &:hover {\\n background-color: var(--button-gray-2);\\n }\\n\\n &:active {\\n background-color: var(--button-gray-2);\\n }\\n }\\n\\n .zIndexButton {\\n margin: 0;\\n margin-inline-end: 8px;\\n padding: 5px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n\\n svg {\\n width: 18px;\\n height: 18px;\\n }\\n }\\n\\n .scroll-back-to-content {\\n color: var(--popup-text-color);\\n position: absolute;\\n left: 50%;\\n bottom: 30px;\\n transform: translateX(-50%);\\n padding: 10px 20px;\\n pointer-events: all;\\n }\\n\\n .help-icon {\\n display: flex;\\n cursor: pointer;\\n fill: $oc-gray-6;\\n padding: 0;\\n margin: 0;\\n background: none;\\n color: var(--icon-fill-color);\\n\\n svg {\\n width: 1.5rem;\\n height: 1.5rem;\\n }\\n\\n &:hover {\\n background: none;\\n }\\n }\\n\\n .reset-zoom-button {\\n padding: 0.2em;\\n background: transparent;\\n color: var(--text-primary-color);\\n font-family: var(--ui-font);\\n }\\n\\n .finalize-button {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n }\\n\\n .undo-redo-buttons,\\n .eraser-buttons {\\n display: grid;\\n grid-auto-flow: column;\\n gap: 0.4em;\\n margin-top: auto;\\n margin-bottom: auto;\\n margin-inline-start: 0.6em;\\n }\\n\\n @include isMobile {\\n aside {\\n display: none;\\n }\\n .scroll-back-to-content {\\n bottom: calc(80px + var(--sab, 0));\\n z-index: -1;\\n }\\n }\\n\\n .rtl-mirror {\\n :root[dir=\\\"rtl\\\"] & {\\n transform: scaleX(-1);\\n }\\n }\\n\\n .zen-mode-visibility {\\n visibility: visible;\\n opacity: 1;\\n height: auto;\\n width: auto;\\n transition: opacity 0.5s;\\n\\n &.zen-mode-visibility--hidden {\\n visibility: hidden;\\n opacity: 0;\\n height: 0;\\n width: 0;\\n transition: opacity 0.5s;\\n }\\n }\\n\\n .disable-pointerEvents {\\n pointer-events: none !important;\\n }\\n\\n &.excalidraw--view-mode {\\n .App-menu {\\n display: flex;\\n justify-content: space-between;\\n }\\n }\\n\\n input[type=\\\"text\\\"],\\n textarea:not(.excalidraw-wysiwyg) {\\n color: var(--text-primary-color);\\n border: 1.5px solid var(--input-border-color);\\n padding: 0.75rem;\\n white-space: nowrap;\\n border-radius: var(--space-factor);\\n background-color: var(--input-bg-color);\\n\\n &:not(:focus) {\\n &:hover {\\n background-color: var(--input-hover-bg-color);\\n }\\n }\\n\\n &:focus {\\n outline: none;\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n }\\n }\\n\\n @media print {\\n .App-bottom-bar,\\n .FixedSideContainer,\\n .layer-ui__wrapper {\\n display: none;\\n }\\n }\\n\\n // use custom, minimalistic scrollbar\\n // (doesn't work in Firefox)\\n ::-webkit-scrollbar {\\n width: 5px;\\n }\\n ::-webkit-scrollbar-thumb {\\n background: var(--button-gray-2);\\n border-radius: 10px;\\n }\\n ::-webkit-scrollbar-thumb:hover {\\n background: var(--button-gray-3);\\n }\\n ::-webkit-scrollbar-thumb:active {\\n background: var(--button-gray-2);\\n }\\n}\\n\\n.ErrorSplash.excalidraw {\\n min-height: 100vh;\\n padding: 20px 0;\\n overflow: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n user-select: text;\\n\\n .ErrorSplash-messageContainer {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n\\n padding: 40px;\\n background-color: $oc-red-1;\\n border: 3px solid $oc-red-9;\\n }\\n\\n .ErrorSplash-paragraph {\\n margin: 15px 0;\\n max-width: 600px;\\n\\n &.align-center {\\n text-align: center;\\n }\\n }\\n\\n .bigger,\\n .bigger button {\\n font-size: 1.1em;\\n }\\n\\n .smaller,\\n .smaller button {\\n font-size: 0.9em;\\n }\\n\\n .ErrorSplash-details {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n\\n textarea {\\n width: 100%;\\n margin: 10px 0;\\n font-family: \\\"Cascadia\\\";\\n font-size: 0.8em;\\n }\\n }\\n}\\n\",\"@import \\\"open-color/open-color.scss\\\";\\n@import \\\"./variables.module.scss\\\";\\n\\n.excalidraw {\\n --theme-filter: none;\\n --button-destructive-bg-color: #{$oc-red-1};\\n --button-destructive-color: #{$oc-red-9};\\n --button-gray-1: #{$oc-gray-2};\\n --button-gray-2: #{$oc-gray-4};\\n --button-gray-3: #{$oc-gray-5};\\n --button-special-active-bg-color: #{$oc-green-0};\\n --dialog-border-color: #{$oc-gray-6};\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>');\\n --focus-highlight-color: #{$oc-blue-2};\\n --icon-fill-color: #{$oc-gray-9};\\n --icon-green-fill-color: #{$oc-green-9};\\n --default-bg-color: #{$oc-white};\\n --input-bg-color: #{$oc-white};\\n --input-border-color: #{$oc-gray-4};\\n --input-hover-bg-color: #{$oc-gray-1};\\n --input-label-color: #{$oc-gray-7};\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\n --keybinding-color: #{$oc-gray-5};\\n --link-color: #{$oc-blue-7};\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n --popup-bg-color: #{$oc-white};\\n --popup-secondary-bg-color: #{$oc-gray-1};\\n --popup-text-color: #{$oc-black};\\n --popup-text-inverted-color: #{$oc-white};\\n --sab: env(safe-area-inset-bottom);\\n --sal: env(safe-area-inset-left);\\n --sar: env(safe-area-inset-right);\\n --sat: env(safe-area-inset-top);\\n --select-highlight-color: #{$oc-blue-5};\\n --shadow-island: 0 0 0 1px rgba(0, 0, 0, 0.01), 1px 1px 5px rgb(0 0 0 / 12%);\\n\\n --space-factor: 0.25rem;\\n --text-primary-color: #{$oc-gray-8};\\n\\n --color-primary: #6965db;\\n --color-primary-darker: #5b57d1;\\n --color-primary-darkest: #4a47b1;\\n --color-primary-light: #e2e1fc;\\n\\n --border-radius-md: 0.375rem;\\n --border-radius-lg: 0.5rem;\\n\\n &.theme--dark {\\n background: $oc-black;\\n\\n &.theme--dark-background-none {\\n background: none;\\n }\\n }\\n\\n &.theme--dark {\\n --theme-filter: #{$theme-filter};\\n --button-destructive-bg-color: #5a0000;\\n --button-destructive-color: #{$oc-red-3};\\n --button-gray-1: #363636;\\n --button-gray-2: #272727;\\n --button-gray-3: #222;\\n --button-special-active-bg-color: #204624;\\n --dialog-border-color: #{$oc-gray-9};\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg>');\\n --focus-highlight-color: #{$oc-blue-6};\\n --icon-fill-color: #{$oc-gray-4};\\n --icon-green-fill-color: #{$oc-green-4};\\n --default-bg-color: #121212;\\n --input-bg-color: #121212;\\n --input-border-color: #2e2e2e;\\n --input-hover-bg-color: #181818;\\n --input-label-color: #{$oc-gray-2};\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\n --keybinding-color: #{$oc-gray-6};\\n --link-color: #{$oc-blue-4};\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n --popup-bg-color: #2c2c2c;\\n --popup-secondary-bg-color: #222;\\n --popup-text-color: #{$oc-gray-4};\\n --popup-text-inverted-color: #2c2c2c;\\n --select-highlight-color: #{$oc-blue-4};\\n --shadow-island: 1px 1px 5px #{transparentize($oc-black, 0.7)};\\n --text-primary-color: #{$oc-gray-4};\\n\\n --color-primary: #5650f0;\\n --color-primary-darker: #4b46d8;\\n --color-primary-darkest: #3e39be;\\n --color-primary-light: #3f3d64;\\n }\\n}\\n\",\"//\\n//\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\n// v 1.9.1\\n//\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\\n\\n// General\\n// ───────────────────────────────────\\n\\n$oc-white: #ffffff;\\n$oc-black: #000000;\\n\\n\\n// Gray\\n// ───────────────────────────────────\\n\\n$oc-gray-list: (\\n \\\"0\\\": #f8f9fa,\\n \\\"1\\\": #f1f3f5,\\n \\\"2\\\": #e9ecef,\\n \\\"3\\\": #dee2e6,\\n \\\"4\\\": #ced4da,\\n \\\"5\\\": #adb5bd,\\n \\\"6\\\": #868e96,\\n \\\"7\\\": #495057,\\n \\\"8\\\": #343a40,\\n \\\"9\\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\\"0\\\");\\n$oc-gray-1: map-get($oc-gray-list, \\\"1\\\");\\n$oc-gray-2: map-get($oc-gray-list, \\\"2\\\");\\n$oc-gray-3: map-get($oc-gray-list, \\\"3\\\");\\n$oc-gray-4: map-get($oc-gray-list, \\\"4\\\");\\n$oc-gray-5: map-get($oc-gray-list, \\\"5\\\");\\n$oc-gray-6: map-get($oc-gray-list, \\\"6\\\");\\n$oc-gray-7: map-get($oc-gray-list, \\\"7\\\");\\n$oc-gray-8: map-get($oc-gray-list, \\\"8\\\");\\n$oc-gray-9: map-get($oc-gray-list, \\\"9\\\");\\n\\n\\n// Red\\n// ───────────────────────────────────\\n\\n$oc-red-list: (\\n \\\"0\\\": #fff5f5,\\n \\\"1\\\": #ffe3e3,\\n \\\"2\\\": #ffc9c9,\\n \\\"3\\\": #ffa8a8,\\n \\\"4\\\": #ff8787,\\n \\\"5\\\": #ff6b6b,\\n \\\"6\\\": #fa5252,\\n \\\"7\\\": #f03e3e,\\n \\\"8\\\": #e03131,\\n \\\"9\\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\\"0\\\");\\n$oc-red-1: map-get($oc-red-list, \\\"1\\\");\\n$oc-red-2: map-get($oc-red-list, \\\"2\\\");\\n$oc-red-3: map-get($oc-red-list, \\\"3\\\");\\n$oc-red-4: map-get($oc-red-list, \\\"4\\\");\\n$oc-red-5: map-get($oc-red-list, \\\"5\\\");\\n$oc-red-6: map-get($oc-red-list, \\\"6\\\");\\n$oc-red-7: map-get($oc-red-list, \\\"7\\\");\\n$oc-red-8: map-get($oc-red-list, \\\"8\\\");\\n$oc-red-9: map-get($oc-red-list, \\\"9\\\");\\n\\n\\n// Pink\\n// ───────────────────────────────────\\n\\n$oc-pink-list: (\\n \\\"0\\\": #fff0f6,\\n \\\"1\\\": #ffdeeb,\\n \\\"2\\\": #fcc2d7,\\n \\\"3\\\": #faa2c1,\\n \\\"4\\\": #f783ac,\\n \\\"5\\\": #f06595,\\n \\\"6\\\": #e64980,\\n \\\"7\\\": #d6336c,\\n \\\"8\\\": #c2255c,\\n \\\"9\\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\\"0\\\");\\n$oc-pink-1: map-get($oc-pink-list, \\\"1\\\");\\n$oc-pink-2: map-get($oc-pink-list, \\\"2\\\");\\n$oc-pink-3: map-get($oc-pink-list, \\\"3\\\");\\n$oc-pink-4: map-get($oc-pink-list, \\\"4\\\");\\n$oc-pink-5: map-get($oc-pink-list, \\\"5\\\");\\n$oc-pink-6: map-get($oc-pink-list, \\\"6\\\");\\n$oc-pink-7: map-get($oc-pink-list, \\\"7\\\");\\n$oc-pink-8: map-get($oc-pink-list, \\\"8\\\");\\n$oc-pink-9: map-get($oc-pink-list, \\\"9\\\");\\n\\n\\n// Grape\\n// ───────────────────────────────────\\n\\n$oc-grape-list: (\\n \\\"0\\\": #f8f0fc,\\n \\\"1\\\": #f3d9fa,\\n \\\"2\\\": #eebefa,\\n \\\"3\\\": #e599f7,\\n \\\"4\\\": #da77f2,\\n \\\"5\\\": #cc5de8,\\n \\\"6\\\": #be4bdb,\\n \\\"7\\\": #ae3ec9,\\n \\\"8\\\": #9c36b5,\\n \\\"9\\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\\"0\\\");\\n$oc-grape-1: map-get($oc-grape-list, \\\"1\\\");\\n$oc-grape-2: map-get($oc-grape-list, \\\"2\\\");\\n$oc-grape-3: map-get($oc-grape-list, \\\"3\\\");\\n$oc-grape-4: map-get($oc-grape-list, \\\"4\\\");\\n$oc-grape-5: map-get($oc-grape-list, \\\"5\\\");\\n$oc-grape-6: map-get($oc-grape-list, \\\"6\\\");\\n$oc-grape-7: map-get($oc-grape-list, \\\"7\\\");\\n$oc-grape-8: map-get($oc-grape-list, \\\"8\\\");\\n$oc-grape-9: map-get($oc-grape-list, \\\"9\\\");\\n\\n\\n// Violet\\n// ───────────────────────────────────\\n\\n$oc-violet-list: (\\n \\\"0\\\": #f3f0ff,\\n \\\"1\\\": #e5dbff,\\n \\\"2\\\": #d0bfff,\\n \\\"3\\\": #b197fc,\\n \\\"4\\\": #9775fa,\\n \\\"5\\\": #845ef7,\\n \\\"6\\\": #7950f2,\\n \\\"7\\\": #7048e8,\\n \\\"8\\\": #6741d9,\\n \\\"9\\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\\"0\\\");\\n$oc-violet-1: map-get($oc-violet-list, \\\"1\\\");\\n$oc-violet-2: map-get($oc-violet-list, \\\"2\\\");\\n$oc-violet-3: map-get($oc-violet-list, \\\"3\\\");\\n$oc-violet-4: map-get($oc-violet-list, \\\"4\\\");\\n$oc-violet-5: map-get($oc-violet-list, \\\"5\\\");\\n$oc-violet-6: map-get($oc-violet-list, \\\"6\\\");\\n$oc-violet-7: map-get($oc-violet-list, \\\"7\\\");\\n$oc-violet-8: map-get($oc-violet-list, \\\"8\\\");\\n$oc-violet-9: map-get($oc-violet-list, \\\"9\\\");\\n\\n\\n// Indigo\\n// ───────────────────────────────────\\n\\n$oc-indigo-list: (\\n \\\"0\\\": #edf2ff,\\n \\\"1\\\": #dbe4ff,\\n \\\"2\\\": #bac8ff,\\n \\\"3\\\": #91a7ff,\\n \\\"4\\\": #748ffc,\\n \\\"5\\\": #5c7cfa,\\n \\\"6\\\": #4c6ef5,\\n \\\"7\\\": #4263eb,\\n \\\"8\\\": #3b5bdb,\\n \\\"9\\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\\"0\\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\\"1\\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\\"2\\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\\"3\\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\\"4\\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\\"5\\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\\"6\\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\\"7\\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\\"8\\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\\"9\\\");\\n\\n\\n// Blue\\n// ───────────────────────────────────\\n\\n$oc-blue-list: (\\n \\\"0\\\": #e7f5ff,\\n \\\"1\\\": #d0ebff,\\n \\\"2\\\": #a5d8ff,\\n \\\"3\\\": #74c0fc,\\n \\\"4\\\": #4dabf7,\\n \\\"5\\\": #339af0,\\n \\\"6\\\": #228be6,\\n \\\"7\\\": #1c7ed6,\\n \\\"8\\\": #1971c2,\\n \\\"9\\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\\"0\\\");\\n$oc-blue-1: map-get($oc-blue-list, \\\"1\\\");\\n$oc-blue-2: map-get($oc-blue-list, \\\"2\\\");\\n$oc-blue-3: map-get($oc-blue-list, \\\"3\\\");\\n$oc-blue-4: map-get($oc-blue-list, \\\"4\\\");\\n$oc-blue-5: map-get($oc-blue-list, \\\"5\\\");\\n$oc-blue-6: map-get($oc-blue-list, \\\"6\\\");\\n$oc-blue-7: map-get($oc-blue-list, \\\"7\\\");\\n$oc-blue-8: map-get($oc-blue-list, \\\"8\\\");\\n$oc-blue-9: map-get($oc-blue-list, \\\"9\\\");\\n\\n\\n// Cyan\\n// ───────────────────────────────────\\n\\n$oc-cyan-list: (\\n \\\"0\\\": #e3fafc,\\n \\\"1\\\": #c5f6fa,\\n \\\"2\\\": #99e9f2,\\n \\\"3\\\": #66d9e8,\\n \\\"4\\\": #3bc9db,\\n \\\"5\\\": #22b8cf,\\n \\\"6\\\": #15aabf,\\n \\\"7\\\": #1098ad,\\n \\\"8\\\": #0c8599,\\n \\\"9\\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\\"0\\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\\"1\\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\\"2\\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\\"3\\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\\"4\\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\\"5\\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\\"6\\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\\"7\\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\\"8\\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\\"9\\\");\\n\\n\\n// Teal\\n// ───────────────────────────────────\\n\\n$oc-teal-list: (\\n \\\"0\\\": #e6fcf5,\\n \\\"1\\\": #c3fae8,\\n \\\"2\\\": #96f2d7,\\n \\\"3\\\": #63e6be,\\n \\\"4\\\": #38d9a9,\\n \\\"5\\\": #20c997,\\n \\\"6\\\": #12b886,\\n \\\"7\\\": #0ca678,\\n \\\"8\\\": #099268,\\n \\\"9\\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\\"0\\\");\\n$oc-teal-1: map-get($oc-teal-list, \\\"1\\\");\\n$oc-teal-2: map-get($oc-teal-list, \\\"2\\\");\\n$oc-teal-3: map-get($oc-teal-list, \\\"3\\\");\\n$oc-teal-4: map-get($oc-teal-list, \\\"4\\\");\\n$oc-teal-5: map-get($oc-teal-list, \\\"5\\\");\\n$oc-teal-6: map-get($oc-teal-list, \\\"6\\\");\\n$oc-teal-7: map-get($oc-teal-list, \\\"7\\\");\\n$oc-teal-8: map-get($oc-teal-list, \\\"8\\\");\\n$oc-teal-9: map-get($oc-teal-list, \\\"9\\\");\\n\\n\\n// Green\\n// ───────────────────────────────────\\n\\n$oc-green-list: (\\n \\\"0\\\": #ebfbee,\\n \\\"1\\\": #d3f9d8,\\n \\\"2\\\": #b2f2bb,\\n \\\"3\\\": #8ce99a,\\n \\\"4\\\": #69db7c,\\n \\\"5\\\": #51cf66,\\n \\\"6\\\": #40c057,\\n \\\"7\\\": #37b24d,\\n \\\"8\\\": #2f9e44,\\n \\\"9\\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\\"0\\\");\\n$oc-green-1: map-get($oc-green-list, \\\"1\\\");\\n$oc-green-2: map-get($oc-green-list, \\\"2\\\");\\n$oc-green-3: map-get($oc-green-list, \\\"3\\\");\\n$oc-green-4: map-get($oc-green-list, \\\"4\\\");\\n$oc-green-5: map-get($oc-green-list, \\\"5\\\");\\n$oc-green-6: map-get($oc-green-list, \\\"6\\\");\\n$oc-green-7: map-get($oc-green-list, \\\"7\\\");\\n$oc-green-8: map-get($oc-green-list, \\\"8\\\");\\n$oc-green-9: map-get($oc-green-list, \\\"9\\\");\\n\\n\\n// Lime\\n// ───────────────────────────────────\\n\\n$oc-lime-list: (\\n \\\"0\\\": #f4fce3,\\n \\\"1\\\": #e9fac8,\\n \\\"2\\\": #d8f5a2,\\n \\\"3\\\": #c0eb75,\\n \\\"4\\\": #a9e34b,\\n \\\"5\\\": #94d82d,\\n \\\"6\\\": #82c91e,\\n \\\"7\\\": #74b816,\\n \\\"8\\\": #66a80f,\\n \\\"9\\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\\"0\\\");\\n$oc-lime-1: map-get($oc-lime-list, \\\"1\\\");\\n$oc-lime-2: map-get($oc-lime-list, \\\"2\\\");\\n$oc-lime-3: map-get($oc-lime-list, \\\"3\\\");\\n$oc-lime-4: map-get($oc-lime-list, \\\"4\\\");\\n$oc-lime-5: map-get($oc-lime-list, \\\"5\\\");\\n$oc-lime-6: map-get($oc-lime-list, \\\"6\\\");\\n$oc-lime-7: map-get($oc-lime-list, \\\"7\\\");\\n$oc-lime-8: map-get($oc-lime-list, \\\"8\\\");\\n$oc-lime-9: map-get($oc-lime-list, \\\"9\\\");\\n\\n\\n// Yellow\\n// ───────────────────────────────────\\n\\n$oc-yellow-list: (\\n \\\"0\\\": #fff9db,\\n \\\"1\\\": #fff3bf,\\n \\\"2\\\": #ffec99,\\n \\\"3\\\": #ffe066,\\n \\\"4\\\": #ffd43b,\\n \\\"5\\\": #fcc419,\\n \\\"6\\\": #fab005,\\n \\\"7\\\": #f59f00,\\n \\\"8\\\": #f08c00,\\n \\\"9\\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\\"0\\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\\"1\\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\\"2\\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\\"3\\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\\"4\\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\\"5\\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\\"6\\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\\"7\\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\\"8\\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\\"9\\\");\\n\\n\\n// Orange\\n// ───────────────────────────────────\\n\\n$oc-orange-list: (\\n \\\"0\\\": #fff4e6,\\n \\\"1\\\": #ffe8cc,\\n \\\"2\\\": #ffd8a8,\\n \\\"3\\\": #ffc078,\\n \\\"4\\\": #ffa94d,\\n \\\"5\\\": #ff922b,\\n \\\"6\\\": #fd7e14,\\n \\\"7\\\": #f76707,\\n \\\"8\\\": #e8590c,\\n \\\"9\\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\\"0\\\");\\n$oc-orange-1: map-get($oc-orange-list, \\\"1\\\");\\n$oc-orange-2: map-get($oc-orange-list, \\\"2\\\");\\n$oc-orange-3: map-get($oc-orange-list, \\\"3\\\");\\n$oc-orange-4: map-get($oc-orange-list, \\\"4\\\");\\n$oc-orange-5: map-get($oc-orange-list, \\\"5\\\");\\n$oc-orange-6: map-get($oc-orange-list, \\\"6\\\");\\n$oc-orange-7: map-get($oc-orange-list, \\\"7\\\");\\n$oc-orange-8: map-get($oc-orange-list, \\\"8\\\");\\n$oc-orange-9: map-get($oc-orange-list, \\\"9\\\");\\n\\n\\n// Color list\\n// ───────────────────────────────────\\n\\n$oc-color-spectrum: 9;\\n\\n$oc-color-list: (\\n $oc-gray-list: \\\"gray\\\",\\n $oc-red-list: \\\"red\\\",\\n $oc-pink-list: \\\"pink\\\",\\n $oc-grape-list: \\\"grape\\\",\\n $oc-violet-list: \\\"violet\\\",\\n $oc-indigo-list: \\\"indigo\\\",\\n $oc-blue-list: \\\"blue\\\",\\n $oc-cyan-list: \\\"cyan\\\",\\n $oc-teal-list: \\\"teal\\\",\\n $oc-green-list: \\\"green\\\",\\n $oc-lime-list: \\\"lime\\\",\\n $oc-yellow-list: \\\"yellow\\\",\\n $oc-orange-list: \\\"orange\\\"\\n);\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCw2QkFBNkIsR0FBRyxhQUFhLGdEQUFnRCw2QkFBNkIsR0FBRyxpQkFBaUIseUJBQXlCLDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyxpREFBaUQsZ0NBQWdDLDBCQUEwQixrREFBa0QsOEJBQThCLHdDQUF3QyxnQ0FBZ0MseUNBQXlDLHVDQUF1QyxxQ0FBcUMsc0NBQXNDLG9DQUFvQyxzQ0FBc0MsaUZBQWlGLDRCQUE0QixrQ0FBa0MsNkJBQTZCLG9DQUFvQyxxQ0FBcUMsbUNBQW1DLGlDQUFpQywrQkFBK0IsR0FBRywyQkFBMkIsd0JBQXdCLEdBQUcsdURBQXVELHFCQUFxQixHQUFHLDJCQUEyQixtREFBbUQsMkNBQTJDLHdDQUF3Qyw2QkFBNkIsNkJBQTZCLDBCQUEwQiw4Q0FBOEMsbUNBQW1DLHFFQUFxRSxxQ0FBcUMsK0JBQStCLHFDQUFxQyxnQ0FBZ0MsOEJBQThCLGtDQUFrQyxvQ0FBb0MsaUNBQWlDLDhDQUE4QyxnQ0FBZ0MsMEJBQTBCLCtDQUErQyw4QkFBOEIscUNB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QUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsVUFBVSxNQUFNLFFBQVEsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE9BQU8sVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsWUFBWSxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxVQUFVLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsTUFBTSxLQUFLLFVBQVUsTUFBTSxLQUFLLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxV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QUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw4UUFBOFEsZ0RBQWdELDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsZ1JBQWdSLGtEQUFrRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELHlGQUF5Rix1ZEFBdWQscUJBQXFCO0FBQ254K0M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3Mvc3R5bGVzLnNjc3M/MGQ1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz5cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGZpbGw9XFxcIiUyM2NlZDRkYVxcXCIgZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+XCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIjpleHBvcnQge1xcbiAgdGhlbWVGaWx0ZXI6IGludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKTtcXG4gIHJpZ2h0U2lkZWJhcldpZHRoOiAzMDJweDtcXG59XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IDMwMnB4O1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAtLXRoZW1lLWZpbHRlcjogbm9uZTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjZmZlM2UzO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtY29sb3I6ICNjOTJhMmE7XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICNlOWVjZWY7XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICNjZWQ0ZGE7XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICNhZGI1YmQ7XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI2ViZmJlZTtcXG4gIC0tZGlhbG9nLWJvcmRlci1jb2xvcjogIzg2OGU5NjtcXG4gIC0tZHJvcGRvd24taWNvbjogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjYTVkOGZmO1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICMyMTI1Mjk7XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogIzJiOGEzZTtcXG4gIC0tZGVmYXVsdC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0taW5wdXQtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLWlucHV0LWJvcmRlci1jb2xvcjogI2NlZDRkYTtcXG4gIC0taW5wdXQtaG92ZXItYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLWlucHV0LWxhYmVsLWNvbG9yOiAjNDk1MDU3O1xcbiAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nik7XFxuICAtLWtleWJpbmRpbmctY29sb3I6ICNhZGI1YmQ7XFxuICAtLWxpbmstY29sb3I6ICMxYzdlZDY7XFxuICAtLW92ZXJsYXktYmctY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44OCk7XFxuICAtLXBvcHVwLWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1wb3B1cC1zZWNvbmRhcnktYmctY29sb3I6ICNmMWYzZjU7XFxuICAtLXBvcHVwLXRleHQtY29sb3I6ICMwMDAwMDA7XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICNmZmZmZmY7XFxuICAtLXNhYjogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pO1xcbiAgLS1zYWw6IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7XFxuICAtLXNhcjogZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCk7XFxuICAtLXNhdDogZW52KHNhZmUtYXJlYS1pbnNldC10b3ApO1xcbiAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjMzM5YWYwO1xcbiAgLS1zaGFkb3ctaXNsYW5kOiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjAxKSwgMXB4IDFweCA1cHggcmdiKDAgMCAwIC8gMTIlKTtcXG4gIC0tc3BhY2UtZmFjdG9yOiAwLjI1cmVtO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICMzNDNhNDA7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM2OTY1ZGI7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNWI1N2QxO1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICM0YTQ3YjE7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICNlMmUxZmM7XFxuICAtLWJvcmRlci1yYWRpdXMtbWQ6IDAuMzc1cmVtO1xcbiAgLS1ib3JkZXItcmFkaXVzLWxnOiAwLjVyZW07XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIHtcXG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrLnRoZW1lLS1kYXJrLWJhY2tncm91bmQtbm9uZSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy50aGVtZS0tZGFyayB7XFxuICAtLXRoZW1lLWZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICM1YTAwMDA7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI2ZmYThhODtcXG4gIC0tYnV0dG9uLWdyYXktMTogIzM2MzYzNjtcXG4gIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gIC0tYnV0dG9uLWdyYXktMzogIzIyMjtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjMjA0NjI0O1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjMjEyNTI5O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICMyMjhiZTY7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2NlZDRkYTtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjNjlkYjdjO1xcbiAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogIzEyMTIxMjtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjMmUyZTJlO1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICNlOWVjZWY7XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgzMCwgMzAsIDMwLCAwLjk4KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogIzg2OGU5NjtcXG4gIC0tbGluay1jb2xvcjogIzRkYWJmNztcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogcmdiYSg1MiwgNTgsIDY0LCAwLjEyKTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICMyYzJjMmM7XFxuICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gIC0tcG9wdXAtdGV4dC1jb2xvcjogI2NlZDRkYTtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogIzJjMmMyYztcXG4gIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogIzRkYWJmNztcXG4gIC0tc2hhZG93LWlzbGFuZDogMXB4IDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICNjZWQ0ZGE7XFxuICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VyOiAjNGI0NmQ4O1xcbiAgLS1jb2xvci1wcmltYXJ5LWRhcmtlc3Q6ICMzZTM5YmU7XFxuICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxufVxcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXc6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgYSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBhOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG4uZXhjYWxpZHJhdyBjYW52YXMge1xcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7XFxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG59XFxuLmV4Y2FsaWRyYXdfX2NhbnZhcyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIGNhbnZhcyB7XFxuICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxufVxcbi5leGNhbGlkcmF3IC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbFJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMyxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGgzOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5pY29uU2VsZWN0TGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBpbnB1dFt0eXBlPXJhZGlvXSxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1idXR0b25dIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5pY29uUm93IHtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbiB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmZvY3VzIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb25fX2ljb24ge1xcbiAgd2lkdGg6IDI4cHg7XFxuICBoZWlnaHQ6IDI4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBmaWVsZHNldCB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5kaXZpZGVyIHtcXG4gIHdpZHRoOiAxcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgbWFyZ2luOiAxcHg7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4uZXhjYWxpZHJhdyBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgYm9yZGVyOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICBtYXJnaW46IDAuMTI1cmVtIDA7XFxuICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmZvY3VzLXZpc2libGUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMtdmlzaWJsZSB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246aG92ZXIsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IGJ1dHRvbjphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246ZGlzYWJsZWQsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6ZGlzYWJsZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZmZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTpob3ZlcixcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYWN0aXZlOmFjdGl2ZSxcXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdCBsYWJlbC5hY3RpdmU6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VzdCk7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuYnV0dG9uTGlzdC5idXR0b25MaXN0SWNvbiBsYWJlbCBzdmcge1xcbiAgd2lkdGg6IDM1cHg7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICBwYWRkaW5nOiAycHg7XFxuICBvcGFjaXR5OiAwLjY7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsLmFjdGl2ZSBzdmcge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b3AtYmFyIHtcXG4gIHotaW5kZXg6IHZhcigtLXpJbmRleC1sYXllclVJKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1ib3R0b20tYmFyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgcGFkZGluZy10b3A6IG1heCh2YXIoLS1iYXItcGFkZGluZyksIHZhcigtLXNhdCwwKSk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxuICB6LWluZGV4OiA0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgbWluLXdpZHRoOiAxMDAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1heC1oZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIgPiAuSXNsYW5kIC5wYW5lbENvbHVtbiB7XFxuICBwYWRkaW5nOiA4cHggOHB4IDAgOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXIgLmVyYXNlci5Ub29sSWNvbjpob3ZlciB7XFxuICAtLWljb24tZmlsbC1jb2xvcjogI2ZmZjtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI2ZmZjtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC10b29sYmFyIC5lcmFzZXIuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvb2xiYXItY29udGVudCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIHBhZGRpbmc6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tb2JpbGUtbWVudSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51IHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCB7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gbWF4LWNvbnRlbnQgYXV0bztcXG4gIGdyaWQtZ2FwOiA0cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbi5leGNhbGlkcmF3IC5sYXllci11aV9fd3JhcHBlcjpub3QoLmRpc2FibGUtcG9pbnRlckV2ZW50cykgLkFwcC1tZW51X3RvcCA+ICoge1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X3RvcCA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvIG1pbi1jb250ZW50O1xcbiAgZ3JpZC1nYXA6IDE1cHg7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbjpyb290W2Rpcj1sdHJdIC5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20ge1xcbiAgbGVmdDogMC4yNXJlbTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICByaWdodDogMC4yNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbS0tdHJhbnNpdGlvbi1sZWZ0IHNlY3Rpb24ge1xcbiAgd2lkdGg6IDE4NXB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHNlY3Rpb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSA+ICo6Zmlyc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpsYXN0LWNoaWxkIHtcXG4gIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9sZWZ0IHtcXG4gIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfcmlnaHQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9fbGVmdCB7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWlzbGFuZCk7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLnpJbmRleEJ1dHRvbiBzdmcge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvdHRvbTogMzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGZpbGw6ICM4NjhlOTY7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuaGVscC1pY29uIHN2ZyB7XFxuICB3aWR0aDogMS41cmVtO1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnJlc2V0LXpvb20tYnV0dG9uIHtcXG4gIHBhZGRpbmc6IDAuMmVtO1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG59XFxuLmV4Y2FsaWRyYXcgLmZpbmFsaXplLWJ1dHRvbiB7XFxuICBkaXNwbGF5OiBncmlkO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gIGdhcDogMC40ZW07XFxuICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgbWFyZ2luLWJvdHRvbTogYXV0bztcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMsXFxuLmV4Y2FsaWRyYXcgLmVyYXNlci1idXR0b25zIHtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgZ2FwOiAwLjRlbTtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMC42ZW07XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyBhc2lkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdy0tbW9iaWxlLmV4Y2FsaWRyYXcgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gIHotaW5kZXg6IC0xO1xcbn1cXG5cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAucnRsLW1pcnJvciB7XFxuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgaGVpZ2h0OiBhdXRvO1xcbiAgd2lkdGg6IGF1dG87XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC56ZW4tbW9kZS12aXNpYmlsaXR5Lnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxufVxcbi5leGNhbGlkcmF3IC5kaXNhYmxlLXBvaW50ZXJFdmVudHMge1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcuZXhjYWxpZHJhdy0tdmlldy1tb2RlIC5BcHAtbWVudSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gIHBhZGRpbmc6IDAuNzVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgaW5wdXRbdHlwZT10ZXh0XTpub3QoOmZvY3VzKTpob3ZlcixcXG4uZXhjYWxpZHJhdyB0ZXh0YXJlYTpub3QoLmV4Y2FsaWRyYXctd3lzaXd5Zyk6bm90KDpmb2N1cyk6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtaG92ZXItYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOmZvY3VzLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbkBtZWRpYSBwcmludCB7XFxuICAuZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIsXFxuLmV4Y2FsaWRyYXcgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4uZXhjYWxpZHJhdyAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA1cHg7XFxufVxcbi5leGNhbGlkcmF3IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLW1lc3NhZ2VDb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBwYWRkaW5nOiA0MHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTNlMztcXG4gIGJvcmRlcjogM3B4IHNvbGlkICNjOTJhMmE7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgbWFyZ2luOiAxNXB4IDA7XFxuICBtYXgtd2lkdGg6IDYwMHB4O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoLmFsaWduLWNlbnRlciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLmJpZ2dlciBidXR0b24ge1xcbiAgZm9udC1zaXplOiAxLjFlbTtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIsXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLnNtYWxsZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMC45ZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1kZXRhaWxzIHRleHRhcmVhIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWFyZ2luOiAxMHB4IDA7XFxuICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gIGZvbnQtc2l6ZTogMC44ZW07XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy92YXJpYWJsZXMubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vY3NzL3RoZW1lLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFpQ0E7RUFDRSwyQ0FBQTtFQUNBLHdCQUFBO0FDaENGOztBRDhCQTtFQUNFLDJDQUFBO0VBQ0Esd0JBQUE7QUMzQkY7O0FDTEE7RUFDRSxvQkFBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFBO0VBQ0Esd0JBQUE7RUFDQSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0Esd0RBQUE7RUFDQSxnQ0FBQTtFQUNBLDBCQUFBO0VBQ0EsZ0NBQUE7RUFDQSwyQkFBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSwrQkFBQTtFQUNBLDRCQUFBO0VBQ0EsNENBQUE7RUFDQSwyQkFB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QSxlQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7QUExQkY7QUE0QkU7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBRUEsYUFBQTtFQUNBLHlCRWhpQk87RUZpaUJQLHlCQUFBO0FBM0JKO0FBOEJFO0VBQ0UsY0FBQTtFQUNBLGdCQUFBO0FBNUJKO0FBOEJJO0VBQ0Usa0JBQUE7QUE1Qk47QUFnQ0U7O0VBRUUsZ0JBQUE7QUE5Qko7QUFpQ0U7O0VBRUUsZ0JBQUE7QUEvQko7QUFrQ0U7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQWhDSjtBQWtDSTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBQWhDTlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuQG1peGluIHRvb2xiYXJCdXR0b25Db2xvclN0YXRlcyB7XFxuICAuVG9vbEljb25fdHlwZV9yYWRpbyxcXG4gIC5Ub29sSWNvbl90eXBlX2NoZWNrYm94IHtcXG4gICAgJiArIC5Ub29sSWNvbl9faWNvbjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xcbiAgICB9XFxuICAgICY6Y2hlY2tlZCArIC5Ub29sSWNvbl9faWNvbiB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuICAgICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgICAtLWtleWJpbmRpbmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gICAgfVxcbiAgICAmOmNoZWNrZWQgKyAuVG9vbEljb25fX2ljb246YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5Ub29sSWNvbl9fa2V5YmluZGluZyB7XFxuICAgIGJvdHRvbTogNHB4O1xcbiAgICByaWdodDogNHB4O1xcbiAgfVxcbn1cXG5cXG4kdGhlbWUtZmlsdGVyOiBcXFwiaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpXFxcIjtcXG4kcmlnaHQtc2lkZWJhci13aWR0aDogXFxcIjMwMnB4XFxcIjtcXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiB1bnF1b3RlKCR0aGVtZS1maWx0ZXIpO1xcbiAgcmlnaHRTaWRlYmFyV2lkdGg6IHVucXVvdGUoJHJpZ2h0LXNpZGViYXItd2lkdGgpO1xcbn1cXG5cIixcIkBpbXBvcnQgXFxcIi4vdmFyaWFibGVzLm1vZHVsZVxcXCI7XFxuQGltcG9ydCBcXFwiLi90aGVtZVxcXCI7XFxuXFxuOnJvb3Qge1xcbiAgLS16SW5kZXgtY2FudmFzOiAxO1xcbiAgLS16SW5kZXgtd3lzaXd5ZzogMjtcXG4gIC0tekluZGV4LWxheWVyVUk6IDM7XFxufVxcblxcbi5leGNhbGlkcmF3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB0b3A6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG5cXG4gICY6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgLy8gc2VydmVzIDIgcHVycG9zZXM6XFxuICAvLyAxLiBwcmV2ZW50IHNlbGVjdGluZyB0ZXh0IG91dHNpZGUgdGhlIGNvbXBvbmVudCB3aGVuIGRvdWJsZS1jbGlja2luZyBvclxcbiAgLy8gICAgZHJhZ2dpbmcgaW5zaWRlIGl0IChlLmcuIG9uIGNhbnZhcylcXG4gIC8vIDIuIHByZXZlbnQgc2VsZWN0aW5nIFVJLCBib3RoIGZyb20gdGhlIGluc2lkZSwgYW5kIGZyb20gb3V0c2lkZSB0aGVcXG4gIC8vICAgIGNvbXBvbmVudCAoZS5nLiBpZiB5b3Ugc2VsZWN0IHRleHQgaW4gYSBzaWRlYmFyKVxcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuXFxuICBhIHtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0tbGluay1jb2xvcik7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbiAgICB9XFxuICB9XFxuXFxuICBjYW52YXMge1xcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XFxuXFxuICAgIC8vIGZvbGxvd2luZyBwcm9wcyBpbXByb3ZlIGJsdXJyaW5lc3MgYXQgY2VydGFpbiBkZXZpY2VQaXhlbFJhdGlvcy5cXG4gICAgLy8gQUZBSUsgaXQgZG9lc24ndCBhZmZlY3QgZXhwb3J0IChpbiBmYWN0LCBleHBvcnQgc2VlbXMgc2hhcnAgZWl0aGVyIHdheSkuXFxuXFxuICAgIGltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyAvLyBjaHJvbWl1bVxcbiAgICAvLyBOT1RFOiBtdXN0IGJlIGRlY2xhcmVkICphZnRlciogdGhlIGFib3ZlXFxuICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsgLy8gRkZcXG5cXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWNhbnZhcyk7XFxuXFxuICAgIC8vIFJlbW92ZSB0aGUgbWFpbiBjYW52YXMgZnJvbSBkb2N1bWVudCBmbG93IHRvIGF2b2lkIHJlc2l6ZU9ic2VydmVyXFxuICAgIC8vIGZlZWRiYWNrIGxvb3AgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L3B1bGwvMzM3OSlcXG4gIH1cXG5cXG4gICZfX2NhbnZhcyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIH1cXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBpbnNwaXJlZCBieVxcbiAgICAvLyBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb2xvci9kYXJrLXRoZW1lLmh0bWwjcHJvcGVydGllcywgd2hpY2hcXG4gICAgLy8gcmVjb21tZW5kcyBzdXJmYWNlIGNvbG9yIG9mICMxMjEyMTIsIDkzJSB5aWVsZHMgIzExMTExMSBmb3IgI0ZGRlxcblxcbiAgICBjYW52YXMge1xcbiAgICAgIGZpbHRlcjogdmFyKC0tdGhlbWUtZmlsdGVyKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLkZpeGVkU2lkZUNvbnRhaW5lciB7XFxuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zYXQsIDApO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgfVxcblxcbiAgLnBhbmVsUm93IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgfVxcblxcbiAgLnBhbmVsQ29sdW1uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXG4gICAgaDMsXFxuICAgIGxlZ2VuZCxcXG4gICAgLmNvbnRyb2wtbGFiZWwge1xcbiAgICAgIG1hcmdpbi10b3A6IDAuMzMzcmVtO1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5LWNvbG9yKTtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAuY29udHJvbC1sYWJlbCBpbnB1dCB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgIH1cXG5cXG4gICAgaDM6Zmlyc3QtY2hpbGQsXFxuICAgIGxlZ2VuZDpmaXJzdC1jaGlsZCxcXG4gICAgLmNvbnRyb2wtbGFiZWw6Zmlyc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIH1cXG5cXG4gICAgbGVnZW5kIHtcXG4gICAgICBwYWRkaW5nOiAwO1xcbiAgICB9XFxuXFxuICAgIC5pY29uU2VsZWN0TGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgfVxcblxcbiAgICAuYnV0dG9uTGlzdCB7XFxuICAgICAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgICAgIGxhYmVsIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICB9XFxuXFxuICAgICAgaW5wdXRbdHlwZT1cXFwicmFkaW9cXFwiXSxcXG4gICAgICBpbnB1dFt0eXBlPVxcXCJidXR0b25cXFwiXSB7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgfVxcblxcbiAgICAgIC5pY29uUm93IHtcXG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uIHtcXG4gICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuXFxuICAgICAgICAmOmZvY3VzIHtcXG4gICAgICAgICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6ZGlzYWJsZWQge1xcbiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAuVG9vbEljb25fX2ljb24ge1xcbiAgICAgICAgd2lkdGg6IDI4cHg7XFxuICAgICAgICBoZWlnaHQ6IDI4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGZpZWxkc2V0IHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgbWFyZ2luLXRvcDogMC4zMzNyZW07XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5kaXZpZGVyIHtcXG4gICAgd2lkdGg6IDFweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9jLWdyYXktMjtcXG4gICAgbWFyZ2luOiAxcHg7XFxuICB9XFxuXFxuICAuYnV0dG9uTGlzdCBsYWJlbDpmb2N1cy13aXRoaW4sXFxuICBpbnB1dDpmb2N1cy12aXNpYmxlIHtcXG4gICAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgfVxcblxcbiAgYnV0dG9uLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMSk7XFxuICAgIGJvcmRlcjogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XFxuICAgIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gICAgcGFkZGluZzogMC4yNXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG4gICAgfVxcblxcbiAgICAmOmRpc2FibGVkIHtcXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYWN0aXZlLFxcbiAgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XFxuXFxuICAgIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy13aGl0ZX07XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24ge1xcbiAgICBsYWJlbCB7XFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBzdmcge1xcbiAgICAgICAgd2lkdGg6IDM1cHg7XFxuICAgICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgICBwYWRkaW5nOiAycHg7XFxuICAgICAgICBvcGFjaXR5OiAwLjY7XFxuICAgICAgfVxcbiAgICAgICYuYWN0aXZlIHN2ZyB7XFxuICAgICAgICBvcGFjaXR5OiAxO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLkFwcC10b3AtYmFyIHtcXG4gICAgei1pbmRleDogdmFyKC0tekluZGV4LWxheWVyVUkpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgfVxcblxcbiAgLkFwcC1ib3R0b20tYmFyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIC0tYmFyLXBhZGRpbmc6IGNhbGMoNCAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgICBwYWRkaW5nLXRvcDogI3tcXFwibWF4KHZhcigtLWJhci1wYWRkaW5nKSwgdmFyKC0tc2F0LDApKVxcXCJ9O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zYWwsIDApO1xcbiAgICB6LWluZGV4OiA0O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICA+IC5Jc2xhbmQge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XFxuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcXG5cXG4gICAgICAucGFuZWxDb2x1bW4ge1xcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCAwIDhweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcblxcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcbiAgICAuZXJhc2VyIHtcXG4gICAgICAmLlRvb2xJY29uOmhvdmVyIHtcXG4gICAgICAgIC0taWNvbi1maWxsLWNvbG9yOiAjZmZmO1xcbiAgICAgICAgLS1rZXliaW5kaW5nLWNvbG9yOiAjZmZmO1xcbiAgICAgIH1cXG4gICAgICAmLmFjdGl2ZSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICB9XFxuXFxuICAuQXBwLW1vYmlsZS1tZW51IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgICBncmlkLWdhcDogNHB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICAgIGdyaWQtZ2FwOiAxNXB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcblxcbiAgICA6cm9vdFtkaXI9XFxcImx0clxcXCJdICYge1xcbiAgICAgIGxlZnQ6IDAuMjVyZW07XFxuICAgIH1cXG5cXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICByaWdodDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICAmLS10cmFuc2l0aW9uLWxlZnQge1xcbiAgICAgIHNlY3Rpb24ge1xcbiAgICAgICAgd2lkdGg6IDE4NXB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBzZWN0aW9uIHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2xlZnQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciBhdXRvIDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3JpZ2h0IHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9fbGVmdCB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgfVxcblxcbiAgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICAgIGhlaWdodDogMS41cmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMC41cmVtO1xcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDEuNXJlbTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTEpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRyb3Bkb3duLWljb24pO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG4gICAgfVxcblxcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDAuNjVlbSBhdXRvLCAxMDAlO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC56SW5kZXhCdXR0b24ge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICAgIHBhZGRpbmc6IDVweDtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiAxOHB4O1xcbiAgICAgIGhlaWdodDogMThweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgICBjb2xvcjogdmFyKC0tcG9wdXAtdGV4dC1jb2xvcik7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBib3R0b206IDMwcHg7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgfVxcblxcbiAgLmhlbHAtaWNvbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgZmlsbDogJG9jLWdyYXktNjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0taWNvbi1maWxsLWNvbG9yKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMS41cmVtO1xcbiAgICAgIGhlaWdodDogMS41cmVtO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5yZXNldC16b29tLWJ1dHRvbiB7XFxuICAgIHBhZGRpbmc6IDAuMmVtO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS11aS1mb250KTtcXG4gIH1cXG5cXG4gIC5maW5hbGl6ZS1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBnYXA6IDAuNGVtO1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG4gIH1cXG5cXG4gIC51bmRvLXJlZG8tYnV0dG9ucyxcXG4gIC5lcmFzZXItYnV0dG9ucyB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XFxuICAgIGdhcDogMC40ZW07XFxuICAgIG1hcmdpbi10b3A6IGF1dG87XFxuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XFxuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNmVtO1xcbiAgfVxcblxcbiAgQGluY2x1ZGUgaXNNb2JpbGUge1xcbiAgICBhc2lkZSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbiAgICAuc2Nyb2xsLWJhY2stdG8tY29udGVudCB7XFxuICAgICAgYm90dG9tOiBjYWxjKDgwcHggKyB2YXIoLS1zYWIsIDApKTtcXG4gICAgICB6LWluZGV4OiAtMTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnJ0bC1taXJyb3Ige1xcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnplbi1tb2RlLXZpc2liaWxpdHkge1xcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7XFxuXFxuICAgICYuemVuLW1vZGUtdmlzaWJpbGl0eS0taGlkZGVuIHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICBoZWlnaHQ6IDA7XFxuICAgICAgd2lkdGg6IDA7XFxuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZGlzYWJsZS1wb2ludGVyRXZlbnRzIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG4gIH1cXG5cXG4gICYuZXhjYWxpZHJhdy0tdmlldy1tb2RlIHtcXG4gICAgLkFwcC1tZW51IHtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgfVxcbiAgfVxcblxcbiAgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcbiAgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpIHtcXG4gICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTtcXG4gICAgcGFkZGluZzogMC43NXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtYmctY29sb3IpO1xcblxcbiAgICAmOm5vdCg6Zm9jdXMpIHtcXG4gICAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWhvdmVyLWJnLWNvbG9yKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIHByaW50IHtcXG4gICAgLkFwcC1ib3R0b20tYmFyLFxcbiAgICAuRml4ZWRTaWRlQ29udGFpbmVyLFxcbiAgICAubGF5ZXItdWlfX3dyYXBwZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIHVzZSBjdXN0b20sIG1pbmltYWxpc3RpYyBzY3JvbGxiYXJcXG4gIC8vIChkb2Vzbid0IHdvcmsgaW4gRmlyZWZveClcXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgICB3aWR0aDogNXB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbiAgfVxcbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIH1cXG59XFxuXFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcge1xcbiAgbWluLWhlaWdodDogMTAwdmg7XFxuICBwYWRkaW5nOiAyMHB4IDA7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB1c2VyLXNlbGVjdDogdGV4dDtcXG5cXG4gIC5FcnJvclNwbGFzaC1tZXNzYWdlQ29udGFpbmVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuXFxuICAgIHBhZGRpbmc6IDQwcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvYy1yZWQtMTtcXG4gICAgYm9yZGVyOiAzcHggc29saWQgJG9jLXJlZC05O1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLXBhcmFncmFwaCB7XFxuICAgIG1hcmdpbjogMTVweCAwO1xcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xcblxcbiAgICAmLmFsaWduLWNlbnRlciB7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYmlnZ2VyLFxcbiAgLmJpZ2dlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDEuMWVtO1xcbiAgfVxcblxcbiAgLnNtYWxsZXIsXFxuICAuc21hbGxlciBidXR0b24ge1xcbiAgICBmb250LXNpemU6IDAuOWVtO1xcbiAgfVxcblxcbiAgLkVycm9yU3BsYXNoLWRldGFpbHMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG5cXG4gICAgdGV4dGFyZWEge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1hcmdpbjogMTBweCAwO1xcbiAgICAgIGZvbnQtZmFtaWx5OiBcXFwiQ2FzY2FkaWFcXFwiO1xcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuQGltcG9ydCBcXFwiLi92YXJpYWJsZXMubW9kdWxlLnNjc3NcXFwiO1xcblxcbi5leGNhbGlkcmF3IHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBub25lO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICN7JG9jLXJlZC0xfTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjeyRvYy1yZWQtOX07XFxuICAtLWJ1dHRvbi1ncmF5LTE6ICN7JG9jLWdyYXktMn07XFxuICAtLWJ1dHRvbi1ncmF5LTI6ICN7JG9jLWdyYXktNH07XFxuICAtLWJ1dHRvbi1ncmF5LTM6ICN7JG9jLWdyYXktNX07XFxuICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogI3skb2MtZ3JlZW4tMH07XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICN7JG9jLWdyYXktNn07XFxuICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz4nKTtcXG4gIC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yOiAjeyRvYy1ibHVlLTJ9O1xcbiAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktOX07XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogI3skb2MtZ3JlZW4tOX07XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI3skb2MtZ3JheS0xfTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICN7JG9jLWdyYXktN307XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS01fTtcXG4gIC0tbGluay1jb2xvcjogI3skb2MtYmx1ZS03fTtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2Mtd2hpdGUsIDAuMTIpfTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtNX07XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDEpLCAxcHggMXB4IDVweCByZ2IoMCAwIDAgLyAxMiUpO1xcblxcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS04fTtcXG5cXG4gIC0tY29sb3ItcHJpbWFyeTogIzY5NjVkYjtcXG4gIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM1YjU3ZDE7XFxuICAtLWNvbG9yLXByaW1hcnktZGFya2VzdDogIzRhNDdiMTtcXG4gIC0tY29sb3ItcHJpbWFyeS1saWdodDogI2UyZTFmYztcXG5cXG4gIC0tYm9yZGVyLXJhZGl1cy1tZDogMC4zNzVyZW07XFxuICAtLWJvcmRlci1yYWRpdXMtbGc6IDAuNXJlbTtcXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICBiYWNrZ3JvdW5kOiAkb2MtYmxhY2s7XFxuXFxuICAgICYudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLS10aGVtZS1maWx0ZXI6ICN7JHRoZW1lLWZpbHRlcn07XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTN9O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAgIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gICAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gICAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTl9O1xcbiAgICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS02fTtcXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi00fTtcXG4gICAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gICAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gICAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS0yfTtcXG4gICAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gICAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLW92ZXJsYXktYmctY29sb3I6ICN7dHJhbnNwYXJlbnRpemUoJG9jLWdyYXktOCwgMC44OCl9O1xcbiAgICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gICAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS00fTtcXG4gICAgLS1zaGFkb3ctaXNsYW5kOiAxcHggMXB4IDVweCAje3RyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC43KX07XFxuICAgIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcblxcbiAgICAtLWNvbG9yLXByaW1hcnk6ICM1NjUwZjA7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXI6ICM0YjQ2ZDg7XFxuICAgIC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0OiAjM2UzOWJlO1xcbiAgICAtLWNvbG9yLXByaW1hcnktbGlnaHQ6ICMzZjNkNjQ7XFxuICB9XFxufVxcblwiLFwiLy9cXG4vL1xcbi8vICDwnZeWIPCdl6Ig8J2XnyDwnZeiIPCdl6VcXG4vLyAgdiAxLjkuMVxcbi8vXFxuLy8gIOKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgVxcblxcblxcbi8vICBHZW5lcmFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy13aGl0ZTogICAgICAgICAjZmZmZmZmO1xcbiRvYy1ibGFjazogICAgICAgICAjMDAwMDAwO1xcblxcblxcbi8vICBHcmF5XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmF5LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjlmYSxcXG4gIFxcXCIxXFxcIjogI2YxZjNmNSxcXG4gIFxcXCIyXFxcIjogI2U5ZWNlZixcXG4gIFxcXCIzXFxcIjogI2RlZTJlNixcXG4gIFxcXCI0XFxcIjogI2NlZDRkYSxcXG4gIFxcXCI1XFxcIjogI2FkYjViZCxcXG4gIFxcXCI2XFxcIjogIzg2OGU5NixcXG4gIFxcXCI3XFxcIjogIzQ5NTA1NyxcXG4gIFxcXCI4XFxcIjogIzM0M2E0MCxcXG4gIFxcXCI5XFxcIjogIzIxMjUyOVxcbik7XFxuXFxuJG9jLWdyYXktMDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmF5LTE6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JheS0yOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXktMzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmF5LTQ6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JheS01OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXktNjogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmF5LTc6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JheS04OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXktOTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBSZWRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXJlZC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY1ZjUsXFxuICBcXFwiMVxcXCI6ICNmZmUzZTMsXFxuICBcXFwiMlxcXCI6ICNmZmM5YzksXFxuICBcXFwiM1xcXCI6ICNmZmE4YTgsXFxuICBcXFwiNFxcXCI6ICNmZjg3ODcsXFxuICBcXFwiNVxcXCI6ICNmZjZiNmIsXFxuICBcXFwiNlxcXCI6ICNmYTUyNTIsXFxuICBcXFwiN1xcXCI6ICNmMDNlM2UsXFxuICBcXFwiOFxcXCI6ICNlMDMxMzEsXFxuICBcXFwiOVxcXCI6ICNjOTJhMmFcXG4pO1xcblxcbiRvYy1yZWQtMDogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXJlZC0xOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtcmVkLTI6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1yZWQtMzogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXJlZC00OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtcmVkLTU6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1yZWQtNjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXJlZC03OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtcmVkLTg6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1yZWQtOTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFBpbmtcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXBpbmstbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmMGY2LFxcbiAgXFxcIjFcXFwiOiAjZmZkZWViLFxcbiAgXFxcIjJcXFwiOiAjZmNjMmQ3LFxcbiAgXFxcIjNcXFwiOiAjZmFhMmMxLFxcbiAgXFxcIjRcXFwiOiAjZjc4M2FjLFxcbiAgXFxcIjVcXFwiOiAjZjA2NTk1LFxcbiAgXFxcIjZcXFwiOiAjZTY0OTgwLFxcbiAgXFxcIjdcXFwiOiAjZDYzMzZjLFxcbiAgXFxcIjhcXFwiOiAjYzIyNTVjLFxcbiAgXFxcIjlcXFwiOiAjYTYxZTRkXFxuKTtcXG5cXG4kb2MtcGluay0wOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXBpbmstMTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1waW5rLTI6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtcGluay0zOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXBpbmstNDogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1waW5rLTU6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtcGluay02OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXBpbmstNzogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1waW5rLTg6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtcGluay05OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEdyYXBlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ncmFwZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmOGYwZmMsXFxuICBcXFwiMVxcXCI6ICNmM2Q5ZmEsXFxuICBcXFwiMlxcXCI6ICNlZWJlZmEsXFxuICBcXFwiM1xcXCI6ICNlNTk5ZjcsXFxuICBcXFwiNFxcXCI6ICNkYTc3ZjIsXFxuICBcXFwiNVxcXCI6ICNjYzVkZTgsXFxuICBcXFwiNlxcXCI6ICNiZTRiZGIsXFxuICBcXFwiN1xcXCI6ICNhZTNlYzksXFxuICBcXFwiOFxcXCI6ICM5YzM2YjUsXFxuICBcXFwiOVxcXCI6ICM4NjJlOWNcXG4pO1xcblxcbiRvYy1ncmFwZS0wOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ncmFwZS0xOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmFwZS0yOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ncmFwZS0zOiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ncmFwZS00OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmFwZS01OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ncmFwZS02OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ncmFwZS03OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmFwZS04OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ncmFwZS05OiBtYXAtZ2V0KCRvYy1ncmFwZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBWaW9sZXRcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXZpb2xldC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmM2YwZmYsXFxuICBcXFwiMVxcXCI6ICNlNWRiZmYsXFxuICBcXFwiMlxcXCI6ICNkMGJmZmYsXFxuICBcXFwiM1xcXCI6ICNiMTk3ZmMsXFxuICBcXFwiNFxcXCI6ICM5Nzc1ZmEsXFxuICBcXFwiNVxcXCI6ICM4NDVlZjcsXFxuICBcXFwiNlxcXCI6ICM3OTUwZjIsXFxuICBcXFwiN1xcXCI6ICM3MDQ4ZTgsXFxuICBcXFwiOFxcXCI6ICM2NzQxZDksXFxuICBcXFwiOVxcXCI6ICM1ZjNkYzRcXG4pO1xcblxcbiRvYy12aW9sZXQtMDogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLXZpb2xldC0xOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdmlvbGV0LTI6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy12aW9sZXQtMzogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLXZpb2xldC00OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdmlvbGV0LTU6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy12aW9sZXQtNjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLXZpb2xldC03OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdmlvbGV0LTg6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy12aW9sZXQtOTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIEluZGlnb1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtaW5kaWdvLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2VkZjJmZixcXG4gIFxcXCIxXFxcIjogI2RiZTRmZixcXG4gIFxcXCIyXFxcIjogI2JhYzhmZixcXG4gIFxcXCIzXFxcIjogIzkxYTdmZixcXG4gIFxcXCI0XFxcIjogIzc0OGZmYyxcXG4gIFxcXCI1XFxcIjogIzVjN2NmYSxcXG4gIFxcXCI2XFxcIjogIzRjNmVmNSxcXG4gIFxcXCI3XFxcIjogIzQyNjNlYixcXG4gIFxcXCI4XFxcIjogIzNiNWJkYixcXG4gIFxcXCI5XFxcIjogIzM2NGZjN1xcbik7XFxuXFxuJG9jLWluZGlnby0wOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtaW5kaWdvLTE6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1pbmRpZ28tMjogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWluZGlnby0zOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtaW5kaWdvLTQ6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1pbmRpZ28tNTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWluZGlnby02OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtaW5kaWdvLTc6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1pbmRpZ28tODogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWluZGlnby05OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQmx1ZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtYmx1ZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlN2Y1ZmYsXFxuICBcXFwiMVxcXCI6ICNkMGViZmYsXFxuICBcXFwiMlxcXCI6ICNhNWQ4ZmYsXFxuICBcXFwiM1xcXCI6ICM3NGMwZmMsXFxuICBcXFwiNFxcXCI6ICM0ZGFiZjcsXFxuICBcXFwiNVxcXCI6ICMzMzlhZjAsXFxuICBcXFwiNlxcXCI6ICMyMjhiZTYsXFxuICBcXFwiN1xcXCI6ICMxYzdlZDYsXFxuICBcXFwiOFxcXCI6ICMxOTcxYzIsXFxuICBcXFwiOVxcXCI6ICMxODY0YWJcXG4pO1xcblxcbiRvYy1ibHVlLTA6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtYmx1ZS0xOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWJsdWUtMjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1ibHVlLTM6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtYmx1ZS00OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWJsdWUtNTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1ibHVlLTY6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtYmx1ZS03OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWJsdWUtODogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1ibHVlLTk6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgQ3lhblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtY3lhbi1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlM2ZhZmMsXFxuICBcXFwiMVxcXCI6ICNjNWY2ZmEsXFxuICBcXFwiMlxcXCI6ICM5OWU5ZjIsXFxuICBcXFwiM1xcXCI6ICM2NmQ5ZTgsXFxuICBcXFwiNFxcXCI6ICMzYmM5ZGIsXFxuICBcXFwiNVxcXCI6ICMyMmI4Y2YsXFxuICBcXFwiNlxcXCI6ICMxNWFhYmYsXFxuICBcXFwiN1xcXCI6ICMxMDk4YWQsXFxuICBcXFwiOFxcXCI6ICMwYzg1OTksXFxuICBcXFwiOVxcXCI6ICMwYjcyODVcXG4pO1xcblxcbiRvYy1jeWFuLTA6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtY3lhbi0xOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWN5YW4tMjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1jeWFuLTM6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtY3lhbi00OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWN5YW4tNTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1jeWFuLTY6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtY3lhbi03OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWN5YW4tODogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1jeWFuLTk6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgVGVhbFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdGVhbC1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNlNmZjZjUsXFxuICBcXFwiMVxcXCI6ICNjM2ZhZTgsXFxuICBcXFwiMlxcXCI6ICM5NmYyZDcsXFxuICBcXFwiM1xcXCI6ICM2M2U2YmUsXFxuICBcXFwiNFxcXCI6ICMzOGQ5YTksXFxuICBcXFwiNVxcXCI6ICMyMGM5OTcsXFxuICBcXFwiNlxcXCI6ICMxMmI4ODYsXFxuICBcXFwiN1xcXCI6ICMwY2E2NzgsXFxuICBcXFwiOFxcXCI6ICMwOTkyNjgsXFxuICBcXFwiOVxcXCI6ICMwODdmNWJcXG4pO1xcblxcbiRvYy10ZWFsLTA6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdGVhbC0xOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXRlYWwtMjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy10ZWFsLTM6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdGVhbC00OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXRlYWwtNTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy10ZWFsLTY6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdGVhbC03OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXRlYWwtODogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy10ZWFsLTk6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JlZW5cXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyZWVuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ViZmJlZSxcXG4gIFxcXCIxXFxcIjogI2QzZjlkOCxcXG4gIFxcXCIyXFxcIjogI2IyZjJiYixcXG4gIFxcXCIzXFxcIjogIzhjZTk5YSxcXG4gIFxcXCI0XFxcIjogIzY5ZGI3YyxcXG4gIFxcXCI1XFxcIjogIzUxY2Y2NixcXG4gIFxcXCI2XFxcIjogIzQwYzA1NyxcXG4gIFxcXCI3XFxcIjogIzM3YjI0ZCxcXG4gIFxcXCI4XFxcIjogIzJmOWU0NCxcXG4gIFxcXCI5XFxcIjogIzJiOGEzZVxcbik7XFxuXFxuJG9jLWdyZWVuLTA6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyZWVuLTE6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyZWVuLTI6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyZWVuLTM6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyZWVuLTQ6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyZWVuLTU6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyZWVuLTY6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyZWVuLTc6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyZWVuLTg6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyZWVuLTk6IG1hcC1nZXQoJG9jLWdyZWVuLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIExpbWVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWxpbWUtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjRmY2UzLFxcbiAgXFxcIjFcXFwiOiAjZTlmYWM4LFxcbiAgXFxcIjJcXFwiOiAjZDhmNWEyLFxcbiAgXFxcIjNcXFwiOiAjYzBlYjc1LFxcbiAgXFxcIjRcXFwiOiAjYTllMzRiLFxcbiAgXFxcIjVcXFwiOiAjOTRkODJkLFxcbiAgXFxcIjZcXFwiOiAjODJjOTFlLFxcbiAgXFxcIjdcXFwiOiAjNzRiODE2LFxcbiAgXFxcIjhcXFwiOiAjNjZhODBmLFxcbiAgXFxcIjlcXFwiOiAjNWM5NDBkXFxuKTtcXG5cXG4kb2MtbGltZS0wOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWxpbWUtMTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1saW1lLTI6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtbGltZS0zOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWxpbWUtNDogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1saW1lLTU6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtbGltZS02OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWxpbWUtNzogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1saW1lLTg6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtbGltZS05OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFllbGxvd1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MteWVsbG93LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjlkYixcXG4gIFxcXCIxXFxcIjogI2ZmZjNiZixcXG4gIFxcXCIyXFxcIjogI2ZmZWM5OSxcXG4gIFxcXCIzXFxcIjogI2ZmZTA2NixcXG4gIFxcXCI0XFxcIjogI2ZmZDQzYixcXG4gIFxcXCI1XFxcIjogI2ZjYzQxOSxcXG4gIFxcXCI2XFxcIjogI2ZhYjAwNSxcXG4gIFxcXCI3XFxcIjogI2Y1OWYwMCxcXG4gIFxcXCI4XFxcIjogI2YwOGMwMCxcXG4gIFxcXCI5XFxcIjogI2U2NzcwMFxcbik7XFxuXFxuJG9jLXllbGxvdy0wOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MteWVsbG93LTE6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy15ZWxsb3ctMjogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXllbGxvdy0zOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MteWVsbG93LTQ6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy15ZWxsb3ctNTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXllbGxvdy02OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MteWVsbG93LTc6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy15ZWxsb3ctODogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXllbGxvdy05OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgT3JhbmdlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1vcmFuZ2UtbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmNGU2LFxcbiAgXFxcIjFcXFwiOiAjZmZlOGNjLFxcbiAgXFxcIjJcXFwiOiAjZmZkOGE4LFxcbiAgXFxcIjNcXFwiOiAjZmZjMDc4LFxcbiAgXFxcIjRcXFwiOiAjZmZhOTRkLFxcbiAgXFxcIjVcXFwiOiAjZmY5MjJiLFxcbiAgXFxcIjZcXFwiOiAjZmQ3ZTE0LFxcbiAgXFxcIjdcXFwiOiAjZjc2NzA3LFxcbiAgXFxcIjhcXFwiOiAjZTg1OTBjLFxcbiAgXFxcIjlcXFwiOiAjZDk0ODBmXFxuKTtcXG5cXG4kb2Mtb3JhbmdlLTA6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1vcmFuZ2UtMTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLW9yYW5nZS0yOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2Mtb3JhbmdlLTM6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1vcmFuZ2UtNDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLW9yYW5nZS01OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2Mtb3JhbmdlLTY6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1vcmFuZ2UtNzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLW9yYW5nZS04OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2Mtb3JhbmdlLTk6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDb2xvciBsaXN0XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jb2xvci1zcGVjdHJ1bTogICA5O1xcblxcbiRvYy1jb2xvci1saXN0OiAoXFxuICAkb2MtZ3JheS1saXN0OiAgICAgIFxcXCJncmF5XFxcIixcXG4gICRvYy1yZWQtbGlzdDogICAgICBcXFwicmVkXFxcIixcXG4gICRvYy1waW5rLWxpc3Q6ICAgICAgXFxcInBpbmtcXFwiLFxcbiAgJG9jLWdyYXBlLWxpc3Q6ICAgICAgXFxcImdyYXBlXFxcIixcXG4gICRvYy12aW9sZXQtbGlzdDogICAgICBcXFwidmlvbGV0XFxcIixcXG4gICRvYy1pbmRpZ28tbGlzdDogICAgICBcXFwiaW5kaWdvXFxcIixcXG4gICRvYy1ibHVlLWxpc3Q6ICAgICAgXFxcImJsdWVcXFwiLFxcbiAgJG9jLWN5YW4tbGlzdDogICAgICBcXFwiY3lhblxcXCIsXFxuICAkb2MtdGVhbC1saXN0OiAgICAgIFxcXCJ0ZWFsXFxcIixcXG4gICRvYy1ncmVlbi1saXN0OiAgICAgIFxcXCJncmVlblxcXCIsXFxuICAkb2MtbGltZS1saXN0OiAgICAgIFxcXCJsaW1lXFxcIixcXG4gICRvYy15ZWxsb3ctbGlzdDogICAgICBcXFwieWVsbG93XFxcIixcXG4gICRvYy1vcmFuZ2UtbGlzdDogICAgICBcXFwib3JhbmdlXFxcIlxcbik7XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\n");
1659
1648
 
1660
1649
  /***/ }),
1661
1650
 
@@ -2040,7 +2029,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2040
2029
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2041
2030
 
2042
2031
  "use strict";
2043
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nvar _a, _b;\nconst trackEvent = typeof process !== \"undefined\" &&\n ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f1fd295\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.REACT_APP_GOOGLE_ANALYTICS_ID) &&\n typeof window !== \"undefined\" &&\n window.gtag\n ? (category, action, label, value) => {\n try {\n window.gtag(\"event\", action, {\n event_category: category,\n event_label: label,\n value,\n });\n }\n catch (error) {\n console.error(\"error logging to ga\", error);\n }\n }\n : typeof process !== \"undefined\" && ((_b = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f1fd295\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _b === void 0 ? void 0 : _b.JEST_WORKER_ID)\n ? (category, action, label, value) => { }\n : (category, action, label, value) => {\n // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sTUFBTSxVQUFVLEdBQ3JCLE9BQU8sT0FBTyxLQUFLLFdBQVc7S0FDOUIsaTRCQUFXLDBDQUFFLDZCQUE2QjtJQUMxQyxPQUFPLE1BQU0sS0FBSyxXQUFXO0lBQzdCLE1BQU0sQ0FBQyxJQUFJO0lBQ1QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFO1FBQ25FLElBQUk7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQzNCLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixXQUFXLEVBQUUsS0FBSztnQkFDbEIsS0FBSzthQUNOLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEtBQUksaTRCQUFXLDBDQUFFLGNBQWM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFjLEVBQUUsS0FBYyxFQUFFLEVBQUU7WUFDbkUsMkNBQTJDO1lBQzNDLGtFQUFrRTtRQUNwRSxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYW5hbHl0aWNzLnRzPzVmMGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYWNrRXZlbnQgPVxuICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICBwcm9jZXNzLmVudj8uUkVBQ1RfQVBQX0dPT0dMRV9BTkFMWVRJQ1NfSUQgJiZcbiAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICB3aW5kb3cuZ3RhZ1xuICAgID8gKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3aW5kb3cuZ3RhZyhcImV2ZW50XCIsIGFjdGlvbiwge1xuICAgICAgICAgICAgZXZlbnRfY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgICAgICAgICAgZXZlbnRfbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcImVycm9yIGxvZ2dpbmcgdG8gZ2FcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLmVudj8uSkVTVF9XT1JLRVJfSURcbiAgICA/IChjYXRlZ29yeTogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHZhbHVlPzogbnVtYmVyKSA9PiB7fVxuICAgIDogKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgLy8gVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gdHJhY2sgbG9jYWxseVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlRyYWNrIEV2ZW50XCIsIHsgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwsIHZhbHVlIH0pO1xuICAgICAgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2032
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nvar _a, _b;\nconst trackEvent = typeof process !== \"undefined\" &&\n ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f8b4bb6\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.REACT_APP_GOOGLE_ANALYTICS_ID) &&\n typeof window !== \"undefined\" &&\n window.gtag\n ? (category, action, label, value) => {\n try {\n window.gtag(\"event\", action, {\n event_category: category,\n event_label: label,\n value,\n });\n }\n catch (error) {\n console.error(\"error logging to ga\", error);\n }\n }\n : typeof process !== \"undefined\" && ((_b = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f8b4bb6\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _b === void 0 ? void 0 : _b.JEST_WORKER_ID)\n ? (category, action, label, value) => { }\n : (category, action, label, value) => {\n // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sTUFBTSxVQUFVLEdBQ3JCLE9BQU8sT0FBTyxLQUFLLFdBQVc7S0FDOUIsaTRCQUFXLDBDQUFFLDZCQUE2QjtJQUMxQyxPQUFPLE1BQU0sS0FBSyxXQUFXO0lBQzdCLE1BQU0sQ0FBQyxJQUFJO0lBQ1QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFO1FBQ25FLElBQUk7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQzNCLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixXQUFXLEVBQUUsS0FBSztnQkFDbEIsS0FBSzthQUNOLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEtBQUksaTRCQUFXLDBDQUFFLGNBQWM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFjLEVBQUUsS0FBYyxFQUFFLEVBQUU7WUFDbkUsMkNBQTJDO1lBQzNDLGtFQUFrRTtRQUNwRSxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYW5hbHl0aWNzLnRzPzVmMGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYWNrRXZlbnQgPVxuICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICBwcm9jZXNzLmVudj8uUkVBQ1RfQVBQX0dPT0dMRV9BTkFMWVRJQ1NfSUQgJiZcbiAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICB3aW5kb3cuZ3RhZ1xuICAgID8gKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3aW5kb3cuZ3RhZyhcImV2ZW50XCIsIGFjdGlvbiwge1xuICAgICAgICAgICAgZXZlbnRfY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgICAgICAgICAgZXZlbnRfbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcImVycm9yIGxvZ2dpbmcgdG8gZ2FcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLmVudj8uSkVTVF9XT1JLRVJfSURcbiAgICA/IChjYXRlZ29yeTogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHZhbHVlPzogbnVtYmVyKSA9PiB7fVxuICAgIDogKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgLy8gVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gdHJhY2sgbG9jYWxseVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlRyYWNrIEV2ZW50XCIsIHsgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwsIHZhbHVlIH0pO1xuICAgICAgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2044
2033
 
2045
2034
  /***/ }),
2046
2035
 
@@ -2172,7 +2161,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2172
2161
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2173
2162
 
2174
2163
  "use strict";
2175
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Card\": () => (/* binding */ Card)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Card.scss */ \"../../components/Card.scss\");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Card_scss__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst Card = ({ children, color }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Card\", style: {\n [\"--card-color\"]: color === \"primary\" ? \"var(--color-primary)\" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][7],\n [\"--card-color-darker\"]: color === \"primary\"\n ? \"var(--color-primary-darker)\"\n : open_color__WEBPACK_IMPORTED_MODULE_1__[color][8],\n [\"--card-color-darkest\"]: color === \"primary\"\n ? \"var(--color-primary-darkest)\"\n : open_color__WEBPACK_IMPORTED_MODULE_1__[color][9],\n } }, { children: children })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBbUM7QUFFZDtBQUVkLE1BQU0sSUFBSSxHQUVaLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUMzQixPQUFPLENBQ0wsOEVBQ0UsU0FBUyxFQUFDLE1BQU0sRUFDaEIsS0FBSyxFQUFFO1lBQ0wsQ0FBQyxjQUFxQixDQUFDLEVBQ3JCLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyx1Q0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLHFCQUE0QixDQUFDLEVBQzVCLEtBQUssS0FBSyxTQUFTO2dCQUNqQixDQUFDLENBQUMsNkJBQTZCO2dCQUMvQixDQUFDLENBQUMsdUNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxzQkFBNkIsQ0FBQyxFQUM3QixLQUFLLEtBQUssU0FBUztnQkFDakIsQ0FBQyxDQUFDLDhCQUE4QjtnQkFDaEMsQ0FBQyxDQUFDLHVDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCLGdCQUVBLFFBQVEsSUFDTCxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeD9lMGVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPcGVuQ29sb3IgZnJvbSBcIm9wZW4tY29sb3JcIjtcblxuaW1wb3J0IFwiLi9DYXJkLnNjc3NcIjtcblxuZXhwb3J0IGNvbnN0IENhcmQ6IFJlYWN0LkZDPHtcbiAgY29sb3I6IGtleW9mIE9wZW5Db2xvciB8IFwicHJpbWFyeVwiO1xufT4gPSAoeyBjaGlsZHJlbiwgY29sb3IgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cIkNhcmRcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgW1wiLS1jYXJkLWNvbG9yXCIgYXMgYW55XTpcbiAgICAgICAgICBjb2xvciA9PT0gXCJwcmltYXJ5XCIgPyBcInZhcigtLWNvbG9yLXByaW1hcnkpXCIgOiBPcGVuQ29sb3JbY29sb3JdWzddLFxuICAgICAgICBbXCItLWNhcmQtY29sb3ItZGFya2VyXCIgYXMgYW55XTpcbiAgICAgICAgICBjb2xvciA9PT0gXCJwcmltYXJ5XCJcbiAgICAgICAgICAgID8gXCJ2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmtlcilcIlxuICAgICAgICAgICAgOiBPcGVuQ29sb3JbY29sb3JdWzhdLFxuICAgICAgICBbXCItLWNhcmQtY29sb3ItZGFya2VzdFwiIGFzIGFueV06XG4gICAgICAgICAgY29sb3IgPT09IFwicHJpbWFyeVwiXG4gICAgICAgICAgICA/IFwidmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0KVwiXG4gICAgICAgICAgICA6IE9wZW5Db2xvcltjb2xvcl1bOV0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Card.tsx\n");
2164
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Card\": () => (/* binding */ Card)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Card.scss */ \"../../components/Card.scss\");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Card_scss__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst Card = ({ children, color }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Card\", style: {\n [\"--card-color\"]: color === \"primary\" ? \"var(--color-primary)\" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][7],\n [\"--card-color-darker\"]: color === \"primary\"\n ? \"var(--color-primary-darker)\"\n : open_color__WEBPACK_IMPORTED_MODULE_1__[color][8],\n [\"--card-color-darkest\"]: color === \"primary\"\n ? \"var(--color-primary-darkest)\"\n : open_color__WEBPACK_IMPORTED_MODULE_1__[color][9],\n } }, { children: children })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBbUM7QUFFZDtBQUVkLE1BQU0sSUFBSSxHQUdaLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUMzQixPQUFPLENBQ0wsOEVBQ0UsU0FBUyxFQUFDLE1BQU0sRUFDaEIsS0FBSyxFQUFFO1lBQ0wsQ0FBQyxjQUFxQixDQUFDLEVBQ3JCLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyx1Q0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDLHFCQUE0QixDQUFDLEVBQzVCLEtBQUssS0FBSyxTQUFTO2dCQUNqQixDQUFDLENBQUMsNkJBQTZCO2dCQUMvQixDQUFDLENBQUMsdUNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxzQkFBNkIsQ0FBQyxFQUM3QixLQUFLLEtBQUssU0FBUztnQkFDakIsQ0FBQyxDQUFDLDhCQUE4QjtnQkFDaEMsQ0FBQyxDQUFDLHVDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCLGdCQUVBLFFBQVEsSUFDTCxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeD9lMGVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPcGVuQ29sb3IgZnJvbSBcIm9wZW4tY29sb3JcIjtcblxuaW1wb3J0IFwiLi9DYXJkLnNjc3NcIjtcblxuZXhwb3J0IGNvbnN0IENhcmQ6IFJlYWN0LkZDPHtcbiAgY29sb3I6IGtleW9mIE9wZW5Db2xvciB8IFwicHJpbWFyeVwiO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn0+ID0gKHsgY2hpbGRyZW4sIGNvbG9yIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJDYXJkXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIFtcIi0tY2FyZC1jb2xvclwiIGFzIGFueV06XG4gICAgICAgICAgY29sb3IgPT09IFwicHJpbWFyeVwiID8gXCJ2YXIoLS1jb2xvci1wcmltYXJ5KVwiIDogT3BlbkNvbG9yW2NvbG9yXVs3XSxcbiAgICAgICAgW1wiLS1jYXJkLWNvbG9yLWRhcmtlclwiIGFzIGFueV06XG4gICAgICAgICAgY29sb3IgPT09IFwicHJpbWFyeVwiXG4gICAgICAgICAgICA/IFwidmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpXCJcbiAgICAgICAgICAgIDogT3BlbkNvbG9yW2NvbG9yXVs4XSxcbiAgICAgICAgW1wiLS1jYXJkLWNvbG9yLWRhcmtlc3RcIiBhcyBhbnldOlxuICAgICAgICAgIGNvbG9yID09PSBcInByaW1hcnlcIlxuICAgICAgICAgICAgPyBcInZhcigtLWNvbG9yLXByaW1hcnktZGFya2VzdClcIlxuICAgICAgICAgICAgOiBPcGVuQ29sb3JbY29sb3JdWzldLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Card.tsx\n");
2176
2165
 
2177
2166
  /***/ }),
2178
2167
 
@@ -2183,7 +2172,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2183
2172
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2184
2173
 
2185
2174
  "use strict";
2186
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CheckboxItem\": () => (/* binding */ CheckboxItem)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CheckboxItem.scss */ \"../../components/CheckboxItem.scss\");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nconst CheckboxItem = ({ children, checked, onChange, className }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"Checkbox\", className, { \"is-checked\": checked }), onClick: (event) => {\n onChange(!checked, event);\n event.currentTarget.querySelector(\".Checkbox-box\").focus();\n } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"Checkbox-box\", role: \"checkbox\", \"aria-checked\": checked }, { children: _icons__WEBPACK_IMPORTED_MODULE_3__.checkIcon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Checkbox-label\" }, { children: children }))] })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUEwQjtBQUNGO0FBQ1k7QUFFUDtBQUV0QixNQUFNLFlBQVksR0FJcEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbEQsT0FBTyxDQUNMLCtFQUNFLFNBQVMsRUFBRSxnREFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDakUsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZCLEtBQUssQ0FBQyxhQUFnQyxDQUFDLGFBQWEsQ0FDbkQsZUFBZSxDQUVsQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxpQkFFRCxpRkFBUSxTQUFTLEVBQUMsY0FBYyxFQUFDLElBQUksRUFBQyxVQUFVLGtCQUFlLE9BQU8sZ0JBQ25FLDZDQUFTLElBQ0gsRUFDVCw4RUFBSyxTQUFTLEVBQUMsZ0JBQWdCLGdCQUFFLFFBQVEsSUFBTyxLQUM1QyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4PzgyNGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGNoZWNrSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5cbmltcG9ydCBcIi4vQ2hlY2tib3hJdGVtLnNjc3NcIjtcblxuZXhwb3J0IGNvbnN0IENoZWNrYm94SXRlbTogUmVhY3QuRkM8e1xuICBjaGVja2VkOiBib29sZWFuO1xuICBvbkNoYW5nZTogKGNoZWNrZWQ6IGJvb2xlYW4sIGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59PiA9ICh7IGNoaWxkcmVuLCBjaGVja2VkLCBvbkNoYW5nZSwgY2xhc3NOYW1lIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2Nsc3goXCJDaGVja2JveFwiLCBjbGFzc05hbWUsIHsgXCJpcy1jaGVja2VkXCI6IGNoZWNrZWQgfSl9XG4gICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgb25DaGFuZ2UoIWNoZWNrZWQsIGV2ZW50KTtcbiAgICAgICAgKFxuICAgICAgICAgIChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50KS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgXCIuQ2hlY2tib3gtYm94XCIsXG4gICAgICAgICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudFxuICAgICAgICApLmZvY3VzKCk7XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiQ2hlY2tib3gtYm94XCIgcm9sZT1cImNoZWNrYm94XCIgYXJpYS1jaGVja2VkPXtjaGVja2VkfT5cbiAgICAgICAge2NoZWNrSWNvbn1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJDaGVja2JveC1sYWJlbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.tsx\n");
2175
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CheckboxItem\": () => (/* binding */ CheckboxItem)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CheckboxItem.scss */ \"../../components/CheckboxItem.scss\");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nconst CheckboxItem = ({ children, checked, onChange, className }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"Checkbox\", className, { \"is-checked\": checked }), onClick: (event) => {\n onChange(!checked, event);\n event.currentTarget.querySelector(\".Checkbox-box\").focus();\n } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"Checkbox-box\", role: \"checkbox\", \"aria-checked\": checked }, { children: _icons__WEBPACK_IMPORTED_MODULE_3__.checkIcon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Checkbox-label\" }, { children: children }))] })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUEwQjtBQUNGO0FBQ1k7QUFFUDtBQUV0QixNQUFNLFlBQVksR0FLcEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbEQsT0FBTyxDQUNMLCtFQUNFLFNBQVMsRUFBRSxnREFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDakUsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZCLEtBQUssQ0FBQyxhQUFnQyxDQUFDLGFBQWEsQ0FDbkQsZUFBZSxDQUVsQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxpQkFFRCxpRkFBUSxTQUFTLEVBQUMsY0FBYyxFQUFDLElBQUksRUFBQyxVQUFVLGtCQUFlLE9BQU8sZ0JBQ25FLDZDQUFTLElBQ0gsRUFDVCw4RUFBSyxTQUFTLEVBQUMsZ0JBQWdCLGdCQUFFLFFBQVEsSUFBTyxLQUM1QyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4PzgyNGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGNoZWNrSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5cbmltcG9ydCBcIi4vQ2hlY2tib3hJdGVtLnNjc3NcIjtcblxuZXhwb3J0IGNvbnN0IENoZWNrYm94SXRlbTogUmVhY3QuRkM8e1xuICBjaGVja2VkOiBib29sZWFuO1xuICBvbkNoYW5nZTogKGNoZWNrZWQ6IGJvb2xlYW4sIGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufT4gPSAoeyBjaGlsZHJlbiwgY2hlY2tlZCwgb25DaGFuZ2UsIGNsYXNzTmFtZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiQ2hlY2tib3hcIiwgY2xhc3NOYW1lLCB7IFwiaXMtY2hlY2tlZFwiOiBjaGVja2VkIH0pfVxuICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlKCFjaGVja2VkLCBldmVudCk7XG4gICAgICAgIChcbiAgICAgICAgICAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCkucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIFwiLkNoZWNrYm94LWJveFwiLFxuICAgICAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgICAgICAgKS5mb2N1cygpO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cIkNoZWNrYm94LWJveFwiIHJvbGU9XCJjaGVja2JveFwiIGFyaWEtY2hlY2tlZD17Y2hlY2tlZH0+XG4gICAgICAgIHtjaGVja0ljb259XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiQ2hlY2tib3gtbGFiZWxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.tsx\n");
2187
2176
 
2188
2177
  /***/ }),
2189
2178
 
@@ -2337,7 +2326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2337
2326
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2338
2327
 
2339
2328
  "use strict";
2340
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ErrorCanvasPreview\": () => (/* binding */ ErrorCanvasPreview),\n/* harmony export */ \"ImageExportDialog\": () => (/* binding */ ImageExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clipboard */ \"../../clipboard.ts\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors */ \"../../errors.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/export */ \"../../scene/export.ts\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ExportDialog.scss */ \"../../components/ExportDialog.scss\");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _CheckboxItem__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CheckboxItem */ \"../../components/CheckboxItem.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/filesystem */ \"../../data/filesystem.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst supportsContextFilters = \"filter\" in document.createElement(\"canvas\").getContext(\"2d\");\nconst ErrorCanvasPreview = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"h3\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.cannotShowPreview\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.canvasTooBig\") }) }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"em\", { children: [\"(\", (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.canvasTooBigTip\"), \")\"] })] }));\n};\nconst renderPreview = (content, previewNode) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unmountComponentAtNode)(previewNode);\n previewNode.innerHTML = \"\";\n if (content instanceof HTMLCanvasElement) {\n previewNode.appendChild(content);\n }\n else {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.render)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorCanvasPreview, {}), previewNode);\n }\n};\nconst ExportButton = ({ children, title, onClick, color, shade = 6 }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"ExportDialog-imageExportButton\", style: {\n [\"--button-color\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade],\n [\"--button-color-darker\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade + 1],\n [\"--button-color-darkest\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade + 2],\n }, title: title, \"aria-label\": title, onClick: onClick }, { children: children })));\n};\nconst ImageExportModal = ({ elements, appState, files, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_17__.DEFAULT_EXPORT_PADDING, actionManager, onExportToPng, onExportToSvg, onExportToClipboard, }) => {\n const someElementIsSelected = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)(elements, appState);\n const [exportSelected, setExportSelected] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(someElementIsSelected);\n const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const { exportBackground, viewBackgroundColor } = appState;\n const exportedElements = exportSelected\n ? (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState, true)\n : elements;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n setExportSelected(someElementIsSelected);\n }, [someElementIsSelected]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const previewNode = previewRef.current;\n if (!previewNode) {\n return;\n }\n (0,_scene_export__WEBPACK_IMPORTED_MODULE_9__.exportToCanvas)(exportedElements, appState, files, {\n exportBackground,\n viewBackgroundColor,\n exportPadding,\n })\n .then((canvas) => {\n // if converting to blob fails, there's some problem that will\n // likely prevent preview and export (e.g. canvas too big)\n return (0,_data_blob__WEBPACK_IMPORTED_MODULE_4__.canvasToBlob)(canvas).then(() => {\n renderPreview(canvas, previewNode);\n });\n })\n .catch((error) => {\n console.error(error);\n renderPreview(new _errors__WEBPACK_IMPORTED_MODULE_5__.CanvasError(), previewNode);\n });\n }, [\n appState,\n files,\n exportedElements,\n exportBackground,\n exportPadding,\n viewBackgroundColor,\n ]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"ExportDialog\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"ExportDialog__preview\", ref: previewRef }), supportsContextFilters &&\n actionManager.renderAction(\"exportWithDarkMode\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ style: { display: \"grid\", gridTemplateColumns: \"1fr\" } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(190px, 1fr))\",\n // dunno why this is needed, but when the items wrap it creates\n // an overflow\n overflow: \"hidden\",\n } }, { children: [actionManager.renderAction(\"changeExportBackground\"), someElementIsSelected && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CheckboxItem__WEBPACK_IMPORTED_MODULE_16__.CheckboxItem, Object.assign({ checked: exportSelected, onChange: (checked) => setExportSelected(checked) }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"labels.onlySelected\") }))), actionManager.renderAction(\"changeExportEmbedScene\")] })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { display: \"flex\", alignItems: \"center\", marginTop: \".6em\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Row, Object.assign({ gap: 2 }, { children: actionManager.renderAction(\"changeExportScale\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", Object.assign({ style: { marginLeft: \"1em\", userSelect: \"none\" } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scale\") }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n margin: \".6em 0\",\n } }, { children: !_data_filesystem__WEBPACK_IMPORTED_MODULE_18__.nativeFileSystemSupported &&\n actionManager.renderAction(\"changeProjectName\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Row, Object.assign({ gap: 2, justifyContent: \"center\", style: { margin: \"2em 0\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ color: \"indigo\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToPng\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToPng\"), onClick: () => onExportToPng(exportedElements) }, { children: \"PNG\" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ color: \"red\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToSvg\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToSvg\"), onClick: () => onExportToSvg(exportedElements) }, { children: \"SVG\" })), _clipboard__WEBPACK_IMPORTED_MODULE_3__.probablySupportsClipboardBlob && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.copyPngToClipboard\"), onClick: () => onExportToClipboard(exportedElements), color: \"gray\", shade: 7 }, { children: _icons__WEBPACK_IMPORTED_MODULE_11__.clipboard })))] }))] })));\n};\nconst ImageExportDialog = ({ elements, appState, files, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_17__.DEFAULT_EXPORT_PADDING, actionManager, onExportToPng, onExportToSvg, onExportToClipboard, }) => {\n const [modalIsShown, setModalIsShown] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n setModalIsShown(false);\n }, []);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_13__.ToolButton, { onClick: () => {\n setModalIsShown(true);\n }, \"data-testid\": \"image-export-button\", icon: _icons__WEBPACK_IMPORTED_MODULE_11__.exportImage, type: \"button\", \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\"), showAriaLabel: (0,_App__WEBPACK_IMPORTED_MODULE_7__.useDevice)().isMobile, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\") }), modalIsShown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_10__.Dialog, Object.assign({ onCloseRequest: handleClose, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\") }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ImageExportModal, { elements: elements, appState: appState, files: files, exportPadding: exportPadding, actionManager: actionManager, onExportToPng: onExportToPng, onExportToSvg: onExportToSvg, onExportToClipboard: onExportToClipboard, onCloseRequest: handleClose }) })))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JbWFnZUV4cG9ydERpYWxvZy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEyRDtBQUNBO0FBQ0U7QUFDakI7QUFFSjtBQUNaO0FBQ007QUFDb0M7QUFDckI7QUFFZjtBQUNlO0FBQ3JCO0FBQ2M7QUFDYjtBQUNNO0FBQ1c7QUFDUTtBQUNTO0FBRy9ELE1BQU0sc0JBQXNCLEdBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUUsQ0FBQztBQUUxRCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNyQyxPQUFPLENBQ0wsNEVBQ0UseUVBQUssd0NBQUMsQ0FBQywrQkFBK0IsQ0FBQyxHQUFNLEVBQzdDLHdFQUNFLDJFQUFPLHdDQUFDLENBQUMsMEJBQTBCLENBQUMsR0FBUSxHQUMxQyxFQUNKLGdGQUFNLHdDQUFDLENBQUMsNkJBQTZCLENBQUMsU0FBTyxJQUN6QyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUNwQixPQUFrQyxFQUNsQyxXQUEyQixFQUMzQixFQUFFO0lBQ0YsaUVBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsV0FBVyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDM0IsSUFBSSxPQUFPLFlBQVksaUJBQWlCLEVBQUU7UUFDeEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNsQztTQUFNO1FBQ0wsaURBQU0sQ0FBQyx1REFBQyxrQkFBa0IsS0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFDO0FBT0YsTUFBTSxZQUFZLEdBS2IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUN0RCxPQUFPLENB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LDhIQUNFLHVEQUFDLG9EQUFVLElBQ1QsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDWixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsaUJBQ1cscUJBQXFCLEVBQ2pDLElBQUksRUFBRSxnREFBVyxFQUNqQixJQUFJLEVBQUMsUUFBUSxnQkFDRCx3Q0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQ3BDLGFBQWEsRUFBRSwrQ0FBUyxFQUFFLENBQUMsUUFBUSxFQUNuQyxLQUFLLEVBQUUsd0NBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUMvQixFQUNELFlBQVksSUFBSSxDQUNmLHVEQUFDLDRDQUFNLGtCQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLHdDQUFDLENBQUMscUJBQXFCLENBQUMsZ0JBQ2xFLHVEQUFDLGdCQUFnQixJQUNmLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLGNBQWMsRUFBRSxXQUFXLEdBQzNCLElBQ0ssQ0FDVixJQUNBLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ltYWdlRXhwb3J0RGlhbG9nLnRzeD8yMGUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHJlbmRlciwgdW5tb3VudENvbXBvbmVudEF0Tm9kZSB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHByb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRCbG9iIH0gZnJvbSBcIi4uL2NsaXBib2FyZFwiO1xuaW1wb3J0IHsgY2FudmFzVG9CbG9iIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuaW1wb3J0IHsgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IENhbnZhc0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VEZXZpY2UgfSBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMsIGlzU29tZUVsZW1lbnRTZWxlY3RlZCB9IGZyb20gXCIuLi9zY2VuZVwiO1xuaW1wb3J0IHsgZXhwb3J0VG9DYW52YXMgfSBmcm9tIFwiLi4vc2NlbmUvZXhwb3J0XCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQmluYXJ5RmlsZXMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gXCIuL0RpYWxvZ1wiO1xuaW1wb3J0IHsgY2xpcGJvYXJkLCBleHBvcnRJbWFnZSB9IGZyb20gXCIuL2ljb25zXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4vU3RhY2tcIjtcbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5pbXBvcnQgXCIuL0V4cG9ydERpYWxvZy5zY3NzXCI7XG5pbXBvcnQgT3BlbkNvbG9yIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5pbXBvcnQgeyBDaGVja2JveEl0ZW0gfSBmcm9tIFwiLi9DaGVja2JveEl0ZW1cIjtcbmltcG9ydCB7IERFRkFVTFRfRVhQT1JUX1BBRERJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYXRpdmVGaWxlU3lzdGVtU3VwcG9ydGVkIH0gZnJvbSBcIi4uL2RhdGEvZmlsZXN5c3RlbVwiO1xuaW1wb3J0IHsgQWN0aW9uTWFuYWdlciB9IGZyb20gXCIuLi9hY3Rpb25zL21hbmFnZXJcIjtcblxuY29uc3Qgc3VwcG9ydHNDb250ZXh0RmlsdGVycyA9XG4gIFwiZmlsdGVyXCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKS5nZXRDb250ZXh0KFwiMmRcIikhO1xuXG5leHBvcnQgY29uc3QgRXJyb3JDYW52YXNQcmV2aWV3ID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8aDM+e3QoXCJjYW52YXNFcnJvci5jYW5ub3RTaG93UHJldmlld1wiKX08L2gzPlxuICAgICAgPHA+XG4gICAgICAgIDxzcGFuPnt0KFwiY2FudmFzRXJyb3IuY2FudmFzVG9vQmlnXCIpfTwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxlbT4oe3QoXCJjYW52YXNFcnJvci5jYW52YXNUb29CaWdUaXBcIil9KTwvZW0+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCByZW5kZXJQcmV2aWV3ID0gKFxuICBjb250ZW50OiBIVE1MQ2FudmFzRWxlbWVudCB8IEVycm9yLFxuICBwcmV2aWV3Tm9kZTogSFRNTERpdkVsZW1lbnQsXG4pID0+IHtcbiAgdW5tb3VudENvbXBvbmVudEF0Tm9kZShwcmV2aWV3Tm9kZSk7XG4gIHByZXZpZXdOb2RlLmlubmVySFRNTCA9IFwiXCI7XG4gIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgICBwcmV2aWV3Tm9kZS5hcHBlbmRDaGlsZChjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXIoPEVycm9yQ2FudmFzUHJldmlldyAvPiwgcHJldmlld05vZGUpO1xuICB9XG59O1xuXG5leHBvcnQgdHlwZSBFeHBvcnRDQiA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBzY2FsZT86IG51bWJlcixcbikgPT4gdm9pZDtcblxuY29uc3QgRXhwb3J0QnV0dG9uOiBSZWFjdC5GQzx7XG4gIGNvbG9yOiBrZXlvZiBPcGVuQ29sb3I7XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHNoYWRlPzogbnVtYmVyO1xufT4gPSAoeyBjaGlsZHJlbiwgdGl0bGUsIG9uQ2xpY2ssIGNvbG9yLCBzaGFkZSA9IDYgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT1cIkV4cG9ydERpYWxvZy1pbWFnZUV4cG9ydEJ1dHRvblwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBbXCItLWJ1dHRvbi1jb2xvclwiIGFzIGFueV06IE9wZW5Db2xvcltjb2xvcl1bc2hhZGVdLFxuICAgICAgICBbXCItLWJ1dHRvbi1jb2xvci1kYXJrZXJcIiBhcyBhbnldOiBPcGVuQ29sb3JbY29sb3JdW3NoYWRlICsgMV0sXG4gICAgICAgIFtcIi0tYnV0dG9uLWNvbG9yLWRhcmtlc3RcIiBhcyBhbnldOiBPcGVuQ29sb3JbY29sb3JdW3NoYWRlICsgMl0sXG4gICAgICB9fVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgYXJpYS1sYWJlbD17dGl0bGV9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5cbmNvbnN0IEltYWdlRXhwb3J0TW9kYWwgPSAoe1xuICBlbGVtZW50cyxcbiAgYXBwU3RhdGUsXG4gIGZpbGVzLFxuICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgYWN0aW9uTWFuYWdlcixcbiAgb25FeHBvcnRUb1BuZyxcbiAgb25FeHBvcnRUb1N2ZyxcbiAgb25FeHBvcnRUb0NsaXBib2FyZCxcbn06IHtcbiAgYXBwU3RhdGU6IEFwcFN0YXRlO1xuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W107XG4gIGZpbGVzOiBCaW5hcnlGaWxlcztcbiAgZXhwb3J0UGFkZGluZz86IG51bWJlcjtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgb25FeHBvcnRUb1BuZzogRXhwb3J0Q0I7XG4gIG9uRXhwb3J0VG9Tdmc6IEV4cG9ydENCO1xuICBvbkV4cG9ydFRvQ2xpcGJvYXJkOiBFeHBvcnRDQjtcbiAgb25DbG9zZVJlcXVlc3Q6ICgpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IHNvbWVFbGVtZW50SXNTZWxlY3RlZCA9IGlzU29tZUVsZW1lbnRTZWxlY3RlZChlbGVtZW50cywgYXBwU3RhdGUpO1xuICBjb25zdCBbZXhwb3J0U2VsZWN0ZWQsIHNldEV4cG9ydFNlbGVjdGVkXSA9IHVzZVN0YXRlKHNvbWVFbGVtZW50SXNTZWxlY3RlZCk7XG4gIGNvbnN0IHByZXZpZXdSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCB7IGV4cG9ydEJhY2tncm91bmQsIHZpZXdCYWNrZ3JvdW5kQ29sb3IgfSA9IGFwcFN0YXRlO1xuXG4gIGNvbnN0IGV4cG9ydGVkRWxlbWVudHMgPSBleHBvcnRTZWxlY3RlZFxuICAgID8gZ2V0U2VsZWN0ZWRFbGVtZW50cyhlbGVtZW50cywgYXBwU3RhdGUsIHRydWUpXG4gICAgOiBlbGVtZW50cztcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEV4cG9ydFNlbGVjdGVkKHNvbWVFbGVtZW50SXNTZWxlY3RlZCk7XG4gIH0sIFtzb21lRWxlbWVudElzU2VsZWN0ZWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpZXdOb2RlID0gcHJldmlld1JlZi5jdXJyZW50O1xuICAgIGlmICghcHJldmlld05vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXhwb3J0VG9DYW52YXMoZXhwb3J0ZWRFbGVtZW50cywgYXBwU3RhdGUsIGZpbGVzLCB7XG4gICAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgICAgIGV4cG9ydFBhZGRpbmcsXG4gICAgfSlcbiAgICAgIC50aGVuKChjYW52YXMpID0+IHtcbiAgICAgICAgLy8gaWYgY29udmVydGluZyB0byBibG9iIGZhaWxzLCB0aGVyZSdzIHNvbWUgcHJvYmxlbSB0aGF0IHdpbGxcbiAgICAgICAgLy8gbGlrZWx5IHByZXZlbnQgcHJldmlldyBhbmQgZXhwb3J0IChlLmcuIGNhbnZhcyB0b28gYmlnKVxuICAgICAgICByZXR1cm4gY2FudmFzVG9CbG9iKGNhbnZhcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmVuZGVyUHJldmlldyhjYW52YXMsIHByZXZpZXdOb2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmVuZGVyUHJldmlldyhuZXcgQ2FudmFzRXJyb3IoKSwgcHJldmlld05vZGUpO1xuICAgICAgfSk7XG4gIH0sIFtcbiAgICBhcHBTdGF0ZSxcbiAgICBmaWxlcyxcbiAgICBleHBvcnRlZEVsZW1lbnRzLFxuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgZXhwb3J0UGFkZGluZyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICBdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiRXhwb3J0RGlhbG9nXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIkV4cG9ydERpYWxvZ19fcHJldmlld1wiIHJlZj17cHJldmlld1JlZn0gLz5cbiAgICAgIHtzdXBwb3J0c0NvbnRleHRGaWx0ZXJzICYmXG4gICAgICAgIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZXhwb3J0V2l0aERhcmtNb2RlXCIpfVxuICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImdyaWRcIiwgZ3JpZFRlbXBsYXRlQ29sdW1uczogXCIxZnJcIiB9fT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBkaXNwbGF5OiBcImdyaWRcIixcbiAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6IFwicmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTkwcHgsIDFmcikpXCIsXG4gICAgICAgICAgICAvLyBkdW5ubyB3aHkgdGhpcyBpcyBuZWVkZWQsIGJ1dCB3aGVuIHRoZSBpdGVtcyB3cmFwIGl0IGNyZWF0ZXNcbiAgICAgICAgICAgIC8vIGFuIG92ZXJmbG93XG4gICAgICAgICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2hhbmdlRXhwb3J0QmFja2dyb3VuZFwiKX1cbiAgICAgICAgICB7c29tZUVsZW1lbnRJc1NlbGVjdGVkICYmIChcbiAgICAgICAgICAgIDxDaGVja2JveEl0ZW1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ZXhwb3J0U2VsZWN0ZWR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoY2hlY2tlZCkgPT4gc2V0RXhwb3J0U2VsZWN0ZWQoY2hlY2tlZCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwibGFiZWxzLm9ubHlTZWxlY3RlZFwiKX1cbiAgICAgICAgICAgIDwvQ2hlY2tib3hJdGVtPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2hhbmdlRXhwb3J0RW1iZWRTY2VuZVwiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIG1hcmdpblRvcDogXCIuNmVtXCIgfX0+XG4gICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsyfT5cbiAgICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJjaGFuZ2VFeHBvcnRTY2FsZVwiKX1cbiAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgIDxwIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IFwiMWVtXCIsIHVzZXJTZWxlY3Q6IFwibm9uZVwiIH19PlxuICAgICAgICAgIHt0KFwiYnV0dG9ucy5zY2FsZVwiKX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICBtYXJnaW46IFwiLjZlbSAwXCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHshbmF0aXZlRmlsZVN5c3RlbVN1cHBvcnRlZCAmJlxuICAgICAgICAgIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2hhbmdlUHJvamVjdE5hbWVcIil9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxTdGFjay5Sb3cgZ2FwPXsyfSBqdXN0aWZ5Q29udGVudD1cImNlbnRlclwiIHN0eWxlPXt7IG1hcmdpbjogXCIyZW0gMFwiIH19PlxuICAgICAgICA8RXhwb3J0QnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJpbmRpZ29cIlxuICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5leHBvcnRUb1BuZ1wiKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5leHBvcnRUb1BuZ1wiKX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkV4cG9ydFRvUG5nKGV4cG9ydGVkRWxlbWVudHMpfVxuICAgICAgICA+XG4gICAgICAgICAgUE5HXG4gICAgICAgIDwvRXhwb3J0QnV0dG9uPlxuICAgICAgICA8RXhwb3J0QnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJyZWRcIlxuICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5leHBvcnRUb1N2Z1wiKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5leHBvcnRUb1N2Z1wiKX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkV4cG9ydFRvU3ZnKGV4cG9ydGVkRWxlbWVudHMpfVxuICAgICAgICA+XG4gICAgICAgICAgU1ZHXG4gICAgICAgIDwvRXhwb3J0QnV0dG9uPlxuICAgICAgICB7cHJvYmFibHlTdXBwb3J0c0NsaXBib2FyZEJsb2IgJiYgKFxuICAgICAgICAgIDxFeHBvcnRCdXR0b25cbiAgICAgICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5jb3B5UG5nVG9DbGlwYm9hcmRcIil9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkV4cG9ydFRvQ2xpcGJvYXJkKGV4cG9ydGVkRWxlbWVudHMpfVxuICAgICAgICAgICAgY29sb3I9XCJncmF5XCJcbiAgICAgICAgICAgIHNoYWRlPXs3fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjbGlwYm9hcmR9XG4gICAgICAgICAgPC9FeHBvcnRCdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L1N0YWNrLlJvdz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBJbWFnZUV4cG9ydERpYWxvZyA9ICh7XG4gIGVsZW1lbnRzLFxuICBhcHBTdGF0ZSxcbiAgZmlsZXMsXG4gIGV4cG9ydFBhZGRpbmcgPSBERUZBVUxUX0VYUE9SVF9QQURESU5HLFxuICBhY3Rpb25NYW5hZ2VyLFxuICBvbkV4cG9ydFRvUG5nLFxuICBvbkV4cG9ydFRvU3ZnLFxuICBvbkV4cG9ydFRvQ2xpcGJvYXJkLFxufToge1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgZmlsZXM6IEJpbmFyeUZpbGVzO1xuICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICBhY3Rpb25NYW5hZ2VyOiBBY3Rpb25NYW5hZ2VyO1xuICBvbkV4cG9ydFRvUG5nOiBFeHBvcnRDQjtcbiAgb25FeHBvcnRUb1N2ZzogRXhwb3J0Q0I7XG4gIG9uRXhwb3J0VG9DbGlwYm9hcmQ6IEV4cG9ydENCO1xufSkgPT4ge1xuICBjb25zdCBbbW9kYWxJc1Nob3duLCBzZXRNb2RhbElzU2hvd25dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE1vZGFsSXNTaG93bihmYWxzZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VG9vbEJ1dHRvblxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TW9kYWxJc1Nob3duKHRydWUpO1xuICAgICAgICB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cImltYWdlLWV4cG9ydC1idXR0b25cIlxuICAgICAgICBpY29uPXtleHBvcnRJbWFnZX1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9e3QoXCJidXR0b25zLmV4cG9ydEltYWdlXCIpfVxuICAgICAgICBzaG93QXJpYUxhYmVsPXt1c2VEZXZpY2UoKS5pc01vYmlsZX1cbiAgICAgICAgdGl0bGU9e3QoXCJidXR0b25zLmV4cG9ydEltYWdlXCIpfVxuICAgICAgLz5cbiAgICAgIHttb2RhbElzU2hvd24gJiYgKFxuICAgICAgICA8RGlhbG9nIG9uQ2xvc2VSZXF1ZXN0PXtoYW5kbGVDbG9zZX0gdGl0bGU9e3QoXCJidXR0b25zLmV4cG9ydEltYWdlXCIpfT5cbiAgICAgICAgICA8SW1hZ2VFeHBvcnRNb2RhbFxuICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgZmlsZXM9e2ZpbGVzfVxuICAgICAgICAgICAgZXhwb3J0UGFkZGluZz17ZXhwb3J0UGFkZGluZ31cbiAgICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgICBvbkV4cG9ydFRvUG5nPXtvbkV4cG9ydFRvUG5nfVxuICAgICAgICAgICAgb25FeHBvcnRUb1N2Zz17b25FeHBvcnRUb1N2Z31cbiAgICAgICAgICAgIG9uRXhwb3J0VG9DbGlwYm9hcmQ9e29uRXhwb3J0VG9DbGlwYm9hcmR9XG4gICAgICAgICAgICBvbkNsb3NlUmVxdWVzdD17aGFuZGxlQ2xvc2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.tsx\n");
2329
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ErrorCanvasPreview\": () => (/* binding */ ErrorCanvasPreview),\n/* harmony export */ \"ImageExportDialog\": () => (/* binding */ ImageExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clipboard */ \"../../clipboard.ts\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors */ \"../../errors.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/export */ \"../../scene/export.ts\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ExportDialog.scss */ \"../../components/ExportDialog.scss\");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _CheckboxItem__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./CheckboxItem */ \"../../components/CheckboxItem.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/filesystem */ \"../../data/filesystem.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst supportsContextFilters = \"filter\" in document.createElement(\"canvas\").getContext(\"2d\");\nconst ErrorCanvasPreview = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"h3\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.cannotShowPreview\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.canvasTooBig\") }) }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"em\", { children: [\"(\", (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"canvasError.canvasTooBigTip\"), \")\"] })] }));\n};\nconst renderPreview = (content, previewNode) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unmountComponentAtNode)(previewNode);\n previewNode.innerHTML = \"\";\n if (content instanceof HTMLCanvasElement) {\n previewNode.appendChild(content);\n }\n else {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.render)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorCanvasPreview, {}), previewNode);\n }\n};\nconst ExportButton = ({ children, title, onClick, color, shade = 6 }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"ExportDialog-imageExportButton\", style: {\n [\"--button-color\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade],\n [\"--button-color-darker\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade + 1],\n [\"--button-color-darkest\"]: open_color__WEBPACK_IMPORTED_MODULE_15__[color][shade + 2],\n }, title: title, \"aria-label\": title, onClick: onClick }, { children: children })));\n};\nconst ImageExportModal = ({ elements, appState, files, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_17__.DEFAULT_EXPORT_PADDING, actionManager, onExportToPng, onExportToSvg, onExportToClipboard, }) => {\n const someElementIsSelected = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)(elements, appState);\n const [exportSelected, setExportSelected] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(someElementIsSelected);\n const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const { exportBackground, viewBackgroundColor } = appState;\n const exportedElements = exportSelected\n ? (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState, true)\n : elements;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n setExportSelected(someElementIsSelected);\n }, [someElementIsSelected]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const previewNode = previewRef.current;\n if (!previewNode) {\n return;\n }\n (0,_scene_export__WEBPACK_IMPORTED_MODULE_9__.exportToCanvas)(exportedElements, appState, files, {\n exportBackground,\n viewBackgroundColor,\n exportPadding,\n })\n .then((canvas) => {\n // if converting to blob fails, there's some problem that will\n // likely prevent preview and export (e.g. canvas too big)\n return (0,_data_blob__WEBPACK_IMPORTED_MODULE_4__.canvasToBlob)(canvas).then(() => {\n renderPreview(canvas, previewNode);\n });\n })\n .catch((error) => {\n console.error(error);\n renderPreview(new _errors__WEBPACK_IMPORTED_MODULE_5__.CanvasError(), previewNode);\n });\n }, [\n appState,\n files,\n exportedElements,\n exportBackground,\n exportPadding,\n viewBackgroundColor,\n ]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"ExportDialog\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"ExportDialog__preview\", ref: previewRef }), supportsContextFilters &&\n actionManager.renderAction(\"exportWithDarkMode\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ style: { display: \"grid\", gridTemplateColumns: \"1fr\" } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(190px, 1fr))\",\n // dunno why this is needed, but when the items wrap it creates\n // an overflow\n overflow: \"hidden\",\n } }, { children: [actionManager.renderAction(\"changeExportBackground\"), someElementIsSelected && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CheckboxItem__WEBPACK_IMPORTED_MODULE_16__.CheckboxItem, Object.assign({ checked: exportSelected, onChange: (checked) => setExportSelected(checked) }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"labels.onlySelected\") }))), actionManager.renderAction(\"changeExportEmbedScene\")] })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { display: \"flex\", alignItems: \"center\", marginTop: \".6em\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Row, Object.assign({ gap: 2 }, { children: actionManager.renderAction(\"changeExportScale\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", Object.assign({ style: { marginLeft: \"1em\", userSelect: \"none\" } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scale\") }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n margin: \".6em 0\",\n } }, { children: !_data_filesystem__WEBPACK_IMPORTED_MODULE_18__.nativeFileSystemSupported &&\n actionManager.renderAction(\"changeProjectName\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Row, Object.assign({ gap: 2, justifyContent: \"center\", style: { margin: \"2em 0\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ color: \"indigo\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToPng\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToPng\"), onClick: () => onExportToPng(exportedElements) }, { children: \"PNG\" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ color: \"red\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToSvg\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportToSvg\"), onClick: () => onExportToSvg(exportedElements) }, { children: \"SVG\" })), _clipboard__WEBPACK_IMPORTED_MODULE_3__.probablySupportsClipboardBlob && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportButton, Object.assign({ title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.copyPngToClipboard\"), onClick: () => onExportToClipboard(exportedElements), color: \"gray\", shade: 7 }, { children: _icons__WEBPACK_IMPORTED_MODULE_11__.clipboard })))] }))] })));\n};\nconst ImageExportDialog = ({ elements, appState, files, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_17__.DEFAULT_EXPORT_PADDING, actionManager, onExportToPng, onExportToSvg, onExportToClipboard, }) => {\n const [modalIsShown, setModalIsShown] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n setModalIsShown(false);\n }, []);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_13__.ToolButton, { onClick: () => {\n setModalIsShown(true);\n }, \"data-testid\": \"image-export-button\", icon: _icons__WEBPACK_IMPORTED_MODULE_11__.exportImage, type: \"button\", \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\"), showAriaLabel: (0,_App__WEBPACK_IMPORTED_MODULE_7__.useDevice)().isMobile, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\") }), modalIsShown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_10__.Dialog, Object.assign({ onCloseRequest: handleClose, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exportImage\") }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ImageExportModal, { elements: elements, appState: appState, files: files, exportPadding: exportPadding, actionManager: actionManager, onExportToPng: onExportToPng, onExportToSvg: onExportToSvg, onExportToClipboard: onExportToClipboard, onCloseRequest: handleClose }) })))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JbWFnZUV4cG9ydERpYWxvZy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEyRDtBQUNBO0FBQ0U7QUFDakI7QUFFSjtBQUNaO0FBQ007QUFDb0M7QUFDckI7QUFFZjtBQUNlO0FBQ3JCO0FBQ2M7QUFDYjtBQUNNO0FBQ1c7QUFDUTtBQUNTO0FBRy9ELE1BQU0sc0JBQXNCLEdBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUUsQ0FBQztBQUUxRCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNyQyxPQUFPLENBQ0wsNEVBQ0UseUVBQUssd0NBQUMsQ0FBQywrQkFBK0IsQ0FBQyxHQUFNLEVBQzdDLHdFQUNFLDJFQUFPLHdDQUFDLENBQUMsMEJBQTBCLENBQUMsR0FBUSxHQUMxQyxFQUNKLGdGQUFNLHdDQUFDLENBQUMsNkJBQTZCLENBQUMsU0FBTyxJQUN6QyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUNwQixPQUFrQyxFQUNsQyxXQUEyQixFQUMzQixFQUFFO0lBQ0YsaUVBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsV0FBVyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDM0IsSUFBSSxPQUFPLFlBQVksaUJBQWlCLEVBQUU7UUFDeEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNsQztTQUFNO1FBQ0wsaURBQU0sQ0FBQyx1REFBQyxrQkFBa0IsS0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQzdDO0FBQ0gsQ0FBQyxDQUFDO0FBT0YsTUFBTSxZQUFZLEdBTWIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUN0RCxPQUFPLENB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LDhIQUNFLHVEQUFDLG9EQUFVLElBQ1QsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDWixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsaUJBQ1cscUJBQXFCLEVBQ2pDLElBQUksRUFBRSxnREFBVyxFQUNqQixJQUFJLEVBQUMsUUFBUSxnQkFDRCx3Q0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQ3BDLGFBQWEsRUFBRSwrQ0FBUyxFQUFFLENBQUMsUUFBUSxFQUNuQyxLQUFLLEVBQUUsd0NBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUMvQixFQUNELFlBQVksSUFBSSxDQUNmLHVEQUFDLDRDQUFNLGtCQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLHdDQUFDLENBQUMscUJBQXFCLENBQUMsZ0JBQ2xFLHVEQUFDLGdCQUFnQixJQUNmLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLGNBQWMsRUFBRSxXQUFXLEdBQzNCLElBQ0ssQ0FDVixJQUNBLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ltYWdlRXhwb3J0RGlhbG9nLnRzeD8yMGUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHJlbmRlciwgdW5tb3VudENvbXBvbmVudEF0Tm9kZSB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHByb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRCbG9iIH0gZnJvbSBcIi4uL2NsaXBib2FyZFwiO1xuaW1wb3J0IHsgY2FudmFzVG9CbG9iIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuaW1wb3J0IHsgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IENhbnZhc0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VEZXZpY2UgfSBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMsIGlzU29tZUVsZW1lbnRTZWxlY3RlZCB9IGZyb20gXCIuLi9zY2VuZVwiO1xuaW1wb3J0IHsgZXhwb3J0VG9DYW52YXMgfSBmcm9tIFwiLi4vc2NlbmUvZXhwb3J0XCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQmluYXJ5RmlsZXMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gXCIuL0RpYWxvZ1wiO1xuaW1wb3J0IHsgY2xpcGJvYXJkLCBleHBvcnRJbWFnZSB9IGZyb20gXCIuL2ljb25zXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4vU3RhY2tcIjtcbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5pbXBvcnQgXCIuL0V4cG9ydERpYWxvZy5zY3NzXCI7XG5pbXBvcnQgT3BlbkNvbG9yIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5pbXBvcnQgeyBDaGVja2JveEl0ZW0gfSBmcm9tIFwiLi9DaGVja2JveEl0ZW1cIjtcbmltcG9ydCB7IERFRkFVTFRfRVhQT1JUX1BBRERJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBuYXRpdmVGaWxlU3lzdGVtU3VwcG9ydGVkIH0gZnJvbSBcIi4uL2RhdGEvZmlsZXN5c3RlbVwiO1xuaW1wb3J0IHsgQWN0aW9uTWFuYWdlciB9IGZyb20gXCIuLi9hY3Rpb25zL21hbmFnZXJcIjtcblxuY29uc3Qgc3VwcG9ydHNDb250ZXh0RmlsdGVycyA9XG4gIFwiZmlsdGVyXCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKS5nZXRDb250ZXh0KFwiMmRcIikhO1xuXG5leHBvcnQgY29uc3QgRXJyb3JDYW52YXNQcmV2aWV3ID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8aDM+e3QoXCJjYW52YXNFcnJvci5jYW5ub3RTaG93UHJldmlld1wiKX08L2gzPlxuICAgICAgPHA+XG4gICAgICAgIDxzcGFuPnt0KFwiY2FudmFzRXJyb3IuY2FudmFzVG9vQmlnXCIpfTwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIDxlbT4oe3QoXCJjYW52YXNFcnJvci5jYW52YXNUb29CaWdUaXBcIil9KTwvZW0+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCByZW5kZXJQcmV2aWV3ID0gKFxuICBjb250ZW50OiBIVE1MQ2FudmFzRWxlbWVudCB8IEVycm9yLFxuICBwcmV2aWV3Tm9kZTogSFRNTERpdkVsZW1lbnQsXG4pID0+IHtcbiAgdW5tb3VudENvbXBvbmVudEF0Tm9kZShwcmV2aWV3Tm9kZSk7XG4gIHByZXZpZXdOb2RlLmlubmVySFRNTCA9IFwiXCI7XG4gIGlmIChjb250ZW50IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgICBwcmV2aWV3Tm9kZS5hcHBlbmRDaGlsZChjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXIoPEVycm9yQ2FudmFzUHJldmlldyAvPiwgcHJldmlld05vZGUpO1xuICB9XG59O1xuXG5leHBvcnQgdHlwZSBFeHBvcnRDQiA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBzY2FsZT86IG51bWJlcixcbikgPT4gdm9pZDtcblxuY29uc3QgRXhwb3J0QnV0dG9uOiBSZWFjdC5GQzx7XG4gIGNvbG9yOiBrZXlvZiBPcGVuQ29sb3I7XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHNoYWRlPzogbnVtYmVyO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn0+ID0gKHsgY2hpbGRyZW4sIHRpdGxlLCBvbkNsaWNrLCBjb2xvciwgc2hhZGUgPSA2IH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJFeHBvcnREaWFsb2ctaW1hZ2VFeHBvcnRCdXR0b25cIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgW1wiLS1idXR0b24tY29sb3JcIiBhcyBhbnldOiBPcGVuQ29sb3JbY29sb3JdW3NoYWRlXSxcbiAgICAgICAgW1wiLS1idXR0b24tY29sb3ItZGFya2VyXCIgYXMgYW55XTogT3BlbkNvbG9yW2NvbG9yXVtzaGFkZSArIDFdLFxuICAgICAgICBbXCItLWJ1dHRvbi1jb2xvci1kYXJrZXN0XCIgYXMgYW55XTogT3BlbkNvbG9yW2NvbG9yXVtzaGFkZSArIDJdLFxuICAgICAgfX1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIGFyaWEtbGFiZWw9e3RpdGxlfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuXG5jb25zdCBJbWFnZUV4cG9ydE1vZGFsID0gKHtcbiAgZWxlbWVudHMsXG4gIGFwcFN0YXRlLFxuICBmaWxlcyxcbiAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gIGFjdGlvbk1hbmFnZXIsXG4gIG9uRXhwb3J0VG9QbmcsXG4gIG9uRXhwb3J0VG9TdmcsXG4gIG9uRXhwb3J0VG9DbGlwYm9hcmQsXG59OiB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdO1xuICBmaWxlczogQmluYXJ5RmlsZXM7XG4gIGV4cG9ydFBhZGRpbmc/OiBudW1iZXI7XG4gIGFjdGlvbk1hbmFnZXI6IEFjdGlvbk1hbmFnZXI7XG4gIG9uRXhwb3J0VG9Qbmc6IEV4cG9ydENCO1xuICBvbkV4cG9ydFRvU3ZnOiBFeHBvcnRDQjtcbiAgb25FeHBvcnRUb0NsaXBib2FyZDogRXhwb3J0Q0I7XG4gIG9uQ2xvc2VSZXF1ZXN0OiAoKSA9PiB2b2lkO1xufSkgPT4ge1xuICBjb25zdCBzb21lRWxlbWVudElzU2VsZWN0ZWQgPSBpc1NvbWVFbGVtZW50U2VsZWN0ZWQoZWxlbWVudHMsIGFwcFN0YXRlKTtcbiAgY29uc3QgW2V4cG9ydFNlbGVjdGVkLCBzZXRFeHBvcnRTZWxlY3RlZF0gPSB1c2VTdGF0ZShzb21lRWxlbWVudElzU2VsZWN0ZWQpO1xuICBjb25zdCBwcmV2aWV3UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgeyBleHBvcnRCYWNrZ3JvdW5kLCB2aWV3QmFja2dyb3VuZENvbG9yIH0gPSBhcHBTdGF0ZTtcblxuICBjb25zdCBleHBvcnRlZEVsZW1lbnRzID0gZXhwb3J0U2VsZWN0ZWRcbiAgICA/IGdldFNlbGVjdGVkRWxlbWVudHMoZWxlbWVudHMsIGFwcFN0YXRlLCB0cnVlKVxuICAgIDogZWxlbWVudHM7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFeHBvcnRTZWxlY3RlZChzb21lRWxlbWVudElzU2VsZWN0ZWQpO1xuICB9LCBbc29tZUVsZW1lbnRJc1NlbGVjdGVkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcmV2aWV3Tm9kZSA9IHByZXZpZXdSZWYuY3VycmVudDtcbiAgICBpZiAoIXByZXZpZXdOb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV4cG9ydFRvQ2FudmFzKGV4cG9ydGVkRWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcywge1xuICAgICAgZXhwb3J0QmFja2dyb3VuZCxcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBleHBvcnRQYWRkaW5nLFxuICAgIH0pXG4gICAgICAudGhlbigoY2FudmFzKSA9PiB7XG4gICAgICAgIC8vIGlmIGNvbnZlcnRpbmcgdG8gYmxvYiBmYWlscywgdGhlcmUncyBzb21lIHByb2JsZW0gdGhhdCB3aWxsXG4gICAgICAgIC8vIGxpa2VseSBwcmV2ZW50IHByZXZpZXcgYW5kIGV4cG9ydCAoZS5nLiBjYW52YXMgdG9vIGJpZylcbiAgICAgICAgcmV0dXJuIGNhbnZhc1RvQmxvYihjYW52YXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJlbmRlclByZXZpZXcoY2FudmFzLCBwcmV2aWV3Tm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJlbmRlclByZXZpZXcobmV3IENhbnZhc0Vycm9yKCksIHByZXZpZXdOb2RlKTtcbiAgICAgIH0pO1xuICB9LCBbXG4gICAgYXBwU3RhdGUsXG4gICAgZmlsZXMsXG4gICAgZXhwb3J0ZWRFbGVtZW50cyxcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIGV4cG9ydFBhZGRpbmcsXG4gICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIkV4cG9ydERpYWxvZ1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJFeHBvcnREaWFsb2dfX3ByZXZpZXdcIiByZWY9e3ByZXZpZXdSZWZ9IC8+XG4gICAgICB7c3VwcG9ydHNDb250ZXh0RmlsdGVycyAmJlxuICAgICAgICBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImV4cG9ydFdpdGhEYXJrTW9kZVwiKX1cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJncmlkXCIsIGdyaWRUZW1wbGF0ZUNvbHVtbnM6IFwiMWZyXCIgfX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgZGlzcGxheTogXCJncmlkXCIsXG4gICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiBcInJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDE5MHB4LCAxZnIpKVwiLFxuICAgICAgICAgICAgLy8gZHVubm8gd2h5IHRoaXMgaXMgbmVlZGVkLCBidXQgd2hlbiB0aGUgaXRlbXMgd3JhcCBpdCBjcmVhdGVzXG4gICAgICAgICAgICAvLyBhbiBvdmVyZmxvd1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImNoYW5nZUV4cG9ydEJhY2tncm91bmRcIil9XG4gICAgICAgICAge3NvbWVFbGVtZW50SXNTZWxlY3RlZCAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hJdGVtXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2V4cG9ydFNlbGVjdGVkfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGNoZWNrZWQpID0+IHNldEV4cG9ydFNlbGVjdGVkKGNoZWNrZWQpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcImxhYmVscy5vbmx5U2VsZWN0ZWRcIil9XG4gICAgICAgICAgICA8L0NoZWNrYm94SXRlbT5cbiAgICAgICAgICApfVxuICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImNoYW5nZUV4cG9ydEVtYmVkU2NlbmVcIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBtYXJnaW5Ub3A6IFwiLjZlbVwiIH19PlxuICAgICAgICA8U3RhY2suUm93IGdhcD17Mn0+XG4gICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2hhbmdlRXhwb3J0U2NhbGVcIil9XG4gICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgICA8cCBzdHlsZT17eyBtYXJnaW5MZWZ0OiBcIjFlbVwiLCB1c2VyU2VsZWN0OiBcIm5vbmVcIiB9fT5cbiAgICAgICAgICB7dChcImJ1dHRvbnMuc2NhbGVcIil9XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgbWFyZ2luOiBcIi42ZW0gMFwiLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7IW5hdGl2ZUZpbGVTeXN0ZW1TdXBwb3J0ZWQgJiZcbiAgICAgICAgICBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImNoYW5nZVByb2plY3ROYW1lXCIpfVxuICAgICAgPC9kaXY+XG4gICAgICA8U3RhY2suUm93IGdhcD17Mn0ganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIiBzdHlsZT17eyBtYXJnaW46IFwiMmVtIDBcIiB9fT5cbiAgICAgICAgPEV4cG9ydEJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwiaW5kaWdvXCJcbiAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuZXhwb3J0VG9QbmdcIil9XG4gICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMuZXhwb3J0VG9QbmdcIil9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25FeHBvcnRUb1BuZyhleHBvcnRlZEVsZW1lbnRzKX1cbiAgICAgICAgPlxuICAgICAgICAgIFBOR1xuICAgICAgICA8L0V4cG9ydEJ1dHRvbj5cbiAgICAgICAgPEV4cG9ydEJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwicmVkXCJcbiAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuZXhwb3J0VG9TdmdcIil9XG4gICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMuZXhwb3J0VG9TdmdcIil9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25FeHBvcnRUb1N2ZyhleHBvcnRlZEVsZW1lbnRzKX1cbiAgICAgICAgPlxuICAgICAgICAgIFNWR1xuICAgICAgICA8L0V4cG9ydEJ1dHRvbj5cbiAgICAgICAge3Byb2JhYmx5U3VwcG9ydHNDbGlwYm9hcmRCbG9iICYmIChcbiAgICAgICAgICA8RXhwb3J0QnV0dG9uXG4gICAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuY29weVBuZ1RvQ2xpcGJvYXJkXCIpfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25FeHBvcnRUb0NsaXBib2FyZChleHBvcnRlZEVsZW1lbnRzKX1cbiAgICAgICAgICAgIGNvbG9yPVwiZ3JheVwiXG4gICAgICAgICAgICBzaGFkZT17N31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2xpcGJvYXJkfVxuICAgICAgICAgIDwvRXhwb3J0QnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9TdGFjay5Sb3c+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VFeHBvcnREaWFsb2cgPSAoe1xuICBlbGVtZW50cyxcbiAgYXBwU3RhdGUsXG4gIGZpbGVzLFxuICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgYWN0aW9uTWFuYWdlcixcbiAgb25FeHBvcnRUb1BuZyxcbiAgb25FeHBvcnRUb1N2ZyxcbiAgb25FeHBvcnRUb0NsaXBib2FyZCxcbn06IHtcbiAgYXBwU3RhdGU6IEFwcFN0YXRlO1xuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W107XG4gIGZpbGVzOiBCaW5hcnlGaWxlcztcbiAgZXhwb3J0UGFkZGluZz86IG51bWJlcjtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgb25FeHBvcnRUb1BuZzogRXhwb3J0Q0I7XG4gIG9uRXhwb3J0VG9Tdmc6IEV4cG9ydENCO1xuICBvbkV4cG9ydFRvQ2xpcGJvYXJkOiBFeHBvcnRDQjtcbn0pID0+IHtcbiAgY29uc3QgW21vZGFsSXNTaG93biwgc2V0TW9kYWxJc1Nob3duXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRNb2RhbElzU2hvd24oZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIHNldE1vZGFsSXNTaG93bih0cnVlKTtcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbWFnZS1leHBvcnQtYnV0dG9uXCJcbiAgICAgICAgaWNvbj17ZXhwb3J0SW1hZ2V9XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBhcmlhLWxhYmVsPXt0KFwiYnV0dG9ucy5leHBvcnRJbWFnZVwiKX1cbiAgICAgICAgc2hvd0FyaWFMYWJlbD17dXNlRGV2aWNlKCkuaXNNb2JpbGV9XG4gICAgICAgIHRpdGxlPXt0KFwiYnV0dG9ucy5leHBvcnRJbWFnZVwiKX1cbiAgICAgIC8+XG4gICAgICB7bW9kYWxJc1Nob3duICYmIChcbiAgICAgICAgPERpYWxvZyBvbkNsb3NlUmVxdWVzdD17aGFuZGxlQ2xvc2V9IHRpdGxlPXt0KFwiYnV0dG9ucy5leHBvcnRJbWFnZVwiKX0+XG4gICAgICAgICAgPEltYWdlRXhwb3J0TW9kYWxcbiAgICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgICAgIGV4cG9ydFBhZGRpbmc9e2V4cG9ydFBhZGRpbmd9XG4gICAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgICAgb25FeHBvcnRUb1BuZz17b25FeHBvcnRUb1BuZ31cbiAgICAgICAgICAgIG9uRXhwb3J0VG9Tdmc9e29uRXhwb3J0VG9Tdmd9XG4gICAgICAgICAgICBvbkV4cG9ydFRvQ2xpcGJvYXJkPXtvbkV4cG9ydFRvQ2xpcGJvYXJkfVxuICAgICAgICAgICAgb25DbG9zZVJlcXVlc3Q9e2hhbmRsZUNsb3NlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRGlhbG9nPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.tsx\n");
2341
2330
 
2342
2331
  /***/ }),
2343
2332
 
@@ -2381,7 +2370,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2381
2370
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2382
2371
 
2383
2372
  "use strict";
2384
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data */ \"../../data/index.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \"../../components/BackgroundPickerAndDarkModeToggle.tsx\");\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CollabButton */ \"../../components/CollabButton.tsx\");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ErrorDialog */ \"../../components/ErrorDialog.tsx\");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ImageExportDialog */ \"../../components/ImageExportDialog.tsx\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./LoadingMessage */ \"../../components/LoadingMessage.tsx\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MobileMenu */ \"../../components/MobileMenu.tsx\");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./PasteChartDialog */ \"../../components/PasteChartDialog.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./HelpDialog */ \"../../components/HelpDialog.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../data/library */ \"../../data/library.ts\");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./JSONExportDialog */ \"../../components/JSONExportDialog.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./LibraryMenu */ \"../../components/LibraryMenu.tsx\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./LayerUI.scss */ \"../../components/LayerUI.scss\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_LayerUI_scss__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./Toolbar.scss */ \"../../components/Toolbar.scss\");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_Toolbar_scss__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../actions/actionToggleStats */ \"../../actions/actionToggleStats.tsx\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../actions */ \"../../actions/index.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LayerUI = ({ actionManager, appState, files, setAppState, canvas, elements, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, showThemeBtn, isCollaborating, renderTopRightUI, renderCustomFooter, renderCustomStats, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }) => {\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_34__.useDevice)();\n const renderJSONExportDialog = () => {\n if (!UIOptions.canvasActions.export) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_26__.JSONExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, exportOpts: UIOptions.canvasActions.export, canvas: canvas }));\n };\n const renderImageExportDialog = () => {\n if (!UIOptions.canvasActions.saveAsImage) {\n return null;\n }\n const createExporter = (type) => (exportedElements) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_33__.trackEvent)(\"export\", type, \"ui\");\n const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)(type, exportedElements, appState, files, {\n exportBackground: appState.exportBackground,\n name: appState.name,\n viewBackgroundColor: appState.viewBackgroundColor,\n })\n .catch(_utils__WEBPACK_IMPORTED_MODULE_8__.muteFSAbortError)\n .catch((error) => {\n console.error(error);\n setAppState({ errorMessage: error.message });\n });\n if (appState.exportEmbedScene &&\n fileHandle &&\n (0,_data_blob__WEBPACK_IMPORTED_MODULE_28__.isImageFileHandle)(fileHandle)) {\n setAppState({ fileHandle });\n }\n });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_13__.ImageExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, onExportToPng: createExporter(\"png\"), onExportToSvg: createExporter(\"svg\"), onExportToClipboard: createExporter(\"clipboard\") }));\n };\n const Separator = () => {\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { style: { width: \".625em\" } });\n };\n const renderViewModeCanvasActions = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 2, style: { zIndex: 1 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, justifyContent: \"space-between\" }, { children: [renderJSONExportDialog(), renderImageExportDialog()] })) })) })) })));\n };\n const renderCanvasActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 2, style: { zIndex: 1 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, justifyContent: \"space-between\" }, { children: [actionManager.renderAction(\"clearCanvas\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Separator, {}), actionManager.renderAction(\"loadScene\"), renderJSONExportDialog(), renderImageExportDialog(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Separator, {}), onCollabButtonClick && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { isCollaborating: isCollaborating, collaboratorCount: appState.collaborators.size, onClick: onCollabButtonClick }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_10__.BackgroundPickerAndDarkModeToggle, { actionManager: actionManager, appState: appState, setAppState: setAppState, showThemeBtn: showThemeBtn }), appState.fileHandle && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: actionManager.renderAction(\"saveToActiveFile\") }))] })) })) })));\n const renderSelectedShapeActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"selectedShapeActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU, padding: 2, style: {\n // we want to make sure this doesn't overflow so subtracting 200\n // which is approximately height of zoom footer and top left menu items with some buffer\n // if active file name is displayed, subtracting 248 to account for its height\n maxHeight: `${appState.height - (appState.fileHandle ? 248 : 200)}px`,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction, activeTool: appState.activeTool.type }) })) })));\n const closeLibrary = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\n const isDialogOpen = !!document.querySelector(\".Dialog\");\n // Prevent closing if any dialog is open\n if (isDialogOpen) {\n return;\n }\n setAppState({ isLibraryOpen: false });\n }, [setAppState]);\n const deselectItems = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\n setAppState({\n selectedElementIds: {},\n selectedGroupIds: {},\n });\n }, [setAppState]);\n const libraryMenu = appState.isLibraryOpen ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_29__.LibraryMenu, { pendingElements: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState, true), onClose: closeLibrary, onInsertLibraryItems: (libraryItems) => {\n onInsertElements((0,_data_library__WEBPACK_IMPORTED_MODULE_25__.distributeLibraryItemsOnSquareGrid)(libraryItems));\n }, onAddToLibrary: deselectItems, setAppState: setAppState, libraryReturnUrl: libraryReturnUrl, focusContainer: focusContainer, library: library, theme: appState.theme, files: files, id: id, appState: appState })) : null;\n const renderFixedSideContainer = () => {\n const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_5__.showSelectedShapeActions)(appState, elements);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_14__.FixedSideContainer, Object.assign({ side: \"top\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-menu App-menu_top\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n \"disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: [appState.viewModeEnabled\n ? renderViewModeCanvasActions()\n : renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()] })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4, align: \"start\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar-container\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_32__.PenModeButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.penMode\"), penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_18__.LockButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.activeTool.locked, onChange: () => onLockToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.lock\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_15__.HintViewer, { appState: appState, elements: elements, isMobile: device.isMobile }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_27__.LibraryButton, { appState: appState, setAppState: setAppState })] })) }))) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__top-right zen-mode-transition\", {\n \"transition-right\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_24__.UserList, { collaborators: appState.collaborators, actionManager: actionManager }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.isMobile, appState)] }))] })) })));\n };\n const renderBottomAppMenu = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ role: \"contentinfo\", className: \"layer-ui__wrapper__footer App-menu App-menu_bottom\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-left zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 2 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ZoomActions, { renderAction: actionManager.renderAction, zoom: appState.zoom }) })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"undo-redo-buttons zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) }, { children: [actionManager.renderAction(\"undo\", { size: \"small\" }), actionManager.renderAction(\"redo\", { size: \"small\" })] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"eraser-buttons zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"eraser\", { size: \"small\" }) }))] })), !appState.viewModeEnabled &&\n appState.multiElement &&\n device.isTouchScreen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"finalize-button zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"finalize\", { size: \"small\" }) })))] })) })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-center zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) }, { children: renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(false, appState) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-right zen-mode-transition\", {\n \"transition-right disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"toggleShortcuts\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"disable-zen-mode\", {\n \"disable-zen-mode--visible\": showExitZenModeBtn,\n }), onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_37__.actionToggleZenMode) }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exitZenMode\") }))] })));\n };\n const dialogs = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_17__.LoadingMessage, { delay: 250 }), appState.errorMessage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_12__.ErrorDialog, { message: appState.errorMessage, onClose: () => setAppState({ errorMessage: null }) })), appState.showHelpDialog && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_22__.HelpDialog, { onClose: () => {\n setAppState({ showHelpDialog: false });\n } })), appState.pasteDialog.shown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_20__.PasteChartDialog, { setAppState: setAppState, appState: appState, onInsertChart: onInsertElements, onClose: () => setAppState({\n pasteDialog: { shown: false, data: null },\n }) }))] }));\n const renderStats = () => {\n if (!appState.showStats) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_35__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_36__.actionToggleStats);\n }, renderCustomStats: renderCustomStats }));\n };\n return device.isMobile ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [dialogs, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_19__.MobileMenu, { appState: appState, elements: elements, actionManager: actionManager, libraryMenu: libraryMenu, renderJSONExportDialog: renderJSONExportDialog, renderImageExportDialog: renderImageExportDialog, setAppState: setAppState, onCollabButtonClick: onCollabButtonClick, onLockToggle: () => onLockToggle(), onPenModeToggle: onPenModeToggle, canvas: canvas, isCollaborating: isCollaborating, renderCustomFooter: renderCustomFooter, showThemeBtn: showThemeBtn, onImageAction: onImageAction, renderTopRightUI: renderTopRightUI, renderStats: renderStats })] })) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper\", {\n \"disable-pointerEvents\": appState.draggingElement ||\n appState.resizingElement ||\n (appState.editingElement &&\n !(0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(appState.editingElement)),\n }), style: appState.isLibraryOpen &&\n appState.isLibraryMenuDocked &&\n device.canDeviceFitSidebar\n ? { width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)` }\n : {} }, { children: [dialogs, renderFixedSideContainer(), renderBottomAppMenu(), renderStats(), appState.scrolledOutside && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scrollBackToContent\") })))] })), appState.isLibraryOpen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"layer-ui__sidebar\" }, { children: libraryMenu })))] }));\n};\nconst areEqual = (prev, next) => {\n const getNecessaryObj = (appState) => {\n const { suggestedBindings, startBoundElement: boundElement } = appState, ret = __rest(appState, [\"suggestedBindings\", \"startBoundElement\"]);\n return ret;\n };\n const prevAppState = getNecessaryObj(prev.appState);\n const nextAppState = getNecessaryObj(next.appState);\n const keys = Object.keys(prevAppState);\n return (prev.renderCustomFooter === next.renderCustomFooter &&\n prev.langCode === next.langCode &&\n prev.elements === next.elements &&\n prev.files === next.files &&\n keys.every((key) => prevAppState[key] === nextAppState[key]));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUM7SUFFcEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQWdDLENBQUM7SUFDdEUsT0FBTyxDQUNMLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsa0JBQWtCO1FBQ25ELElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVE7UUFDL0IsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtRQUMvQixJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0QsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGlFQUFlLGlEQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGF5ZXJVSS50c3g/MDg3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBBY3Rpb25NYW5hZ2VyIH0gZnJvbSBcIi4uL2FjdGlvbnMvbWFuYWdlclwiO1xuaW1wb3J0IHsgQ0xBU1NFUywgTElCUkFSWV9TSURFQkFSX1dJRFRIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZXhwb3J0Q2FudmFzIH0gZnJvbSBcIi4uL2RhdGFcIjtcbmltcG9ydCB7IGlzVGV4dEVsZW1lbnQsIHNob3dTZWxlY3RlZFNoYXBlQWN0aW9ucyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgTGFuZ3VhZ2UsIHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBFeHBvcnRUeXBlIH0gZnJvbSBcIi4uL3NjZW5lL3R5cGVzXCI7XG5pbXBvcnQgeyBBcHBQcm9wcywgQXBwU3RhdGUsIEV4Y2FsaWRyYXdQcm9wcywgQmluYXJ5RmlsZXMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IG11dGVGU0Fib3J0RXJyb3IgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFNlbGVjdGVkU2hhcGVBY3Rpb25zLCBTaGFwZXNTd2l0Y2hlciwgWm9vbUFjdGlvbnMgfSBmcm9tIFwiLi9BY3Rpb25zXCI7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGUgfSBmcm9tIFwiLi9CYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGVcIjtcbmltcG9ydCBDb2xsYWJCdXR0b24gZnJvbSBcIi4vQ29sbGFiQnV0dG9uXCI7XG5pbXBvcnQgeyBFcnJvckRpYWxvZyB9IGZyb20gXCIuL0Vycm9yRGlhbG9nXCI7XG5pbXBvcnQgeyBFeHBvcnRDQiwgSW1hZ2VFeHBvcnREaWFsb2cgfSBmcm9tIFwiLi9JbWFnZUV4cG9ydERpYWxvZ1wiO1xuaW1wb3J0IHsgRml4ZWRTaWRlQ29udGFpbmVyIH0gZnJvbSBcIi4vRml4ZWRTaWRlQ29udGFpbmVyXCI7XG5pbXBvcnQgeyBIaW50Vmlld2VyIH0gZnJvbSBcIi4vSGludFZpZXdlclwiO1xuaW1wb3J0IHsgSXNsYW5kIH0gZnJvbSBcIi4vSXNsYW5kXCI7XG5pbXBvcnQgeyBMb2FkaW5nTWVzc2FnZSB9IGZyb20gXCIuL0xvYWRpbmdNZXNzYWdlXCI7XG5pbXBvcnQgeyBMb2NrQnV0dG9uIH0gZnJvbSBcIi4vTG9ja0J1dHRvblwiO1xuaW1wb3J0IHsgTW9iaWxlTWVudSB9IGZyb20gXCIuL01vYmlsZU1lbnVcIjtcbmltcG9ydCB7IFBhc3RlQ2hhcnREaWFsb2cgfSBmcm9tIFwiLi9QYXN0ZUNoYXJ0RGlhbG9nXCI7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSBcIi4vU2VjdGlvblwiO1xuaW1wb3J0IHsgSGVscERpYWxvZyB9IGZyb20gXCIuL0hlbHBEaWFsb2dcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi9TdGFja1wiO1xuaW1wb3J0IHsgVXNlckxpc3QgfSBmcm9tIFwiLi9Vc2VyTGlzdFwiO1xuaW1wb3J0IExpYnJhcnksIHsgZGlzdHJpYnV0ZUxpYnJhcnlJdGVtc09uU3F1YXJlR3JpZCB9IGZyb20gXCIuLi9kYXRhL2xpYnJhcnlcIjtcbmltcG9ydCB7IEpTT05FeHBvcnREaWFsb2cgfSBmcm9tIFwiLi9KU09ORXhwb3J0RGlhbG9nXCI7XG5pbXBvcnQgeyBMaWJyYXJ5QnV0dG9uIH0gZnJvbSBcIi4vTGlicmFyeUJ1dHRvblwiO1xuaW1wb3J0IHsgaXNJbWFnZUZpbGVIYW5kbGUgfSBmcm9tIFwiLi4vZGF0YS9ibG9iXCI7XG5pbXBvcnQgeyBMaWJyYXJ5TWVudSB9IGZyb20gXCIuL0xpYnJhcnlNZW51XCI7XG5cbmltcG9ydCBcIi4vTGF5ZXJVSS5zY3NzXCI7XG5pbXBvcnQgXCIuL1Rvb2xiYXIuc2Nzc1wiO1xuaW1wb3J0IHsgUGVuTW9kZUJ1dHRvbiB9IGZyb20gXCIuL1Blbk1vZGVCdXR0b25cIjtcbmltcG9ydCB7IHRyYWNrRXZlbnQgfSBmcm9tIFwiLi4vYW5hbHl0aWNzXCI7XG5pbXBvcnQgeyB1c2VEZXZpY2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9BcHBcIjtcbmltcG9ydCB7IFN0YXRzIH0gZnJvbSBcIi4vU3RhdHNcIjtcbmltcG9ydCB7IGFjdGlvblRvZ2dsZVN0YXRzIH0gZnJvbSBcIi4uL2FjdGlvbnMvYWN0aW9uVG9nZ2xlU3RhdHNcIjtcbmltcG9ydCB7IGFjdGlvblRvZ2dsZVplbk1vZGUgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5pbnRlcmZhY2UgTGF5ZXJVSVByb3BzIHtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgYXBwU3RhdGU6IEFwcFN0YXRlO1xuICBmaWxlczogQmluYXJ5RmlsZXM7XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgb25Db2xsYWJCdXR0b25DbGljaz86ICgpID0+IHZvaWQ7XG4gIG9uTG9ja1RvZ2dsZTogKCkgPT4gdm9pZDtcbiAgb25QZW5Nb2RlVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvbkluc2VydEVsZW1lbnRzOiAoZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdKSA9PiB2b2lkO1xuICBzaG93RXhpdFplbk1vZGVCdG46IGJvb2xlYW47XG4gIHNob3dUaGVtZUJ0bjogYm9vbGVhbjtcbiAgbGFuZ0NvZGU6IExhbmd1YWdlW1wiY29kZVwiXTtcbiAgaXNDb2xsYWJvcmF0aW5nOiBib29sZWFuO1xuICByZW5kZXJUb3BSaWdodFVJPzogRXhjYWxpZHJhd1Byb3BzW1wicmVuZGVyVG9wUmlnaHRVSVwiXTtcbiAgcmVuZGVyQ3VzdG9tRm9vdGVyPzogRXhjYWxpZHJhd1Byb3BzW1wicmVuZGVyRm9vdGVyXCJdO1xuICByZW5kZXJDdXN0b21TdGF0cz86IEV4Y2FsaWRyYXdQcm9wc1tcInJlbmRlckN1c3RvbVN0YXRzXCJdO1xuICBsaWJyYXJ5UmV0dXJuVXJsOiBFeGNhbGlkcmF3UHJvcHNbXCJsaWJyYXJ5UmV0dXJuVXJsXCJdO1xuICBVSU9wdGlvbnM6IEFwcFByb3BzW1wiVUlPcHRpb25zXCJdO1xuICBmb2N1c0NvbnRhaW5lcjogKCkgPT4gdm9pZDtcbiAgbGlicmFyeTogTGlicmFyeTtcbiAgaWQ6IHN0cmluZztcbiAgb25JbWFnZUFjdGlvbjogKGRhdGE6IHsgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogYm9vbGVhbiB9KSA9PiB2b2lkO1xufVxuY29uc3QgTGF5ZXJVSSA9ICh7XG4gIGFjdGlvbk1hbmFnZXIsXG4gIGFwcFN0YXRlLFxuICBmaWxlcyxcbiAgc2V0QXBwU3RhdGUsXG4gIGNhbnZhcyxcbiAgZWxlbWVudHMsXG4gIG9uQ29sbGFiQnV0dG9uQ2xpY2ssXG4gIG9uTG9ja1RvZ2dsZSxcbiAgb25QZW5Nb2RlVG9nZ2xlLFxuICBvbkluc2VydEVsZW1lbnRzLFxuICBzaG93RXhpdFplbk1vZGVCdG4sXG4gIHNob3dUaGVtZUJ0bixcbiAgaXNDb2xsYWJvcmF0aW5nLFxuICByZW5kZXJUb3BSaWdodFVJLFxuICByZW5kZXJDdXN0b21Gb290ZXIsXG4gIHJlbmRlckN1c3RvbVN0YXRzLFxuICBsaWJyYXJ5UmV0dXJuVXJsLFxuICBVSU9wdGlvbnMsXG4gIGZvY3VzQ29udGFpbmVyLFxuICBsaWJyYXJ5LFxuICBpZCxcbiAgb25JbWFnZUFjdGlvbixcbn06IExheWVyVUlQcm9wcykgPT4ge1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcblxuICBjb25zdCByZW5kZXJKU09ORXhwb3J0RGlhbG9nID0gKCkgPT4ge1xuICAgIGlmICghVUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEpTT05FeHBvcnREaWFsb2dcbiAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgZXhwb3J0T3B0cz17VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0fVxuICAgICAgICBjYW52YXM9e2NhbnZhc31cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbWFnZUV4cG9ydERpYWxvZyA9ICgpID0+IHtcbiAgICBpZiAoIVVJT3B0aW9ucy5jYW52YXNBY3Rpb25zLnNhdmVBc0ltYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVFeHBvcnRlciA9XG4gICAgICAodHlwZTogRXhwb3J0VHlwZSk6IEV4cG9ydENCID0+XG4gICAgICBhc3luYyAoZXhwb3J0ZWRFbGVtZW50cykgPT4ge1xuICAgICAgICB0cmFja0V2ZW50KFwiZXhwb3J0XCIsIHR5cGUsIFwidWlcIik7XG4gICAgICAgIGNvbnN0IGZpbGVIYW5kbGUgPSBhd2FpdCBleHBvcnRDYW52YXMoXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBleHBvcnRlZEVsZW1lbnRzLFxuICAgICAgICAgIGFwcFN0YXRlLFxuICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQsXG4gICAgICAgICAgICBuYW1lOiBhcHBTdGF0ZS5uYW1lLFxuICAgICAgICAgICAgdmlld0JhY2tncm91bmRDb2xvcjogYXBwU3RhdGUudmlld0JhY2tncm91bmRDb2xvcixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgICAgLmNhdGNoKG11dGVGU0Fib3J0RXJyb3IpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGVycm9yTWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgYXBwU3RhdGUuZXhwb3J0RW1iZWRTY2VuZSAmJlxuICAgICAgICAgIGZpbGVIYW5kbGUgJiZcbiAgICAgICAgICBpc0ltYWdlRmlsZUhhbmRsZShmaWxlSGFuZGxlKVxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGZpbGVIYW5kbGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEltYWdlRXhwb3J0RGlhbG9nXG4gICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBmaWxlcz17ZmlsZXN9XG4gICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgIG9uRXhwb3J0VG9Qbmc9e2NyZWF0ZUV4cG9ydGVyKFwicG5nXCIpfVxuICAgICAgICBvbkV4cG9ydFRvU3ZnPXtjcmVhdGVFeHBvcnRlcihcInN2Z1wiKX1cbiAgICAgICAgb25FeHBvcnRUb0NsaXBib2FyZD17Y3JlYXRlRXhwb3J0ZXIoXCJjbGlwYm9hcmRcIil9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgU2VwYXJhdG9yID0gKCkgPT4ge1xuICAgIHJldHVybiA8ZGl2IHN0eWxlPXt7IHdpZHRoOiBcIi42MjVlbVwiIH19IC8+O1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclZpZXdNb2RlQ2FudmFzQWN0aW9ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNlY3Rpb25cbiAgICAgICAgaGVhZGluZz1cImNhbnZhc0FjdGlvbnNcIlxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJ6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgICBcInRyYW5zaXRpb24tbGVmdFwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgfSl9XG4gICAgICA+XG4gICAgICAgIHsvKiB0aGUgekluZGV4IGVuc3VyZXMgdGhpcyBtZW51IGhhcyBoaWdoZXIgc3RhY2tpbmcgb3JkZXIsXG4gICAgICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9wdWxsLzE0NDUgKi99XG4gICAgICAgIDxJc2xhbmQgcGFkZGluZz17Mn0gc3R5bGU9e3sgekluZGV4OiAxIH19PlxuICAgICAgICAgIDxTdGFjay5Db2wgZ2FwPXs0fT5cbiAgICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgICAge3JlbmRlckpTT05FeHBvcnREaWFsb2coKX1cbiAgICAgICAgICAgICAge3JlbmRlckltYWdlRXhwb3J0RGlhbG9nKCl9XG4gICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICA8L1N0YWNrLkNvbD5cbiAgICAgICAgPC9Jc2xhbmQ+XG4gICAgICA8L1NlY3Rpb24+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJDYW52YXNBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxTZWN0aW9uXG4gICAgICBoZWFkaW5nPVwiY2FudmFzQWN0aW9uc1wiXG4gICAgICBjbGFzc05hbWU9e2Nsc3goXCJ6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgXCJ0cmFuc2l0aW9uLWxlZnRcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICB7LyogdGhlIHpJbmRleCBlbnN1cmVzIHRoaXMgbWVudSBoYXMgaGlnaGVyIHN0YWNraW5nIG9yZGVyLFxuICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNDQ1ICovfVxuICAgICAgPElzbGFuZCBwYWRkaW5nPXsyfSBzdHlsZT17eyB6SW5kZXg6IDEgfX0+XG4gICAgICAgIDxTdGFjay5Db2wgZ2FwPXs0fT5cbiAgICAgICAgICA8U3RhY2suUm93IGdhcD17MX0ganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJjbGVhckNhbnZhc1wiKX1cbiAgICAgICAgICAgIDxTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImxvYWRTY2VuZVwiKX1cbiAgICAgICAgICAgIHtyZW5kZXJKU09ORXhwb3J0RGlhbG9nKCl9XG4gICAgICAgICAgICB7cmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKX1cbiAgICAgICAgICAgIDxTZXBhcmF0b3IgLz5cbiAgICAgICAgICAgIHtvbkNvbGxhYkJ1dHRvbkNsaWNrICYmIChcbiAgICAgICAgICAgICAgPENvbGxhYkJ1dHRvblxuICAgICAgICAgICAgICAgIGlzQ29sbGFib3JhdGluZz17aXNDb2xsYWJvcmF0aW5nfVxuICAgICAgICAgICAgICAgIGNvbGxhYm9yYXRvckNvdW50PXthcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemV9XG4gICAgICAgICAgICAgICAgb25DbGljaz17b25Db2xsYWJCdXR0b25DbGlja31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgPEJhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZVxuICAgICAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgIHNob3dUaGVtZUJ0bj17c2hvd1RoZW1lQnRufVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2FwcFN0YXRlLmZpbGVIYW5kbGUgJiYgKFxuICAgICAgICAgICAgPD57YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJzYXZlVG9BY3RpdmVGaWxlXCIpfTwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgPC9Jc2xhbmQ+XG4gICAgPC9TZWN0aW9uPlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxTZWN0aW9uXG4gICAgICBoZWFkaW5nPVwic2VsZWN0ZWRTaGFwZUFjdGlvbnNcIlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgIFwidHJhbnNpdGlvbi1sZWZ0XCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgfSl9XG4gICAgPlxuICAgICAgPElzbGFuZFxuICAgICAgICBjbGFzc05hbWU9e0NMQVNTRVMuU0hBUEVfQUNUSU9OU19NRU5VfVxuICAgICAgICBwYWRkaW5nPXsyfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC8vIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBzbyBzdWJ0cmFjdGluZyAyMDBcbiAgICAgICAgICAvLyB3aGljaCBpcyBhcHByb3hpbWF0ZWx5IGhlaWdodCBvZiB6b29tIGZvb3RlciBhbmQgdG9wIGxlZnQgbWVudSBpdGVtcyB3aXRoIHNvbWUgYnVmZmVyXG4gICAgICAgICAgLy8gaWYgYWN0aXZlIGZpbGUgbmFtZSBpcyBkaXNwbGF5ZWQsIHN1YnRyYWN0aW5nIDI0OCB0byBhY2NvdW50IGZvciBpdHMgaGVpZ2h0XG4gICAgICAgICAgbWF4SGVpZ2h0OiBgJHthcHBTdGF0ZS5oZWlnaHQgLSAoYXBwU3RhdGUuZmlsZUhhbmRsZSA/IDI0OCA6IDIwMCl9cHhgLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8U2VsZWN0ZWRTaGFwZUFjdGlvbnNcbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgYWN0aXZlVG9vbD17YXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlfVxuICAgICAgICAvPlxuICAgICAgPC9Jc2xhbmQ+XG4gICAgPC9TZWN0aW9uPlxuICApO1xuXG4gIGNvbnN0IGNsb3NlTGlicmFyeSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBpc0RpYWxvZ09wZW4gPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuRGlhbG9nXCIpO1xuXG4gICAgLy8gUHJldmVudCBjbG9zaW5nIGlmIGFueSBkaWFsb2cgaXMgb3BlblxuICAgIGlmIChpc0RpYWxvZ09wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0QXBwU3RhdGUoeyBpc0xpYnJhcnlPcGVuOiBmYWxzZSB9KTtcbiAgfSwgW3NldEFwcFN0YXRlXSk7XG5cbiAgY29uc3QgZGVzZWxlY3RJdGVtcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICBzZWxlY3RlZEVsZW1lbnRJZHM6IHt9LFxuICAgICAgc2VsZWN0ZWRHcm91cElkczoge30sXG4gICAgfSk7XG4gIH0sIFtzZXRBcHBTdGF0ZV0pO1xuXG4gIGNvbnN0IGxpYnJhcnlNZW51ID0gYXBwU3RhdGUuaXNMaWJyYXJ5T3BlbiA/IChcbiAgICA8TGlicmFyeU1lbnVcbiAgICAgIHBlbmRpbmdFbGVtZW50cz17Z2V0U2VsZWN0ZWRFbGVtZW50cyhlbGVtZW50cywgYXBwU3RhdGUsIHRydWUpfVxuICAgICAgb25DbG9zZT17Y2xvc2VMaWJyYXJ5fVxuICAgICAgb25JbnNlcnRMaWJyYXJ5SXRlbXM9eyhsaWJyYXJ5SXRlbXMpID0+IHtcbiAgICAgICAgb25JbnNlcnRFbGVtZW50cyhkaXN0cmlidXRlTGlicmFyeUl0ZW1zT25TcXVhcmVHcmlkKGxpYnJhcnlJdGVtcykpO1xuICAgICAgfX1cbiAgICAgIG9uQWRkVG9MaWJyYXJ5PXtkZXNlbGVjdEl0ZW1zfVxuICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgbGlicmFyeVJldHVyblVybD17bGlicmFyeVJldHVyblVybH1cbiAgICAgIGZvY3VzQ29udGFpbmVyPXtmb2N1c0NvbnRhaW5lcn1cbiAgICAgIGxpYnJhcnk9e2xpYnJhcnl9XG4gICAgICB0aGVtZT17YXBwU3RhdGUudGhlbWV9XG4gICAgICBmaWxlcz17ZmlsZXN9XG4gICAgICBpZD17aWR9XG4gICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgLz5cbiAgKSA6IG51bGw7XG5cbiAgY29uc3QgcmVuZGVyRml4ZWRTaWRlQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zID0gc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zKFxuICAgICAgYXBwU3RhdGUsXG4gICAgICBlbGVtZW50cyxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGaXhlZFNpZGVDb250YWluZXIgc2lkZT1cInRvcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC1tZW51IEFwcC1tZW51X3RvcFwiPlxuICAgICAgICAgIDxTdGFjay5Db2xcbiAgICAgICAgICAgIGdhcD17NH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeCh7XG4gICAgICAgICAgICAgIFwiZGlzYWJsZS1wb2ludGVyRXZlbnRzXCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZFxuICAgICAgICAgICAgICA/IHJlbmRlclZpZXdNb2RlQ2FudmFzQWN0aW9ucygpXG4gICAgICAgICAgICAgIDogcmVuZGVyQ2FudmFzQWN0aW9ucygpfVxuICAgICAgICAgICAge3Nob3VsZFJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zICYmIHJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zKCl9XG4gICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgPFNlY3Rpb24gaGVhZGluZz1cInNoYXBlc1wiPlxuICAgICAgICAgICAgICB7KGhlYWRpbmcpID0+IChcbiAgICAgICAgICAgICAgICA8U3RhY2suQ29sIGdhcD17NH0gYWxpZ249XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrLlJvd1xuICAgICAgICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcIkFwcC10b29sYmFyLWNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJ6ZW4tbW9kZVwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxQZW5Nb2RlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgemVuTW9kZUVuYWJsZWQ9e2FwcFN0YXRlLnplbk1vZGVFbmFibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FwcFN0YXRlLnBlbk1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uUGVuTW9kZVRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIucGVuTW9kZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICBwZW5EZXRlY3RlZD17YXBwU3RhdGUucGVuRGV0ZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxMb2NrQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgemVuTW9kZUVuYWJsZWQ9e2FwcFN0YXRlLnplbk1vZGVFbmFibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FwcFN0YXRlLmFjdGl2ZVRvb2wubG9ja2VkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkxvY2tUb2dnbGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIubG9ja1wiKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPElzbGFuZFxuICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiQXBwLXRvb2xiYXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ6ZW4tbW9kZVwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaW50Vmlld2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vYmlsZT17ZGV2aWNlLmlzTW9iaWxlfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgPFN0YWNrLlJvdyBnYXA9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNoYXBlc1N3aXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzPXtjYW52YXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2w9e2FwcFN0YXRlLmFjdGl2ZVRvb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbj17KHsgcG9pbnRlclR5cGUgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogcG9pbnRlclR5cGUgIT09IFwibW91c2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICAgICAgICAgIDwvSXNsYW5kPlxuICAgICAgICAgICAgICAgICAgICA8TGlicmFyeUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAgICA8L1N0YWNrLkNvbD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fdG9wLXJpZ2h0IHplbi1tb2RlLXRyYW5zaXRpb25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwidHJhbnNpdGlvbi1yaWdodFwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFVzZXJMaXN0XG4gICAgICAgICAgICAgIGNvbGxhYm9yYXRvcnM9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnN9XG4gICAgICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge3JlbmRlclRvcFJpZ2h0VUk/LihkZXZpY2UuaXNNb2JpbGUsIGFwcFN0YXRlKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0ZpeGVkU2lkZUNvbnRhaW5lcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckJvdHRvbUFwcE1lbnUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxmb290ZXJcbiAgICAgICAgcm9sZT1cImNvbnRlbnRpbmZvXCJcbiAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3RlciBBcHAtbWVudSBBcHAtbWVudV9ib3R0b21cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQgemVuLW1vZGUtdHJhbnNpdGlvblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1sZWZ0XCI6XG4gICAgICAgICAgICAgICAgYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2suQ29sIGdhcD17Mn0+XG4gICAgICAgICAgICA8U2VjdGlvbiBoZWFkaW5nPVwiY2FudmFzQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8SXNsYW5kIHBhZGRpbmc9ezF9PlxuICAgICAgICAgICAgICAgIDxab29tQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgICAgICAgICAgIHpvb209e2FwcFN0YXRlLnpvb219XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Jc2xhbmQ+XG4gICAgICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJ1bmRvLXJlZG8tYnV0dG9ucyB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1ib3R0b21cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidW5kb1wiLCB7IHNpemU6IFwic21hbGxcIiB9KX1cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwicmVkb1wiLCB7IHNpemU6IFwic21hbGxcIiB9KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcImVyYXNlci1idXR0b25zIHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0LS10cmFuc2l0aW9uLWxlZnRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZXJhc2VyXCIsIHsgc2l6ZTogXCJzbWFsbFwiIH0pfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmXG4gICAgICAgICAgICAgICAgYXBwU3RhdGUubXVsdGlFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgZGV2aWNlLmlzVG91Y2hTY3JlZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJmaW5hbGl6ZS1idXR0b24gemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQtLXRyYW5zaXRpb24tbGVmdFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJmaW5hbGl6ZVwiLCB7IHNpemU6IFwic21hbGxcIiB9KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWNlbnRlciB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0LS10cmFuc2l0aW9uLWJvdHRvbVwiOlxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAge3JlbmRlckN1c3RvbUZvb3Rlcj8uKGZhbHNlLCBhcHBTdGF0ZSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLXJpZ2h0IHplbi1tb2RlLXRyYW5zaXRpb25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0cmFuc2l0aW9uLXJpZ2h0IGRpc2FibGUtcG9pbnRlckV2ZW50c1wiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZVNob3J0Y3V0c1wiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJkaXNhYmxlLXplbi1tb2RlXCIsIHtcbiAgICAgICAgICAgIFwiZGlzYWJsZS16ZW4tbW9kZS0tdmlzaWJsZVwiOiBzaG93RXhpdFplbk1vZGVCdG4sXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gYWN0aW9uTWFuYWdlci5leGVjdXRlQWN0aW9uKGFjdGlvblRvZ2dsZVplbk1vZGUpfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJidXR0b25zLmV4aXRaZW5Nb2RlXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZGlhbG9ncyA9IChcbiAgICA8PlxuICAgICAge2FwcFN0YXRlLmlzTG9hZGluZyAmJiA8TG9hZGluZ01lc3NhZ2UgZGVsYXk9ezI1MH0gLz59XG4gICAgICB7YXBwU3RhdGUuZXJyb3JNZXNzYWdlICYmIChcbiAgICAgICAgPEVycm9yRGlhbG9nXG4gICAgICAgICAgbWVzc2FnZT17YXBwU3RhdGUuZXJyb3JNZXNzYWdlfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBudWxsIH0pfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHthcHBTdGF0ZS5zaG93SGVscERpYWxvZyAmJiAoXG4gICAgICAgIDxIZWxwRGlhbG9nXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBzaG93SGVscERpYWxvZzogZmFsc2UgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7YXBwU3RhdGUucGFzdGVEaWFsb2cuc2hvd24gJiYgKFxuICAgICAgICA8UGFzdGVDaGFydERpYWxvZ1xuICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgb25JbnNlcnRDaGFydD17b25JbnNlcnRFbGVtZW50c31cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PlxuICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICBwYXN0ZURpYWxvZzogeyBzaG93bjogZmFsc2UsIGRhdGE6IG51bGwgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGF0cyA9ICgpID0+IHtcbiAgICBpZiAoIWFwcFN0YXRlLnNob3dTdGF0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8U3RhdHNcbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgIGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25Ub2dnbGVTdGF0cyk7XG4gICAgICAgIH19XG4gICAgICAgIHJlbmRlckN1c3RvbVN0YXRzPXtyZW5kZXJDdXN0b21TdGF0c31cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gZGV2aWNlLmlzTW9iaWxlID8gKFxuICAgIDw+XG4gICAgICB7ZGlhbG9nc31cbiAgICAgIDxNb2JpbGVNZW51XG4gICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICBsaWJyYXJ5TWVudT17bGlicmFyeU1lbnV9XG4gICAgICAgIHJlbmRlckpTT05FeHBvcnREaWFsb2c9e3JlbmRlckpTT05FeHBvcnREaWFsb2d9XG4gICAgICAgIHJlbmRlckltYWdlRXhwb3J0RGlhbG9nPXtyZW5kZXJJbWFnZUV4cG9ydERpYWxvZ31cbiAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrPXtvbkNvbGxhYkJ1dHRvbkNsaWNrfVxuICAgICAgICBvbkxvY2tUb2dnbGU9eygpID0+IG9uTG9ja1RvZ2dsZSgpfVxuICAgICAgICBvblBlbk1vZGVUb2dnbGU9e29uUGVuTW9kZVRvZ2dsZX1cbiAgICAgICAgY2FudmFzPXtjYW52YXN9XG4gICAgICAgIGlzQ29sbGFib3JhdGluZz17aXNDb2xsYWJvcmF0aW5nfVxuICAgICAgICByZW5kZXJDdXN0b21Gb290ZXI9e3JlbmRlckN1c3RvbUZvb3Rlcn1cbiAgICAgICAgc2hvd1RoZW1lQnRuPXtzaG93VGhlbWVCdG59XG4gICAgICAgIG9uSW1hZ2VBY3Rpb249e29uSW1hZ2VBY3Rpb259XG4gICAgICAgIHJlbmRlclRvcFJpZ2h0VUk9e3JlbmRlclRvcFJpZ2h0VUl9XG4gICAgICAgIHJlbmRlclN0YXRzPXtyZW5kZXJTdGF0c31cbiAgICAgIC8+XG4gICAgPC8+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwibGF5ZXItdWlfX3dyYXBwZXJcIiwge1xuICAgICAgICAgIFwiZGlzYWJsZS1wb2ludGVyRXZlbnRzXCI6XG4gICAgICAgICAgICBhcHBTdGF0ZS5kcmFnZ2luZ0VsZW1lbnQgfHxcbiAgICAgICAgICAgIGFwcFN0YXRlLnJlc2l6aW5nRWxlbWVudCB8fFxuICAgICAgICAgICAgKGFwcFN0YXRlLmVkaXRpbmdFbGVtZW50ICYmXG4gICAgICAgICAgICAgICFpc1RleHRFbGVtZW50KGFwcFN0YXRlLmVkaXRpbmdFbGVtZW50KSksXG4gICAgICAgIH0pfVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAgYXBwU3RhdGUuaXNMaWJyYXJ5T3BlbiAmJlxuICAgICAgICAgIGFwcFN0YXRlLmlzTGlicmFyeU1lbnVEb2NrZWQgJiZcbiAgICAgICAgICBkZXZpY2UuY2FuRGV2aWNlRml0U2lkZWJhclxuICAgICAgICAgICAgPyB7IHdpZHRoOiBgY2FsYygxMDAlIC0gJHtMSUJSQVJZX1NJREVCQVJfV0lEVEh9cHgpYCB9XG4gICAgICAgICAgICA6IHt9XG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAge2RpYWxvZ3N9XG4gICAgICAgIHtyZW5kZXJGaXhlZFNpZGVDb250YWluZXIoKX1cbiAgICAgICAge3JlbmRlckJvdHRvbUFwcE1lbnUoKX1cbiAgICAgICAge3JlbmRlclN0YXRzKCl9XG4gICAgICAgIHthcHBTdGF0ZS5zY3JvbGxlZE91dHNpZGUgJiYgKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInNjcm9sbC1iYWNrLXRvLWNvbnRlbnRcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4uY2FsY3VsYXRlU2Nyb2xsQ2VudGVyKGVsZW1lbnRzLCBhcHBTdGF0ZSwgY2FudmFzKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwiYnV0dG9ucy5zY3JvbGxCYWNrVG9Db250ZW50XCIpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgICB7YXBwU3RhdGUuaXNMaWJyYXJ5T3BlbiAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF5ZXItdWlfX3NpZGViYXJcIj57bGlicmFyeU1lbnV9PC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgYXJlRXF1YWwgPSAocHJldjogTGF5ZXJVSVByb3BzLCBuZXh0OiBMYXllclVJUHJvcHMpID0+IHtcbiAgY29uc3QgZ2V0TmVjZXNzYXJ5T2JqID0gKGFwcFN0YXRlOiBBcHBTdGF0ZSk6IFBhcnRpYWw8QXBwU3RhdGU+ID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzdWdnZXN0ZWRCaW5kaW5ncyxcbiAgICAgIHN0YXJ0Qm91bmRFbGVtZW50OiBib3VuZEVsZW1lbnQsXG4gICAgICAuLi5yZXRcbiAgICB9ID0gYXBwU3RhdGU7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgY29uc3QgcHJldkFwcFN0YXRlID0gZ2V0TmVjZXNzYXJ5T2JqKHByZXYuYXBwU3RhdGUpO1xuICBjb25zdCBuZXh0QXBwU3RhdGUgPSBnZXROZWNlc3NhcnlPYmoobmV4dC5hcHBTdGF0ZSk7XG5cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByZXZBcHBTdGF0ZSkgYXMgKGtleW9mIFBhcnRpYWw8QXBwU3RhdGU+KVtdO1xuICByZXR1cm4gKFxuICAgIHByZXYucmVuZGVyQ3VzdG9tRm9vdGVyID09PSBuZXh0LnJlbmRlckN1c3RvbUZvb3RlciAmJlxuICAgIHByZXYubGFuZ0NvZGUgPT09IG5leHQubGFuZ0NvZGUgJiZcbiAgICBwcmV2LmVsZW1lbnRzID09PSBuZXh0LmVsZW1lbnRzICYmXG4gICAgcHJldi5maWxlcyA9PT0gbmV4dC5maWxlcyAmJlxuICAgIGtleXMuZXZlcnkoKGtleSkgPT4gcHJldkFwcFN0YXRlW2tleV0gPT09IG5leHRBcHBTdGF0ZVtrZXldKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QubWVtbyhMYXllclVJLCBhcmVFcXVhbCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n");
2373
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data */ \"../../data/index.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \"../../components/BackgroundPickerAndDarkModeToggle.tsx\");\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CollabButton */ \"../../components/CollabButton.tsx\");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ErrorDialog */ \"../../components/ErrorDialog.tsx\");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ImageExportDialog */ \"../../components/ImageExportDialog.tsx\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./LoadingMessage */ \"../../components/LoadingMessage.tsx\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MobileMenu */ \"../../components/MobileMenu.tsx\");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./PasteChartDialog */ \"../../components/PasteChartDialog.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./HelpDialog */ \"../../components/HelpDialog.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../data/library */ \"../../data/library.ts\");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./JSONExportDialog */ \"../../components/JSONExportDialog.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./LibraryMenu */ \"../../components/LibraryMenu.tsx\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./LayerUI.scss */ \"../../components/LayerUI.scss\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_LayerUI_scss__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./Toolbar.scss */ \"../../components/Toolbar.scss\");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_Toolbar_scss__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../actions/actionToggleStats */ \"../../actions/actionToggleStats.tsx\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../actions */ \"../../actions/index.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LayerUI = ({ actionManager, appState, files, setAppState, canvas, elements, onCollabButtonClick, onLockToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, showThemeBtn, isCollaborating, renderTopRightUI, renderCustomFooter, renderCustomStats, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, }) => {\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_34__.useDevice)();\n const renderJSONExportDialog = () => {\n if (!UIOptions.canvasActions.export) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_26__.JSONExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, exportOpts: UIOptions.canvasActions.export, canvas: canvas }));\n };\n const renderImageExportDialog = () => {\n if (!UIOptions.canvasActions.saveAsImage) {\n return null;\n }\n const createExporter = (type) => (exportedElements) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_33__.trackEvent)(\"export\", type, \"ui\");\n const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)(type, exportedElements, appState, files, {\n exportBackground: appState.exportBackground,\n name: appState.name,\n viewBackgroundColor: appState.viewBackgroundColor,\n })\n .catch(_utils__WEBPACK_IMPORTED_MODULE_8__.muteFSAbortError)\n .catch((error) => {\n console.error(error);\n setAppState({ errorMessage: error.message });\n });\n if (appState.exportEmbedScene &&\n fileHandle &&\n (0,_data_blob__WEBPACK_IMPORTED_MODULE_28__.isImageFileHandle)(fileHandle)) {\n setAppState({ fileHandle });\n }\n });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_13__.ImageExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, onExportToPng: createExporter(\"png\"), onExportToSvg: createExporter(\"svg\"), onExportToClipboard: createExporter(\"clipboard\") }));\n };\n const Separator = () => {\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { style: { width: \".625em\" } });\n };\n const renderViewModeCanvasActions = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 2, style: { zIndex: 1 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, justifyContent: \"space-between\" }, { children: [renderJSONExportDialog(), renderImageExportDialog()] })) })) })) })));\n };\n const renderCanvasActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 2, style: { zIndex: 1 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, justifyContent: \"space-between\" }, { children: [actionManager.renderAction(\"clearCanvas\"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Separator, {}), actionManager.renderAction(\"loadScene\"), renderJSONExportDialog(), renderImageExportDialog(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Separator, {}), onCollabButtonClick && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { isCollaborating: isCollaborating, collaboratorCount: appState.collaborators.size, onClick: onCollabButtonClick }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_10__.BackgroundPickerAndDarkModeToggle, { actionManager: actionManager, appState: appState, setAppState: setAppState, showThemeBtn: showThemeBtn }), appState.fileHandle && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: actionManager.renderAction(\"saveToActiveFile\") }))] })) })) })));\n const renderSelectedShapeActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"selectedShapeActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU, padding: 2, style: {\n // we want to make sure this doesn't overflow so subtracting 200\n // which is approximately height of zoom footer and top left menu items with some buffer\n // if active file name is displayed, subtracting 248 to account for its height\n maxHeight: `${appState.height - (appState.fileHandle ? 248 : 200)}px`,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction, activeTool: appState.activeTool.type }) })) })));\n const closeLibrary = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\n const isDialogOpen = !!document.querySelector(\".Dialog\");\n // Prevent closing if any dialog is open\n if (isDialogOpen) {\n return;\n }\n setAppState({ isLibraryOpen: false });\n }, [setAppState]);\n const deselectItems = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {\n setAppState({\n selectedElementIds: {},\n selectedGroupIds: {},\n });\n }, [setAppState]);\n const libraryMenu = appState.isLibraryOpen ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_29__.LibraryMenu, { pendingElements: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState, true), onClose: closeLibrary, onInsertLibraryItems: (libraryItems) => {\n onInsertElements((0,_data_library__WEBPACK_IMPORTED_MODULE_25__.distributeLibraryItemsOnSquareGrid)(libraryItems));\n }, onAddToLibrary: deselectItems, setAppState: setAppState, libraryReturnUrl: libraryReturnUrl, focusContainer: focusContainer, library: library, theme: appState.theme, files: files, id: id, appState: appState })) : null;\n const renderFixedSideContainer = () => {\n const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_5__.showSelectedShapeActions)(appState, elements);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_14__.FixedSideContainer, Object.assign({ side: \"top\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-menu App-menu_top\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n \"disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: [appState.viewModeEnabled\n ? renderViewModeCanvasActions()\n : renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()] })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 4, align: \"start\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar-container\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_32__.PenModeButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.penMode\"), penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_18__.LockButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.activeTool.locked, onChange: () => onLockToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.lock\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_15__.HintViewer, { appState: appState, elements: elements, isMobile: device.isMobile }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_27__.LibraryButton, { appState: appState, setAppState: setAppState })] })) }))) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__top-right zen-mode-transition\", {\n \"transition-right\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_24__.UserList, { collaborators: appState.collaborators, actionManager: actionManager }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.isMobile, appState)] }))] })) })));\n };\n const renderBottomAppMenu = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ role: \"contentinfo\", className: \"layer-ui__wrapper__footer App-menu App-menu_bottom\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-left zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_23__[\"default\"].Col, Object.assign({ gap: 2 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_21__.Section, Object.assign({ heading: \"canvasActions\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_16__.Island, Object.assign({ padding: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ZoomActions, { renderAction: actionManager.renderAction, zoom: appState.zoom }) })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"undo-redo-buttons zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) }, { children: [actionManager.renderAction(\"undo\", { size: \"small\" }), actionManager.renderAction(\"redo\", { size: \"small\" })] })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"eraser-buttons zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"eraser\", { size: \"small\" }) }))] })), !appState.viewModeEnabled &&\n appState.multiElement &&\n device.isTouchScreen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"finalize-button zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"finalize\", { size: \"small\" }) })))] })) })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-center zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) }, { children: renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(false, appState) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-right zen-mode-transition\", {\n \"transition-right disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: actionManager.renderAction(\"toggleShortcuts\") })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"disable-zen-mode\", {\n \"disable-zen-mode--visible\": showExitZenModeBtn,\n }), onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_37__.actionToggleZenMode) }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.exitZenMode\") }))] })));\n };\n const dialogs = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_17__.LoadingMessage, { delay: 250 }), appState.errorMessage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_12__.ErrorDialog, { message: appState.errorMessage, onClose: () => setAppState({ errorMessage: null }) })), appState.showHelpDialog && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_22__.HelpDialog, { onClose: () => {\n setAppState({ showHelpDialog: false });\n } })), appState.pasteDialog.shown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_20__.PasteChartDialog, { setAppState: setAppState, appState: appState, onInsertChart: onInsertElements, onClose: () => setAppState({\n pasteDialog: { shown: false, data: null },\n }) }))] }));\n const renderStats = () => {\n if (!appState.showStats) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_35__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_36__.actionToggleStats);\n }, renderCustomStats: renderCustomStats }));\n };\n return device.isMobile ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [dialogs, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_19__.MobileMenu, { appState: appState, elements: elements, actionManager: actionManager, libraryMenu: libraryMenu, renderJSONExportDialog: renderJSONExportDialog, renderImageExportDialog: renderImageExportDialog, setAppState: setAppState, onCollabButtonClick: onCollabButtonClick, onLockToggle: () => onLockToggle(), onPenModeToggle: onPenModeToggle, canvas: canvas, isCollaborating: isCollaborating, renderCustomFooter: renderCustomFooter, showThemeBtn: showThemeBtn, onImageAction: onImageAction, renderTopRightUI: renderTopRightUI, renderStats: renderStats })] })) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper\", {\n \"disable-pointerEvents\": appState.draggingElement ||\n appState.resizingElement ||\n (appState.editingElement &&\n !(0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(appState.editingElement)),\n }), style: appState.isLibraryOpen &&\n appState.isLibraryMenuDocked &&\n device.canDeviceFitSidebar\n ? { width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)` }\n : {} }, { children: [dialogs, renderFixedSideContainer(), renderBottomAppMenu(), renderStats(), appState.scrolledOutside && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scrollBackToContent\") })))] })), appState.isLibraryOpen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"layer-ui__sidebar\" }, { children: libraryMenu })))] }));\n};\nconst areEqual = (prev, next) => {\n const getNecessaryObj = (appState) => {\n const { suggestedBindings, startBoundElement: boundElement } = appState, ret = __rest(appState, [\"suggestedBindings\", \"startBoundElement\"]);\n return ret;\n };\n const prevAppState = getNecessaryObj(prev.appState);\n const nextAppState = getNecessaryObj(next.appState);\n const keys = Object.keys(prevAppState);\n return (prev.renderCustomFooter === next.renderCustomFooter &&\n prev.langCode === next.langCode &&\n prev.elements === next.elements &&\n prev.files === next.files &&\n keys.every((key) => prevAppState[key] === nextAppState[key]));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBd0I7QUFDbUI7QUFFbUI7QUFDdkI7QUFDOEI7QUFFL0I7QUFDZ0M7QUFHMUI7QUFDa0M7QUFDVTtBQUM5QztBQUNFO0FBQ3NCO0FBQ1I7QUFDaEI7QUFDUjtBQUNnQjtBQUNSO0FBQ0E7QUFDWTtBQUNsQjtBQUNNO0FBQ2Q7QUFDVTtBQUN3QztBQUN4QjtBQUNOO0FBQ0M7QUFDTDtBQUVwQjtBQUNBO0FBQ3dCO0FBQ047QUFDSTtBQUNkO0FBQ2lDO0FBQ2hCO0FBMkJqRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsY0FBYyxFQUNkLE9BQU8sRUFDUCxFQUFFLEVBQ0YsYUFBYSxHQUNBLEVBQUUsRUFBRTtJQUNqQixNQUFNLE1BQU0sR0FBRywyREFBUyxFQUFFLENBQUM7SUFFM0IsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLENBQ0wsdURBQUMsZ0VBQWdCLElBQ2YsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsS0FBSyxFQUFFLEtBQUssRUFDWixhQUFhLEVBQUUsYUFBYSxFQUM1QixVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQzFDLE1BQU0sRUFBRSxNQUFNLEdBQ2QsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEVBQUU7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGNBQWMsR0FDbEIsQ0FBQyxJQUFnQixFQUFZLEVBQUUsQ0FDL0IsQ0FBTyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pCLHVEQUFVLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FBRyxNQUFNLG1EQUFZLENBQ25DLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLEtBQUssRUFDTDtnQkFDRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCO2dCQUMzQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxtQkFBbUI7YUFDbEQsQ0FDRjtpQkFDRSxLQUFLLENBQUMsb0RBQWdCLENBQUM7aUJBQ3ZCLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztZQUVMLElBQ0UsUUFBUSxDQUFDLGdCQUFnQjtnQkFDekIsVUFBVTtnQkFDViw4REFBaUIsQ0FBQyxVQUFVLENBQUMsRUFDN0I7Z0JBQ0EsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsRUFBQztRQUVKLE9BQU8sQ0FDTCx1REFBQyxrRUFBaUIsSUFDaEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsS0FBSyxFQUFFLEtBQUssRUFDWixhQUFhLEVBQUUsYUFBYSxFQUM1QixhQUFhLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxhQUFhLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDLEdBQ2hELENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtRQUNyQixPQUFPLGdFQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBSSxDQUFDO0lBQzdDLENBQUMsQ0FBQztJQUVGLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxFQUFFO1FBQ3ZDLE9BQU8sQ0FDTCx1REFBQyw4Q0FBTyxrQkFDTixPQUFPLEVBQUMsZUFBZSxFQUN2QixTQUFTLEVBQUUsZ0RBQUksQ0FBQyxxQkFBcUIsRUFBRTtnQkFDckMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGNBQWM7YUFDM0MsQ0FBQyxnQkFJRix1REFBQyw0Q0FBTSxrQkFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsZ0JBQ3RDLHVEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHdEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFDLGVBQWUsaUJBQzlDLHNCQUFzQixFQUFFLEVBQ3hCLHVCQUF1QixFQUFFLEtBQ2hCLElBQ0YsSUFDTCxJQUNELENBQ1gsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FDaEMsdURBQUMsOENBQU8sa0JBQ04sT0FBTyxFQUFDLGVBQWUsRUFDdkIsU0FBUyxFQUFFLGdEQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDckMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGNBQWM7U0FDM0MsQ0FBQyxnQkFJRix1REFBQyw0Q0FBTSxrQkFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsZ0JBQ3RDLHdEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUNmLHdEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFDLGVBQWUsaUJBQzlDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQzFDLHVEQUFDLFNBQVMsS0FBRyxFQUNaLGFBQWEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQ3ZDLHNCQUFzQixFQUFFLEVBQ3hCLHVCQUF1QixFQUFFLEVBQzFCLHVEQUFDLFNBQVMsS0FBRyxFQUNaLG1CQUFtQixJQUFJLENBQ3RCLHVEQUFDLHNEQUFZLElBQ1gsZUFBZSxFQUFFLGVBQWUsRUFDaEMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQzlDLE9BQU8sRUFBRSxtQkFBbUIsR0FDNUIsQ0FDSCxLQUNTLEVBQ1osdURBQUMsa0dBQWlDLElBQ2hDLGFBQWEsRUFBRSxhQUFhLEVBQzVCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLFlBQVksRUFBRSxZQUFZLEdBQzFCLEVBQ0QsUUFBUSxDQUFDLFVBQVUsSUFBSSxDQUN0Qiw0SEFBRyxhQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEdBQUksQ0FDdEQsS0FDUyxJQUNMLElBQ0QsQ0FDWCxDQUFDO0lBRUYsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUN2Qyx1REFBQyw4Q0FBTyxrQkFDTixPQUFPLEVBQUMsc0JBQXNCLEVBQzlCLFNBQVMsRUFBRSxnREFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3JDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxjQUFjO1NBQzNDLENBQUMsZ0JBRUYsdURBQUMsNENBQU0sa0JBQ0wsU0FBUyxFQUFFLGtFQUEwQixFQUNyQyxPQUFPLEVBQUUsQ0FBQyxFQUNWLEtBQUssRUFBRTtnQkFDTCxnRUFBZ0U7Z0JBQ2hFLHdGQUF3RjtnQkFDeEYsOEVBQThFO2dCQUM5RSxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTthQUN0RSxnQkFFRCx1REFBQywwREFBb0IsSUFDbkIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLEVBQ3hDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksR0FDcEMsSUFDSyxJQUNELENBQ1gsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLGtEQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpELHdDQUF3QztRQUN4QyxJQUFJLFlBQVksRUFBRTtZQUNoQixPQUFPO1NBQ1I7UUFDRCxXQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRWxCLE1BQU0sYUFBYSxHQUFHLGtEQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3JDLFdBQVcsQ0FBQztZQUNWLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsZ0JBQWdCLEVBQUUsRUFBRTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRWxCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQzNDLHVEQUFDLHNEQUFXLElBQ1YsZUFBZSxFQUFFLDJEQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQzlELE9BQU8sRUFBRSxZQUFZLEVBQ3JCLG9CQUFvQixFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDckMsZ0JBQWdCLENBQUMsa0ZBQWtDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLEVBQ0QsY0FBYyxFQUFFLGFBQWEsRUFDN0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLGNBQWMsRUFBRSxjQUFjLEVBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUNyQixLQUFLLEVBQUUsS0FBSyxFQUNaLEVBQUUsRUFBRSxFQUFFLEVBQ04sUUFBUSxFQUFFLFFBQVEsR0FDbEIsQ0FDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFVCxNQUFNLHdCQUF3QixHQUFHLEdBQUcsRUFBRTtRQUNwQyxNQUFNLGdDQUFnQyxHQUFHLGtFQUF3QixDQUMvRCxRQUFRLEVBQ1IsUUFBUSxDQUNULENBQUM7UUFFRixPQUFPLENBQ0wsdURBQUMsb0VBQWtCLGtCQUFDLElBQUksRUFBQyxLQUFLLGdCQUM1QiwrRUFBSyxTQUFTLEVBQUMsdUJBQXVCLGlCQUNwQyx3REFBQyxtREFBUyxrQkFDUixHQUFHLEVBQUUsQ0FBQyxFQUNOLFNBQVMsRUFBRSxnREFBSSxDQUFDOzRCQUNkLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxjQUFjO3lCQUNqRCxDQUFDLGlCQUVELFFBQVEsQ0FBQyxlQUFlO2dDQUN2QixDQUFDLENBQUMsMkJBQTJCLEVBQUU7Z0NBQy9CLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUN4QixnQ0FBZ0MsSUFBSSwwQkFBMEIsRUFBRSxLQUN2RCxFQUNYLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUM1Qix1REFBQyw4Q0FBTyxrQkFBQyxPQUFPLEVBQUMsUUFBUSxnQkFDdEIsQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUM3Qix1REFBQyxtREFBUyxrQkFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBQyxPQUFPLGdCQUM5Qix3REFBQyxtREFBUyxrQkFDUixHQUFHLEVBQUUsQ0FBQyxFQUNOLFNBQVMsRUFBRSxnREFBSSxDQUFDLHVCQUF1QixFQUFFO29DQUN2QyxVQUFVLEVBQUUsUUFBUSxDQUFDLGNBQWM7aUNBQ3BDLENBQUMsaUJBRUYsdURBQUMsMERBQWEsSUFDWixjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWMsRUFDdkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQ3pCLFFBQVEsRUFBRSxlQUFlLEVBQ3pCLEtBQUssRUFBRSx3Q0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQzNCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVyxHQUNqQyxFQUNGLHVEQUFDLG9EQUFVLElBQ1QsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQ3ZDLE9BQU8sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFDbkMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUM5QixLQUFLLEVBQUUsd0NBQUMsQ0FBQyxjQUFjLENBQUMsR0FDeEIsRUFDRix3REFBQyw0Q0FBTSxrQkFDTCxPQUFPLEVBQUUsQ0FBQyxFQUNWLFNBQVMsRUFBRSxnREFBSSxDQUFDLGFBQWEsRUFBRTs0Q0FDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxjQUFjO3lDQUNwQyxDQUFDLGlCQUVGLHVEQUFDLG9EQUFVLElBQ1QsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQ3pCLEVBQ0QsT0FBTyxFQUNSLHVEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHVEQUFDLG9EQUFjLElBQ2IsUUFBUSxFQUFFLFFBQVEsRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFDL0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsYUFBYSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO3dEQUNqQyxhQUFhLENBQUM7NERBQ1osc0JBQXNCLEVBQUUsV0FBVyxLQUFLLE9BQU87eURBQ2hELENBQUMsQ0FBQztvREFDTCxDQUFDLEdBQ0QsSUFDUSxLQUNMLEVBQ1QsdURBQUMsMERBQWEsSUFDWixRQUFRLEVBQUUsUUFBUSxFQUNsQixXQUFXLEVBQUUsV0FBVyxHQUN4QixLQUNRLElBQ0YsQ0FDYixJQUNPLENBQ1gsRUFDRCwrRUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FDYixrREFBa0QsRUFDbEQ7NEJBQ0Usa0JBQWtCLEVBQUUsUUFBUSxDQUFDLGNBQWM7eUJBQzVDLENBQ0YsaUJBRUQsdURBQUMsZ0RBQVEsSUFDUCxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFDckMsYUFBYSxFQUFFLGFBQWEsR0FDNUIsRUFDRCxnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsQ0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUMxQyxLQUNGLElBQ2EsQ0FDdEIsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFO1FBQy9CLE9BQU8sQ0FDTCxrRkFDRSxJQUFJLEVBQUMsYUFBYSxFQUNsQixTQUFTLEVBQUMsb0RBQW9ELGlCQUU5RCw4RUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FDYixvREFBb0QsRUFDcEQ7d0JBQ0UsaURBQWlELEVBQy9DLFFBQVEsQ0FBQyxjQUFjO3FCQUMxQixDQUNGLGdCQUVELHVEQUFDLG1EQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHdEQUFDLDhDQUFPLGtCQUFDLE9BQU8sRUFBQyxlQUFlLGlCQUM5Qix1REFBQyw0Q0FBTSxrQkFBQyxPQUFPLEVBQUUsQ0FBQyxnQkFDaEIsdURBQUMsaURBQVcsSUFDVixZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEdBQ25CLElBQ0ssRUFDUixDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FDNUIsOEhBQ0UsK0VBQ0UsU0FBUyxFQUFFLGdEQUFJLENBQUMsdUNBQXVDLEVBQUU7Z0RBQ3ZELG1EQUFtRCxFQUNqRCxRQUFRLENBQUMsY0FBYzs2Q0FDMUIsQ0FBQyxpQkFFRCxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUNyRCxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUNsRCxFQUVOLDhFQUNFLFNBQVMsRUFBRSxnREFBSSxDQUFDLG9DQUFvQyxFQUFFO2dEQUNwRCxpREFBaUQsRUFDL0MsUUFBUSxDQUFDLGNBQWM7NkNBQzFCLENBQUMsZ0JBRUQsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFDcEQsSUFDTCxDQUNKLEVBQ0EsQ0FBQyxRQUFRLENBQUMsZUFBZTtvQ0FDeEIsUUFBUSxDQUFDLFlBQVk7b0NBQ3JCLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FDdEIsOEVBQ0UsU0FBUyxFQUFFLGdEQUFJLENBQUMscUNBQXFDLEVBQUU7d0NBQ3JELGlEQUFpRCxFQUMvQyxRQUFRLENBQUMsY0FBYztxQ0FDMUIsQ0FBQyxnQkFFRCxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUN0RCxDQUNQLEtBQ0ssSUFDQSxJQUNSLEVBQ04sOEVBQ0UsU0FBUyxFQUFFLGdEQUFJLENBQ2Isc0RBQXNELEVBQ3REO3dCQUNFLG1EQUFtRCxFQUNqRCxRQUFRLENBQUMsY0FBYztxQkFDMUIsQ0FDRixnQkFFQSxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQ2xDLEVBQ04sOEVBQ0UsU0FBUyxFQUFFLGdEQUFJLENBQ2IscURBQXFELEVBQ3JEO3dCQUNFLHdDQUF3QyxFQUFFLFFBQVEsQ0FBQyxjQUFjO3FCQUNsRSxDQUNGLGdCQUVBLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFDMUMsRUFDTixpRkFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxrQkFBa0IsRUFBRTt3QkFDbEMsMkJBQTJCLEVBQUUsa0JBQWtCO3FCQUNoRCxDQUFDLEVBQ0YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsMERBQW1CLENBQUMsZ0JBRTlELHdDQUFDLENBQUMscUJBQXFCLENBQUMsSUFDbEIsS0FDRixDQUNWLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixNQUFNLE9BQU8sR0FBRyxDQUNkLDhIQUNHLFFBQVEsQ0FBQyxTQUFTLElBQUksdURBQUMsNERBQWMsSUFBQyxLQUFLLEVBQUUsR0FBRyxHQUFJLEVBQ3BELFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FDeEIsdURBQUMsc0RBQVcsSUFDVixPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUNsRCxDQUNILEVBQ0EsUUFBUSxDQUFDLGNBQWMsSUFBSSxDQUMxQix1REFBQyxvREFBVSxJQUNULE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ1osV0FBVyxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsR0FDRCxDQUNILEVBQ0EsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FDN0IsdURBQUMsZ0VBQWdCLElBQ2YsV0FBVyxFQUFFLFdBQVcsRUFDeEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsYUFBYSxFQUFFLGdCQUFnQixFQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osV0FBVyxDQUFDO29CQUNWLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtpQkFDMUMsQ0FBQyxHQUVKLENBQ0gsSUFDQSxDQUNKLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sQ0FDTCx1REFBQywwQ0FBSyxJQUNKLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osYUFBYSxDQUFDLGFBQWEsQ0FBQywwRUFBaUIsQ0FBQyxDQUFDO1lBQ2pELENBQUMsRUFDRCxpQkFBaUIsRUFBRSxpQkFBaUIsR0FDcEMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUN2Qiw4SEFDRyxPQUFPLEVBQ1IsdURBQUMsb0RBQVUsSUFDVCxRQUFRLEVBQUUsUUFBUSxFQUNsQixRQUFRLEVBQUUsUUFBUSxFQUNsQixhQUFhLEVBQUUsYUFBYSxFQUM1QixXQUFXLEVBQUUsV0FBVyxFQUN4QixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQ2hELFdBQVcsRUFBRSxXQUFXLEVBQ3hCLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQ2xDLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsZUFBZSxFQUFFLGVBQWUsRUFDaEMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFlBQVksRUFBRSxZQUFZLEVBQzFCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxXQUFXLEVBQUUsV0FBVyxHQUN4QixJQUNELENBQ0osQ0FBQyxDQUFDLENBQUMsQ0FDRiw4SEFDRSwrRUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxtQkFBbUIsRUFBRTtvQkFDbkMsdUJBQXVCLEVBQ3JCLFFBQVEsQ0FBQyxlQUFlO3dCQUN4QixRQUFRLENBQUMsZUFBZTt3QkFDeEIsQ0FBQyxRQUFRLENBQUMsY0FBYzs0QkFDdEIsQ0FBQyx1REFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDN0MsQ0FBQyxFQUNGLEtBQUssRUFDSCxRQUFRLENBQUMsYUFBYTtvQkFDdEIsUUFBUSxDQUFDLG1CQUFtQjtvQkFDNUIsTUFBTSxDQUFDLG1CQUFtQjtvQkFDeEIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsNkRBQXFCLEtBQUssRUFBRTtvQkFDdEQsQ0FBQyxDQUFDLEVBQUUsaUJBR1AsT0FBTyxFQUNQLHdCQUF3QixFQUFFLEVBQzFCLG1CQUFtQixFQUFFLEVBQ3JCLFdBQVcsRUFBRSxFQUNiLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FDM0IsaUZBQ0UsU0FBUyxFQUFDLHdCQUF3QixFQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFOzRCQUNaLFdBQVcsbUJBQ04sNkRBQXFCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDcEQsQ0FBQzt3QkFDTCxDQUFDLGdCQUVBLHdDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFDMUIsQ0FDVixLQUNHLEVBQ0wsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUN6Qiw4RUFBSyxTQUFTLEVBQUMsbUJBQW1CLGdCQUFFLFdBQVcsSUFBTyxDQUN2RCxJQUNBLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBa0IsRUFBRSxJQUFrQixFQUFFLEVBQUU7SUFDMUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFrQixFQUFxQixFQUFFO1FBQ2hFLE1BQU0sRUFDSixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQUUsWUFBWSxLQUU3QixRQUFRLEVBRFAsR0FBRyxVQUNKLFFBQVEsRUFKTiwwQ0FJTCxDQUFXLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVwRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBZ0MsQ0FBQztJQUN0RSxPQUFPLENBQ0wsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksQ0FBQyxrQkFBa0I7UUFDbkQsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtRQUMvQixJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRO1FBQy9CLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUs7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUVBQWUsaURBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnRzeD8wODc4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBDTEFTU0VTLCBMSUJSQVJZX1NJREVCQVJfV0lEVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBleHBvcnRDYW52YXMgfSBmcm9tIFwiLi4vZGF0YVwiO1xuaW1wb3J0IHsgaXNUZXh0RWxlbWVudCwgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBMYW5ndWFnZSwgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVTY3JvbGxDZW50ZXIsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmltcG9ydCB7IEV4cG9ydFR5cGUgfSBmcm9tIFwiLi4vc2NlbmUvdHlwZXNcIjtcbmltcG9ydCB7IEFwcFByb3BzLCBBcHBTdGF0ZSwgRXhjYWxpZHJhd1Byb3BzLCBCaW5hcnlGaWxlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgbXV0ZUZTQWJvcnRFcnJvciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgU2VsZWN0ZWRTaGFwZUFjdGlvbnMsIFNoYXBlc1N3aXRjaGVyLCBab29tQWN0aW9ucyB9IGZyb20gXCIuL0FjdGlvbnNcIjtcbmltcG9ydCB7IEJhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZSB9IGZyb20gXCIuL0JhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZVwiO1xuaW1wb3J0IENvbGxhYkJ1dHRvbiBmcm9tIFwiLi9Db2xsYWJCdXR0b25cIjtcbmltcG9ydCB7IEVycm9yRGlhbG9nIH0gZnJvbSBcIi4vRXJyb3JEaWFsb2dcIjtcbmltcG9ydCB7IEV4cG9ydENCLCBJbWFnZUV4cG9ydERpYWxvZyB9IGZyb20gXCIuL0ltYWdlRXhwb3J0RGlhbG9nXCI7XG5pbXBvcnQgeyBGaXhlZFNpZGVDb250YWluZXIgfSBmcm9tIFwiLi9GaXhlZFNpZGVDb250YWluZXJcIjtcbmltcG9ydCB7IEhpbnRWaWV3ZXIgfSBmcm9tIFwiLi9IaW50Vmlld2VyXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCB7IExvYWRpbmdNZXNzYWdlIH0gZnJvbSBcIi4vTG9hZGluZ01lc3NhZ2VcIjtcbmltcG9ydCB7IExvY2tCdXR0b24gfSBmcm9tIFwiLi9Mb2NrQnV0dG9uXCI7XG5pbXBvcnQgeyBNb2JpbGVNZW51IH0gZnJvbSBcIi4vTW9iaWxlTWVudVwiO1xuaW1wb3J0IHsgUGFzdGVDaGFydERpYWxvZyB9IGZyb20gXCIuL1Bhc3RlQ2hhcnREaWFsb2dcIjtcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9TZWN0aW9uXCI7XG5pbXBvcnQgeyBIZWxwRGlhbG9nIH0gZnJvbSBcIi4vSGVscERpYWxvZ1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBVc2VyTGlzdCB9IGZyb20gXCIuL1VzZXJMaXN0XCI7XG5pbXBvcnQgTGlicmFyeSwgeyBkaXN0cmlidXRlTGlicmFyeUl0ZW1zT25TcXVhcmVHcmlkIH0gZnJvbSBcIi4uL2RhdGEvbGlicmFyeVwiO1xuaW1wb3J0IHsgSlNPTkV4cG9ydERpYWxvZyB9IGZyb20gXCIuL0pTT05FeHBvcnREaWFsb2dcIjtcbmltcG9ydCB7IExpYnJhcnlCdXR0b24gfSBmcm9tIFwiLi9MaWJyYXJ5QnV0dG9uXCI7XG5pbXBvcnQgeyBpc0ltYWdlRmlsZUhhbmRsZSB9IGZyb20gXCIuLi9kYXRhL2Jsb2JcIjtcbmltcG9ydCB7IExpYnJhcnlNZW51IH0gZnJvbSBcIi4vTGlicmFyeU1lbnVcIjtcblxuaW1wb3J0IFwiLi9MYXllclVJLnNjc3NcIjtcbmltcG9ydCBcIi4vVG9vbGJhci5zY3NzXCI7XG5pbXBvcnQgeyBQZW5Nb2RlQnV0dG9uIH0gZnJvbSBcIi4vUGVuTW9kZUJ1dHRvblwiO1xuaW1wb3J0IHsgdHJhY2tFdmVudCB9IGZyb20gXCIuLi9hbmFseXRpY3NcIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL0FwcFwiO1xuaW1wb3J0IHsgU3RhdHMgfSBmcm9tIFwiLi9TdGF0c1wiO1xuaW1wb3J0IHsgYWN0aW9uVG9nZ2xlU3RhdHMgfSBmcm9tIFwiLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVTdGF0c1wiO1xuaW1wb3J0IHsgYWN0aW9uVG9nZ2xlWmVuTW9kZSB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmludGVyZmFjZSBMYXllclVJUHJvcHMge1xuICBhY3Rpb25NYW5hZ2VyOiBBY3Rpb25NYW5hZ2VyO1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIGZpbGVzOiBCaW5hcnlGaWxlcztcbiAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIHNldEFwcFN0YXRlOiBSZWFjdC5Db21wb25lbnQ8YW55LCBBcHBTdGF0ZT5bXCJzZXRTdGF0ZVwiXTtcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdO1xuICBvbkNvbGxhYkJ1dHRvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgb25Mb2NrVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvblBlbk1vZGVUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIG9uSW5zZXJ0RWxlbWVudHM6IChlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10pID0+IHZvaWQ7XG4gIHNob3dFeGl0WmVuTW9kZUJ0bjogYm9vbGVhbjtcbiAgc2hvd1RoZW1lQnRuOiBib29sZWFuO1xuICBsYW5nQ29kZTogTGFuZ3VhZ2VbXCJjb2RlXCJdO1xuICBpc0NvbGxhYm9yYXRpbmc6IGJvb2xlYW47XG4gIHJlbmRlclRvcFJpZ2h0VUk/OiBFeGNhbGlkcmF3UHJvcHNbXCJyZW5kZXJUb3BSaWdodFVJXCJdO1xuICByZW5kZXJDdXN0b21Gb290ZXI/OiBFeGNhbGlkcmF3UHJvcHNbXCJyZW5kZXJGb290ZXJcIl07XG4gIHJlbmRlckN1c3RvbVN0YXRzPzogRXhjYWxpZHJhd1Byb3BzW1wicmVuZGVyQ3VzdG9tU3RhdHNcIl07XG4gIGxpYnJhcnlSZXR1cm5Vcmw6IEV4Y2FsaWRyYXdQcm9wc1tcImxpYnJhcnlSZXR1cm5VcmxcIl07XG4gIFVJT3B0aW9uczogQXBwUHJvcHNbXCJVSU9wdGlvbnNcIl07XG4gIGZvY3VzQ29udGFpbmVyOiAoKSA9PiB2b2lkO1xuICBsaWJyYXJ5OiBMaWJyYXJ5O1xuICBpZDogc3RyaW5nO1xuICBvbkltYWdlQWN0aW9uOiAoZGF0YTogeyBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBib29sZWFuIH0pID0+IHZvaWQ7XG59XG5jb25zdCBMYXllclVJID0gKHtcbiAgYWN0aW9uTWFuYWdlcixcbiAgYXBwU3RhdGUsXG4gIGZpbGVzLFxuICBzZXRBcHBTdGF0ZSxcbiAgY2FudmFzLFxuICBlbGVtZW50cyxcbiAgb25Db2xsYWJCdXR0b25DbGljayxcbiAgb25Mb2NrVG9nZ2xlLFxuICBvblBlbk1vZGVUb2dnbGUsXG4gIG9uSW5zZXJ0RWxlbWVudHMsXG4gIHNob3dFeGl0WmVuTW9kZUJ0bixcbiAgc2hvd1RoZW1lQnRuLFxuICBpc0NvbGxhYm9yYXRpbmcsXG4gIHJlbmRlclRvcFJpZ2h0VUksXG4gIHJlbmRlckN1c3RvbUZvb3RlcixcbiAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gIGxpYnJhcnlSZXR1cm5VcmwsXG4gIFVJT3B0aW9ucyxcbiAgZm9jdXNDb250YWluZXIsXG4gIGxpYnJhcnksXG4gIGlkLFxuICBvbkltYWdlQWN0aW9uLFxufTogTGF5ZXJVSVByb3BzKSA9PiB7XG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuXG4gIGNvbnN0IHJlbmRlckpTT05FeHBvcnREaWFsb2cgPSAoKSA9PiB7XG4gICAgaWYgKCFVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8SlNPTkV4cG9ydERpYWxvZ1xuICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgZmlsZXM9e2ZpbGVzfVxuICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICBleHBvcnRPcHRzPXtVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnR9XG4gICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckltYWdlRXhwb3J0RGlhbG9nID0gKCkgPT4ge1xuICAgIGlmICghVUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuc2F2ZUFzSW1hZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZUV4cG9ydGVyID1cbiAgICAgICh0eXBlOiBFeHBvcnRUeXBlKTogRXhwb3J0Q0IgPT5cbiAgICAgIGFzeW5jIChleHBvcnRlZEVsZW1lbnRzKSA9PiB7XG4gICAgICAgIHRyYWNrRXZlbnQoXCJleHBvcnRcIiwgdHlwZSwgXCJ1aVwiKTtcbiAgICAgICAgY29uc3QgZmlsZUhhbmRsZSA9IGF3YWl0IGV4cG9ydENhbnZhcyhcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGV4cG9ydGVkRWxlbWVudHMsXG4gICAgICAgICAgYXBwU3RhdGUsXG4gICAgICAgICAgZmlsZXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXhwb3J0QmFja2dyb3VuZDogYXBwU3RhdGUuZXhwb3J0QmFja2dyb3VuZCxcbiAgICAgICAgICAgIG5hbWU6IGFwcFN0YXRlLm5hbWUsXG4gICAgICAgICAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBhcHBTdGF0ZS52aWV3QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgICAuY2F0Y2gobXV0ZUZTQWJvcnRFcnJvcilcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhcHBTdGF0ZS5leHBvcnRFbWJlZFNjZW5lICYmXG4gICAgICAgICAgZmlsZUhhbmRsZSAmJlxuICAgICAgICAgIGlzSW1hZ2VGaWxlSGFuZGxlKGZpbGVIYW5kbGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldEFwcFN0YXRlKHsgZmlsZUhhbmRsZSB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8SW1hZ2VFeHBvcnREaWFsb2dcbiAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgb25FeHBvcnRUb1BuZz17Y3JlYXRlRXhwb3J0ZXIoXCJwbmdcIil9XG4gICAgICAgIG9uRXhwb3J0VG9Tdmc9e2NyZWF0ZUV4cG9ydGVyKFwic3ZnXCIpfVxuICAgICAgICBvbkV4cG9ydFRvQ2xpcGJvYXJkPXtjcmVhdGVFeHBvcnRlcihcImNsaXBib2FyZFwiKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBTZXBhcmF0b3IgPSAoKSA9PiB7XG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiLjYyNWVtXCIgfX0gLz47XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyVmlld01vZGVDYW52YXNBY3Rpb25zID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U2VjdGlvblxuICAgICAgICBoZWFkaW5nPVwiY2FudmFzQWN0aW9uc1wiXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcInplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgIFwidHJhbnNpdGlvbi1sZWZ0XCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgey8qIHRoZSB6SW5kZXggZW5zdXJlcyB0aGlzIG1lbnUgaGFzIGhpZ2hlciBzdGFja2luZyBvcmRlcixcbiAgICAgICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L3B1bGwvMTQ0NSAqL31cbiAgICAgICAgPElzbGFuZCBwYWRkaW5nPXsyfSBzdHlsZT17eyB6SW5kZXg6IDEgfX0+XG4gICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9PlxuICAgICAgICAgICAgPFN0YWNrLlJvdyBnYXA9ezF9IGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICAgICAgICB7cmVuZGVySlNPTkV4cG9ydERpYWxvZygpfVxuICAgICAgICAgICAgICB7cmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKX1cbiAgICAgICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICA8L0lzbGFuZD5cbiAgICAgIDwvU2VjdGlvbj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckNhbnZhc0FjdGlvbnMgPSAoKSA9PiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIGhlYWRpbmc9XCJjYW52YXNBY3Rpb25zXCJcbiAgICAgIGNsYXNzTmFtZT17Y2xzeChcInplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICBcInRyYW5zaXRpb24tbGVmdFwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIHsvKiB0aGUgekluZGV4IGVuc3VyZXMgdGhpcyBtZW51IGhhcyBoaWdoZXIgc3RhY2tpbmcgb3JkZXIsXG4gICAgICAgICBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9wdWxsLzE0NDUgKi99XG4gICAgICA8SXNsYW5kIHBhZGRpbmc9ezJ9IHN0eWxlPXt7IHpJbmRleDogMSB9fT5cbiAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9PlxuICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImNsZWFyQ2FudmFzXCIpfVxuICAgICAgICAgICAgPFNlcGFyYXRvciAvPlxuICAgICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwibG9hZFNjZW5lXCIpfVxuICAgICAgICAgICAge3JlbmRlckpTT05FeHBvcnREaWFsb2coKX1cbiAgICAgICAgICAgIHtyZW5kZXJJbWFnZUV4cG9ydERpYWxvZygpfVxuICAgICAgICAgICAgPFNlcGFyYXRvciAvPlxuICAgICAgICAgICAge29uQ29sbGFiQnV0dG9uQ2xpY2sgJiYgKFxuICAgICAgICAgICAgICA8Q29sbGFiQnV0dG9uXG4gICAgICAgICAgICAgICAgaXNDb2xsYWJvcmF0aW5nPXtpc0NvbGxhYm9yYXRpbmd9XG4gICAgICAgICAgICAgICAgY29sbGFib3JhdG9yQ291bnQ9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnMuc2l6ZX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNvbGxhYkJ1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICA8QmFja2dyb3VuZFBpY2tlckFuZERhcmtNb2RlVG9nZ2xlXG4gICAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgc2hvd1RoZW1lQnRuPXtzaG93VGhlbWVCdG59XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7YXBwU3RhdGUuZmlsZUhhbmRsZSAmJiAoXG4gICAgICAgICAgICA8PnthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInNhdmVUb0FjdGl2ZUZpbGVcIil9PC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICA8L0lzbGFuZD5cbiAgICA8L1NlY3Rpb24+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSAoKSA9PiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIGhlYWRpbmc9XCJzZWxlY3RlZFNoYXBlQWN0aW9uc1wiXG4gICAgICBjbGFzc05hbWU9e2Nsc3goXCJ6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgXCJ0cmFuc2l0aW9uLWxlZnRcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICA8SXNsYW5kXG4gICAgICAgIGNsYXNzTmFtZT17Q0xBU1NFUy5TSEFQRV9BQ1RJT05TX01FTlV9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IHNvIHN1YnRyYWN0aW5nIDIwMFxuICAgICAgICAgIC8vIHdoaWNoIGlzIGFwcHJveGltYXRlbHkgaGVpZ2h0IG9mIHpvb20gZm9vdGVyIGFuZCB0b3AgbGVmdCBtZW51IGl0ZW1zIHdpdGggc29tZSBidWZmZXJcbiAgICAgICAgICAvLyBpZiBhY3RpdmUgZmlsZSBuYW1lIGlzIGRpc3BsYXllZCwgc3VidHJhY3RpbmcgMjQ4IHRvIGFjY291bnQgZm9yIGl0cyBoZWlnaHRcbiAgICAgICAgICBtYXhIZWlnaHQ6IGAke2FwcFN0YXRlLmhlaWdodCAtIChhcHBTdGF0ZS5maWxlSGFuZGxlID8gMjQ4IDogMjAwKX1weGAsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTZWxlY3RlZFNoYXBlQWN0aW9uc1xuICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgICBhY3RpdmVUb29sPXthcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGV9XG4gICAgICAgIC8+XG4gICAgICA8L0lzbGFuZD5cbiAgICA8L1NlY3Rpb24+XG4gICk7XG5cbiAgY29uc3QgY2xvc2VMaWJyYXJ5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGlzRGlhbG9nT3BlbiA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5EaWFsb2dcIik7XG5cbiAgICAvLyBQcmV2ZW50IGNsb3NpbmcgaWYgYW55IGRpYWxvZyBpcyBvcGVuXG4gICAgaWYgKGlzRGlhbG9nT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRBcHBTdGF0ZSh7IGlzTGlicmFyeU9wZW46IGZhbHNlIH0pO1xuICB9LCBbc2V0QXBwU3RhdGVdKTtcblxuICBjb25zdCBkZXNlbGVjdEl0ZW1zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEFwcFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRWxlbWVudElkczoge30sXG4gICAgICBzZWxlY3RlZEdyb3VwSWRzOiB7fSxcbiAgICB9KTtcbiAgfSwgW3NldEFwcFN0YXRlXSk7XG5cbiAgY29uc3QgbGlicmFyeU1lbnUgPSBhcHBTdGF0ZS5pc0xpYnJhcnlPcGVuID8gKFxuICAgIDxMaWJyYXJ5TWVudVxuICAgICAgcGVuZGluZ0VsZW1lbnRzPXtnZXRTZWxlY3RlZEVsZW1lbnRzKGVsZW1lbnRzLCBhcHBTdGF0ZSwgdHJ1ZSl9XG4gICAgICBvbkNsb3NlPXtjbG9zZUxpYnJhcnl9XG4gICAgICBvbkluc2VydExpYnJhcnlJdGVtcz17KGxpYnJhcnlJdGVtcykgPT4ge1xuICAgICAgICBvbkluc2VydEVsZW1lbnRzKGRpc3RyaWJ1dGVMaWJyYXJ5SXRlbXNPblNxdWFyZUdyaWQobGlicmFyeUl0ZW1zKSk7XG4gICAgICB9fVxuICAgICAgb25BZGRUb0xpYnJhcnk9e2Rlc2VsZWN0SXRlbXN9XG4gICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICBsaWJyYXJ5UmV0dXJuVXJsPXtsaWJyYXJ5UmV0dXJuVXJsfVxuICAgICAgZm9jdXNDb250YWluZXI9e2ZvY3VzQ29udGFpbmVyfVxuICAgICAgbGlicmFyeT17bGlicmFyeX1cbiAgICAgIHRoZW1lPXthcHBTdGF0ZS50aGVtZX1cbiAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgIGlkPXtpZH1cbiAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAvPlxuICApIDogbnVsbDtcblxuICBjb25zdCByZW5kZXJGaXhlZFNpZGVDb250YWluZXIgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMoXG4gICAgICBhcHBTdGF0ZSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZpeGVkU2lkZUNvbnRhaW5lciBzaWRlPVwidG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiQXBwLW1lbnUgQXBwLW1lbnVfdG9wXCI+XG4gICAgICAgICAgPFN0YWNrLkNvbFxuICAgICAgICAgICAgZ2FwPXs0fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KHtcbiAgICAgICAgICAgICAgXCJkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YXBwU3RhdGUudmlld01vZGVFbmFibGVkXG4gICAgICAgICAgICAgID8gcmVuZGVyVmlld01vZGVDYW52YXNBY3Rpb25zKClcbiAgICAgICAgICAgICAgOiByZW5kZXJDYW52YXNBY3Rpb25zKCl9XG4gICAgICAgICAgICB7c2hvdWxkUmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMgJiYgcmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMoKX1cbiAgICAgICAgICA8L1N0YWNrLkNvbD5cbiAgICAgICAgICB7IWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICA8U2VjdGlvbiBoZWFkaW5nPVwic2hhcGVzXCI+XG4gICAgICAgICAgICAgIHsoaGVhZGluZzogUmVhY3QuUmVhY3ROb2RlKSA9PiAoXG4gICAgICAgICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9IGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxTdGFjay5Sb3dcbiAgICAgICAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJBcHAtdG9vbGJhci1jb250YWluZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIFwiemVuLW1vZGVcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8UGVuTW9kZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHplbk1vZGVFbmFibGVkPXthcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5wZW5Nb2RlfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblBlbk1vZGVUb2dnbGV9XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLnBlbk1vZGVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgcGVuRGV0ZWN0ZWQ9e2FwcFN0YXRlLnBlbkRldGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8TG9ja0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHplbk1vZGVFbmFibGVkPXthcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5hY3RpdmVUb29sLmxvY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gb25Mb2NrVG9nZ2xlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLmxvY2tcIil9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxJc2xhbmRcbiAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcIkFwcC10b29sYmFyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiemVuLW1vZGVcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SGludFZpZXdlclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e2RldmljZS5pc01vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFwZXNTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sPXthcHBTdGF0ZS5hY3RpdmVUb29sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb249eyh7IHBvaW50ZXJUeXBlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydE9uQ2FudmFzRGlyZWN0bHk6IHBvaW50ZXJUeXBlICE9PSBcIm1vdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgICAgICAgICAgICAgICA8L0lzbGFuZD5cbiAgICAgICAgICAgICAgICAgICAgPExpYnJhcnlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXG4gICAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX3RvcC1yaWdodCB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcInRyYW5zaXRpb24tcmlnaHRcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVc2VyTGlzdFxuICAgICAgICAgICAgICBjb2xsYWJvcmF0b3JzPXthcHBTdGF0ZS5jb2xsYWJvcmF0b3JzfVxuICAgICAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHtyZW5kZXJUb3BSaWdodFVJPy4oZGV2aWNlLmlzTW9iaWxlLCBhcHBTdGF0ZSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9GaXhlZFNpZGVDb250YWluZXI+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJCb3R0b21BcHBNZW51ID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgIGNsYXNzTmFtZT1cImxheWVyLXVpX193cmFwcGVyX19mb290ZXIgQXBwLW1lbnUgQXBwLW1lbnVfYm90dG9tXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0IHplbi1tb2RlLXRyYW5zaXRpb25cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQtLXRyYW5zaXRpb24tbGVmdFwiOlxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezJ9PlxuICAgICAgICAgICAgPFNlY3Rpb24gaGVhZGluZz1cImNhbnZhc0FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPElzbGFuZCBwYWRkaW5nPXsxfT5cbiAgICAgICAgICAgICAgICA8Wm9vbUFjdGlvbnNcbiAgICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgICB6b29tPXthcHBTdGF0ZS56b29tfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSXNsYW5kPlxuICAgICAgICAgICAgICB7IWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwidW5kby1yZWRvLWJ1dHRvbnMgemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQtLXRyYW5zaXRpb24tYm90dG9tXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInVuZG9cIiwgeyBzaXplOiBcInNtYWxsXCIgfSl9XG4gICAgICAgICAgICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInJlZG9cIiwgeyBzaXplOiBcInNtYWxsXCIgfSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJlcmFzZXItYnV0dG9ucyB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1sZWZ0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImVyYXNlclwiLCB7IHNpemU6IFwic21hbGxcIiB9KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7IWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJlxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLm11bHRpRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIGRldmljZS5pc1RvdWNoU2NyZWVuICYmIChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiZmluYWxpemUtYnV0dG9uIHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgICAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0LS10cmFuc2l0aW9uLWxlZnRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZmluYWxpemVcIiwgeyBzaXplOiBcInNtYWxsXCIgfSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TZWN0aW9uPlxuICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1jZW50ZXIgemVuLW1vZGUtdHJhbnNpdGlvblwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1ib3R0b21cIjpcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIHtyZW5kZXJDdXN0b21Gb290ZXI/LihmYWxzZSwgYXBwU3RhdGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1yaWdodCB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHJhbnNpdGlvbi1yaWdodCBkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ0b2dnbGVTaG9ydGN1dHNcIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiZGlzYWJsZS16ZW4tbW9kZVwiLCB7XG4gICAgICAgICAgICBcImRpc2FibGUtemVuLW1vZGUtLXZpc2libGVcIjogc2hvd0V4aXRaZW5Nb2RlQnRuLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25Ub2dnbGVaZW5Nb2RlKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiYnV0dG9ucy5leGl0WmVuTW9kZVwiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGRpYWxvZ3MgPSAoXG4gICAgPD5cbiAgICAgIHthcHBTdGF0ZS5pc0xvYWRpbmcgJiYgPExvYWRpbmdNZXNzYWdlIGRlbGF5PXsyNTB9IC8+fVxuICAgICAge2FwcFN0YXRlLmVycm9yTWVzc2FnZSAmJiAoXG4gICAgICAgIDxFcnJvckRpYWxvZ1xuICAgICAgICAgIG1lc3NhZ2U9e2FwcFN0YXRlLmVycm9yTWVzc2FnZX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBcHBTdGF0ZSh7IGVycm9yTWVzc2FnZTogbnVsbCB9KX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7YXBwU3RhdGUuc2hvd0hlbHBEaWFsb2cgJiYgKFxuICAgICAgICA8SGVscERpYWxvZ1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgc2hvd0hlbHBEaWFsb2c6IGZhbHNlIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2FwcFN0YXRlLnBhc3RlRGlhbG9nLnNob3duICYmIChcbiAgICAgICAgPFBhc3RlQ2hhcnREaWFsb2dcbiAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIG9uSW5zZXJ0Q2hhcnQ9e29uSW5zZXJ0RWxlbWVudHN9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT5cbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgcGFzdGVEaWFsb2c6IHsgc2hvd246IGZhbHNlLCBkYXRhOiBudWxsIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RhdHMgPSAoKSA9PiB7XG4gICAgaWYgKCFhcHBTdGF0ZS5zaG93U3RhdHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFN0YXRzXG4gICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBhY3Rpb25NYW5hZ2VyLmV4ZWN1dGVBY3Rpb24oYWN0aW9uVG9nZ2xlU3RhdHMpO1xuICAgICAgICB9fVxuICAgICAgICByZW5kZXJDdXN0b21TdGF0cz17cmVuZGVyQ3VzdG9tU3RhdHN9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIGRldmljZS5pc01vYmlsZSA/IChcbiAgICA8PlxuICAgICAge2RpYWxvZ3N9XG4gICAgICA8TW9iaWxlTWVudVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgbGlicmFyeU1lbnU9e2xpYnJhcnlNZW51fVxuICAgICAgICByZW5kZXJKU09ORXhwb3J0RGlhbG9nPXtyZW5kZXJKU09ORXhwb3J0RGlhbG9nfVxuICAgICAgICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZz17cmVuZGVySW1hZ2VFeHBvcnREaWFsb2d9XG4gICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgb25Db2xsYWJCdXR0b25DbGljaz17b25Db2xsYWJCdXR0b25DbGlja31cbiAgICAgICAgb25Mb2NrVG9nZ2xlPXsoKSA9PiBvbkxvY2tUb2dnbGUoKX1cbiAgICAgICAgb25QZW5Nb2RlVG9nZ2xlPXtvblBlbk1vZGVUb2dnbGV9XG4gICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgICBpc0NvbGxhYm9yYXRpbmc9e2lzQ29sbGFib3JhdGluZ31cbiAgICAgICAgcmVuZGVyQ3VzdG9tRm9vdGVyPXtyZW5kZXJDdXN0b21Gb290ZXJ9XG4gICAgICAgIHNob3dUaGVtZUJ0bj17c2hvd1RoZW1lQnRufVxuICAgICAgICBvbkltYWdlQWN0aW9uPXtvbkltYWdlQWN0aW9ufVxuICAgICAgICByZW5kZXJUb3BSaWdodFVJPXtyZW5kZXJUb3BSaWdodFVJfVxuICAgICAgICByZW5kZXJTdGF0cz17cmVuZGVyU3RhdHN9XG4gICAgICAvPlxuICAgIDwvPlxuICApIDogKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcImxheWVyLXVpX193cmFwcGVyXCIsIHtcbiAgICAgICAgICBcImRpc2FibGUtcG9pbnRlckV2ZW50c1wiOlxuICAgICAgICAgICAgYXBwU3RhdGUuZHJhZ2dpbmdFbGVtZW50IHx8XG4gICAgICAgICAgICBhcHBTdGF0ZS5yZXNpemluZ0VsZW1lbnQgfHxcbiAgICAgICAgICAgIChhcHBTdGF0ZS5lZGl0aW5nRWxlbWVudCAmJlxuICAgICAgICAgICAgICAhaXNUZXh0RWxlbWVudChhcHBTdGF0ZS5lZGl0aW5nRWxlbWVudCkpLFxuICAgICAgICB9KX1cbiAgICAgICAgc3R5bGU9e1xuICAgICAgICAgIGFwcFN0YXRlLmlzTGlicmFyeU9wZW4gJiZcbiAgICAgICAgICBhcHBTdGF0ZS5pc0xpYnJhcnlNZW51RG9ja2VkICYmXG4gICAgICAgICAgZGV2aWNlLmNhbkRldmljZUZpdFNpZGViYXJcbiAgICAgICAgICAgID8geyB3aWR0aDogYGNhbGMoMTAwJSAtICR7TElCUkFSWV9TSURFQkFSX1dJRFRIfXB4KWAgfVxuICAgICAgICAgICAgOiB7fVxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIHtkaWFsb2dzfVxuICAgICAgICB7cmVuZGVyRml4ZWRTaWRlQ29udGFpbmVyKCl9XG4gICAgICAgIHtyZW5kZXJCb3R0b21BcHBNZW51KCl9XG4gICAgICAgIHtyZW5kZXJTdGF0cygpfVxuICAgICAgICB7YXBwU3RhdGUuc2Nyb2xsZWRPdXRzaWRlICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJzY3JvbGwtYmFjay10by1jb250ZW50XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLmNhbGN1bGF0ZVNjcm9sbENlbnRlcihlbGVtZW50cywgYXBwU3RhdGUsIGNhbnZhcyksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcImJ1dHRvbnMuc2Nyb2xsQmFja1RvQ29udGVudFwiKX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2FwcFN0YXRlLmlzTGlicmFyeU9wZW4gJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLXVpX19zaWRlYmFyXCI+e2xpYnJhcnlNZW51fTwvZGl2PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IGFyZUVxdWFsID0gKHByZXY6IExheWVyVUlQcm9wcywgbmV4dDogTGF5ZXJVSVByb3BzKSA9PiB7XG4gIGNvbnN0IGdldE5lY2Vzc2FyeU9iaiA9IChhcHBTdGF0ZTogQXBwU3RhdGUpOiBQYXJ0aWFsPEFwcFN0YXRlPiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc3VnZ2VzdGVkQmluZGluZ3MsXG4gICAgICBzdGFydEJvdW5kRWxlbWVudDogYm91bmRFbGVtZW50LFxuICAgICAgLi4ucmV0XG4gICAgfSA9IGFwcFN0YXRlO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIGNvbnN0IHByZXZBcHBTdGF0ZSA9IGdldE5lY2Vzc2FyeU9iaihwcmV2LmFwcFN0YXRlKTtcbiAgY29uc3QgbmV4dEFwcFN0YXRlID0gZ2V0TmVjZXNzYXJ5T2JqKG5leHQuYXBwU3RhdGUpO1xuXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcmV2QXBwU3RhdGUpIGFzIChrZXlvZiBQYXJ0aWFsPEFwcFN0YXRlPilbXTtcbiAgcmV0dXJuIChcbiAgICBwcmV2LnJlbmRlckN1c3RvbUZvb3RlciA9PT0gbmV4dC5yZW5kZXJDdXN0b21Gb290ZXIgJiZcbiAgICBwcmV2LmxhbmdDb2RlID09PSBuZXh0LmxhbmdDb2RlICYmXG4gICAgcHJldi5lbGVtZW50cyA9PT0gbmV4dC5lbGVtZW50cyAmJlxuICAgIHByZXYuZmlsZXMgPT09IG5leHQuZmlsZXMgJiZcbiAgICBrZXlzLmV2ZXJ5KChrZXkpID0+IHByZXZBcHBTdGF0ZVtrZXldID09PSBuZXh0QXBwU3RhdGVba2V5XSlcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0Lm1lbW8oTGF5ZXJVSSwgYXJlRXF1YWwpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n");
2385
2374
 
2386
2375
  /***/ }),
2387
2376
 
@@ -2403,7 +2392,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2403
2392
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2404
2393
 
2405
2394
  "use strict";
2406
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LibraryMenu\": () => (/* binding */ LibraryMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/library */ \"../../data/library.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../random */ \"../../random.ts\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _PublishLibrary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PublishLibrary */ \"../../components/PublishLibrary.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryMenu.scss */ \"../../components/LibraryMenu.scss\");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _LibraryMenuItems__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenuItems */ \"../../components/LibraryMenuItems.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../jotai */ \"../../jotai.ts\");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Spinner */ \"../../components/Spinner.tsx\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useOnClickOutside = (ref, cb) => {\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const listener = (event) => {\n if (!ref.current) {\n return;\n }\n if (event.target instanceof Element &&\n (ref.current.contains(event.target) ||\n !document.body.contains(event.target))) {\n return;\n }\n cb(event);\n };\n document.addEventListener(\"pointerdown\", listener, false);\n return () => {\n document.removeEventListener(\"pointerdown\", listener);\n };\n }, [ref, cb]);\n};\nconst getSelectedItems = (libraryItems, selectedItems) => libraryItems.filter((item) => selectedItems.includes(item.id));\nconst LibraryMenuWrapper = (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(({ children }, ref) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, ref: ref, className: \"layer-ui__library\" }, { children: children })));\n});\nconst LibraryMenu = ({ onClose, onInsertLibraryItems, pendingElements, onAddToLibrary, theme, setAppState, files, libraryReturnUrl, focusContainer, library, id, appState, }) => {\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_16__.useDevice)();\n useOnClickOutside(ref, (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event) => {\n // If click on the library icon, do nothing.\n if (event.target.closest(\".ToolIcon__library\")) {\n return;\n }\n if (!appState.isLibraryMenuDocked || !device.canDeviceFitSidebar) {\n onClose();\n }\n }, [onClose, appState.isLibraryMenuDocked, device.canDeviceFitSidebar]));\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const handleKeyDown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_12__.KEYS.ESCAPE &&\n (!appState.isLibraryMenuDocked || !device.canDeviceFitSidebar)) {\n onClose();\n }\n };\n document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYDOWN, handleKeyDown);\n return () => {\n document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYDOWN, handleKeyDown);\n };\n }, [onClose, appState.isLibraryMenuDocked, device.canDeviceFitSidebar]);\n const [selectedItems, setSelectedItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [showPublishLibraryDialog, setShowPublishLibraryDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [publishLibSuccess, setPublishLibSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_17__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_2__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_14__.jotaiScope);\n const removeFromLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n const nextItems = libraryItems.filter((item) => !selectedItems.includes(item.id));\n library.setLibrary(nextItems).catch(() => {\n setAppState({ errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"alerts.errorRemovingFromLibrary\") });\n });\n setSelectedItems([]);\n }), [library, setAppState, selectedItems, setSelectedItems]);\n const resetLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n library.resetLibrary();\n focusContainer();\n }, [library, focusContainer]);\n const addToLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((elements, libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_13__.trackEvent)(\"element\", \"addToLibrary\", \"ui\");\n if (elements.some((element) => element.type === \"image\")) {\n return setAppState({\n errorMessage: \"Support for adding images to the library coming soon!\",\n });\n }\n const nextItems = [\n {\n status: \"unpublished\",\n elements,\n id: (0,_random__WEBPACK_IMPORTED_MODULE_4__.randomId)(),\n created: Date.now(),\n },\n ...libraryItems,\n ];\n onAddToLibrary();\n library.setLibrary(nextItems).catch(() => {\n setAppState({ errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"alerts.errorAddingToLibrary\") });\n });\n }), [onAddToLibrary, library, setAppState]);\n const renderPublishSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_5__.Dialog, Object.assign({ onCloseRequest: () => setPublishLibSuccess(null), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.title\"), className: \"publish-library-success\", small: true }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"p\", { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.content\", {\n authorName: publishLibSuccess.authorName,\n }), \" \", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: publishLibSuccess === null || publishLibSuccess === void 0 ? void 0 : publishLibSuccess.url, target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.link\") }))] }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_8__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), onClick: () => setPublishLibSuccess(null), \"data-testid\": \"publish-library-success-close\", className: \"publish-library-success-close\" })] })));\n }, [setPublishLibSuccess, publishLibSuccess]);\n const onPublishLibSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((data, libraryItems) => {\n setShowPublishLibraryDialog(false);\n setPublishLibSuccess({ url: data.url, authorName: data.authorName });\n const nextLibItems = libraryItems.slice();\n nextLibItems.forEach((libItem) => {\n if (selectedItems.includes(libItem.id)) {\n libItem.status = \"published\";\n }\n });\n library.setLibrary(nextLibItems);\n }, [setShowPublishLibraryDialog, setPublishLibSuccess, selectedItems, library]);\n if (libraryItemsData.status === \"loading\" &&\n !libraryItemsData.isInitialized) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuWrapper, Object.assign({ ref: ref }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"layer-ui__library-message\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { size: \"2em\" }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.libraryLoadingMessage\") })] })) })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(LibraryMenuWrapper, Object.assign({ ref: ref }, { children: [showPublishLibraryDialog && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PublishLibrary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { onClose: () => setShowPublishLibraryDialog(false), libraryItems: getSelectedItems(libraryItemsData.libraryItems, selectedItems), appState: appState, onSuccess: (data) => onPublishLibSuccess(data, libraryItemsData.libraryItems), onError: (error) => window.alert(error), updateItemsInStorage: () => library.setLibrary(libraryItemsData.libraryItems), onRemove: (id) => setSelectedItems(selectedItems.filter((_id) => _id !== id)) })), publishLibSuccess && renderPublishSuccess(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuItems__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { isLoading: libraryItemsData.status === \"loading\", libraryItems: libraryItemsData.libraryItems, onRemoveFromLibrary: () => removeFromLibrary(libraryItemsData.libraryItems), onAddToLibrary: (elements) => addToLibrary(elements, libraryItemsData.libraryItems), onInsertLibraryItems: onInsertLibraryItems, pendingElements: pendingElements, setAppState: setAppState, appState: appState, libraryReturnUrl: libraryReturnUrl, library: library, theme: theme, files: files, id: id, selectedItems: selectedItems, onSelectItems: (ids) => setSelectedItems(ids), onPublish: () => setShowPublishLibraryDialog(true), resetLibrary: resetLibrary })] })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQ1osRUFBRSxFQUFFLEVBQUUsRUFDTixhQUFhLEVBQUUsYUFBYSxFQUM1QixhQUFhLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUM3QyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEVBQ2xELFlBQVksRUFBRSxZQUFZLEdBQzFCLEtBQ2lCLENBQ3RCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudS50c3g/YWM0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZUNhbGxiYWNrLFxuICBSZWZPYmplY3QsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpYnJhcnksIHsgbGlicmFyeUl0ZW1zQXRvbSB9IGZyb20gXCIuLi9kYXRhL2xpYnJhcnlcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgcmFuZG9tSWQgfSBmcm9tIFwiLi4vcmFuZG9tXCI7XG5pbXBvcnQge1xuICBMaWJyYXJ5SXRlbXMsXG4gIExpYnJhcnlJdGVtLFxuICBBcHBTdGF0ZSxcbiAgQmluYXJ5RmlsZXMsXG4gIEV4Y2FsaWRyYXdQcm9wcyxcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tIFwiLi9EaWFsb2dcIjtcbmltcG9ydCB7IElzbGFuZCB9IGZyb20gXCIuL0lzbGFuZFwiO1xuaW1wb3J0IFB1Ymxpc2hMaWJyYXJ5IGZyb20gXCIuL1B1Ymxpc2hMaWJyYXJ5XCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuXG5pbXBvcnQgXCIuL0xpYnJhcnlNZW51LnNjc3NcIjtcbmltcG9ydCBMaWJyYXJ5TWVudUl0ZW1zIGZyb20gXCIuL0xpYnJhcnlNZW51SXRlbXNcIjtcbmltcG9ydCB7IEVWRU5UIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyB0cmFja0V2ZW50IH0gZnJvbSBcIi4uL2FuYWx5dGljc1wiO1xuaW1wb3J0IHsgdXNlQXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgam90YWlTY29wZSB9IGZyb20gXCIuLi9qb3RhaVwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4vU3Bpbm5lclwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4vQXBwXCI7XG5cbmNvbnN0IHVzZU9uQ2xpY2tPdXRzaWRlID0gKFxuICByZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGNiOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQsXG4pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCFyZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJlxuICAgICAgICAocmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgICAgICFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYihldmVudCk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgbGlzdGVuZXIsIGZhbHNlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgbGlzdGVuZXIpO1xuICAgIH07XG4gIH0sIFtyZWYsIGNiXSk7XG59O1xuXG5jb25zdCBnZXRTZWxlY3RlZEl0ZW1zID0gKFxuICBsaWJyYXJ5SXRlbXM6IExpYnJhcnlJdGVtcyxcbiAgc2VsZWN0ZWRJdGVtczogTGlicmFyeUl0ZW1bXCJpZFwiXVtdLFxuKSA9PiBsaWJyYXJ5SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0uaWQpKTtcblxuY29uc3QgTGlicmFyeU1lbnVXcmFwcGVyID0gZm9yd2FyZFJlZjxcbiAgSFRNTERpdkVsZW1lbnQsXG4gIHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9XG4+KCh7IGNoaWxkcmVuIH0sIHJlZikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxJc2xhbmQgcGFkZGluZz17MX0gcmVmPXtyZWZ9IGNsYXNzTmFtZT1cImxheWVyLXVpX19saWJyYXJ5XCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Jc2xhbmQ+XG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IExpYnJhcnlNZW51ID0gKHtcbiAgb25DbG9zZSxcbiAgb25JbnNlcnRMaWJyYXJ5SXRlbXMsXG4gIHBlbmRpbmdFbGVtZW50cyxcbiAgb25BZGRUb0xpYnJhcnksXG4gIHRoZW1lLFxuICBzZXRBcHBTdGF0ZSxcbiAgZmlsZXMsXG4gIGxpYnJhcnlSZXR1cm5VcmwsXG4gIGZvY3VzQ29udGFpbmVyLFxuICBsaWJyYXJ5LFxuICBpZCxcbiAgYXBwU3RhdGUsXG59OiB7XG4gIHBlbmRpbmdFbGVtZW50czogTGlicmFyeUl0ZW1bXCJlbGVtZW50c1wiXTtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgb25JbnNlcnRMaWJyYXJ5SXRlbXM6IChsaWJyYXJ5SXRlbXM6IExpYnJhcnlJdGVtcykgPT4gdm9pZDtcbiAgb25BZGRUb0xpYnJhcnk6ICgpID0+IHZvaWQ7XG4gIHRoZW1lOiBBcHBTdGF0ZVtcInRoZW1lXCJdO1xuICBmaWxlczogQmluYXJ5RmlsZXM7XG4gIHNldEFwcFN0YXRlOiBSZWFjdC5Db21wb25lbnQ8YW55LCBBcHBTdGF0ZT5bXCJzZXRTdGF0ZVwiXTtcbiAgbGlicmFyeVJldHVyblVybDogRXhjYWxpZHJhd1Byb3BzW1wibGlicmFyeVJldHVyblVybFwiXTtcbiAgZm9jdXNDb250YWluZXI6ICgpID0+IHZvaWQ7XG4gIGxpYnJhcnk6IExpYnJhcnk7XG4gIGlkOiBzdHJpbmc7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbn0pID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG5cbiAgdXNlT25DbGlja091dHNpZGUoXG4gICAgcmVmLFxuICAgIHVzZUNhbGxiYWNrKFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIElmIGNsaWNrIG9uIHRoZSBsaWJyYXJ5IGljb24sIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoXCIuVG9vbEljb25fX2xpYnJhcnlcIikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcHBTdGF0ZS5pc0xpYnJhcnlNZW51RG9ja2VkIHx8ICFkZXZpY2UuY2FuRGV2aWNlRml0U2lkZWJhcikge1xuICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvbkNsb3NlLCBhcHBTdGF0ZS5pc0xpYnJhcnlNZW51RG9ja2VkLCBkZXZpY2UuY2FuRGV2aWNlRml0U2lkZWJhcl0sXG4gICAgKSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQua2V5ID09PSBLRVlTLkVTQ0FQRSAmJlxuICAgICAgICAoIWFwcFN0YXRlLmlzTGlicmFyeU1lbnVEb2NrZWQgfHwgIWRldmljZS5jYW5EZXZpY2VGaXRTaWRlYmFyKVxuICAgICAgKSB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoRVZFTlQuS0VZRE9XTiwgaGFuZGxlS2V5RG93bik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoRVZFTlQuS0VZRE9XTiwgaGFuZGxlS2V5RG93bik7XG4gICAgfTtcbiAgfSwgW29uQ2xvc2UsIGFwcFN0YXRlLmlzTGlicmFyeU1lbnVEb2NrZWQsIGRldmljZS5jYW5EZXZpY2VGaXRTaWRlYmFyXSk7XG5cbiAgY29uc3QgW3NlbGVjdGVkSXRlbXMsIHNldFNlbGVjdGVkSXRlbXNdID0gdXNlU3RhdGU8TGlicmFyeUl0ZW1bXCJpZFwiXVtdPihbXSk7XG4gIGNvbnN0IFtzaG93UHVibGlzaExpYnJhcnlEaWFsb2csIHNldFNob3dQdWJsaXNoTGlicmFyeURpYWxvZ10gPVxuICAgIHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3B1Ymxpc2hMaWJTdWNjZXNzLCBzZXRQdWJsaXNoTGliU3VjY2Vzc10gPSB1c2VTdGF0ZTxudWxsIHwge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGF1dGhvck5hbWU6IHN0cmluZztcbiAgfT4obnVsbCk7XG5cbiAgY29uc3QgW2xpYnJhcnlJdGVtc0RhdGFdID0gdXNlQXRvbShsaWJyYXJ5SXRlbXNBdG9tLCBqb3RhaVNjb3BlKTtcblxuICBjb25zdCByZW1vdmVGcm9tTGlicmFyeSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChsaWJyYXJ5SXRlbXM6IExpYnJhcnlJdGVtcykgPT4ge1xuICAgICAgY29uc3QgbmV4dEl0ZW1zID0gbGlicmFyeUl0ZW1zLmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+ICFzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW0uaWQpLFxuICAgICAgKTtcbiAgICAgIGxpYnJhcnkuc2V0TGlicmFyeShuZXh0SXRlbXMpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgc2V0QXBwU3RhdGUoeyBlcnJvck1lc3NhZ2U6IHQoXCJhbGVydHMuZXJyb3JSZW1vdmluZ0Zyb21MaWJyYXJ5XCIpIH0pO1xuICAgICAgfSk7XG4gICAgICBzZXRTZWxlY3RlZEl0ZW1zKFtdKTtcbiAgICB9LFxuICAgIFtsaWJyYXJ5LCBzZXRBcHBTdGF0ZSwgc2VsZWN0ZWRJdGVtcywgc2V0U2VsZWN0ZWRJdGVtc10sXG4gICk7XG5cbiAgY29uc3QgcmVzZXRMaWJyYXJ5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxpYnJhcnkucmVzZXRMaWJyYXJ5KCk7XG4gICAgZm9jdXNDb250YWluZXIoKTtcbiAgfSwgW2xpYnJhcnksIGZvY3VzQ29udGFpbmVyXSk7XG5cbiAgY29uc3QgYWRkVG9MaWJyYXJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGVsZW1lbnRzOiBMaWJyYXJ5SXRlbVtcImVsZW1lbnRzXCJdLCBsaWJyYXJ5SXRlbXM6IExpYnJhcnlJdGVtcykgPT4ge1xuICAgICAgdHJhY2tFdmVudChcImVsZW1lbnRcIiwgXCJhZGRUb0xpYnJhcnlcIiwgXCJ1aVwiKTtcbiAgICAgIGlmIChlbGVtZW50cy5zb21lKChlbGVtZW50KSA9PiBlbGVtZW50LnR5cGUgPT09IFwiaW1hZ2VcIikpIHtcbiAgICAgICAgcmV0dXJuIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6IFwiU3VwcG9ydCBmb3IgYWRkaW5nIGltYWdlcyB0byB0aGUgbGlicmFyeSBjb21pbmcgc29vbiFcIixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0SXRlbXM6IExpYnJhcnlJdGVtcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0YXR1czogXCJ1bnB1Ymxpc2hlZFwiLFxuICAgICAgICAgIGVsZW1lbnRzLFxuICAgICAgICAgIGlkOiByYW5kb21JZCgpLFxuICAgICAgICAgIGNyZWF0ZWQ6IERhdGUubm93KCksXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmxpYnJhcnlJdGVtcyxcbiAgICAgIF07XG4gICAgICBvbkFkZFRvTGlicmFyeSgpO1xuICAgICAgbGlicmFyeS5zZXRMaWJyYXJ5KG5leHRJdGVtcykuY2F0Y2goKCkgPT4ge1xuICAgICAgICBzZXRBcHBTdGF0ZSh7IGVycm9yTWVzc2FnZTogdChcImFsZXJ0cy5lcnJvckFkZGluZ1RvTGlicmFyeVwiKSB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW29uQWRkVG9MaWJyYXJ5LCBsaWJyYXJ5LCBzZXRBcHBTdGF0ZV0sXG4gICk7XG5cbiAgY29uc3QgcmVuZGVyUHVibGlzaFN1Y2Nlc3MgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEaWFsb2dcbiAgICAgICAgb25DbG9zZVJlcXVlc3Q9eygpID0+IHNldFB1Ymxpc2hMaWJTdWNjZXNzKG51bGwpfVxuICAgICAgICB0aXRsZT17dChcInB1Ymxpc2hTdWNjZXNzRGlhbG9nLnRpdGxlXCIpfVxuICAgICAgICBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktc3VjY2Vzc1wiXG4gICAgICAgIHNtYWxsPXt0cnVlfVxuICAgICAgPlxuICAgICAgICA8cD5cbiAgICAgICAgICB7dChcInB1Ymxpc2hTdWNjZXNzRGlhbG9nLmNvbnRlbnRcIiwge1xuICAgICAgICAgICAgYXV0aG9yTmFtZTogcHVibGlzaExpYlN1Y2Nlc3MhLmF1dGhvck5hbWUsXG4gICAgICAgICAgfSl9e1wiIFwifVxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPXtwdWJsaXNoTGliU3VjY2Vzcz8udXJsfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwicHVibGlzaFN1Y2Nlc3NEaWFsb2cubGlua1wiKX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPFRvb2xCdXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0aXRsZT17dChcImJ1dHRvbnMuY2xvc2VcIil9XG4gICAgICAgICAgYXJpYS1sYWJlbD17dChcImJ1dHRvbnMuY2xvc2VcIil9XG4gICAgICAgICAgbGFiZWw9e3QoXCJidXR0b25zLmNsb3NlXCIpfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFB1Ymxpc2hMaWJTdWNjZXNzKG51bGwpfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicHVibGlzaC1saWJyYXJ5LXN1Y2Nlc3MtY2xvc2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInB1Ymxpc2gtbGlicmFyeS1zdWNjZXNzLWNsb3NlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvRGlhbG9nPlxuICAgICk7XG4gIH0sIFtzZXRQdWJsaXNoTGliU3VjY2VzcywgcHVibGlzaExpYlN1Y2Nlc3NdKTtcblxuICBjb25zdCBvblB1Ymxpc2hMaWJTdWNjZXNzID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGEsIGxpYnJhcnlJdGVtczogTGlicmFyeUl0ZW1zKSA9PiB7XG4gICAgICBzZXRTaG93UHVibGlzaExpYnJhcnlEaWFsb2coZmFsc2UpO1xuICAgICAgc2V0UHVibGlzaExpYlN1Y2Nlc3MoeyB1cmw6IGRhdGEudXJsLCBhdXRob3JOYW1lOiBkYXRhLmF1dGhvck5hbWUgfSk7XG4gICAgICBjb25zdCBuZXh0TGliSXRlbXMgPSBsaWJyYXJ5SXRlbXMuc2xpY2UoKTtcbiAgICAgIG5leHRMaWJJdGVtcy5mb3JFYWNoKChsaWJJdGVtKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGxpYkl0ZW0uaWQpKSB7XG4gICAgICAgICAgbGliSXRlbS5zdGF0dXMgPSBcInB1Ymxpc2hlZFwiO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxpYnJhcnkuc2V0TGlicmFyeShuZXh0TGliSXRlbXMpO1xuICAgIH0sXG4gICAgW3NldFNob3dQdWJsaXNoTGlicmFyeURpYWxvZywgc2V0UHVibGlzaExpYlN1Y2Nlc3MsIHNlbGVjdGVkSXRlbXMsIGxpYnJhcnldLFxuICApO1xuXG4gIGlmIChcbiAgICBsaWJyYXJ5SXRlbXNEYXRhLnN0YXR1cyA9PT0gXCJsb2FkaW5nXCIgJiZcbiAgICAhbGlicmFyeUl0ZW1zRGF0YS5pc0luaXRpYWxpemVkXG4gICkge1xuICAgIHJldHVybiAoXG4gICAgICA8TGlicmFyeU1lbnVXcmFwcGVyIHJlZj17cmVmfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci11aV9fbGlicmFyeS1tZXNzYWdlXCI+XG4gICAgICAgICAgPFNwaW5uZXIgc2l6ZT1cIjJlbVwiIC8+XG4gICAgICAgICAgPHNwYW4+e3QoXCJsYWJlbHMubGlicmFyeUxvYWRpbmdNZXNzYWdlXCIpfTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0xpYnJhcnlNZW51V3JhcHBlcj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TGlicmFyeU1lbnVXcmFwcGVyIHJlZj17cmVmfT5cbiAgICAgIHtzaG93UHVibGlzaExpYnJhcnlEaWFsb2cgJiYgKFxuICAgICAgICA8UHVibGlzaExpYnJhcnlcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHVibGlzaExpYnJhcnlEaWFsb2coZmFsc2UpfVxuICAgICAgICAgIGxpYnJhcnlJdGVtcz17Z2V0U2VsZWN0ZWRJdGVtcyhcbiAgICAgICAgICAgIGxpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zLFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICApfVxuICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICBvblN1Y2Nlc3M9eyhkYXRhKSA9PlxuICAgICAgICAgICAgb25QdWJsaXNoTGliU3VjY2VzcyhkYXRhLCBsaWJyYXJ5SXRlbXNEYXRhLmxpYnJhcnlJdGVtcylcbiAgICAgICAgICB9XG4gICAgICAgICAgb25FcnJvcj17KGVycm9yKSA9PiB3aW5kb3cuYWxlcnQoZXJyb3IpfVxuICAgICAgICAgIHVwZGF0ZUl0ZW1zSW5TdG9yYWdlPXsoKSA9PlxuICAgICAgICAgICAgbGlicmFyeS5zZXRMaWJyYXJ5KGxpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zKVxuICAgICAgICAgIH1cbiAgICAgICAgICBvblJlbW92ZT17KGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEl0ZW1zKHNlbGVjdGVkSXRlbXMuZmlsdGVyKChfaWQpID0+IF9pZCAhPT0gaWQpKVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7cHVibGlzaExpYlN1Y2Nlc3MgJiYgcmVuZGVyUHVibGlzaFN1Y2Nlc3MoKX1cbiAgICAgIDxMaWJyYXJ5TWVudUl0ZW1zXG4gICAgICAgIGlzTG9hZGluZz17bGlicmFyeUl0ZW1zRGF0YS5zdGF0dXMgPT09IFwibG9hZGluZ1wifVxuICAgICAgICBsaWJyYXJ5SXRlbXM9e2xpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zfVxuICAgICAgICBvblJlbW92ZUZyb21MaWJyYXJ5PXsoKSA9PlxuICAgICAgICAgIHJlbW92ZUZyb21MaWJyYXJ5KGxpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zKVxuICAgICAgICB9XG4gICAgICAgIG9uQWRkVG9MaWJyYXJ5PXsoZWxlbWVudHMpID0+XG4gICAgICAgICAgYWRkVG9MaWJyYXJ5KGVsZW1lbnRzLCBsaWJyYXJ5SXRlbXNEYXRhLmxpYnJhcnlJdGVtcylcbiAgICAgICAgfVxuICAgICAgICBvbkluc2VydExpYnJhcnlJdGVtcz17b25JbnNlcnRMaWJyYXJ5SXRlbXN9XG4gICAgICAgIHBlbmRpbmdFbGVtZW50cz17cGVuZGluZ0VsZW1lbnRzfVxuICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgbGlicmFyeVJldHVyblVybD17bGlicmFyeVJldHVyblVybH1cbiAgICAgICAgbGlicmFyeT17bGlicmFyeX1cbiAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICBmaWxlcz17ZmlsZXN9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgc2VsZWN0ZWRJdGVtcz17c2VsZWN0ZWRJdGVtc31cbiAgICAgICAgb25TZWxlY3RJdGVtcz17KGlkcykgPT4gc2V0U2VsZWN0ZWRJdGVtcyhpZHMpfVxuICAgICAgICBvblB1Ymxpc2g9eygpID0+IHNldFNob3dQdWJsaXNoTGlicmFyeURpYWxvZyh0cnVlKX1cbiAgICAgICAgcmVzZXRMaWJyYXJ5PXtyZXNldExpYnJhcnl9XG4gICAgICAvPlxuICAgIDwvTGlicmFyeU1lbnVXcmFwcGVyPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.tsx\n");
2395
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LibraryMenu\": () => (/* binding */ LibraryMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/library */ \"../../data/library.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../random */ \"../../random.ts\");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Dialog */ \"../../components/Dialog.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _PublishLibrary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PublishLibrary */ \"../../components/PublishLibrary.tsx\");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ToolButton */ \"../../components/ToolButton.tsx\");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryMenu.scss */ \"../../components/LibraryMenu.scss\");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _LibraryMenuItems__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenuItems */ \"../../components/LibraryMenuItems.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../jotai */ \"../../jotai.ts\");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Spinner */ \"../../components/Spinner.tsx\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useOnClickOutside = (ref, cb) => {\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const listener = (event) => {\n if (!ref.current) {\n return;\n }\n if (event.target instanceof Element &&\n (ref.current.contains(event.target) ||\n !document.body.contains(event.target))) {\n return;\n }\n cb(event);\n };\n document.addEventListener(\"pointerdown\", listener, false);\n return () => {\n document.removeEventListener(\"pointerdown\", listener);\n };\n }, [ref, cb]);\n};\nconst getSelectedItems = (libraryItems, selectedItems) => libraryItems.filter((item) => selectedItems.includes(item.id));\nconst LibraryMenuWrapper = (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(({ children }, ref) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, ref: ref, className: \"layer-ui__library\" }, { children: children })));\n});\nconst LibraryMenu = ({ onClose, onInsertLibraryItems, pendingElements, onAddToLibrary, theme, setAppState, files, libraryReturnUrl, focusContainer, library, id, appState, }) => {\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_16__.useDevice)();\n useOnClickOutside(ref, (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event) => {\n // If click on the library icon, do nothing.\n if (event.target.closest(\".ToolIcon__library\")) {\n return;\n }\n if (!appState.isLibraryMenuDocked || !device.canDeviceFitSidebar) {\n onClose();\n }\n }, [onClose, appState.isLibraryMenuDocked, device.canDeviceFitSidebar]));\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n const handleKeyDown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_12__.KEYS.ESCAPE &&\n (!appState.isLibraryMenuDocked || !device.canDeviceFitSidebar)) {\n onClose();\n }\n };\n document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYDOWN, handleKeyDown);\n return () => {\n document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYDOWN, handleKeyDown);\n };\n }, [onClose, appState.isLibraryMenuDocked, device.canDeviceFitSidebar]);\n const [selectedItems, setSelectedItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [showPublishLibraryDialog, setShowPublishLibraryDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [publishLibSuccess, setPublishLibSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_17__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_2__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_14__.jotaiScope);\n const removeFromLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n const nextItems = libraryItems.filter((item) => !selectedItems.includes(item.id));\n library.setLibrary(nextItems).catch(() => {\n setAppState({ errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"alerts.errorRemovingFromLibrary\") });\n });\n setSelectedItems([]);\n }), [library, setAppState, selectedItems, setSelectedItems]);\n const resetLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n library.resetLibrary();\n focusContainer();\n }, [library, focusContainer]);\n const addToLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((elements, libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_13__.trackEvent)(\"element\", \"addToLibrary\", \"ui\");\n if (elements.some((element) => element.type === \"image\")) {\n return setAppState({\n errorMessage: \"Support for adding images to the library coming soon!\",\n });\n }\n const nextItems = [\n {\n status: \"unpublished\",\n elements,\n id: (0,_random__WEBPACK_IMPORTED_MODULE_4__.randomId)(),\n created: Date.now(),\n },\n ...libraryItems,\n ];\n onAddToLibrary();\n library.setLibrary(nextItems).catch(() => {\n setAppState({ errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"alerts.errorAddingToLibrary\") });\n });\n }), [onAddToLibrary, library, setAppState]);\n const renderPublishSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_5__.Dialog, Object.assign({ onCloseRequest: () => setPublishLibSuccess(null), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.title\"), className: \"publish-library-success\", small: true }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"p\", { children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.content\", {\n authorName: publishLibSuccess.authorName,\n }), \" \", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({ href: publishLibSuccess === null || publishLibSuccess === void 0 ? void 0 : publishLibSuccess.url, target: \"_blank\", rel: \"noopener noreferrer\" }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"publishSuccessDialog.link\") }))] }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_8__.ToolButton, { type: \"button\", title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), \"aria-label\": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.close\"), onClick: () => setPublishLibSuccess(null), \"data-testid\": \"publish-library-success-close\", className: \"publish-library-success-close\" })] })));\n }, [setPublishLibSuccess, publishLibSuccess]);\n const onPublishLibSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((data, libraryItems) => {\n setShowPublishLibraryDialog(false);\n setPublishLibSuccess({ url: data.url, authorName: data.authorName });\n const nextLibItems = libraryItems.slice();\n nextLibItems.forEach((libItem) => {\n if (selectedItems.includes(libItem.id)) {\n libItem.status = \"published\";\n }\n });\n library.setLibrary(nextLibItems);\n }, [setShowPublishLibraryDialog, setPublishLibSuccess, selectedItems, library]);\n if (libraryItemsData.status === \"loading\" &&\n !libraryItemsData.isInitialized) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuWrapper, Object.assign({ ref: ref }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"layer-ui__library-message\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { size: \"2em\" }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"span\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.libraryLoadingMessage\") })] })) })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(LibraryMenuWrapper, Object.assign({ ref: ref }, { children: [showPublishLibraryDialog && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PublishLibrary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { onClose: () => setShowPublishLibraryDialog(false), libraryItems: getSelectedItems(libraryItemsData.libraryItems, selectedItems), appState: appState, onSuccess: (data) => onPublishLibSuccess(data, libraryItemsData.libraryItems), onError: (error) => window.alert(error), updateItemsInStorage: () => library.setLibrary(libraryItemsData.libraryItems), onRemove: (id) => setSelectedItems(selectedItems.filter((_id) => _id !== id)) })), publishLibSuccess && renderPublishSuccess(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuItems__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { isLoading: libraryItemsData.status === \"loading\", libraryItems: libraryItemsData.libraryItems, onRemoveFromLibrary: () => removeFromLibrary(libraryItemsData.libraryItems), onAddToLibrary: (elements) => addToLibrary(elements, libraryItemsData.libraryItems), onInsertLibraryItems: onInsertLibraryItems, pendingElements: pendingElements, setAppState: setAppState, appState: appState, libraryReturnUrl: libraryReturnUrl, library: library, theme: theme, files: files, id: id, selectedItems: selectedItems, onSelectItems: (ids) => setSelectedItems(ids), onPublish: () => setShowPublishLibraryDialog(true), resetLibrary: resetLibrary })] })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SyxFQUNaLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFDN0MsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUNsRCxZQUFZLEVBQUUsWUFBWSxHQUMxQixLQUNpQixDQUN0QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnUudHN4P2FjNDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgUmVmT2JqZWN0LFxuICBmb3J3YXJkUmVmLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaWJyYXJ5LCB7IGxpYnJhcnlJdGVtc0F0b20gfSBmcm9tIFwiLi4vZGF0YS9saWJyYXJ5XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IHJhbmRvbUlkIH0gZnJvbSBcIi4uL3JhbmRvbVwiO1xuaW1wb3J0IHtcbiAgTGlicmFyeUl0ZW1zLFxuICBMaWJyYXJ5SXRlbSxcbiAgQXBwU3RhdGUsXG4gIEJpbmFyeUZpbGVzLFxuICBFeGNhbGlkcmF3UHJvcHMsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSBcIi4vRGlhbG9nXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCBQdWJsaXNoTGlicmFyeSBmcm9tIFwiLi9QdWJsaXNoTGlicmFyeVwiO1xuaW1wb3J0IHsgVG9vbEJ1dHRvbiB9IGZyb20gXCIuL1Rvb2xCdXR0b25cIjtcblxuaW1wb3J0IFwiLi9MaWJyYXJ5TWVudS5zY3NzXCI7XG5pbXBvcnQgTGlicmFyeU1lbnVJdGVtcyBmcm9tIFwiLi9MaWJyYXJ5TWVudUl0ZW1zXCI7XG5pbXBvcnQgeyBFVkVOVCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuaW1wb3J0IHsgdHJhY2tFdmVudCB9IGZyb20gXCIuLi9hbmFseXRpY3NcIjtcbmltcG9ydCB7IHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGpvdGFpU2NvcGUgfSBmcm9tIFwiLi4vam90YWlcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuL1NwaW5uZXJcIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuL0FwcFwiO1xuXG5jb25zdCB1c2VPbkNsaWNrT3V0c2lkZSA9IChcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICBjYjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkLFxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcbiAgICAgICAgKHJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgfHxcbiAgICAgICAgICAhZG9jdW1lbnQuYm9keS5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2IoZXZlbnQpO1xuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGxpc3RlbmVyLCBmYWxzZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGxpc3RlbmVyKTtcbiAgICB9O1xuICB9LCBbcmVmLCBjYl0pO1xufTtcblxuY29uc3QgZ2V0U2VsZWN0ZWRJdGVtcyA9IChcbiAgbGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXMsXG4gIHNlbGVjdGVkSXRlbXM6IExpYnJhcnlJdGVtW1wiaWRcIl1bXSxcbikgPT4gbGlicmFyeUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtLmlkKSk7XG5cbmNvbnN0IExpYnJhcnlNZW51V3JhcHBlciA9IGZvcndhcmRSZWY8XG4gIEhUTUxEaXZFbGVtZW50LFxuICB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfVxuPigoeyBjaGlsZHJlbiB9LCByZWYpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8SXNsYW5kIHBhZGRpbmc9ezF9IHJlZj17cmVmfSBjbGFzc05hbWU9XCJsYXllci11aV9fbGlicmFyeVwiPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvSXNsYW5kPlxuICApO1xufSk7XG5cbmV4cG9ydCBjb25zdCBMaWJyYXJ5TWVudSA9ICh7XG4gIG9uQ2xvc2UsXG4gIG9uSW5zZXJ0TGlicmFyeUl0ZW1zLFxuICBwZW5kaW5nRWxlbWVudHMsXG4gIG9uQWRkVG9MaWJyYXJ5LFxuICB0aGVtZSxcbiAgc2V0QXBwU3RhdGUsXG4gIGZpbGVzLFxuICBsaWJyYXJ5UmV0dXJuVXJsLFxuICBmb2N1c0NvbnRhaW5lcixcbiAgbGlicmFyeSxcbiAgaWQsXG4gIGFwcFN0YXRlLFxufToge1xuICBwZW5kaW5nRWxlbWVudHM6IExpYnJhcnlJdGVtW1wiZWxlbWVudHNcIl07XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIG9uSW5zZXJ0TGlicmFyeUl0ZW1zOiAobGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHZvaWQ7XG4gIG9uQWRkVG9MaWJyYXJ5OiAoKSA9PiB2b2lkO1xuICB0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXTtcbiAgZmlsZXM6IEJpbmFyeUZpbGVzO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGxpYnJhcnlSZXR1cm5Vcmw6IEV4Y2FsaWRyYXdQcm9wc1tcImxpYnJhcnlSZXR1cm5VcmxcIl07XG4gIGZvY3VzQ29udGFpbmVyOiAoKSA9PiB2b2lkO1xuICBsaWJyYXJ5OiBMaWJyYXJ5O1xuICBpZDogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG59KSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuXG4gIHVzZU9uQ2xpY2tPdXRzaWRlKFxuICAgIHJlZixcbiAgICB1c2VDYWxsYmFjayhcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAvLyBJZiBjbGljayBvbiB0aGUgbGlicmFyeSBpY29uLCBkbyBub3RoaW5nLlxuICAgICAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KFwiLlRvb2xJY29uX19saWJyYXJ5XCIpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYXBwU3RhdGUuaXNMaWJyYXJ5TWVudURvY2tlZCB8fCAhZGV2aWNlLmNhbkRldmljZUZpdFNpZGViYXIpIHtcbiAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbb25DbG9zZSwgYXBwU3RhdGUuaXNMaWJyYXJ5TWVudURvY2tlZCwgZGV2aWNlLmNhbkRldmljZUZpdFNpZGViYXJdLFxuICAgICksXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmtleSA9PT0gS0VZUy5FU0NBUEUgJiZcbiAgICAgICAgKCFhcHBTdGF0ZS5pc0xpYnJhcnlNZW51RG9ja2VkIHx8ICFkZXZpY2UuY2FuRGV2aWNlRml0U2lkZWJhcilcbiAgICAgICkge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKEVWRU5ULktFWURPV04sIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKEVWRU5ULktFWURPV04sIGhhbmRsZUtleURvd24pO1xuICAgIH07XG4gIH0sIFtvbkNsb3NlLCBhcHBTdGF0ZS5pc0xpYnJhcnlNZW51RG9ja2VkLCBkZXZpY2UuY2FuRGV2aWNlRml0U2lkZWJhcl0pO1xuXG4gIGNvbnN0IFtzZWxlY3RlZEl0ZW1zLCBzZXRTZWxlY3RlZEl0ZW1zXSA9IHVzZVN0YXRlPExpYnJhcnlJdGVtW1wiaWRcIl1bXT4oW10pO1xuICBjb25zdCBbc2hvd1B1Ymxpc2hMaWJyYXJ5RGlhbG9nLCBzZXRTaG93UHVibGlzaExpYnJhcnlEaWFsb2ddID1cbiAgICB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtwdWJsaXNoTGliU3VjY2Vzcywgc2V0UHVibGlzaExpYlN1Y2Nlc3NdID0gdXNlU3RhdGU8bnVsbCB8IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBhdXRob3JOYW1lOiBzdHJpbmc7XG4gIH0+KG51bGwpO1xuXG4gIGNvbnN0IFtsaWJyYXJ5SXRlbXNEYXRhXSA9IHVzZUF0b20obGlicmFyeUl0ZW1zQXRvbSwgam90YWlTY29wZSk7XG5cbiAgY29uc3QgcmVtb3ZlRnJvbUxpYnJhcnkgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAobGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHtcbiAgICAgIGNvbnN0IG5leHRJdGVtcyA9IGxpYnJhcnlJdGVtcy5maWx0ZXIoXG4gICAgICAgIChpdGVtKSA9PiAhc2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtLmlkKSxcbiAgICAgICk7XG4gICAgICBsaWJyYXJ5LnNldExpYnJhcnkobmV4dEl0ZW1zKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiB0KFwiYWxlcnRzLmVycm9yUmVtb3ZpbmdGcm9tTGlicmFyeVwiKSB9KTtcbiAgICAgIH0pO1xuICAgICAgc2V0U2VsZWN0ZWRJdGVtcyhbXSk7XG4gICAgfSxcbiAgICBbbGlicmFyeSwgc2V0QXBwU3RhdGUsIHNlbGVjdGVkSXRlbXMsIHNldFNlbGVjdGVkSXRlbXNdLFxuICApO1xuXG4gIGNvbnN0IHJlc2V0TGlicmFyeSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsaWJyYXJ5LnJlc2V0TGlicmFyeSgpO1xuICAgIGZvY3VzQ29udGFpbmVyKCk7XG4gIH0sIFtsaWJyYXJ5LCBmb2N1c0NvbnRhaW5lcl0pO1xuXG4gIGNvbnN0IGFkZFRvTGlicmFyeSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChlbGVtZW50czogTGlicmFyeUl0ZW1bXCJlbGVtZW50c1wiXSwgbGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHtcbiAgICAgIHRyYWNrRXZlbnQoXCJlbGVtZW50XCIsIFwiYWRkVG9MaWJyYXJ5XCIsIFwidWlcIik7XG4gICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC50eXBlID09PSBcImltYWdlXCIpKSB7XG4gICAgICAgIHJldHVybiBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlN1cHBvcnQgZm9yIGFkZGluZyBpbWFnZXMgdG8gdGhlIGxpYnJhcnkgY29taW5nIHNvb24hXCIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV4dEl0ZW1zOiBMaWJyYXJ5SXRlbXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0dXM6IFwidW5wdWJsaXNoZWRcIixcbiAgICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgICBpZDogcmFuZG9tSWQoKSxcbiAgICAgICAgICBjcmVhdGVkOiBEYXRlLm5vdygpLFxuICAgICAgICB9LFxuICAgICAgICAuLi5saWJyYXJ5SXRlbXMsXG4gICAgICBdO1xuICAgICAgb25BZGRUb0xpYnJhcnkoKTtcbiAgICAgIGxpYnJhcnkuc2V0TGlicmFyeShuZXh0SXRlbXMpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgc2V0QXBwU3RhdGUoeyBlcnJvck1lc3NhZ2U6IHQoXCJhbGVydHMuZXJyb3JBZGRpbmdUb0xpYnJhcnlcIikgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtvbkFkZFRvTGlicmFyeSwgbGlicmFyeSwgc2V0QXBwU3RhdGVdLFxuICApO1xuXG4gIGNvbnN0IHJlbmRlclB1Ymxpc2hTdWNjZXNzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8RGlhbG9nXG4gICAgICAgIG9uQ2xvc2VSZXF1ZXN0PXsoKSA9PiBzZXRQdWJsaXNoTGliU3VjY2VzcyhudWxsKX1cbiAgICAgICAgdGl0bGU9e3QoXCJwdWJsaXNoU3VjY2Vzc0RpYWxvZy50aXRsZVwiKX1cbiAgICAgICAgY2xhc3NOYW1lPVwicHVibGlzaC1saWJyYXJ5LXN1Y2Nlc3NcIlxuICAgICAgICBzbWFsbD17dHJ1ZX1cbiAgICAgID5cbiAgICAgICAgPHA+XG4gICAgICAgICAge3QoXCJwdWJsaXNoU3VjY2Vzc0RpYWxvZy5jb250ZW50XCIsIHtcbiAgICAgICAgICAgIGF1dGhvck5hbWU6IHB1Ymxpc2hMaWJTdWNjZXNzIS5hdXRob3JOYW1lLFxuICAgICAgICAgIH0pfXtcIiBcIn1cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17cHVibGlzaExpYlN1Y2Nlc3M/LnVybH1cbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInB1Ymxpc2hTdWNjZXNzRGlhbG9nLmxpbmtcIil9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxUb29sQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGl0bGU9e3QoXCJidXR0b25zLmNsb3NlXCIpfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e3QoXCJidXR0b25zLmNsb3NlXCIpfVxuICAgICAgICAgIGxhYmVsPXt0KFwiYnV0dG9ucy5jbG9zZVwiKX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRQdWJsaXNoTGliU3VjY2VzcyhudWxsKX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInB1Ymxpc2gtbGlicmFyeS1zdWNjZXNzLWNsb3NlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJwdWJsaXNoLWxpYnJhcnktc3VjY2Vzcy1jbG9zZVwiXG4gICAgICAgIC8+XG4gICAgICA8L0RpYWxvZz5cbiAgICApO1xuICB9LCBbc2V0UHVibGlzaExpYlN1Y2Nlc3MsIHB1Ymxpc2hMaWJTdWNjZXNzXSk7XG5cbiAgY29uc3Qgb25QdWJsaXNoTGliU3VjY2VzcyA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRhOiB7IHVybDogc3RyaW5nOyBhdXRob3JOYW1lOiBzdHJpbmcgfSwgbGlicmFyeUl0ZW1zOiBMaWJyYXJ5SXRlbXMpID0+IHtcbiAgICAgIHNldFNob3dQdWJsaXNoTGlicmFyeURpYWxvZyhmYWxzZSk7XG4gICAgICBzZXRQdWJsaXNoTGliU3VjY2Vzcyh7IHVybDogZGF0YS51cmwsIGF1dGhvck5hbWU6IGRhdGEuYXV0aG9yTmFtZSB9KTtcbiAgICAgIGNvbnN0IG5leHRMaWJJdGVtcyA9IGxpYnJhcnlJdGVtcy5zbGljZSgpO1xuICAgICAgbmV4dExpYkl0ZW1zLmZvckVhY2goKGxpYkl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMuaW5jbHVkZXMobGliSXRlbS5pZCkpIHtcbiAgICAgICAgICBsaWJJdGVtLnN0YXR1cyA9IFwicHVibGlzaGVkXCI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbGlicmFyeS5zZXRMaWJyYXJ5KG5leHRMaWJJdGVtcyk7XG4gICAgfSxcbiAgICBbc2V0U2hvd1B1Ymxpc2hMaWJyYXJ5RGlhbG9nLCBzZXRQdWJsaXNoTGliU3VjY2Vzcywgc2VsZWN0ZWRJdGVtcywgbGlicmFyeV0sXG4gICk7XG5cbiAgaWYgKFxuICAgIGxpYnJhcnlJdGVtc0RhdGEuc3RhdHVzID09PSBcImxvYWRpbmdcIiAmJlxuICAgICFsaWJyYXJ5SXRlbXNEYXRhLmlzSW5pdGlhbGl6ZWRcbiAgKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMaWJyYXJ5TWVudVdyYXBwZXIgcmVmPXtyZWZ9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLXVpX19saWJyYXJ5LW1lc3NhZ2VcIj5cbiAgICAgICAgICA8U3Bpbm5lciBzaXplPVwiMmVtXCIgLz5cbiAgICAgICAgICA8c3Bhbj57dChcImxhYmVscy5saWJyYXJ5TG9hZGluZ01lc3NhZ2VcIil9PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTGlicmFyeU1lbnVXcmFwcGVyPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxMaWJyYXJ5TWVudVdyYXBwZXIgcmVmPXtyZWZ9PlxuICAgICAge3Nob3dQdWJsaXNoTGlicmFyeURpYWxvZyAmJiAoXG4gICAgICAgIDxQdWJsaXNoTGlicmFyeVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQdWJsaXNoTGlicmFyeURpYWxvZyhmYWxzZSl9XG4gICAgICAgICAgbGlicmFyeUl0ZW1zPXtnZXRTZWxlY3RlZEl0ZW1zKFxuICAgICAgICAgICAgbGlicmFyeUl0ZW1zRGF0YS5saWJyYXJ5SXRlbXMsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICl9XG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIG9uU3VjY2Vzcz17KGRhdGEpID0+XG4gICAgICAgICAgICBvblB1Ymxpc2hMaWJTdWNjZXNzKGRhdGEsIGxpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zKVxuICAgICAgICAgIH1cbiAgICAgICAgICBvbkVycm9yPXsoZXJyb3IpID0+IHdpbmRvdy5hbGVydChlcnJvcil9XG4gICAgICAgICAgdXBkYXRlSXRlbXNJblN0b3JhZ2U9eygpID0+XG4gICAgICAgICAgICBsaWJyYXJ5LnNldExpYnJhcnkobGlicmFyeUl0ZW1zRGF0YS5saWJyYXJ5SXRlbXMpXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uUmVtb3ZlPXsoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHNldFNlbGVjdGVkSXRlbXMoc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF9pZCkgPT4gX2lkICE9PSBpZCkpXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwdWJsaXNoTGliU3VjY2VzcyAmJiByZW5kZXJQdWJsaXNoU3VjY2VzcygpfVxuICAgICAgPExpYnJhcnlNZW51SXRlbXNcbiAgICAgICAgaXNMb2FkaW5nPXtsaWJyYXJ5SXRlbXNEYXRhLnN0YXR1cyA9PT0gXCJsb2FkaW5nXCJ9XG4gICAgICAgIGxpYnJhcnlJdGVtcz17bGlicmFyeUl0ZW1zRGF0YS5saWJyYXJ5SXRlbXN9XG4gICAgICAgIG9uUmVtb3ZlRnJvbUxpYnJhcnk9eygpID0+XG4gICAgICAgICAgcmVtb3ZlRnJvbUxpYnJhcnkobGlicmFyeUl0ZW1zRGF0YS5saWJyYXJ5SXRlbXMpXG4gICAgICAgIH1cbiAgICAgICAgb25BZGRUb0xpYnJhcnk9eyhlbGVtZW50cykgPT5cbiAgICAgICAgICBhZGRUb0xpYnJhcnkoZWxlbWVudHMsIGxpYnJhcnlJdGVtc0RhdGEubGlicmFyeUl0ZW1zKVxuICAgICAgICB9XG4gICAgICAgIG9uSW5zZXJ0TGlicmFyeUl0ZW1zPXtvbkluc2VydExpYnJhcnlJdGVtc31cbiAgICAgICAgcGVuZGluZ0VsZW1lbnRzPXtwZW5kaW5nRWxlbWVudHN9XG4gICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBsaWJyYXJ5UmV0dXJuVXJsPXtsaWJyYXJ5UmV0dXJuVXJsfVxuICAgICAgICBsaWJyYXJ5PXtsaWJyYXJ5fVxuICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXtzZWxlY3RlZEl0ZW1zfVxuICAgICAgICBvblNlbGVjdEl0ZW1zPXsoaWRzKSA9PiBzZXRTZWxlY3RlZEl0ZW1zKGlkcyl9XG4gICAgICAgIG9uUHVibGlzaD17KCkgPT4gc2V0U2hvd1B1Ymxpc2hMaWJyYXJ5RGlhbG9nKHRydWUpfVxuICAgICAgICByZXNldExpYnJhcnk9e3Jlc2V0TGlicmFyeX1cbiAgICAgIC8+XG4gICAgPC9MaWJyYXJ5TWVudVdyYXBwZXI+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.tsx\n");
2407
2396
 
2408
2397
  /***/ }),
2409
2398
 
@@ -2458,7 +2447,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2458
2447
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2459
2448
 
2460
2449
  "use strict";
2461
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MobileMenu\": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CollabButton */ \"../../components/CollabButton.tsx\");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../scene/scrollbars */ \"../../scene/scrollbars.ts\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \"../../components/BackgroundPickerAndDarkModeToggle.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderStats, }) => {\n const renderToolbar = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({ side: \"top\", className: \"App-top-bar\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4, align: \"center\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1, className: \"App-toolbar-container\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, className: \"App-toolbar\" }, { children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_13__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.lock\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_16__.LibraryButton, { appState: appState, setAppState: setAppState, isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_17__.PenModeButton, { checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.penMode\"), isMobile: true, penDetected: appState.penDetected })] })), libraryMenu] }))) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, { appState: appState, elements: elements, isMobile: true })] })));\n };\n const renderAppToolbar = () => {\n // Render eraser conditionally in mobile\n const showEraser = !appState.viewModeEnabled &&\n !appState.editingElement &&\n (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState).length === 0;\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: actionManager.renderAction(\"toggleCanvasMenu\") })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: [actionManager.renderAction(\"toggleCanvasMenu\"), actionManager.renderAction(\"toggleEditMenu\"), actionManager.renderAction(\"undo\"), actionManager.renderAction(\"redo\"), showEraser && actionManager.renderAction(\"eraser\"), actionManager.renderAction(appState.multiElement ? \"finalize\" : \"duplicateSelection\"), actionManager.renderAction(\"deleteSelectedElements\")] })));\n };\n const renderCanvasActions = () => {\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderJSONExportDialog(), renderImageExportDialog()] }));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [actionManager.renderAction(\"clearCanvas\"), actionManager.renderAction(\"loadScene\"), renderJSONExportDialog(), renderImageExportDialog(), onCollabButtonClick && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { isCollaborating: isCollaborating, collaboratorCount: appState.collaborators.size, onClick: onCollabButtonClick })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_15__.BackgroundPickerAndDarkModeToggle, { actionManager: actionManager, appState: appState, setAppState: setAppState, showThemeBtn: showThemeBtn })] }));\n };\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [!appState.viewModeEnabled && renderToolbar(), renderStats(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-bottom-bar\", style: {\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 0 }, { children: [appState.openMenu === \"canvas\" ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"canvasActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"panelColumn\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4 }, { children: [renderCanvasActions(), renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(true, appState), appState.collaborators.size > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"labels.collaborators\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_14__.UserList, { mobile: true, collaborators: appState.collaborators, actionManager: actionManager })] }))] })) })) }))) : appState.openMenu === \"shape\" &&\n !appState.viewModeEnabled &&\n (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"selectedShapeActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction, activeTool: appState.activeTool.type }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ className: \"App-toolbar\" }, { children: [renderAppToolbar(), appState.scrolledOutside &&\n !appState.openMenu &&\n !appState.isLibraryOpen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"buttons.scrollBackToContent\") })))] }))] })) }))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxDQUNYLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTzs0QkFDL0IsQ0FBQyxRQUFRLENBQUMsZUFBZTs0QkFDekIsa0VBQXdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQyx1REFBQyw4Q0FBTyxrQkFBQyxTQUFTLEVBQUMsaUJBQWlCLEVBQUMsT0FBTyxFQUFDLHNCQUFzQixnQkFDakUsdURBQUMsMERBQW9CLElBQ25CLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQ3BDLElBQ00sQ0FDWCxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ1Isa0ZBQVEsU0FBUyxFQUFDLGFBQWEsaUJBQzVCLGdCQUFnQixFQUFFLEVBQ2xCLFFBQVEsQ0FBQyxlQUFlO29DQUN2QixDQUFDLFFBQVEsQ0FBQyxRQUFRO29DQUNsQixDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FDekIsaUZBQ0UsU0FBUyxFQUFDLHdCQUF3QixFQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFO3dDQUNaLFdBQVcsbUJBQ04sNkRBQXFCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDcEQsQ0FBQztvQ0FDTCxDQUFDLGdCQUVBLHdDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFDMUIsQ0FDVixLQUNJLEtBQ0YsSUFDTCxJQUNMLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vYmlsZU1lbnUudHN4PzA4YzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi9TdGFja1wiO1xuaW1wb3J0IHsgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBGaXhlZFNpZGVDb250YWluZXIgfSBmcm9tIFwiLi9GaXhlZFNpZGVDb250YWluZXJcIjtcbmltcG9ydCB7IElzbGFuZCB9IGZyb20gXCIuL0lzbGFuZFwiO1xuaW1wb3J0IHsgSGludFZpZXdlciB9IGZyb20gXCIuL0hpbnRWaWV3ZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZVNjcm9sbENlbnRlciwgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi9zY2VuZVwiO1xuaW1wb3J0IHsgU2VsZWN0ZWRTaGFwZUFjdGlvbnMsIFNoYXBlc1N3aXRjaGVyIH0gZnJvbSBcIi4vQWN0aW9uc1wiO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuL1NlY3Rpb25cIjtcbmltcG9ydCBDb2xsYWJCdXR0b24gZnJvbSBcIi4vQ29sbGFiQnV0dG9uXCI7XG5pbXBvcnQgeyBTQ1JPTExCQVJfV0lEVEgsIFNDUk9MTEJBUl9NQVJHSU4gfSBmcm9tIFwiLi4vc2NlbmUvc2Nyb2xsYmFyc1wiO1xuaW1wb3J0IHsgTG9ja0J1dHRvbiB9IGZyb20gXCIuL0xvY2tCdXR0b25cIjtcbmltcG9ydCB7IFVzZXJMaXN0IH0gZnJvbSBcIi4vVXNlckxpc3RcIjtcbmltcG9ydCB7IEJhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZSB9IGZyb20gXCIuL0JhY2tncm91bmRQaWNrZXJBbmREYXJrTW9kZVRvZ2dsZVwiO1xuaW1wb3J0IHsgTGlicmFyeUJ1dHRvbiB9IGZyb20gXCIuL0xpYnJhcnlCdXR0b25cIjtcbmltcG9ydCB7IFBlbk1vZGVCdXR0b24gfSBmcm9tIFwiLi9QZW5Nb2RlQnV0dG9uXCI7XG5cbnR5cGUgTW9iaWxlTWVudVByb3BzID0ge1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIGFjdGlvbk1hbmFnZXI6IEFjdGlvbk1hbmFnZXI7XG4gIHJlbmRlckpTT05FeHBvcnREaWFsb2c6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2c6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgc2V0QXBwU3RhdGU6IFJlYWN0LkNvbXBvbmVudDxhbnksIEFwcFN0YXRlPltcInNldFN0YXRlXCJdO1xuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W107XG4gIGxpYnJhcnlNZW51OiBKU1guRWxlbWVudCB8IG51bGw7XG4gIG9uQ29sbGFiQnV0dG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkxvY2tUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIG9uUGVuTW9kZVRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIGlzQ29sbGFib3JhdGluZzogYm9vbGVhbjtcbiAgcmVuZGVyQ3VzdG9tRm9vdGVyPzogKFxuICAgIGlzTW9iaWxlOiBib29sZWFuLFxuICAgIGFwcFN0YXRlOiBBcHBTdGF0ZSxcbiAgKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG4gIHNob3dUaGVtZUJ0bjogYm9vbGVhbjtcbiAgb25JbWFnZUFjdGlvbjogKGRhdGE6IHsgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICByZW5kZXJUb3BSaWdodFVJPzogKFxuICAgIGlzTW9iaWxlOiBib29sZWFuLFxuICAgIGFwcFN0YXRlOiBBcHBTdGF0ZSxcbiAgKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG4gIHJlbmRlclN0YXRzOiAoKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgTW9iaWxlTWVudSA9ICh7XG4gIGFwcFN0YXRlLFxuICBlbGVtZW50cyxcbiAgbGlicmFyeU1lbnUsXG4gIGFjdGlvbk1hbmFnZXIsXG4gIHJlbmRlckpTT05FeHBvcnREaWFsb2csXG4gIHJlbmRlckltYWdlRXhwb3J0RGlhbG9nLFxuICBzZXRBcHBTdGF0ZSxcbiAgb25Db2xsYWJCdXR0b25DbGljayxcbiAgb25Mb2NrVG9nZ2xlLFxuICBvblBlbk1vZGVUb2dnbGUsXG4gIGNhbnZhcyxcbiAgaXNDb2xsYWJvcmF0aW5nLFxuICByZW5kZXJDdXN0b21Gb290ZXIsXG4gIHNob3dUaGVtZUJ0bixcbiAgb25JbWFnZUFjdGlvbixcbiAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgcmVuZGVyU3RhdHMsXG59OiBNb2JpbGVNZW51UHJvcHMpID0+IHtcbiAgY29uc3QgcmVuZGVyVG9vbGJhciA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpeGVkU2lkZUNvbnRhaW5lciBzaWRlPVwidG9wXCIgY2xhc3NOYW1lPVwiQXBwLXRvcC1iYXJcIj5cbiAgICAgICAgPFNlY3Rpb24gaGVhZGluZz1cInNoYXBlc1wiPlxuICAgICAgICAgIHsoaGVhZGluZykgPT4gKFxuICAgICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9IGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfSBjbGFzc05hbWU9XCJBcHAtdG9vbGJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8SXNsYW5kIHBhZGRpbmc9ezF9IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyXCI+XG4gICAgICAgICAgICAgICAgICB7aGVhZGluZ31cbiAgICAgICAgICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgPFNoYXBlc1N3aXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2w9e2FwcFN0YXRlLmFjdGl2ZVRvb2x9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb249eyh7IHBvaW50ZXJUeXBlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBwb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgICAgICAgICAgIDwvSXNsYW5kPlxuICAgICAgICAgICAgICAgIHtyZW5kZXJUb3BSaWdodFVJICYmIHJlbmRlclRvcFJpZ2h0VUkodHJ1ZSwgYXBwU3RhdGUpfVxuICAgICAgICAgICAgICAgIDxMb2NrQnV0dG9uXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5hY3RpdmVUb29sLmxvY2tlZH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkxvY2tUb2dnbGV9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIubG9ja1wiKX1cbiAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8TGlicmFyeUJ1dHRvblxuICAgICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQZW5Nb2RlQnV0dG9uXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5wZW5Nb2RlfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uUGVuTW9kZVRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KFwidG9vbEJhci5wZW5Nb2RlXCIpfVxuICAgICAgICAgICAgICAgICAgaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgIHBlbkRldGVjdGVkPXthcHBTdGF0ZS5wZW5EZXRlY3RlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAge2xpYnJhcnlNZW51fVxuICAgICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TZWN0aW9uPlxuICAgICAgICA8SGludFZpZXdlciBhcHBTdGF0ZT17YXBwU3RhdGV9IGVsZW1lbnRzPXtlbGVtZW50c30gaXNNb2JpbGU9e3RydWV9IC8+XG4gICAgICA8L0ZpeGVkU2lkZUNvbnRhaW5lcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckFwcFRvb2xiYXIgPSAoKSA9PiB7XG4gICAgLy8gUmVuZGVyIGVyYXNlciBjb25kaXRpb25hbGx5IGluIG1vYmlsZVxuICAgIGNvbnN0IHNob3dFcmFzZXIgPVxuICAgICAgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJlxuICAgICAgIWFwcFN0YXRlLmVkaXRpbmdFbGVtZW50ICYmXG4gICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGVsZW1lbnRzLCBhcHBTdGF0ZSkubGVuZ3RoID09PSAwO1xuXG4gICAgaWYgKGFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJBcHAtdG9vbGJhci1jb250ZW50XCI+XG4gICAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidG9nZ2xlQ2FudmFzTWVudVwiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyLWNvbnRlbnRcIj5cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidG9nZ2xlQ2FudmFzTWVudVwiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidG9nZ2xlRWRpdE1lbnVcIil9XG5cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidW5kb1wiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwicmVkb1wiKX1cbiAgICAgICAge3Nob3dFcmFzZXIgJiYgYWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJlcmFzZXJcIil9XG5cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFxuICAgICAgICAgIGFwcFN0YXRlLm11bHRpRWxlbWVudCA/IFwiZmluYWxpemVcIiA6IFwiZHVwbGljYXRlU2VsZWN0aW9uXCIsXG4gICAgICAgICl9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImRlbGV0ZVNlbGVjdGVkRWxlbWVudHNcIil9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckNhbnZhc0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKGFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVuZGVySlNPTkV4cG9ydERpYWxvZygpfVxuICAgICAgICAgIHtyZW5kZXJJbWFnZUV4cG9ydERpYWxvZygpfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJjbGVhckNhbnZhc1wiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwibG9hZFNjZW5lXCIpfVxuICAgICAgICB7cmVuZGVySlNPTkV4cG9ydERpYWxvZygpfVxuICAgICAgICB7cmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKX1cbiAgICAgICAge29uQ29sbGFiQnV0dG9uQ2xpY2sgJiYgKFxuICAgICAgICAgIDxDb2xsYWJCdXR0b25cbiAgICAgICAgICAgIGlzQ29sbGFib3JhdGluZz17aXNDb2xsYWJvcmF0aW5nfVxuICAgICAgICAgICAgY29sbGFib3JhdG9yQ291bnQ9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnMuc2l6ZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29sbGFiQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge1xuICAgICAgICAgIDxCYWNrZ3JvdW5kUGlja2VyQW5kRGFya01vZGVUb2dnbGVcbiAgICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICBzaG93VGhlbWVCdG49e3Nob3dUaGVtZUJ0bn1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7IWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiByZW5kZXJUb29sYmFyKCl9XG4gICAgICB7cmVuZGVyU3RhdHMoKX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiQXBwLWJvdHRvbS1iYXJcIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIG1hcmdpbkJvdHRvbTogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDIsXG4gICAgICAgICAgbWFyZ2luTGVmdDogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDIsXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8SXNsYW5kIHBhZGRpbmc9ezB9PlxuICAgICAgICAgIHthcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJjYW52YXNcIiA/IChcbiAgICAgICAgICAgIDxTZWN0aW9uIGNsYXNzTmFtZT1cIkFwcC1tb2JpbGUtbWVudVwiIGhlYWRpbmc9XCJjYW52YXNBY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWxDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8U3RhY2suQ29sIGdhcD17NH0+XG4gICAgICAgICAgICAgICAgICB7cmVuZGVyQ2FudmFzQWN0aW9ucygpfVxuICAgICAgICAgICAgICAgICAge3JlbmRlckN1c3RvbUZvb3Rlcj8uKHRydWUsIGFwcFN0YXRlKX1cbiAgICAgICAgICAgICAgICAgIHthcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemUgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PlxuICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+e3QoXCJsYWJlbHMuY29sbGFib3JhdG9yc1wiKX08L2xlZ2VuZD5cbiAgICAgICAgICAgICAgICAgICAgICA8VXNlckxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFib3JhdG9ycz17YXBwU3RhdGUuY29sbGFib3JhdG9yc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9TZWN0aW9uPlxuICAgICAgICAgICkgOiBhcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJzaGFwZVwiICYmXG4gICAgICAgICAgICAhYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmXG4gICAgICAgICAgICBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMoYXBwU3RhdGUsIGVsZW1lbnRzKSA/IChcbiAgICAgICAgICAgIDxTZWN0aW9uIGNsYXNzTmFtZT1cIkFwcC1tb2JpbGUtbWVudVwiIGhlYWRpbmc9XCJzZWxlY3RlZFNoYXBlQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8U2VsZWN0ZWRTaGFwZUFjdGlvbnNcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgYWN0aXZlVG9vbD17YXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TZWN0aW9uPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxmb290ZXIgY2xhc3NOYW1lPVwiQXBwLXRvb2xiYXJcIj5cbiAgICAgICAgICAgIHtyZW5kZXJBcHBUb29sYmFyKCl9XG4gICAgICAgICAgICB7YXBwU3RhdGUuc2Nyb2xsZWRPdXRzaWRlICYmXG4gICAgICAgICAgICAgICFhcHBTdGF0ZS5vcGVuTWVudSAmJlxuICAgICAgICAgICAgICAhYXBwU3RhdGUuaXNMaWJyYXJ5T3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2Nyb2xsLWJhY2stdG8tY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jYWxjdWxhdGVTY3JvbGxDZW50ZXIoZWxlbWVudHMsIGFwcFN0YXRlLCBjYW52YXMpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJidXR0b25zLnNjcm9sbEJhY2tUb0NvbnRlbnRcIil9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvSXNsYW5kPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n");
2450
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MobileMenu\": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _CollabButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./CollabButton */ \"../../components/CollabButton.tsx\");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../scene/scrollbars */ \"../../scene/scrollbars.ts\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BackgroundPickerAndDarkModeToggle */ \"../../components/BackgroundPickerAndDarkModeToggle.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({ appState, elements, libraryMenu, actionManager, renderJSONExportDialog, renderImageExportDialog, setAppState, onCollabButtonClick, onLockToggle, onPenModeToggle, canvas, isCollaborating, renderCustomFooter, showThemeBtn, onImageAction, renderTopRightUI, renderStats, }) => {\n const renderToolbar = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({ side: \"top\", className: \"App-top-bar\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4, align: \"center\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1, className: \"App-toolbar-container\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, className: \"App-toolbar\" }, { children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_13__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.lock\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_16__.LibraryButton, { appState: appState, setAppState: setAppState, isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_17__.PenModeButton, { checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.penMode\"), isMobile: true, penDetected: appState.penDetected })] })), libraryMenu] }))) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, { appState: appState, elements: elements, isMobile: true })] })));\n };\n const renderAppToolbar = () => {\n // Render eraser conditionally in mobile\n const showEraser = !appState.viewModeEnabled &&\n !appState.editingElement &&\n (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState).length === 0;\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: actionManager.renderAction(\"toggleCanvasMenu\") })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: [actionManager.renderAction(\"toggleCanvasMenu\"), actionManager.renderAction(\"toggleEditMenu\"), actionManager.renderAction(\"undo\"), actionManager.renderAction(\"redo\"), showEraser && actionManager.renderAction(\"eraser\"), actionManager.renderAction(appState.multiElement ? \"finalize\" : \"duplicateSelection\"), actionManager.renderAction(\"deleteSelectedElements\")] })));\n };\n const renderCanvasActions = () => {\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderJSONExportDialog(), renderImageExportDialog()] }));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [actionManager.renderAction(\"clearCanvas\"), actionManager.renderAction(\"loadScene\"), renderJSONExportDialog(), renderImageExportDialog(), onCollabButtonClick && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CollabButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { isCollaborating: isCollaborating, collaboratorCount: appState.collaborators.size, onClick: onCollabButtonClick })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BackgroundPickerAndDarkModeToggle__WEBPACK_IMPORTED_MODULE_15__.BackgroundPickerAndDarkModeToggle, { actionManager: actionManager, appState: appState, setAppState: setAppState, showThemeBtn: showThemeBtn })] }));\n };\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [!appState.viewModeEnabled && renderToolbar(), renderStats(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-bottom-bar\", style: {\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_12__.SCROLLBAR_MARGIN * 2,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 0 }, { children: [appState.openMenu === \"canvas\" ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"canvasActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"panelColumn\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4 }, { children: [renderCanvasActions(), renderCustomFooter === null || renderCustomFooter === void 0 ? void 0 : renderCustomFooter(true, appState), appState.collaborators.size > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"labels.collaborators\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_14__.UserList, { mobile: true, collaborators: appState.collaborators, actionManager: actionManager })] }))] })) })) }))) : appState.openMenu === \"shape\" &&\n !appState.viewModeEnabled &&\n (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"selectedShapeActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction, activeTool: appState.activeTool.type }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ className: \"App-toolbar\" }, { children: [renderAppToolbar(), appState.scrolledOutside &&\n !appState.openMenu &&\n !appState.isLibraryOpen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"buttons.scrollBackToContent\") })))] }))] })) }))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNFLENBQ1gsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxPQUFPOzRCQUMvQixDQUFDLFFBQVEsQ0FBQyxlQUFlOzRCQUN6QixrRUFBd0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9DLHVEQUFDLDhDQUFPLGtCQUFDLFNBQVMsRUFBQyxpQkFBaUIsRUFBQyxPQUFPLEVBQUMsc0JBQXNCLGdCQUNqRSx1REFBQywwREFBb0IsSUFDbkIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLEVBQ3hDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksR0FDcEMsSUFDTSxDQUNYLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDUixrRkFBUSxTQUFTLEVBQUMsYUFBYSxpQkFDNUIsZ0JBQWdCLEVBQUUsRUFDbEIsUUFBUSxDQUFDLGVBQWU7b0NBQ3ZCLENBQUMsUUFBUSxDQUFDLFFBQVE7b0NBQ2xCLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUN6QixpRkFDRSxTQUFTLEVBQUMsd0JBQXdCLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0NBQ1osV0FBVyxtQkFDTiw2REFBcUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUNwRCxDQUFDO29DQUNMLENBQUMsZ0JBRUEsd0NBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxJQUMxQixDQUNWLEtBQ0ksS0FDRixJQUNMLElBQ0wsQ0FDSixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTW9iaWxlTWVudS50c3g/MDhjNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgQWN0aW9uTWFuYWdlciB9IGZyb20gXCIuLi9hY3Rpb25zL21hbmFnZXJcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IEZpeGVkU2lkZUNvbnRhaW5lciB9IGZyb20gXCIuL0ZpeGVkU2lkZUNvbnRhaW5lclwiO1xuaW1wb3J0IHsgSXNsYW5kIH0gZnJvbSBcIi4vSXNsYW5kXCI7XG5pbXBvcnQgeyBIaW50Vmlld2VyIH0gZnJvbSBcIi4vSGludFZpZXdlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyLCBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBTZWxlY3RlZFNoYXBlQWN0aW9ucywgU2hhcGVzU3dpdGNoZXIgfSBmcm9tIFwiLi9BY3Rpb25zXCI7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSBcIi4vU2VjdGlvblwiO1xuaW1wb3J0IENvbGxhYkJ1dHRvbiBmcm9tIFwiLi9Db2xsYWJCdXR0b25cIjtcbmltcG9ydCB7IFNDUk9MTEJBUl9XSURUSCwgU0NST0xMQkFSX01BUkdJTiB9IGZyb20gXCIuLi9zY2VuZS9zY3JvbGxiYXJzXCI7XG5pbXBvcnQgeyBMb2NrQnV0dG9uIH0gZnJvbSBcIi4vTG9ja0J1dHRvblwiO1xuaW1wb3J0IHsgVXNlckxpc3QgfSBmcm9tIFwiLi9Vc2VyTGlzdFwiO1xuaW1wb3J0IHsgQmFja2dyb3VuZFBpY2tlckFuZERhcmtNb2RlVG9nZ2xlIH0gZnJvbSBcIi4vQmFja2dyb3VuZFBpY2tlckFuZERhcmtNb2RlVG9nZ2xlXCI7XG5pbXBvcnQgeyBMaWJyYXJ5QnV0dG9uIH0gZnJvbSBcIi4vTGlicmFyeUJ1dHRvblwiO1xuaW1wb3J0IHsgUGVuTW9kZUJ1dHRvbiB9IGZyb20gXCIuL1Blbk1vZGVCdXR0b25cIjtcblxudHlwZSBNb2JpbGVNZW51UHJvcHMgPSB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgcmVuZGVySlNPTkV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgbGlicmFyeU1lbnU6IEpTWC5FbGVtZW50IHwgbnVsbDtcbiAgb25Db2xsYWJCdXR0b25DbGljaz86ICgpID0+IHZvaWQ7XG4gIG9uTG9ja1RvZ2dsZTogKCkgPT4gdm9pZDtcbiAgb25QZW5Nb2RlVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbDtcbiAgaXNDb2xsYWJvcmF0aW5nOiBib29sZWFuO1xuICByZW5kZXJDdXN0b21Gb290ZXI/OiAoXG4gICAgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgYXBwU3RhdGU6IEFwcFN0YXRlLFxuICApID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbiAgc2hvd1RoZW1lQnRuOiBib29sZWFuO1xuICBvbkltYWdlQWN0aW9uOiAoZGF0YTogeyBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBib29sZWFuIH0pID0+IHZvaWQ7XG4gIHJlbmRlclRvcFJpZ2h0VUk/OiAoXG4gICAgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgYXBwU3RhdGU6IEFwcFN0YXRlLFxuICApID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbiAgcmVuZGVyU3RhdHM6ICgpID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBNb2JpbGVNZW51ID0gKHtcbiAgYXBwU3RhdGUsXG4gIGVsZW1lbnRzLFxuICBsaWJyYXJ5TWVudSxcbiAgYWN0aW9uTWFuYWdlcixcbiAgcmVuZGVySlNPTkV4cG9ydERpYWxvZyxcbiAgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2csXG4gIHNldEFwcFN0YXRlLFxuICBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICBvbkxvY2tUb2dnbGUsXG4gIG9uUGVuTW9kZVRvZ2dsZSxcbiAgY2FudmFzLFxuICBpc0NvbGxhYm9yYXRpbmcsXG4gIHJlbmRlckN1c3RvbUZvb3RlcixcbiAgc2hvd1RoZW1lQnRuLFxuICBvbkltYWdlQWN0aW9uLFxuICByZW5kZXJUb3BSaWdodFVJLFxuICByZW5kZXJTdGF0cyxcbn06IE1vYmlsZU1lbnVQcm9wcykgPT4ge1xuICBjb25zdCByZW5kZXJUb29sYmFyID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8Rml4ZWRTaWRlQ29udGFpbmVyIHNpZGU9XCJ0b3BcIiBjbGFzc05hbWU9XCJBcHAtdG9wLWJhclwiPlxuICAgICAgICA8U2VjdGlvbiBoZWFkaW5nPVwic2hhcGVzXCI+XG4gICAgICAgICAgeyhoZWFkaW5nOiBSZWFjdC5SZWFjdE5vZGUpID0+IChcbiAgICAgICAgICAgIDxTdGFjay5Db2wgZ2FwPXs0fSBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgICA8U3RhY2suUm93IGdhcD17MX0gY2xhc3NOYW1lPVwiQXBwLXRvb2xiYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPElzbGFuZCBwYWRkaW5nPXsxfSBjbGFzc05hbWU9XCJBcHAtdG9vbGJhclwiPlxuICAgICAgICAgICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgICAgICAgICAgICA8U3RhY2suUm93IGdhcD17MX0+XG4gICAgICAgICAgICAgICAgICAgIDxTaGFwZXNTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBjYW52YXM9e2NhbnZhc31cbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sPXthcHBTdGF0ZS5hY3RpdmVUb29sfVxuICAgICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uPXsoeyBwb2ludGVyVHlwZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogcG9pbnRlclR5cGUgIT09IFwibW91c2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAgICA8L0lzbGFuZD5cbiAgICAgICAgICAgICAgICB7cmVuZGVyVG9wUmlnaHRVSSAmJiByZW5kZXJUb3BSaWdodFVJKHRydWUsIGFwcFN0YXRlKX1cbiAgICAgICAgICAgICAgICA8TG9ja0J1dHRvblxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YXBwU3RhdGUuYWN0aXZlVG9vbC5sb2NrZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25Mb2NrVG9nZ2xlfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLmxvY2tcIil9XG4gICAgICAgICAgICAgICAgICBpc01vYmlsZVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPExpYnJhcnlCdXR0b25cbiAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UGVuTW9kZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YXBwU3RhdGUucGVuTW9kZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblBlbk1vZGVUb2dnbGV9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIucGVuTW9kZVwiKX1cbiAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICBwZW5EZXRlY3RlZD17YXBwU3RhdGUucGVuRGV0ZWN0ZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICAgIHtsaWJyYXJ5TWVudX1cbiAgICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgPEhpbnRWaWV3ZXIgYXBwU3RhdGU9e2FwcFN0YXRlfSBlbGVtZW50cz17ZWxlbWVudHN9IGlzTW9iaWxlPXt0cnVlfSAvPlxuICAgICAgPC9GaXhlZFNpZGVDb250YWluZXI+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJBcHBUb29sYmFyID0gKCkgPT4ge1xuICAgIC8vIFJlbmRlciBlcmFzZXIgY29uZGl0aW9uYWxseSBpbiBtb2JpbGVcbiAgICBjb25zdCBzaG93RXJhc2VyID1cbiAgICAgICFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiZcbiAgICAgICFhcHBTdGF0ZS5lZGl0aW5nRWxlbWVudCAmJlxuICAgICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyhlbGVtZW50cywgYXBwU3RhdGUpLmxlbmd0aCA9PT0gMDtcblxuICAgIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiQXBwLXRvb2xiYXItY29udGVudFwiPlxuICAgICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZUNhbnZhc01lbnVcIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJBcHAtdG9vbGJhci1jb250ZW50XCI+XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZUNhbnZhc01lbnVcIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInRvZ2dsZUVkaXRNZW51XCIpfVxuXG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInVuZG9cIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInJlZG9cIil9XG4gICAgICAgIHtzaG93RXJhc2VyICYmIGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZXJhc2VyXCIpfVxuXG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcbiAgICAgICAgICBhcHBTdGF0ZS5tdWx0aUVsZW1lbnQgPyBcImZpbmFsaXplXCIgOiBcImR1cGxpY2F0ZVNlbGVjdGlvblwiLFxuICAgICAgICApfVxuICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJkZWxldGVTZWxlY3RlZEVsZW1lbnRzXCIpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJDYW52YXNBY3Rpb25zID0gKCkgPT4ge1xuICAgIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlbmRlckpTT05FeHBvcnREaWFsb2coKX1cbiAgICAgICAgICB7cmVuZGVySW1hZ2VFeHBvcnREaWFsb2coKX1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiY2xlYXJDYW52YXNcIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImxvYWRTY2VuZVwiKX1cbiAgICAgICAge3JlbmRlckpTT05FeHBvcnREaWFsb2coKX1cbiAgICAgICAge3JlbmRlckltYWdlRXhwb3J0RGlhbG9nKCl9XG4gICAgICAgIHtvbkNvbGxhYkJ1dHRvbkNsaWNrICYmIChcbiAgICAgICAgICA8Q29sbGFiQnV0dG9uXG4gICAgICAgICAgICBpc0NvbGxhYm9yYXRpbmc9e2lzQ29sbGFib3JhdGluZ31cbiAgICAgICAgICAgIGNvbGxhYm9yYXRvckNvdW50PXthcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemV9XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNvbGxhYkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtcbiAgICAgICAgICA8QmFja2dyb3VuZFBpY2tlckFuZERhcmtNb2RlVG9nZ2xlXG4gICAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgc2hvd1RoZW1lQnRuPXtzaG93VGhlbWVCdG59XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgcmVuZGVyVG9vbGJhcigpfVxuICAgICAge3JlbmRlclN0YXRzKCl9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cIkFwcC1ib3R0b20tYmFyXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBtYXJnaW5Cb3R0b206IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICAgIG1hcmdpbkxlZnQ6IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICAgIG1hcmdpblJpZ2h0OiBTQ1JPTExCQVJfV0lEVEggKyBTQ1JPTExCQVJfTUFSR0lOICogMixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPElzbGFuZCBwYWRkaW5nPXswfT5cbiAgICAgICAgICB7YXBwU3RhdGUub3Blbk1lbnUgPT09IFwiY2FudmFzXCIgPyAoXG4gICAgICAgICAgICA8U2VjdGlvbiBjbGFzc05hbWU9XCJBcHAtbW9iaWxlLW1lbnVcIiBoZWFkaW5nPVwiY2FudmFzQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9PlxuICAgICAgICAgICAgICAgICAge3JlbmRlckNhbnZhc0FjdGlvbnMoKX1cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJDdXN0b21Gb290ZXI/Lih0cnVlLCBhcHBTdGF0ZSl9XG4gICAgICAgICAgICAgICAgICB7YXBwU3RhdGUuY29sbGFib3JhdG9ycy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPnt0KFwibGFiZWxzLmNvbGxhYm9yYXRvcnNcIil9PC9sZWdlbmQ+XG4gICAgICAgICAgICAgICAgICAgICAgPFVzZXJMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhYm9yYXRvcnM9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgICApIDogYXBwU3RhdGUub3Blbk1lbnUgPT09IFwic2hhcGVcIiAmJlxuICAgICAgICAgICAgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJlxuICAgICAgICAgICAgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zKGFwcFN0YXRlLCBlbGVtZW50cykgPyAoXG4gICAgICAgICAgICA8U2VjdGlvbiBjbGFzc05hbWU9XCJBcHAtbW9iaWxlLW1lbnVcIiBoZWFkaW5nPVwic2VsZWN0ZWRTaGFwZUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdGVkU2hhcGVBY3Rpb25zXG4gICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICAgICAgICByZW5kZXJBY3Rpb249e2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9ufVxuICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2w9e2FwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cIkFwcC10b29sYmFyXCI+XG4gICAgICAgICAgICB7cmVuZGVyQXBwVG9vbGJhcigpfVxuICAgICAgICAgICAge2FwcFN0YXRlLnNjcm9sbGVkT3V0c2lkZSAmJlxuICAgICAgICAgICAgICAhYXBwU3RhdGUub3Blbk1lbnUgJiZcbiAgICAgICAgICAgICAgIWFwcFN0YXRlLmlzTGlicmFyeU9wZW4gJiYgKFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNjcm9sbC1iYWNrLXRvLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2FsY3VsYXRlU2Nyb2xsQ2VudGVyKGVsZW1lbnRzLCBhcHBTdGF0ZSwgY2FudmFzKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiYnV0dG9ucy5zY3JvbGxCYWNrVG9Db250ZW50XCIpfVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICA8L0lzbGFuZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n");
2462
2451
 
2463
2452
  /***/ }),
2464
2453
 
@@ -2469,7 +2458,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2469
2458
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2470
2459
 
2471
2460
  "use strict";
2472
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Modal\": () => (/* binding */ Modal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Modal.scss */ \"../../components/Modal.scss\");\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Modal_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n\n\n\n\n\n\n\n\nconst Modal = (props) => {\n const { theme = _constants__WEBPACK_IMPORTED_MODULE_7__.THEME.LIGHT, closeOnClickOutside = true } = props;\n const modalRoot = useBodyRoot(theme);\n if (!modalRoot) {\n return null;\n }\n const handleKeydown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.ESCAPE) {\n event.nativeEvent.stopImmediatePropagation();\n event.stopPropagation();\n props.onCloseRequest();\n }\n };\n return (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"Modal\", props.className), role: \"dialog\", \"aria-modal\": \"true\", onKeyDown: handleKeydown, \"aria-labelledby\": props.labelledBy }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"Modal__background\", onClick: closeOnClickOutside ? props.onCloseRequest : undefined }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Modal__content\", style: { \"--max-width\": `${props.maxWidth}px` }, tabIndex: 0 }, { children: props.children }))] })), modalRoot);\n};\nconst useBodyRoot = (theme) => {\n const [div, setDiv] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useDevice)();\n const isMobileRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(device.isMobile);\n isMobileRef.current = device.isMobile;\n const { container: excalidrawContainer } = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawContainer)();\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n if (div) {\n div.classList.toggle(\"excalidraw--mobile\", device.isMobile);\n }\n }, [div, device.isMobile]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n const isDarkTheme = !!(excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.classList.contains(\"theme--dark\")) ||\n theme === \"dark\";\n const div = document.createElement(\"div\");\n div.classList.add(\"excalidraw\", \"excalidraw-modal-container\");\n div.classList.toggle(\"excalidraw--mobile\", isMobileRef.current);\n if (isDarkTheme) {\n div.classList.add(\"theme--dark\");\n div.classList.add(\"theme--dark-background-none\");\n }\n document.body.appendChild(div);\n setDiv(div);\n return () => {\n document.body.removeChild(div);\n };\n }, [excalidrawContainer, theme]);\n return div;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRSxJQUFJLFdBQVcsRUFBRTtZQUNmLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDbEQ7UUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWixPQUFPLEdBQUcsRUFBRTtZQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFakMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Nb2RhbC50c3g/ZDVjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuL01vZGFsLnNjc3NcIjtcblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0NvbnRhaW5lciwgdXNlRGV2aWNlIH0gZnJvbSBcIi4vQXBwXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgVEhFTUUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBNb2RhbCA9IChwcm9wczoge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBvbkNsb3NlUmVxdWVzdCgpOiB2b2lkO1xuICBsYWJlbGxlZEJ5OiBzdHJpbmc7XG4gIHRoZW1lPzogQXBwU3RhdGVbXCJ0aGVtZVwiXTtcbiAgY2xvc2VPbkNsaWNrT3V0c2lkZT86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IHsgdGhlbWUgPSBUSEVNRS5MSUdIVCwgY2xvc2VPbkNsaWNrT3V0c2lkZSA9IHRydWUgfSA9IHByb3BzO1xuICBjb25zdCBtb2RhbFJvb3QgPSB1c2VCb2R5Um9vdCh0aGVtZSk7XG5cbiAgaWYgKCFtb2RhbFJvb3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleWRvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlTLkVTQ0FQRSkge1xuICAgICAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHByb3BzLm9uQ2xvc2VSZXF1ZXN0KCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiTW9kYWxcIiwgcHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlkb3dufVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtwcm9wcy5sYWJlbGxlZEJ5fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiTW9kYWxfX2JhY2tncm91bmRcIlxuICAgICAgICBvbkNsaWNrPXtjbG9zZU9uQ2xpY2tPdXRzaWRlID8gcHJvcHMub25DbG9zZVJlcXVlc3QgOiB1bmRlZmluZWR9XG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cIk1vZGFsX19jb250ZW50XCJcbiAgICAgICAgc3R5bGU9e3sgXCItLW1heC13aWR0aFwiOiBgJHtwcm9wcy5tYXhXaWR0aH1weGAgfX1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PixcbiAgICBtb2RhbFJvb3QsXG4gICk7XG59O1xuXG5jb25zdCB1c2VCb2R5Um9vdCA9ICh0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXSkgPT4ge1xuICBjb25zdCBbZGl2LCBzZXREaXZdID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3QgaXNNb2JpbGVSZWYgPSB1c2VSZWYoZGV2aWNlLmlzTW9iaWxlKTtcbiAgaXNNb2JpbGVSZWYuY3VycmVudCA9IGRldmljZS5pc01vYmlsZTtcblxuICBjb25zdCB7IGNvbnRhaW5lcjogZXhjYWxpZHJhd0NvbnRhaW5lciB9ID0gdXNlRXhjYWxpZHJhd0NvbnRhaW5lcigpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpdikge1xuICAgICAgZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJleGNhbGlkcmF3LS1tb2JpbGVcIiwgZGV2aWNlLmlzTW9iaWxlKTtcbiAgICB9XG4gIH0sIFtkaXYsIGRldmljZS5pc01vYmlsZV0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNEYXJrVGhlbWUgPVxuICAgICAgISFleGNhbGlkcmF3Q29udGFpbmVyPy5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aGVtZS0tZGFya1wiKSB8fFxuICAgICAgdGhlbWUgPT09IFwiZGFya1wiO1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICBkaXYuY2xhc3NMaXN0LmFkZChcImV4Y2FsaWRyYXdcIiwgXCJleGNhbGlkcmF3LW1vZGFsLWNvbnRhaW5lclwiKTtcbiAgICBkaXYuY2xhc3NMaXN0LnRvZ2dsZShcImV4Y2FsaWRyYXctLW1vYmlsZVwiLCBpc01vYmlsZVJlZi5jdXJyZW50KTtcblxuICAgIGlmIChpc0RhcmtUaGVtZSkge1xuICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoXCJ0aGVtZS0tZGFya1wiKTtcbiAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwidGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lXCIpO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cbiAgICBzZXREaXYoZGl2KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gICAgfTtcbiAgfSwgW2V4Y2FsaWRyYXdDb250YWluZXIsIHRoZW1lXSk7XG5cbiAgcmV0dXJuIGRpdjtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Modal.tsx\n");
2461
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Modal\": () => (/* binding */ Modal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Modal.scss */ \"../../components/Modal.scss\");\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Modal_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n\n\n\n\n\n\n\n\nconst Modal = (props) => {\n const { theme = _constants__WEBPACK_IMPORTED_MODULE_7__.THEME.LIGHT, closeOnClickOutside = true } = props;\n const modalRoot = useBodyRoot(theme);\n if (!modalRoot) {\n return null;\n }\n const handleKeydown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.ESCAPE) {\n event.nativeEvent.stopImmediatePropagation();\n event.stopPropagation();\n props.onCloseRequest();\n }\n };\n return (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"Modal\", props.className), role: \"dialog\", \"aria-modal\": \"true\", onKeyDown: handleKeydown, \"aria-labelledby\": props.labelledBy }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"Modal__background\", onClick: closeOnClickOutside ? props.onCloseRequest : undefined }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"Modal__content\", style: { \"--max-width\": `${props.maxWidth}px` }, tabIndex: 0 }, { children: props.children }))] })), modalRoot);\n};\nconst useBodyRoot = (theme) => {\n const [div, setDiv] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useDevice)();\n const isMobileRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(device.isMobile);\n isMobileRef.current = device.isMobile;\n const { container: excalidrawContainer } = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawContainer)();\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n if (div) {\n div.classList.toggle(\"excalidraw--mobile\", device.isMobile);\n }\n }, [div, device.isMobile]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n const isDarkTheme = !!(excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.classList.contains(\"theme--dark\")) ||\n theme === \"dark\";\n const div = document.createElement(\"div\");\n div.classList.add(\"excalidraw\", \"excalidraw-modal-container\");\n div.classList.toggle(\"excalidraw--mobile\", isMobileRef.current);\n if (isDarkTheme) {\n div.classList.add(\"theme--dark\");\n div.classList.add(\"theme--dark-background-none\");\n }\n document.body.appendChild(div);\n setDiv(div);\n return () => {\n document.body.removeChild(div);\n };\n }, [excalidrawContainer, theme]);\n return div;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLElBQUksV0FBVyxFQUFFO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUNsRDtRQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVaLE9BQU8sR0FBRyxFQUFFO1lBQ1YsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVqQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vZGFsLnRzeD9kNWNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vTW9kYWwuc2Nzc1wiO1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3Q29udGFpbmVyLCB1c2VEZXZpY2UgfSBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCB7IEFwcFN0YXRlIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IE1vZGFsOiBSZWFjdC5GQzx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG9uQ2xvc2VSZXF1ZXN0KCk6IHZvaWQ7XG4gIGxhYmVsbGVkQnk6IHN0cmluZztcbiAgdGhlbWU/OiBBcHBTdGF0ZVtcInRoZW1lXCJdO1xuICBjbG9zZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhbjtcbn0+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdGhlbWUgPSBUSEVNRS5MSUdIVCwgY2xvc2VPbkNsaWNrT3V0c2lkZSA9IHRydWUgfSA9IHByb3BzO1xuICBjb25zdCBtb2RhbFJvb3QgPSB1c2VCb2R5Um9vdCh0aGVtZSk7XG5cbiAgaWYgKCFtb2RhbFJvb3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleWRvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlTLkVTQ0FQRSkge1xuICAgICAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHByb3BzLm9uQ2xvc2VSZXF1ZXN0KCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiTW9kYWxcIiwgcHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlkb3dufVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtwcm9wcy5sYWJlbGxlZEJ5fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiTW9kYWxfX2JhY2tncm91bmRcIlxuICAgICAgICBvbkNsaWNrPXtjbG9zZU9uQ2xpY2tPdXRzaWRlID8gcHJvcHMub25DbG9zZVJlcXVlc3QgOiB1bmRlZmluZWR9XG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cIk1vZGFsX19jb250ZW50XCJcbiAgICAgICAgc3R5bGU9e3sgXCItLW1heC13aWR0aFwiOiBgJHtwcm9wcy5tYXhXaWR0aH1weGAgfX1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PixcbiAgICBtb2RhbFJvb3QsXG4gICk7XG59O1xuXG5jb25zdCB1c2VCb2R5Um9vdCA9ICh0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXSkgPT4ge1xuICBjb25zdCBbZGl2LCBzZXREaXZdID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3QgaXNNb2JpbGVSZWYgPSB1c2VSZWYoZGV2aWNlLmlzTW9iaWxlKTtcbiAgaXNNb2JpbGVSZWYuY3VycmVudCA9IGRldmljZS5pc01vYmlsZTtcblxuICBjb25zdCB7IGNvbnRhaW5lcjogZXhjYWxpZHJhd0NvbnRhaW5lciB9ID0gdXNlRXhjYWxpZHJhd0NvbnRhaW5lcigpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpdikge1xuICAgICAgZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJleGNhbGlkcmF3LS1tb2JpbGVcIiwgZGV2aWNlLmlzTW9iaWxlKTtcbiAgICB9XG4gIH0sIFtkaXYsIGRldmljZS5pc01vYmlsZV0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNEYXJrVGhlbWUgPVxuICAgICAgISFleGNhbGlkcmF3Q29udGFpbmVyPy5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aGVtZS0tZGFya1wiKSB8fFxuICAgICAgdGhlbWUgPT09IFwiZGFya1wiO1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICBkaXYuY2xhc3NMaXN0LmFkZChcImV4Y2FsaWRyYXdcIiwgXCJleGNhbGlkcmF3LW1vZGFsLWNvbnRhaW5lclwiKTtcbiAgICBkaXYuY2xhc3NMaXN0LnRvZ2dsZShcImV4Y2FsaWRyYXctLW1vYmlsZVwiLCBpc01vYmlsZVJlZi5jdXJyZW50KTtcblxuICAgIGlmIChpc0RhcmtUaGVtZSkge1xuICAgICAgZGl2LmNsYXNzTGlzdC5hZGQoXCJ0aGVtZS0tZGFya1wiKTtcbiAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwidGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lXCIpO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cbiAgICBzZXREaXYoZGl2KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gICAgfTtcbiAgfSwgW2V4Y2FsaWRyYXdDb250YWluZXIsIHRoZW1lXSk7XG5cbiAgcmV0dXJuIGRpdjtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Modal.tsx\n");
2473
2462
 
2474
2463
  /***/ }),
2475
2464
 
@@ -2502,7 +2491,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2502
2491
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2503
2492
 
2504
2493
  "use strict";
2505
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Popover\": () => (/* binding */ Popover)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.scss */ \"../../components/Popover.scss\");\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Popover_scss__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n\n\n\n\n\n\nconst Popover = ({ children, left, top, onCloseRequest, fitInViewport = false, offsetLeft = 0, offsetTop = 0, viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, }) => {\n const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const container = popoverRef.current;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n if (!container) {\n return;\n }\n const handleKeyDown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.TAB) {\n const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.queryFocusableElements)(container);\n const { activeElement } = document;\n const currentIndex = focusableElements.findIndex((element) => element === activeElement);\n if (currentIndex === 0 && event.shiftKey) {\n focusableElements[focusableElements.length - 1].focus();\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n else if (currentIndex === focusableElements.length - 1 &&\n !event.shiftKey) {\n focusableElements[0].focus();\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n };\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [container]);\n // ensure the popover doesn't overflow the viewport\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n if (fitInViewport && popoverRef.current) {\n const element = popoverRef.current;\n const { x, y, width, height } = element.getBoundingClientRect();\n if (x + width - offsetLeft > viewportWidth) {\n element.style.left = `${viewportWidth - width}px`;\n }\n if (y + height - offsetTop > viewportHeight) {\n element.style.top = `${viewportHeight - height}px`;\n }\n }\n }, [fitInViewport, viewportWidth, viewportHeight, offsetLeft, offsetTop]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n if (onCloseRequest) {\n const handler = (event) => {\n var _a;\n if (!((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(() => onCloseRequest(event));\n }\n };\n document.addEventListener(\"pointerdown\", handler, false);\n return () => document.removeEventListener(\"pointerdown\", handler, false);\n }\n }, [onCloseRequest]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"popover\", style: { top, left }, ref: popoverRef }, { children: children })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUUxRSxnREFBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksY0FBYyxFQUFFO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFOztnQkFDdEMsSUFBSSxDQUFDLGlCQUFVLENBQUMsT0FBTywwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQWMsQ0FBQyxHQUFFO29CQUN2RCxrRUFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDdEQ7WUFDSCxDQUFDLENBQUM7WUFDRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFFO0lBQ0gsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUVyQixPQUFPLENBQ0wsOEVBQUssU0FBUyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsZ0JBQzNELFFBQVEsSUFDTCxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnRzeD8wNGFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgXCIuL1BvcG92ZXIuc2Nzc1wiO1xuaW1wb3J0IHsgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBxdWVyeUZvY3VzYWJsZUVsZW1lbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSBcIi4uL2tleXNcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb25DbG9zZVJlcXVlc3Q/KGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkO1xuICBmaXRJblZpZXdwb3J0PzogYm9vbGVhbjtcbiAgb2Zmc2V0TGVmdD86IG51bWJlcjtcbiAgb2Zmc2V0VG9wPzogbnVtYmVyO1xuICB2aWV3cG9ydFdpZHRoPzogbnVtYmVyO1xuICB2aWV3cG9ydEhlaWdodD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb3BvdmVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIGxlZnQsXG4gIHRvcCxcbiAgb25DbG9zZVJlcXVlc3QsXG4gIGZpdEluVmlld3BvcnQgPSBmYWxzZSxcbiAgb2Zmc2V0TGVmdCA9IDAsXG4gIG9mZnNldFRvcCA9IDAsXG4gIHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCBwb3BvdmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBjb250YWluZXIgPSBwb3BvdmVyUmVmLmN1cnJlbnQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWVMuVEFCKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gcXVlcnlGb2N1c2FibGVFbGVtZW50cyhjb250YWluZXIpO1xuICAgICAgICBjb25zdCB7IGFjdGl2ZUVsZW1lbnQgfSA9IGRvY3VtZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBmb2N1c2FibGVFbGVtZW50cy5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzW2ZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjdXJyZW50SW5kZXggPT09IGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAhZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbMF0uZm9jdXMoKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcblxuICAgIHJldHVybiAoKSA9PiBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtjb250YWluZXJdKTtcblxuICAvLyBlbnN1cmUgdGhlIHBvcG92ZXIgZG9lc24ndCBvdmVyZmxvdyB0aGUgdmlld3BvcnRcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZml0SW5WaWV3cG9ydCAmJiBwb3BvdmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb3BvdmVyUmVmLmN1cnJlbnQ7XG4gICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAoeCArIHdpZHRoIC0gb2Zmc2V0TGVmdCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7dmlld3BvcnRXaWR0aCAtIHdpZHRofXB4YDtcbiAgICAgIH1cbiAgICAgIGlmICh5ICsgaGVpZ2h0IC0gb2Zmc2V0VG9wID4gdmlld3BvcnRIZWlnaHQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBgJHt2aWV3cG9ydEhlaWdodCAtIGhlaWdodH1weGA7XG4gICAgICB9XG4gICAgfVxuICB9LCBbZml0SW5WaWV3cG9ydCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQsIG9mZnNldExlZnQsIG9mZnNldFRvcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uQ2xvc2VSZXF1ZXN0KSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFwb3BvdmVyUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKCgpID0+IG9uQ2xvc2VSZXF1ZXN0KGV2ZW50KSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlciwgZmFsc2UpO1xuICAgICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVyLCBmYWxzZSk7XG4gICAgfVxuICB9LCBbb25DbG9zZVJlcXVlc3RdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicG9wb3ZlclwiIHN0eWxlPXt7IHRvcCwgbGVmdCB9fSByZWY9e3BvcG92ZXJSZWZ9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Popover.tsx\n");
2494
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Popover\": () => (/* binding */ Popover)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.scss */ \"../../components/Popover.scss\");\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Popover_scss__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ \"../../keys.ts\");\n\n\n\n\n\n\nconst Popover = ({ children, left, top, onCloseRequest, fitInViewport = false, offsetLeft = 0, offsetTop = 0, viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, }) => {\n const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const container = popoverRef.current;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n if (!container) {\n return;\n }\n const handleKeyDown = (event) => {\n if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.TAB) {\n const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.queryFocusableElements)(container);\n const { activeElement } = document;\n const currentIndex = focusableElements.findIndex((element) => element === activeElement);\n if (currentIndex === 0 && event.shiftKey) {\n focusableElements[focusableElements.length - 1].focus();\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n else if (currentIndex === focusableElements.length - 1 &&\n !event.shiftKey) {\n focusableElements[0].focus();\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n };\n container.addEventListener(\"keydown\", handleKeyDown);\n return () => container.removeEventListener(\"keydown\", handleKeyDown);\n }, [container]);\n // ensure the popover doesn't overflow the viewport\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n if (fitInViewport && popoverRef.current) {\n const element = popoverRef.current;\n const { x, y, width, height } = element.getBoundingClientRect();\n const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;\n //Position correctly when clicked on rightmost part or the bottom part of viewport\n if (x + width - offsetLeft > viewportWidth) {\n element.style.left = `${viewportWidth - width - 10}px`;\n }\n if (y + height - offsetTop > viewportHeight) {\n element.style.top = `${viewportHeight - height}px`;\n }\n //Resize to fit viewport on smaller screens\n if (height >= viewportHeight) {\n element.style.height = `${viewportHeight - 20}px`;\n element.style.top = \"10px\";\n element.style.overflowY = \"scroll\";\n }\n if (width >= viewportWidth) {\n element.style.width = `${viewportWidth}px`;\n element.style.left = \"0px\";\n element.style.overflowX = \"scroll\";\n }\n }\n }, [fitInViewport, viewportWidth, viewportHeight, offsetLeft, offsetTop]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n if (onCloseRequest) {\n const handler = (event) => {\n var _a;\n if (!((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(() => onCloseRequest(event));\n }\n };\n document.addEventListener(\"pointerdown\", handler, false);\n return () => document.removeEventListener(\"pointerdown\", handler, false);\n }\n }, [onCloseRequest]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"popover\", style: { top, left }, ref: popoverRef }, { children: children })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBRXJCLE9BQU8sQ0FDTCw4RUFBSyxTQUFTLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxnQkFDM0QsUUFBUSxJQUNMLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1BvcG92ZXIudHN4PzA0YWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vUG9wb3Zlci5zY3NzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IHF1ZXJ5Rm9jdXNhYmxlRWxlbWVudHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuXG50eXBlIFByb3BzID0ge1xuICB0b3A/OiBudW1iZXI7XG4gIGxlZnQ/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBvbkNsb3NlUmVxdWVzdD8oZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQ7XG4gIGZpdEluVmlld3BvcnQ/OiBib29sZWFuO1xuICBvZmZzZXRMZWZ0PzogbnVtYmVyO1xuICBvZmZzZXRUb3A/OiBudW1iZXI7XG4gIHZpZXdwb3J0V2lkdGg/OiBudW1iZXI7XG4gIHZpZXdwb3J0SGVpZ2h0PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFBvcG92ZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgbGVmdCxcbiAgdG9wLFxuICBvbkNsb3NlUmVxdWVzdCxcbiAgZml0SW5WaWV3cG9ydCA9IGZhbHNlLFxuICBvZmZzZXRMZWZ0ID0gMCxcbiAgb2Zmc2V0VG9wID0gMCxcbiAgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoLFxuICB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCxcbn06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IGNvbnRhaW5lciA9IHBvcG92ZXJSZWYuY3VycmVudDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZUy5UQUIpIHtcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlRWxlbWVudHMgPSBxdWVyeUZvY3VzYWJsZUVsZW1lbnRzKGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IHsgYWN0aXZlRWxlbWVudCB9ID0gZG9jdW1lbnQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGZvY3VzYWJsZUVsZW1lbnRzLmZpbmRJbmRleChcbiAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSAwICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgZm9jdXNhYmxlRWxlbWVudHNbZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGN1cnJlbnRJbmRleCA9PT0gZm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICFldmVudC5zaGlmdEtleVxuICAgICAgICApIHtcbiAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1swXS5mb2N1cygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuXG4gICAgcmV0dXJuICgpID0+IGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgfSwgW2NvbnRhaW5lcl0pO1xuXG4gIC8vIGVuc3VyZSB0aGUgcG9wb3ZlciBkb2Vzbid0IG92ZXJmbG93IHRoZSB2aWV3cG9ydFxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmaXRJblZpZXdwb3J0ICYmIHBvcG92ZXJSZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHBvcG92ZXJSZWYuY3VycmVudDtcbiAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHsgaW5uZXJXaWR0aDogdmlld3BvcnRXaWR0aCwgaW5uZXJIZWlnaHQ6IHZpZXdwb3J0SGVpZ2h0IH0gPSB3aW5kb3c7XG5cbiAgICAgIC8vUG9zaXRpb24gY29ycmVjdGx5IHdoZW4gY2xpY2tlZCBvbiByaWdodG1vc3QgcGFydCBvciB0aGUgYm90dG9tIHBhcnQgb2Ygdmlld3BvcnRcbiAgICAgIGlmICh4ICsgd2lkdGggLSBvZmZzZXRMZWZ0ID4gdmlld3BvcnRXaWR0aCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgJHt2aWV3cG9ydFdpZHRoIC0gd2lkdGggLSAxMH1weGA7XG4gICAgICB9XG4gICAgICBpZiAoeSArIGhlaWdodCAtIG9mZnNldFRvcCA+IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYCR7dmlld3BvcnRIZWlnaHQgLSBoZWlnaHR9cHhgO1xuICAgICAgfVxuXG4gICAgICAvL1Jlc2l6ZSB0byBmaXQgdmlld3BvcnQgb24gc21hbGxlciBzY3JlZW5zXG4gICAgICBpZiAoaGVpZ2h0ID49IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7dmlld3BvcnRIZWlnaHQgLSAyMH1weGA7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gXCIxMHB4XCI7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUub3ZlcmZsb3dZID0gXCJzY3JvbGxcIjtcbiAgICAgIH1cbiAgICAgIGlmICh3aWR0aCA+PSB2aWV3cG9ydFdpZHRoKSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt2aWV3cG9ydFdpZHRofXB4YDtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5vdmVyZmxvd1ggPSBcInNjcm9sbFwiO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2ZpdEluVmlld3BvcnQsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0LCBvZmZzZXRMZWZ0LCBvZmZzZXRUb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvbkNsb3NlUmVxdWVzdCkge1xuICAgICAgY29uc3QgaGFuZGxlciA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghcG9wb3ZlclJlZi5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcygoKSA9PiBvbkNsb3NlUmVxdWVzdChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZXIsIGZhbHNlKTtcbiAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlciwgZmFsc2UpO1xuICAgIH1cbiAgfSwgW29uQ2xvc2VSZXF1ZXN0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBvcG92ZXJcIiBzdHlsZT17eyB0b3AsIGxlZnQgfX0gcmVmPXtwb3BvdmVyUmVmfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Popover.tsx\n");
2506
2495
 
2507
2496
  /***/ }),
2508
2497
 
@@ -2535,7 +2524,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2535
2524
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2536
2525
 
2537
2526
  "use strict";
2538
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Section\": () => (/* binding */ Section)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\nconst Section = (_a) => {\n var { heading, children } = _a, props = __rest(_a, [\"heading\", \"children\"]);\n const { id } = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawContainer)();\n const header = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"h2\", Object.assign({ className: \"visually-hidden\", id: `${id}-${heading}-title` }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`headings.${heading}`) })));\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"section\", Object.assign({}, props, { \"aria-labelledby\": `${id}-${heading}-title` }, { children: typeof children === \"function\" ? (children(header)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [header, children] })) })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TZWN0aW9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEI7QUFDRTtBQUNtQjtBQU94QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQTZDLEVBQUUsRUFBRTtRQUFqRCxFQUFFLE9BQU8sRUFBRSxRQUFRLE9BQTBCLEVBQXJCLEtBQUssY0FBN0IsdUJBQStCLENBQUY7SUFDbkQsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLDREQUFzQixFQUFFLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FDYiw2RUFBSSxTQUFTLEVBQUMsaUJBQWlCLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLE9BQU8sUUFBUSxnQkFDekQsd0NBQUMsQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLElBQ3RCLENBQ04sQ0FBQztJQUNGLE9BQU8sQ0FDTCxvRkFBYSxLQUFLLHVCQUFtQixHQUFHLEVBQUUsSUFBSSxPQUFPLFFBQVEsZ0JBQzFELE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUNqQixDQUFDLENBQUMsQ0FBQyxDQUNGLDhIQUNHLE1BQU0sRUFDTixRQUFRLElBQ1IsQ0FDSixJQUNPLENBQ1gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NlY3Rpb24udHN4PzMzNzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4vQXBwXCI7XG5cbmludGVyZmFjZSBTZWN0aW9uUHJvcHMgZXh0ZW5kcyBSZWFjdC5IVE1MUHJvcHM8SFRNTEVsZW1lbnQ+IHtcbiAgaGVhZGluZzogc3RyaW5nO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIHwgKChoZWFkZXI6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gUmVhY3QuUmVhY3ROb2RlKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNlY3Rpb24gPSAoeyBoZWFkaW5nLCBjaGlsZHJlbiwgLi4ucHJvcHMgfTogU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgaWQgfSA9IHVzZUV4Y2FsaWRyYXdDb250YWluZXIoKTtcbiAgY29uc3QgaGVhZGVyID0gKFxuICAgIDxoMiBjbGFzc05hbWU9XCJ2aXN1YWxseS1oaWRkZW5cIiBpZD17YCR7aWR9LSR7aGVhZGluZ30tdGl0bGVgfT5cbiAgICAgIHt0KGBoZWFkaW5ncy4ke2hlYWRpbmd9YCl9XG4gICAgPC9oMj5cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiB7Li4ucHJvcHN9IGFyaWEtbGFiZWxsZWRieT17YCR7aWR9LSR7aGVhZGluZ30tdGl0bGVgfT5cbiAgICAgIHt0eXBlb2YgY2hpbGRyZW4gPT09IFwiZnVuY3Rpb25cIiA/IChcbiAgICAgICAgY2hpbGRyZW4oaGVhZGVyKVxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7aGVhZGVyfVxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Section.tsx\n");
2527
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Section\": () => (/* binding */ Section)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./App */ \"../../components/App.tsx\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\nconst Section = (_a) => {\n var { heading, children } = _a, props = __rest(_a, [\"heading\", \"children\"]);\n const { id } = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawContainer)();\n const header = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"h2\", Object.assign({ className: \"visually-hidden\", id: `${id}-${heading}-title` }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`headings.${heading}`) })));\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"section\", Object.assign({}, props, { \"aria-labelledby\": `${id}-${heading}-title` }, { children: typeof children === \"function\" ? (children(header)) : ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [header, children] })) })));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TZWN0aW9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEI7QUFDRTtBQUNtQjtBQUV4QyxNQUFNLE9BQU8sR0FJZixDQUFDLEVBQStCLEVBQUUsRUFBRTtRQUFuQyxFQUFFLE9BQU8sRUFBRSxRQUFRLE9BQVksRUFBUCxLQUFLLGNBQTdCLHVCQUErQixDQUFGO0lBQ2pDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyw0REFBc0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLENBQ2IsNkVBQUksU0FBUyxFQUFDLGlCQUFpQixFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxPQUFPLFFBQVEsZ0JBQ3pELHdDQUFDLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQyxJQUN0QixDQUNOLENBQUM7SUFDRixPQUFPLENBQ0wsb0ZBQWEsS0FBSyx1QkFBbUIsR0FBRyxFQUFFLElBQUksT0FBTyxRQUFRLGdCQUMxRCxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDakIsQ0FBQyxDQUFDLENBQUMsQ0FDRiw4SEFDRyxNQUFNLEVBQ04sUUFBUSxJQUNSLENBQ0osSUFDTyxDQUNYLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TZWN0aW9uLnRzeD8zMzcyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0NvbnRhaW5lciB9IGZyb20gXCIuL0FwcFwiO1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbjogUmVhY3QuRkM8e1xuICBoZWFkaW5nOiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIHwgKChoZWFkaW5nOiBSZWFjdC5SZWFjdE5vZGUpID0+IFJlYWN0LlJlYWN0Tm9kZSk7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0+ID0gKHsgaGVhZGluZywgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gdXNlRXhjYWxpZHJhd0NvbnRhaW5lcigpO1xuICBjb25zdCBoZWFkZXIgPSAoXG4gICAgPGgyIGNsYXNzTmFtZT1cInZpc3VhbGx5LWhpZGRlblwiIGlkPXtgJHtpZH0tJHtoZWFkaW5nfS10aXRsZWB9PlxuICAgICAge3QoYGhlYWRpbmdzLiR7aGVhZGluZ31gKX1cbiAgICA8L2gyPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIHsuLi5wcm9wc30gYXJpYS1sYWJlbGxlZGJ5PXtgJHtpZH0tJHtoZWFkaW5nfS10aXRsZWB9PlxuICAgICAge3R5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiID8gKFxuICAgICAgICBjaGlsZHJlbihoZWFkZXIpXG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtoZWFkZXJ9XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9zZWN0aW9uPlxuICApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Section.tsx\n");
2539
2528
 
2540
2529
  /***/ }),
2541
2530
 
@@ -3096,7 +3085,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3096
3085
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3097
3086
 
3098
3087
  "use strict";
3099
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"defaultLang\": () => (/* binding */ defaultLang),\n/* harmony export */ \"getLanguage\": () => (/* binding */ getLanguage),\n/* harmony export */ \"languages\": () => (/* binding */ languages),\n/* harmony export */ \"setLanguage\": () => (/* binding */ setLanguage),\n/* harmony export */ \"t\": () => (/* binding */ t)\n/* harmony export */ });\n/* harmony import */ var _locales_en_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.json */ \"../../locales/en.json\");\n/* harmony import */ var _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locales/percentages.json */ \"../../locales/percentages.json\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\nconst COMPLETION_THRESHOLD = 85;\nconst defaultLang = { code: \"en\", label: \"English\" };\nconst allLanguages = [\n { code: \"ar-SA\", label: \"العربية\", rtl: true },\n { code: \"bg-BG\", label: \"Български\" },\n { code: \"ca-ES\", label: \"Català\" },\n { code: \"cs-CZ\", label: \"Česky\" },\n { code: \"de-DE\", label: \"Deutsch\" },\n { code: \"el-GR\", label: \"Ελληνικά\" },\n { code: \"es-ES\", label: \"Español\" },\n { code: \"eu-ES\", label: \"Euskara\" },\n { code: \"fa-IR\", label: \"فارسی\", rtl: true },\n { code: \"fi-FI\", label: \"Suomi\" },\n { code: \"fr-FR\", label: \"Français\" },\n { code: \"he-IL\", label: \"עברית\", rtl: true },\n { code: \"hi-IN\", label: \"हिन्दी\" },\n { code: \"hu-HU\", label: \"Magyar\" },\n { code: \"id-ID\", label: \"Bahasa Indonesia\" },\n { code: \"it-IT\", label: \"Italiano\" },\n { code: \"ja-JP\", label: \"日本語\" },\n { code: \"kab-KAB\", label: \"Taqbaylit\" },\n { code: \"kk-KZ\", label: \"Қазақ тілі\" },\n { code: \"ko-KR\", label: \"한국어\" },\n { code: \"lt-LT\", label: \"Lietuvių\" },\n { code: \"lv-LV\", label: \"Latviešu\" },\n { code: \"my-MM\", label: \"Burmese\" },\n { code: \"nb-NO\", label: \"Norsk bokmål\" },\n { code: \"nl-NL\", label: \"Nederlands\" },\n { code: \"nn-NO\", label: \"Norsk nynorsk\" },\n { code: \"oc-FR\", label: \"Occitan\" },\n { code: \"pa-IN\", label: \"ਪੰਜਾਬੀ\" },\n { code: \"pl-PL\", label: \"Polski\" },\n { code: \"pt-BR\", label: \"Português Brasileiro\" },\n { code: \"pt-PT\", label: \"Português\" },\n { code: \"ro-RO\", label: \"Română\" },\n { code: \"ru-RU\", label: \"Русский\" },\n { code: \"sk-SK\", label: \"Slovenčina\" },\n { code: \"sv-SE\", label: \"Svenska\" },\n { code: \"sl-SI\", label: \"Slovenščina\" },\n { code: \"tr-TR\", label: \"Türkçe\" },\n { code: \"uk-UA\", label: \"Українська\" },\n { code: \"zh-CN\", label: \"简体中文\" },\n { code: \"zh-TW\", label: \"繁體中文\" },\n].concat([defaultLang]);\nconst languages = allLanguages\n .sort((left, right) => (left.label > right.label ? 1 : -1))\n .filter((lang) => _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__[lang.code] >=\n COMPLETION_THRESHOLD);\nconst TEST_LANG_CODE = \"__test__\";\nif (\"development\" === _constants__WEBPACK_IMPORTED_MODULE_2__.ENV.DEVELOPMENT) {\n languages.unshift({ code: TEST_LANG_CODE, label: \"test language\" }, {\n code: `${TEST_LANG_CODE}.rtl`,\n label: \"\\u{202a}test language (rtl)\\u{202c}\",\n rtl: true,\n });\n}\nlet currentLang = defaultLang;\nlet currentLangData = {};\nconst setLanguage = (lang) => __awaiter(void 0, void 0, void 0, function* () {\n currentLang = lang;\n document.documentElement.dir = currentLang.rtl ? \"rtl\" : \"ltr\";\n document.documentElement.lang = currentLang.code;\n if (lang.code.startsWith(TEST_LANG_CODE)) {\n currentLangData = {};\n }\n else {\n currentLangData = yield __webpack_require__(\"../../locales lazy recursive ^\\\\.\\\\/.*\\\\.json$\")(`./${currentLang.code}.json`);\n }\n});\nconst getLanguage = () => currentLang;\nconst findPartsForData = (data, parts) => {\n for (let index = 0; index < parts.length; ++index) {\n const part = parts[index];\n if (data[part] === undefined) {\n return undefined;\n }\n data = data[part];\n }\n if (typeof data !== \"string\") {\n return undefined;\n }\n return data;\n};\nconst t = (path, replacement) => {\n if (currentLang.code.startsWith(TEST_LANG_CODE)) {\n const name = replacement\n ? `${path}(${JSON.stringify(replacement).slice(1, -1)})`\n : path;\n return `\\u{202a}[[${name}]]\\u{202c}`;\n }\n const parts = path.split(\".\");\n let translation = findPartsForData(currentLangData, parts) ||\n findPartsForData(_locales_en_json__WEBPACK_IMPORTED_MODULE_0__, parts);\n if (translation === undefined) {\n throw new Error(`Can't find translation for ${path}`);\n }\n if (replacement) {\n for (const key in replacement) {\n translation = translation.replace(`{{${key}}}`, String(replacement[key]));\n }\n }\n return translation;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9pMThuLnRzPzM4ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhbGxiYWNrTGFuZ0RhdGEgZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgcGVyY2VudGFnZXMgZnJvbSBcIi4vbG9jYWxlcy9wZXJjZW50YWdlcy5qc29uXCI7XG5pbXBvcnQgeyBFTlYgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ09NUExFVElPTl9USFJFU0hPTEQgPSA4NTtcblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZSB7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcnRsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYW5nID0geyBjb2RlOiBcImVuXCIsIGxhYmVsOiBcIkVuZ2xpc2hcIiB9O1xuXG5jb25zdCBhbGxMYW5ndWFnZXM6IExhbmd1YWdlW10gPSBbXG4gIHsgY29kZTogXCJhci1TQVwiLCBsYWJlbDogXCLYp9mE2LnYsdio2YrYqVwiLCBydGw6IHRydWUgfSxcbiAgeyBjb2RlOiBcImJnLUJHXCIsIGxhYmVsOiBcItCR0YrQu9Cz0LDRgNGB0LrQuFwiIH0sXG4gIHsgY29kZTogXCJjYS1FU1wiLCBsYWJlbDogXCJDYXRhbMOgXCIgfSxcbiAgeyBjb2RlOiBcImNzLUNaXCIsIGxhYmVsOiBcIsSMZXNreVwiIH0sXG4gIHsgY29kZTogXCJkZS1ERVwiLCBsYWJlbDogXCJEZXV0c2NoXCIgfSxcbiAgeyBjb2RlOiBcImVsLUdSXCIsIGxhYmVsOiBcIs6VzrvOu863zr3Ouc66zqxcIiB9LFxuICB7IGNvZGU6IFwiZXMtRVNcIiwgbGFiZWw6IFwiRXNwYcOxb2xcIiB9LFxuICB7IGNvZGU6IFwiZXUtRVNcIiwgbGFiZWw6IFwiRXVza2FyYVwiIH0sXG4gIHsgY29kZTogXCJmYS1JUlwiLCBsYWJlbDogXCLZgdin2LHYs9uMXCIsIHJ0bDogdHJ1ZSB9LFxuICB7IGNvZGU6IFwiZmktRklcIiwgbGFiZWw6IFwiU3VvbWlcIiB9LFxuICB7IGNvZGU6IFwiZnItRlJcIiwgbGFiZWw6IFwiRnJhbsOnYWlzXCIgfSxcbiAgeyBjb2RlOiBcImhlLUlMXCIsIGxhYmVsOiBcItei15HXqNeZ16pcIiwgcnRsOiB0cnVlIH0sXG4gIHsgY29kZTogXCJoaS1JTlwiLCBsYWJlbDogXCLgpLngpL/gpKjgpY3gpKbgpYBcIiB9LFxuICB7IGNvZGU6IFwiaHUtSFVcIiwgbGFiZWw6IFwiTWFneWFyXCIgfSxcbiAgeyBjb2RlOiBcImlkLUlEXCIsIGxhYmVsOiBcIkJhaGFzYSBJbmRvbmVzaWFcIiB9LFxuICB7IGNvZGU6IFwiaXQtSVRcIiwgbGFiZWw6IFwiSXRhbGlhbm9cIiB9LFxuICB7IGNvZGU6IFwiamEtSlBcIiwgbGFiZWw6IFwi5pel5pys6KqeXCIgfSxcbiAgeyBjb2RlOiBcImthYi1LQUJcIiwgbGFiZWw6IFwiVGFxYmF5bGl0XCIgfSxcbiAgeyBjb2RlOiBcImtrLUtaXCIsIGxhYmVsOiBcItKa0LDQt9Cw0psg0YLRltC70ZZcIiB9LFxuICB7IGNvZGU6IFwia28tS1JcIiwgbGFiZWw6IFwi7ZWc6rWt7Ja0XCIgfSxcbiAgeyBjb2RlOiBcImx0LUxUXCIsIGxhYmVsOiBcIkxpZXR1dmnFs1wiIH0sXG4gIHsgY29kZTogXCJsdi1MVlwiLCBsYWJlbDogXCJMYXR2aWXFoXVcIiB9LFxuICB7IGNvZGU6IFwibXktTU1cIiwgbGFiZWw6IFwiQnVybWVzZVwiIH0sXG4gIHsgY29kZTogXCJuYi1OT1wiLCBsYWJlbDogXCJOb3JzayBib2ttw6VsXCIgfSxcbiAgeyBjb2RlOiBcIm5sLU5MXCIsIGxhYmVsOiBcIk5lZGVybGFuZHNcIiB9LFxuICB7IGNvZGU6IFwibm4tTk9cIiwgbGFiZWw6IFwiTm9yc2sgbnlub3Jza1wiIH0sXG4gIHsgY29kZTogXCJvYy1GUlwiLCBsYWJlbDogXCJPY2NpdGFuXCIgfSxcbiAgeyBjb2RlOiBcInBhLUlOXCIsIGxhYmVsOiBcIuCoquCpsOConOCovuCorOCpgFwiIH0sXG4gIHsgY29kZTogXCJwbC1QTFwiLCBsYWJlbDogXCJQb2xza2lcIiB9LFxuICB7IGNvZGU6IFwicHQtQlJcIiwgbGFiZWw6IFwiUG9ydHVndcOqcyBCcmFzaWxlaXJvXCIgfSxcbiAgeyBjb2RlOiBcInB0LVBUXCIsIGxhYmVsOiBcIlBvcnR1Z3XDqnNcIiB9LFxuICB7IGNvZGU6IFwicm8tUk9cIiwgbGFiZWw6IFwiUm9tw6JuxINcIiB9LFxuICB7IGNvZGU6IFwicnUtUlVcIiwgbGFiZWw6IFwi0KDRg9GB0YHQutC40LlcIiB9LFxuICB7IGNvZGU6IFwic2stU0tcIiwgbGFiZWw6IFwiU2xvdmVuxI1pbmFcIiB9LFxuICB7IGNvZGU6IFwic3YtU0VcIiwgbGFiZWw6IFwiU3ZlbnNrYVwiIH0sXG4gIHsgY29kZTogXCJzbC1TSVwiLCBsYWJlbDogXCJTbG92ZW7FocSNaW5hXCIgfSxcbiAgeyBjb2RlOiBcInRyLVRSXCIsIGxhYmVsOiBcIlTDvHJrw6dlXCIgfSxcbiAgeyBjb2RlOiBcInVrLVVBXCIsIGxhYmVsOiBcItCj0LrRgNCw0ZfQvdGB0YzQutCwXCIgfSxcbiAgeyBjb2RlOiBcInpoLUNOXCIsIGxhYmVsOiBcIueugOS9k+S4reaWh1wiIH0sXG4gIHsgY29kZTogXCJ6aC1UV1wiLCBsYWJlbDogXCLnuYHpq5TkuK3mlodcIiB9LFxuXS5jb25jYXQoW2RlZmF1bHRMYW5nXSk7XG5cbmV4cG9ydCBjb25zdCBsYW5ndWFnZXM6IExhbmd1YWdlW10gPSBhbGxMYW5ndWFnZXNcbiAgLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiAobGVmdC5sYWJlbCA+IHJpZ2h0LmxhYmVsID8gMSA6IC0xKSlcbiAgLmZpbHRlcihcbiAgICAobGFuZykgPT5cbiAgICAgIChwZXJjZW50YWdlcyBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtsYW5nLmNvZGVdID49XG4gICAgICBDT01QTEVUSU9OX1RIUkVTSE9MRCxcbiAgKTtcblxuY29uc3QgVEVTVF9MQU5HX0NPREUgPSBcIl9fdGVzdF9fXCI7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IEVOVi5ERVZFTE9QTUVOVCkge1xuICBsYW5ndWFnZXMudW5zaGlmdChcbiAgICB7IGNvZGU6IFRFU1RfTEFOR19DT0RFLCBsYWJlbDogXCJ0ZXN0IGxhbmd1YWdlXCIgfSxcbiAgICB7XG4gICAgICBjb2RlOiBgJHtURVNUX0xBTkdfQ09ERX0ucnRsYCxcbiAgICAgIGxhYmVsOiBcIlxcdXsyMDJhfXRlc3QgbGFuZ3VhZ2UgKHJ0bClcXHV7MjAyY31cIixcbiAgICAgIHJ0bDogdHJ1ZSxcbiAgICB9LFxuICApO1xufVxuXG5sZXQgY3VycmVudExhbmc6IExhbmd1YWdlID0gZGVmYXVsdExhbmc7XG5sZXQgY3VycmVudExhbmdEYXRhID0ge307XG5cbmV4cG9ydCBjb25zdCBzZXRMYW5ndWFnZSA9IGFzeW5jIChsYW5nOiBMYW5ndWFnZSkgPT4ge1xuICBjdXJyZW50TGFuZyA9IGxhbmc7XG4gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPSBjdXJyZW50TGFuZy5ydGwgPyBcInJ0bFwiIDogXCJsdHJcIjtcbiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBjdXJyZW50TGFuZy5jb2RlO1xuXG4gIGlmIChsYW5nLmNvZGUuc3RhcnRzV2l0aChURVNUX0xBTkdfQ09ERSkpIHtcbiAgICBjdXJyZW50TGFuZ0RhdGEgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICBjdXJyZW50TGFuZ0RhdGEgPSBhd2FpdCBpbXBvcnQoXG4gICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImxvY2FsZXMvW3JlcXVlc3RdXCIgKi8gYC4vbG9jYWxlcy8ke2N1cnJlbnRMYW5nLmNvZGV9Lmpzb25gXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldExhbmd1YWdlID0gKCkgPT4gY3VycmVudExhbmc7XG5cbmNvbnN0IGZpbmRQYXJ0c0ZvckRhdGEgPSAoZGF0YTogYW55LCBwYXJ0czogc3RyaW5nW10pID0+IHtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgKytpbmRleCkge1xuICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1tpbmRleF07XG4gICAgaWYgKGRhdGFbcGFydF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZGF0YSA9IGRhdGFbcGFydF07XG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCB0ID0gKFxuICBwYXRoOiBzdHJpbmcsXG4gIHJlcGxhY2VtZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSxcbikgPT4ge1xuICBpZiAoY3VycmVudExhbmcuY29kZS5zdGFydHNXaXRoKFRFU1RfTEFOR19DT0RFKSkge1xuICAgIGNvbnN0IG5hbWUgPSByZXBsYWNlbWVudFxuICAgICAgPyBgJHtwYXRofSgke0pTT04uc3RyaW5naWZ5KHJlcGxhY2VtZW50KS5zbGljZSgxLCAtMSl9KWBcbiAgICAgIDogcGF0aDtcbiAgICByZXR1cm4gYFxcdXsyMDJhfVtbJHtuYW1lfV1dXFx1ezIwMmN9YDtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi5cIik7XG4gIGxldCB0cmFuc2xhdGlvbiA9XG4gICAgZmluZFBhcnRzRm9yRGF0YShjdXJyZW50TGFuZ0RhdGEsIHBhcnRzKSB8fFxuICAgIGZpbmRQYXJ0c0ZvckRhdGEoZmFsbGJhY2tMYW5nRGF0YSwgcGFydHMpO1xuICBpZiAodHJhbnNsYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCB0cmFuc2xhdGlvbiBmb3IgJHtwYXRofWApO1xuICB9XG5cbiAgaWYgKHJlcGxhY2VtZW50KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmVwbGFjZW1lbnQpIHtcbiAgICAgIHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb24ucmVwbGFjZShge3ske2tleX19fWAsIFN0cmluZyhyZXBsYWNlbWVudFtrZXldKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cmFuc2xhdGlvbjtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../i18n.ts\n");
3088
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"defaultLang\": () => (/* binding */ defaultLang),\n/* harmony export */ \"getLanguage\": () => (/* binding */ getLanguage),\n/* harmony export */ \"languages\": () => (/* binding */ languages),\n/* harmony export */ \"setLanguage\": () => (/* binding */ setLanguage),\n/* harmony export */ \"t\": () => (/* binding */ t)\n/* harmony export */ });\n/* harmony import */ var _locales_en_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.json */ \"../../locales/en.json\");\n/* harmony import */ var _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locales/percentages.json */ \"../../locales/percentages.json\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\nconst COMPLETION_THRESHOLD = 85;\nconst defaultLang = { code: \"en\", label: \"English\" };\nconst allLanguages = [\n { code: \"ar-SA\", label: \"العربية\", rtl: true },\n { code: \"bg-BG\", label: \"Български\" },\n { code: \"ca-ES\", label: \"Català\" },\n { code: \"cs-CZ\", label: \"Česky\" },\n { code: \"de-DE\", label: \"Deutsch\" },\n { code: \"el-GR\", label: \"Ελληνικά\" },\n { code: \"es-ES\", label: \"Español\" },\n { code: \"eu-ES\", label: \"Euskara\" },\n { code: \"fa-IR\", label: \"فارسی\", rtl: true },\n { code: \"fi-FI\", label: \"Suomi\" },\n { code: \"fr-FR\", label: \"Français\" },\n { code: \"he-IL\", label: \"עברית\", rtl: true },\n { code: \"hi-IN\", label: \"हिन्दी\" },\n { code: \"hu-HU\", label: \"Magyar\" },\n { code: \"id-ID\", label: \"Bahasa Indonesia\" },\n { code: \"it-IT\", label: \"Italiano\" },\n { code: \"ja-JP\", label: \"日本語\" },\n { code: \"kab-KAB\", label: \"Taqbaylit\" },\n { code: \"kk-KZ\", label: \"Қазақ тілі\" },\n { code: \"ko-KR\", label: \"한국어\" },\n { code: \"lt-LT\", label: \"Lietuvių\" },\n { code: \"lv-LV\", label: \"Latviešu\" },\n { code: \"my-MM\", label: \"Burmese\" },\n { code: \"nb-NO\", label: \"Norsk bokmål\" },\n { code: \"nl-NL\", label: \"Nederlands\" },\n { code: \"nn-NO\", label: \"Norsk nynorsk\" },\n { code: \"oc-FR\", label: \"Occitan\" },\n { code: \"pa-IN\", label: \"ਪੰਜਾਬੀ\" },\n { code: \"pl-PL\", label: \"Polski\" },\n { code: \"pt-BR\", label: \"Português Brasileiro\" },\n { code: \"pt-PT\", label: \"Português\" },\n { code: \"ro-RO\", label: \"Română\" },\n { code: \"ru-RU\", label: \"Русский\" },\n { code: \"sk-SK\", label: \"Slovenčina\" },\n { code: \"sv-SE\", label: \"Svenska\" },\n { code: \"sl-SI\", label: \"Slovenščina\" },\n { code: \"tr-TR\", label: \"Türkçe\" },\n { code: \"uk-UA\", label: \"Українська\" },\n { code: \"zh-CN\", label: \"简体中文\" },\n { code: \"zh-TW\", label: \"繁體中文\" },\n { code: \"vi-VN\", label: \"Tiếng Việt\" },\n { code: \"mr-IN\", label: \"मराठी\" },\n].concat([defaultLang]);\nconst languages = allLanguages\n .sort((left, right) => (left.label > right.label ? 1 : -1))\n .filter((lang) => _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__[lang.code] >=\n COMPLETION_THRESHOLD);\nconst TEST_LANG_CODE = \"__test__\";\nif (\"development\" === _constants__WEBPACK_IMPORTED_MODULE_2__.ENV.DEVELOPMENT) {\n languages.unshift({ code: TEST_LANG_CODE, label: \"test language\" }, {\n code: `${TEST_LANG_CODE}.rtl`,\n label: \"\\u{202a}test language (rtl)\\u{202c}\",\n rtl: true,\n });\n}\nlet currentLang = defaultLang;\nlet currentLangData = {};\nconst setLanguage = (lang) => __awaiter(void 0, void 0, void 0, function* () {\n currentLang = lang;\n document.documentElement.dir = currentLang.rtl ? \"rtl\" : \"ltr\";\n document.documentElement.lang = currentLang.code;\n if (lang.code.startsWith(TEST_LANG_CODE)) {\n currentLangData = {};\n }\n else {\n currentLangData = yield __webpack_require__(\"../../locales lazy recursive ^\\\\.\\\\/.*\\\\.json$\")(`./${currentLang.code}.json`);\n }\n});\nconst getLanguage = () => currentLang;\nconst findPartsForData = (data, parts) => {\n for (let index = 0; index < parts.length; ++index) {\n const part = parts[index];\n if (data[part] === undefined) {\n return undefined;\n }\n data = data[part];\n }\n if (typeof data !== \"string\") {\n return undefined;\n }\n return data;\n};\nconst t = (path, replacement) => {\n if (currentLang.code.startsWith(TEST_LANG_CODE)) {\n const name = replacement\n ? `${path}(${JSON.stringify(replacement).slice(1, -1)})`\n : path;\n return `\\u{202a}[[${name}]]\\u{202c}`;\n }\n const parts = path.split(\".\");\n let translation = findPartsForData(currentLangData, parts) ||\n findPartsForData(_locales_en_json__WEBPACK_IMPORTED_MODULE_0__, parts);\n if (translation === undefined) {\n throw new Error(`Can't find translation for ${path}`);\n }\n if (replacement) {\n for (const key in replacement) {\n translation = translation.replace(`{{${key}}}`, String(replacement[key]));\n }\n }\n return translation;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixFQUFFO0lBQ2hELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3JDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25DLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO0lBQ3ZDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ2xDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0NBQ2xDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUVqQixNQUFNLFNBQVMsR0FBZSxZQUFZO0tBQzlDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDMUQsTUFBTSxDQUNMLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDTixzREFBc0MsQ0FBQyxJQUFJLENBQUMs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T0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0U7S0FDRjtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9pMThuLnRzPzM4ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhbGxiYWNrTGFuZ0RhdGEgZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgcGVyY2VudGFnZXMgZnJvbSBcIi4vbG9jYWxlcy9wZXJjZW50YWdlcy5qc29uXCI7XG5pbXBvcnQgeyBFTlYgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ09NUExFVElPTl9USFJFU0hPTEQgPSA4NTtcblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZSB7XG4gIGNvZGU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcnRsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYW5nID0geyBjb2RlOiBcImVuXCIsIGxhYmVsOiBcIkVuZ2xpc2hcIiB9O1xuXG5jb25zdCBhbGxMYW5ndWFnZXM6IExhbmd1YWdlW10gPSBbXG4gIHsgY29kZTogXCJhci1TQVwiLCBsYWJlbDogXCLYp9mE2LnYsdio2YrYqVwiLCBydGw6IHRydWUgfSxcbiAgeyBjb2RlOiBcImJnLUJHXCIsIGxhYmVsOiBcItCR0YrQu9Cz0LDRgNGB0LrQuFwiIH0sXG4gIHsgY29kZTogXCJjYS1FU1wiLCBsYWJlbDogXCJDYXRhbMOgXCIgfSxcbiAgeyBjb2RlOiBcImNzLUNaXCIsIGxhYmVsOiBcIsSMZXNreVwiIH0sXG4gIHsgY29kZTogXCJkZS1ERVwiLCBsYWJlbDogXCJEZXV0c2NoXCIgfSxcbiAgeyBjb2RlOiBcImVsLUdSXCIsIGxhYmVsOiBcIs6VzrvOu863zr3Ouc66zqxcIiB9LFxuICB7IGNvZGU6IFwiZXMtRVNcIiwgbGFiZWw6IFwiRXNwYcOxb2xcIiB9LFxuICB7IGNvZGU6IFwiZXUtRVNcIiwgbGFiZWw6IFwiRXVza2FyYVwiIH0sXG4gIHsgY29kZTogXCJmYS1JUlwiLCBsYWJlbDogXCLZgdin2LHYs9uMXCIsIHJ0bDogdHJ1ZSB9LFxuICB7IGNvZGU6IFwiZmktRklcIiwgbGFiZWw6IFwiU3VvbWlcIiB9LFxuICB7IGNvZGU6IFwiZnItRlJcIiwgbGFiZWw6IFwiRnJhbsOnYWlzXCIgfSxcbiAgeyBjb2RlOiBcImhlLUlMXCIsIGxhYmVsOiBcItei15HXqNeZ16pcIiwgcnRsOiB0cnVlIH0sXG4gIHsgY29kZTogXCJoaS1JTlwiLCBsYWJlbDogXCLgpLngpL/gpKjgpY3gpKbgpYBcIiB9LFxuICB7IGNvZGU6IFwiaHUtSFVcIiwgbGFiZWw6IFwiTWFneWFyXCIgfSxcbiAgeyBjb2RlOiBcImlkLUlEXCIsIGxhYmVsOiBcIkJhaGFzYSBJbmRvbmVzaWFcIiB9LFxuICB7IGNvZGU6IFwiaXQtSVRcIiwgbGFiZWw6IFwiSXRhbGlhbm9cIiB9LFxuICB7IGNvZGU6IFwiamEtSlBcIiwgbGFiZWw6IFwi5pel5pys6KqeXCIgfSxcbiAgeyBjb2RlOiBcImthYi1LQUJcIiwgbGFiZWw6IFwiVGFxYmF5bGl0XCIgfSxcbiAgeyBjb2RlOiBcImtrLUtaXCIsIGxhYmVsOiBcItKa0LDQt9Cw0psg0YLRltC70ZZcIiB9LFxuICB7IGNvZGU6IFwia28tS1JcIiwgbGFiZWw6IFwi7ZWc6rWt7Ja0XCIgfSxcbiAgeyBjb2RlOiBcImx0LUxUXCIsIGxhYmVsOiBcIkxpZXR1dmnFs1wiIH0sXG4gIHsgY29kZTogXCJsdi1MVlwiLCBsYWJlbDogXCJMYXR2aWXFoXVcIiB9LFxuICB7IGNvZGU6IFwibXktTU1cIiwgbGFiZWw6IFwiQnVybWVzZVwiIH0sXG4gIHsgY29kZTogXCJuYi1OT1wiLCBsYWJlbDogXCJOb3JzayBib2ttw6VsXCIgfSxcbiAgeyBjb2RlOiBcIm5sLU5MXCIsIGxhYmVsOiBcIk5lZGVybGFuZHNcIiB9LFxuICB7IGNvZGU6IFwibm4tTk9cIiwgbGFiZWw6IFwiTm9yc2sgbnlub3Jza1wiIH0sXG4gIHsgY29kZTogXCJvYy1GUlwiLCBsYWJlbDogXCJPY2NpdGFuXCIgfSxcbiAgeyBjb2RlOiBcInBhLUlOXCIsIGxhYmVsOiBcIuCoquCpsOConOCovuCorOCpgFwiIH0sXG4gIHsgY29kZTogXCJwbC1QTFwiLCBsYWJlbDogXCJQb2xza2lcIiB9LFxuICB7IGNvZGU6IFwicHQtQlJcIiwgbGFiZWw6IFwiUG9ydHVndcOqcyBCcmFzaWxlaXJvXCIgfSxcbiAgeyBjb2RlOiBcInB0LVBUXCIsIGxhYmVsOiBcIlBvcnR1Z3XDqnNcIiB9LFxuICB7IGNvZGU6IFwicm8tUk9cIiwgbGFiZWw6IFwiUm9tw6JuxINcIiB9LFxuICB7IGNvZGU6IFwicnUtUlVcIiwgbGFiZWw6IFwi0KDRg9GB0YHQutC40LlcIiB9LFxuICB7IGNvZGU6IFwic2stU0tcIiwgbGFiZWw6IFwiU2xvdmVuxI1pbmFcIiB9LFxuICB7IGNvZGU6IFwic3YtU0VcIiwgbGFiZWw6IFwiU3ZlbnNrYVwiIH0sXG4gIHsgY29kZTogXCJzbC1TSVwiLCBsYWJlbDogXCJTbG92ZW7FocSNaW5hXCIgfSxcbiAgeyBjb2RlOiBcInRyLVRSXCIsIGxhYmVsOiBcIlTDvHJrw6dlXCIgfSxcbiAgeyBjb2RlOiBcInVrLVVBXCIsIGxhYmVsOiBcItCj0LrRgNCw0ZfQvdGB0YzQutCwXCIgfSxcbiAgeyBjb2RlOiBcInpoLUNOXCIsIGxhYmVsOiBcIueugOS9k+S4reaWh1wiIH0sXG4gIHsgY29kZTogXCJ6aC1UV1wiLCBsYWJlbDogXCLnuYHpq5TkuK3mlodcIiB9LFxuICB7IGNvZGU6IFwidmktVk5cIiwgbGFiZWw6IFwiVGnhur9uZyBWaeG7h3RcIiB9LFxuICB7IGNvZGU6IFwibXItSU5cIiwgbGFiZWw6IFwi4KSu4KSw4KS+4KSg4KWAXCIgfSxcbl0uY29uY2F0KFtkZWZhdWx0TGFuZ10pO1xuXG5leHBvcnQgY29uc3QgbGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gYWxsTGFuZ3VhZ2VzXG4gIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gKGxlZnQubGFiZWwgPiByaWdodC5sYWJlbCA/IDEgOiAtMSkpXG4gIC5maWx0ZXIoXG4gICAgKGxhbmcpID0+XG4gICAgICAocGVyY2VudGFnZXMgYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPilbbGFuZy5jb2RlXSA+PVxuICAgICAgQ09NUExFVElPTl9USFJFU0hPTEQsXG4gICk7XG5cbmNvbnN0IFRFU1RfTEFOR19DT0RFID0gXCJfX3Rlc3RfX1wiO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBFTlYuREVWRUxPUE1FTlQpIHtcbiAgbGFuZ3VhZ2VzLnVuc2hpZnQoXG4gICAgeyBjb2RlOiBURVNUX0xBTkdfQ09ERSwgbGFiZWw6IFwidGVzdCBsYW5ndWFnZVwiIH0sXG4gICAge1xuICAgICAgY29kZTogYCR7VEVTVF9MQU5HX0NPREV9LnJ0bGAsXG4gICAgICBsYWJlbDogXCJcXHV7MjAyYX10ZXN0IGxhbmd1YWdlIChydGwpXFx1ezIwMmN9XCIsXG4gICAgICBydGw6IHRydWUsXG4gICAgfSxcbiAgKTtcbn1cblxubGV0IGN1cnJlbnRMYW5nOiBMYW5ndWFnZSA9IGRlZmF1bHRMYW5nO1xubGV0IGN1cnJlbnRMYW5nRGF0YSA9IHt9O1xuXG5leHBvcnQgY29uc3Qgc2V0TGFuZ3VhZ2UgPSBhc3luYyAobGFuZzogTGFuZ3VhZ2UpID0+IHtcbiAgY3VycmVudExhbmcgPSBsYW5nO1xuICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyID0gY3VycmVudExhbmcucnRsID8gXCJydGxcIiA6IFwibHRyXCI7XG4gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nID0gY3VycmVudExhbmcuY29kZTtcblxuICBpZiAobGFuZy5jb2RlLnN0YXJ0c1dpdGgoVEVTVF9MQU5HX0NPREUpKSB7XG4gICAgY3VycmVudExhbmdEYXRhID0ge307XG4gIH0gZWxzZSB7XG4gICAgY3VycmVudExhbmdEYXRhID0gYXdhaXQgaW1wb3J0KFxuICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJsb2NhbGVzL1tyZXF1ZXN0XVwiICovIGAuL2xvY2FsZXMvJHtjdXJyZW50TGFuZy5jb2RlfS5qc29uYFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYW5ndWFnZSA9ICgpID0+IGN1cnJlbnRMYW5nO1xuXG5jb25zdCBmaW5kUGFydHNGb3JEYXRhID0gKGRhdGE6IGFueSwgcGFydHM6IHN0cmluZ1tdKSA9PiB7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICBjb25zdCBwYXJ0ID0gcGFydHNbaW5kZXhdO1xuICAgIGlmIChkYXRhW3BhcnRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhW3BhcnRdO1xuICB9XG4gIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgdCA9IChcbiAgcGF0aDogc3RyaW5nLFxuICByZXBsYWNlbWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0sXG4pID0+IHtcbiAgaWYgKGN1cnJlbnRMYW5nLmNvZGUuc3RhcnRzV2l0aChURVNUX0xBTkdfQ09ERSkpIHtcbiAgICBjb25zdCBuYW1lID0gcmVwbGFjZW1lbnRcbiAgICAgID8gYCR7cGF0aH0oJHtKU09OLnN0cmluZ2lmeShyZXBsYWNlbWVudCkuc2xpY2UoMSwgLTEpfSlgXG4gICAgICA6IHBhdGg7XG4gICAgcmV0dXJuIGBcXHV7MjAyYX1bWyR7bmFtZX1dXVxcdXsyMDJjfWA7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICBsZXQgdHJhbnNsYXRpb24gPVxuICAgIGZpbmRQYXJ0c0ZvckRhdGEoY3VycmVudExhbmdEYXRhLCBwYXJ0cykgfHxcbiAgICBmaW5kUGFydHNGb3JEYXRhKGZhbGxiYWNrTGFuZ0RhdGEsIHBhcnRzKTtcbiAgaWYgKHRyYW5zbGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgdHJhbnNsYXRpb24gZm9yICR7cGF0aH1gKTtcbiAgfVxuXG4gIGlmIChyZXBsYWNlbWVudCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJlcGxhY2VtZW50KSB7XG4gICAgICB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uLnJlcGxhY2UoYHt7JHtrZXl9fX1gLCBTdHJpbmcocmVwbGFjZW1lbnRba2V5XSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJhbnNsYXRpb247XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../i18n.ts\n");
3100
3089
 
3101
3090
  /***/ }),
3102
3091
 
@@ -3162,7 +3151,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3162
3151
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3163
3152
 
3164
3153
  "use strict";
3165
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n /* global __webpack_public_path__:writable */\n __webpack_require__.p =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.12.0-f1fd295\"}/dist/`;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBQ3RDLElBQUksYUFBb0IsS0FBSyxnREFBUSxFQUFFO0lBQ3JDLG9CQUFvQjtJQUNwQiw2Q0FBNkM7SUFDN0MscUJBQXVCO1FBQ3JCLE1BQU0sQ0FBQyxxQkFBcUI7WUFDNUIscUJBQXFCLHdCQUFvQixJQUFJLGdCQUF1QixRQUFRLENBQUM7Q0FDaEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9wdWJsaWNQYXRoLmpzP2E4N2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5WIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAvKiBnbG9iYWwgX193ZWJwYWNrX3B1YmxpY19wYXRoX186d3JpdGFibGUgKi9cbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPVxuICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICBgaHR0cHM6Ly91bnBrZy5jb20vJHtwcm9jZXNzLmVudi5QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5QS0dfVkVSU0lPTn0vZGlzdC9gO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
3154
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n /* global __webpack_public_path__:writable */\n __webpack_require__.p =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.12.0-f8b4bb6\"}/dist/`;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBQ3RDLElBQUksYUFBb0IsS0FBSyxnREFBUSxFQUFFO0lBQ3JDLG9CQUFvQjtJQUNwQiw2Q0FBNkM7SUFDN0MscUJBQXVCO1FBQ3JCLE1BQU0sQ0FBQyxxQkFBcUI7WUFDNUIscUJBQXFCLHdCQUFvQixJQUFJLGdCQUF1QixRQUFRLENBQUM7Q0FDaEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9wdWJsaWNQYXRoLmpzP2E4N2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5WIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAvKiBnbG9iYWwgX193ZWJwYWNrX3B1YmxpY19wYXRoX186d3JpdGFibGUgKi9cbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPVxuICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICBgaHR0cHM6Ly91bnBrZy5jb20vJHtwcm9jZXNzLmVudi5QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5QS0dfVkVSU0lPTn0vZGlzdC9gO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
3166
3155
 
3167
3156
  /***/ }),
3168
3157
 
@@ -3206,7 +3195,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3206
3195
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3207
3196
 
3208
3197
  "use strict";
3209
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULT_LINK_SIZE\": () => (/* binding */ DEFAULT_LINK_SIZE),\n/* harmony export */ \"generateFreeDrawShape\": () => (/* binding */ generateFreeDrawShape),\n/* harmony export */ \"generateRoughOptions\": () => (/* binding */ generateRoughOptions),\n/* harmony export */ \"getFreeDrawPath2D\": () => (/* binding */ getFreeDrawPath2D),\n/* harmony export */ \"getFreeDrawSvgPath\": () => (/* binding */ getFreeDrawSvgPath),\n/* harmony export */ \"getShapeForElement\": () => (/* binding */ getShapeForElement),\n/* harmony export */ \"invalidateShapeForElement\": () => (/* binding */ invalidateShapeForElement),\n/* harmony export */ \"pathsCache\": () => (/* binding */ pathsCache),\n/* harmony export */ \"renderElement\": () => (/* binding */ renderElement),\n/* harmony export */ \"renderElementToSvg\": () => (/* binding */ renderElementToSvg),\n/* harmony export */ \"setShapeForElement\": () => (/* binding */ setShapeForElement)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! perfect-freehand */ \"../../../node_modules/perfect-freehand/dist/esm/index.js\");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ \"../../element/textElement.ts\");\n\n\n\n\n\n\n\n\n\n// using a stronger invert (100% vs our regular 93%) and saturate\n// as a temp hack to make images in dark theme look closer to original\n// color scheme (it's still not quite there and the colors look slightly\n// desatured, alas...)\nconst IMAGE_INVERT_FILTER = \"invert(100%) hue-rotate(180deg) saturate(1.25)\";\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\nconst isPendingImageElement = (element, renderConfig) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) &&\n !renderConfig.imageCache.has(element.fileId);\nconst shouldResetImageFilter = (element, renderConfig) => {\n var _a;\n return (renderConfig.theme === \"dark\" &&\n (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) &&\n !isPendingImageElement(element, renderConfig) &&\n ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg);\n};\nconst getDashArrayDashed = (strokeWidth) => [8, 8 + strokeWidth];\nconst getDashArrayDotted = (strokeWidth) => [1.5, 6 + strokeWidth];\nconst getCanvasPadding = (element) => element.type === \"freedraw\" ? element.strokeWidth * 12 : 20;\nconst generateElementCanvas = (element, zoom, renderConfig) => {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n const padding = getCanvasPadding(element);\n let canvasOffsetX = 0;\n let canvasOffsetY = 0;\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n canvas.width =\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2) * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvas.height =\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2) * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvasOffsetX =\n element.x > x1\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.x, x1) * window.devicePixelRatio * zoom.value\n : 0;\n canvasOffsetY =\n element.y > y1\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.y, y1) * window.devicePixelRatio * zoom.value\n : 0;\n context.translate(canvasOffsetX, canvasOffsetY);\n }\n else {\n canvas.width =\n element.width * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvas.height =\n element.height * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n }\n context.save();\n context.translate(padding * zoom.value, padding * zoom.value);\n context.scale(window.devicePixelRatio * zoom.value, window.devicePixelRatio * zoom.value);\n const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__[\"default\"].canvas(canvas);\n // in dark theme, revert the image color filter\n if (shouldResetImageFilter(element, renderConfig)) {\n context.filter = IMAGE_INVERT_FILTER;\n }\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n return {\n element,\n canvas,\n theme: renderConfig.theme,\n canvasZoom: zoom.value,\n canvasOffsetX,\n canvasOffsetY,\n };\n};\nconst DEFAULT_LINK_SIZE = 14;\nconst IMAGE_PLACEHOLDER_IMG = document.createElement(\"img\");\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"image\" class=\"svg-inline--fa fa-image fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"#888\" d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>`)}`;\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement(\"img\");\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox=\"0 0 668 668\" xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z\" style=\"fill:#888;fill-rule:nonzero\" transform=\"matrix(.81709 0 0 .81709 124.825 145.825)\"/><path d=\"M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z\" style=\"fill:#888;fill-rule:nonzero\" transform=\"matrix(.30366 0 0 .30366 506.822 60.065)\"/></svg>`)}`;\nconst drawImagePlaceholder = (element, context, zoomValue) => {\n context.fillStyle = \"#E7E7E7\";\n context.fillRect(0, 0, element.width, element.height);\n const imageMinWidthOrHeight = Math.min(element.width, element.height);\n const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\n context.drawImage(element.status === \"error\"\n ? IMAGE_ERROR_PLACEHOLDER_IMG\n : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\n};\nconst drawElementOnCanvas = (element, rc, context, renderConfig) => {\n var _a;\n context.globalAlpha = element.opacity / 100;\n switch (element.type) {\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n context.lineJoin = \"round\";\n context.lineCap = \"round\";\n rc.draw(getShapeForElement(element));\n break;\n }\n case \"arrow\":\n case \"line\": {\n context.lineJoin = \"round\";\n context.lineCap = \"round\";\n getShapeForElement(element).forEach((shape) => {\n rc.draw(shape);\n });\n break;\n }\n case \"freedraw\": {\n // Draw directly to canvas\n context.save();\n context.fillStyle = element.strokeColor;\n const path = getFreeDrawPath2D(element);\n const fillShape = getShapeForElement(element);\n if (fillShape) {\n rc.draw(fillShape);\n }\n context.fillStyle = element.strokeColor;\n context.fill(path);\n context.restore();\n break;\n }\n case \"image\": {\n const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element)\n ? (_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.image\n : undefined;\n if (img != null && !(img instanceof Promise)) {\n context.drawImage(img, 0 /* hardcoded for the selection box*/, 0, element.width, element.height);\n }\n else {\n drawImagePlaceholder(element, context, renderConfig.zoom.value);\n }\n break;\n }\n default: {\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text);\n const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\n if (shouldTemporarilyAttach) {\n // to correctly render RTL text mixed with LTR, we have to append it\n // to the DOM\n document.body.appendChild(context.canvas);\n }\n context.canvas.setAttribute(\"dir\", rtl ? \"rtl\" : \"ltr\");\n context.save();\n context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element);\n context.fillStyle = element.strokeColor;\n context.textAlign = element.textAlign;\n // Canvas does not support multiline text by default\n const lines = element.text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const lineHeight = element.containerId\n ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getApproxLineHeight)((0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element))\n : element.height / lines.length;\n let verticalOffset = element.height - element.baseline;\n if (element.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_6__.VERTICAL_ALIGN.BOTTOM) {\n verticalOffset = _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING;\n }\n const horizontalOffset = element.textAlign === \"center\"\n ? element.width / 2\n : element.textAlign === \"right\"\n ? element.width\n : 0;\n for (let index = 0; index < lines.length; index++) {\n context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeight - verticalOffset);\n }\n context.restore();\n if (shouldTemporarilyAttach) {\n context.canvas.remove();\n }\n }\n else {\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n }\n context.globalAlpha = 1;\n};\nconst elementWithCanvasCache = new WeakMap();\nconst shapeCache = new WeakMap();\nconst getShapeForElement = (element) => shapeCache.get(element);\nconst setShapeForElement = (element, shape) => shapeCache.set(element, shape);\nconst invalidateShapeForElement = (element) => shapeCache.delete(element);\nconst generateRoughOptions = (element, continuousPath = false) => {\n const options = {\n seed: element.seed,\n strokeLineDash: element.strokeStyle === \"dashed\"\n ? getDashArrayDashed(element.strokeWidth)\n : element.strokeStyle === \"dotted\"\n ? getDashArrayDotted(element.strokeWidth)\n : undefined,\n // for non-solid strokes, disable multiStroke because it tends to make\n // dashes/dots overlay each other\n disableMultiStroke: element.strokeStyle !== \"solid\",\n // for non-solid strokes, increase the width a bit to make it visually\n // similar to solid strokes, because we're also disabling multiStroke\n strokeWidth: element.strokeStyle !== \"solid\"\n ? element.strokeWidth + 0.5\n : element.strokeWidth,\n // when increasing strokeWidth, we must explicitly set fillWeight and\n // hachureGap because if not specified, roughjs uses strokeWidth to\n // calculate them (and we don't want the fills to be modified)\n fillWeight: element.strokeWidth / 2,\n hachureGap: element.strokeWidth * 4,\n roughness: element.roughness,\n stroke: element.strokeColor,\n preserveVertices: continuousPath,\n };\n switch (element.type) {\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n options.fillStyle = element.fillStyle;\n options.fill =\n element.backgroundColor === \"transparent\"\n ? undefined\n : element.backgroundColor;\n if (element.type === \"ellipse\") {\n options.curveFitting = 1;\n }\n return options;\n }\n case \"line\":\n case \"freedraw\": {\n if ((0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points)) {\n options.fillStyle = element.fillStyle;\n options.fill =\n element.backgroundColor === \"transparent\"\n ? undefined\n : element.backgroundColor;\n }\n return options;\n }\n case \"arrow\":\n return options;\n default: {\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n};\n/**\n * Generates the element's shape and puts it into the cache.\n * @param element\n * @param generator\n */\nconst generateElementShape = (element, generator) => {\n let shape = shapeCache.get(element);\n // `null` indicates no rc shape applicable for this element type\n // (= do not generate anything)\n if (shape === undefined) {\n elementWithCanvasCache.delete(element);\n switch (element.type) {\n case \"rectangle\":\n if (element.strokeSharpness === \"round\") {\n const w = element.width;\n const h = element.height;\n const r = Math.min(w, h) * 0.25;\n shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(element, true));\n }\n else {\n shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(element));\n }\n setShapeForElement(element, shape);\n break;\n case \"diamond\": {\n const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getDiamondPoints)(element);\n if (element.strokeSharpness === \"round\") {\n shape = generator.path(`M ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25} L ${rightX - (rightX - topX) * 0.25} ${rightY - (rightY - topY) * 0.25}\n C ${rightX} ${rightY}, ${rightX} ${rightY}, ${rightX - (rightX - bottomX) * 0.25} ${rightY + (bottomY - rightY) * 0.25}\n L ${bottomX + (rightX - bottomX) * 0.25} ${bottomY - (bottomY - rightY) * 0.25}\n C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${bottomX - (bottomX - leftX) * 0.25} ${bottomY - (bottomY - leftY) * 0.25}\n L ${leftX + (bottomX - leftX) * 0.25} ${leftY + (bottomY - leftY) * 0.25}\n C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + (topX - leftX) * 0.25} ${leftY - (leftY - topY) * 0.25}\n L ${topX - (topX - leftX) * 0.25} ${topY + (leftY - topY) * 0.25}\n C ${topX} ${topY}, ${topX} ${topY}, ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25}`, generateRoughOptions(element, true));\n }\n else {\n shape = generator.polygon([\n [topX, topY],\n [rightX, rightY],\n [bottomX, bottomY],\n [leftX, leftY],\n ], generateRoughOptions(element));\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"ellipse\":\n shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\n setShapeForElement(element, shape);\n break;\n case \"line\":\n case \"arrow\": {\n const options = generateRoughOptions(element);\n // points array can be empty in the beginning, so it is important to add\n // initial position to it\n const points = element.points.length ? element.points : [[0, 0]];\n // curve is always the first element\n // this simplifies finding the curve for an element\n if (element.strokeSharpness === \"sharp\") {\n if (options.fill) {\n shape = [generator.polygon(points, options)];\n }\n else {\n shape = [\n generator.linearPath(points, options),\n ];\n }\n }\n else {\n shape = [generator.curve(points, options)];\n }\n // add lines only in arrow\n if (element.type === \"arrow\") {\n const { startArrowhead = null, endArrowhead = \"arrow\" } = element;\n const getArrowheadShapes = (element, shape, position, arrowhead) => {\n const arrowheadPoints = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getArrowheadPoints)(element, shape, position, arrowhead);\n if (arrowheadPoints === null) {\n return [];\n }\n // Other arrowheads here...\n if (arrowhead === \"dot\") {\n const [x, y, r] = arrowheadPoints;\n return [\n generator.circle(x, y, r, Object.assign(Object.assign({}, options), { fill: element.strokeColor, fillStyle: \"solid\", stroke: \"none\" })),\n ];\n }\n if (arrowhead === \"triangle\") {\n const [x, y, x2, y2, x3, y3] = arrowheadPoints;\n // always use solid stroke for triangle arrowhead\n delete options.strokeLineDash;\n return [\n generator.polygon([\n [x, y],\n [x2, y2],\n [x3, y3],\n [x, y],\n ], Object.assign(Object.assign({}, options), { fill: element.strokeColor, fillStyle: \"solid\" })),\n ];\n }\n // Arrow arrowheads\n const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\n if (element.strokeStyle === \"dotted\") {\n // for dotted arrows caps, reduce gap to make it more legible\n const dash = getDashArrayDotted(element.strokeWidth - 1);\n options.strokeLineDash = [dash[0], dash[1] - 1];\n }\n else {\n // for solid/dashed, keep solid arrow cap\n delete options.strokeLineDash;\n }\n return [\n generator.line(x3, y3, x2, y2, options),\n generator.line(x4, y4, x2, y2, options),\n ];\n };\n if (startArrowhead !== null) {\n const shapes = getArrowheadShapes(element, shape, \"start\", startArrowhead);\n shape.push(...shapes);\n }\n if (endArrowhead !== null) {\n if (endArrowhead === undefined) {\n // Hey, we have an old arrow here!\n }\n const shapes = getArrowheadShapes(element, shape, \"end\", endArrowhead);\n shape.push(...shapes);\n }\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"freedraw\": {\n generateFreeDrawShape(element);\n if ((0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points)) {\n // generate rough polygon to fill freedraw shape\n shape = generator.polygon(element.points, Object.assign(Object.assign({}, generateRoughOptions(element)), { stroke: \"none\" }));\n }\n else {\n shape = null;\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"text\":\n case \"image\": {\n // just to ensure we don't regenerate element.canvas on rerenders\n setShapeForElement(element, null);\n break;\n }\n }\n }\n};\nconst generateElementWithCanvas = (element, renderConfig) => {\n const zoom = renderConfig ? renderConfig.zoom : defaultAppState.zoom;\n const prevElementWithCanvas = elementWithCanvasCache.get(element);\n const shouldRegenerateBecauseZoom = prevElementWithCanvas &&\n prevElementWithCanvas.canvasZoom !== zoom.value &&\n !(renderConfig === null || renderConfig === void 0 ? void 0 : renderConfig.shouldCacheIgnoreZoom);\n if (!prevElementWithCanvas ||\n shouldRegenerateBecauseZoom ||\n prevElementWithCanvas.theme !== renderConfig.theme) {\n const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig);\n elementWithCanvasCache.set(element, elementWithCanvas);\n return elementWithCanvas;\n }\n return prevElementWithCanvas;\n};\nconst drawElementFromCanvas = (elementWithCanvas, rc, context, renderConfig) => {\n const element = elementWithCanvas.element;\n const padding = getCanvasPadding(element);\n let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n // Free draw elements will otherwise \"shuffle\" as the min x and y change\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n x1 = Math.floor(x1);\n x2 = Math.ceil(x2);\n y1 = Math.floor(y1);\n y2 = Math.ceil(y2);\n }\n const cx = ((x1 + x2) / 2 + renderConfig.scrollX) * window.devicePixelRatio;\n const cy = ((y1 + y2) / 2 + renderConfig.scrollY) * window.devicePixelRatio;\n const _isPendingImageElement = isPendingImageElement(element, renderConfig);\n const scaleXFactor = \"scale\" in elementWithCanvas.element && !_isPendingImageElement\n ? elementWithCanvas.element.scale[0]\n : 1;\n const scaleYFactor = \"scale\" in elementWithCanvas.element && !_isPendingImageElement\n ? elementWithCanvas.element.scale[1]\n : 1;\n context.save();\n context.scale((1 / window.devicePixelRatio) * scaleXFactor, (1 / window.devicePixelRatio) * scaleYFactor);\n context.translate(cx * scaleXFactor, cy * scaleYFactor);\n context.rotate(element.angle * scaleXFactor * scaleYFactor);\n context.drawImage(elementWithCanvas.canvas, (-(x2 - x1) / 2) * window.devicePixelRatio -\n (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom, (-(y2 - y1) / 2) * window.devicePixelRatio -\n (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.width / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.height / elementWithCanvas.canvasZoom);\n context.restore();\n // Clear the nested element we appended to the DOM\n};\nconst renderElement = (element, rc, context, renderConfig) => {\n const generator = rc.generator;\n switch (element.type) {\n case \"selection\": {\n context.save();\n context.translate(element.x + renderConfig.scrollX, element.y + renderConfig.scrollY);\n context.fillStyle = \"rgba(0, 0, 255, 0.10)\";\n context.fillRect(0, 0, element.width, element.height);\n context.restore();\n break;\n }\n case \"freedraw\": {\n generateElementShape(element, generator);\n if (renderConfig.isExporting) {\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\n }\n else {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\n context.save();\n context.translate(cx, cy);\n context.rotate(element.angle);\n context.translate(-shiftX, -shiftY);\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n }\n break;\n }\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\":\n case \"line\":\n case \"arrow\":\n case \"image\":\n case \"text\": {\n generateElementShape(element, generator);\n if (renderConfig.isExporting) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\n context.save();\n context.translate(cx, cy);\n context.rotate(element.angle);\n context.translate(-shiftX, -shiftY);\n if (shouldResetImageFilter(element, renderConfig)) {\n context.filter = \"none\";\n }\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n // not exporting → optimized rendering (cache & render from element\n // canvases)\n }\n else {\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\n }\n break;\n }\n default: {\n // @ts-ignore\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n};\nconst roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {\n if (typeof precision === \"undefined\") {\n return rsvg.draw(drawable);\n }\n const pshape = {\n sets: drawable.sets,\n shape: drawable.shape,\n options: Object.assign(Object.assign({}, drawable.options), { fixedDecimalPlaceDigits: precision }),\n };\n return rsvg.draw(pshape);\n};\nconst renderElementToSvg = (element, rsvg, svgRoot, files, offsetX, offsetY, exportWithDarkMode) => {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x2 - x1) / 2 - (element.x - x1);\n const cy = (y2 - y1) / 2 - (element.y - y1);\n const degree = (180 * element.angle) / Math.PI;\n const generator = rsvg.generator;\n // element to append node to, most of the time svgRoot\n let root = svgRoot;\n // if the element has a link, create an anchor tag and make that the new root\n if (element.link) {\n const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"a\");\n anchorTag.setAttribute(\"href\", element.link);\n root.appendChild(anchorTag);\n root = anchorTag;\n }\n switch (element.type) {\n case \"selection\": {\n // Since this is used only during editing experience, which is canvas based,\n // this should not happen\n throw new Error(\"Selection rendering is not supported for SVG\");\n }\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n generateElementShape(element, generator);\n const node = roughSVGDrawWithPrecision(rsvg, getShapeForElement(element), _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n const opacity = element.opacity / 100;\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"stroke-linecap\", \"round\");\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n root.appendChild(node);\n break;\n }\n case \"line\":\n case \"arrow\": {\n generateElementShape(element, generator);\n const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n const opacity = element.opacity / 100;\n group.setAttribute(\"stroke-linecap\", \"round\");\n getShapeForElement(element).forEach((shape) => {\n const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n if (element.type === \"line\" &&\n (0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points) &&\n element.backgroundColor !== \"transparent\") {\n node.setAttribute(\"fill-rule\", \"evenodd\");\n }\n group.appendChild(node);\n });\n root.appendChild(group);\n break;\n }\n case \"freedraw\": {\n generateElementShape(element, generator);\n generateFreeDrawShape(element);\n const opacity = element.opacity / 100;\n const shape = getShapeForElement(element);\n const node = shape\n ? roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT)\n : svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n node.setAttribute(\"stroke\", \"none\");\n const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"path\");\n path.setAttribute(\"fill\", element.strokeColor);\n path.setAttribute(\"d\", getFreeDrawSvgPath(element));\n node.appendChild(path);\n root.appendChild(node);\n break;\n }\n case \"image\": {\n const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && files[element.fileId];\n if (fileData) {\n const symbolId = `image-${fileData.id}`;\n let symbol = svgRoot.querySelector(`#${symbolId}`);\n if (!symbol) {\n symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"symbol\");\n symbol.id = symbolId;\n const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"image\");\n image.setAttribute(\"width\", \"100%\");\n image.setAttribute(\"height\", \"100%\");\n image.setAttribute(\"href\", fileData.dataURL);\n symbol.appendChild(image);\n root.prepend(symbol);\n }\n const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"use\");\n use.setAttribute(\"href\", `#${symbolId}`);\n // in dark theme, revert the image color filter\n if (exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg) {\n use.setAttribute(\"filter\", IMAGE_INVERT_FILTER);\n }\n use.setAttribute(\"width\", `${Math.round(element.width)}`);\n use.setAttribute(\"height\", `${Math.round(element.height)}`);\n use.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n root.appendChild(use);\n }\n break;\n }\n default: {\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n const opacity = element.opacity / 100;\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n const lines = element.text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const lineHeight = element.height / lines.length;\n const verticalOffset = element.height - element.baseline;\n const horizontalOffset = element.textAlign === \"center\"\n ? element.width / 2\n : element.textAlign === \"right\"\n ? element.width\n : 0;\n const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text) ? \"rtl\" : \"ltr\";\n const textAnchor = element.textAlign === \"center\"\n ? \"middle\"\n : element.textAlign === \"right\" || direction === \"rtl\"\n ? \"end\"\n : \"start\";\n for (let i = 0; i < lines.length; i++) {\n const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"text\");\n text.textContent = lines[i];\n text.setAttribute(\"x\", `${horizontalOffset}`);\n text.setAttribute(\"y\", `${(i + 1) * lineHeight - verticalOffset}`);\n text.setAttribute(\"font-family\", (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontFamilyString)(element));\n text.setAttribute(\"font-size\", `${element.fontSize}px`);\n text.setAttribute(\"fill\", element.strokeColor);\n text.setAttribute(\"text-anchor\", textAnchor);\n text.setAttribute(\"style\", \"white-space: pre;\");\n text.setAttribute(\"direction\", direction);\n node.appendChild(text);\n }\n root.appendChild(node);\n }\n else {\n // @ts-ignore\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n }\n};\nconst pathsCache = new WeakMap([]);\nfunction generateFreeDrawShape(element) {\n const svgPathData = getFreeDrawSvgPath(element);\n const path = new Path2D(svgPathData);\n pathsCache.set(element, path);\n return path;\n}\nfunction getFreeDrawPath2D(element) {\n return pathsCache.get(element);\n}\nfunction getFreeDrawSvgPath(element) {\n // If input points are empty (should they ever be?) return a dot\n const inputPoints = element.simulatePressure\n ? element.points\n : element.points.length\n ? element.points.map(([x, y], i) => [x, y, element.pressures[i]])\n : [[0, 0, 0.5]];\n // Consider changing the options for simulated pressure vs real pressure\n const options = {\n simulatePressure: element.simulatePressure,\n size: element.strokeWidth * 4.25,\n thinning: 0.6,\n smoothing: 0.5,\n streamline: 0.5,\n easing: (t) => Math.sin((t * Math.PI) / 2),\n last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup\n };\n return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_7__.getStroke)(inputPoints, options));\n}\nfunction med(A, B) {\n return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\n}\n// Trim SVG path data so number are each two decimal points. This\n// improves SVG exports, and prevents rendering errors on points\n// with long decimals.\nconst TO_FIXED_PRECISION = /(\\s?[A-Z]?,?-?[0-9]*\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\nfunction getSvgPathFromStroke(points) {\n if (!points.length) {\n return \"\";\n }\n const max = points.length - 1;\n return points\n .reduce((acc, point, i, arr) => {\n if (i === max) {\n acc.push(point, med(point, arr[0]), \"L\", arr[0], \"Z\");\n }\n else {\n acc.push(point, med(point, arr[i + 1]));\n }\n return acc;\n }, [\"M\", points[0], \"Q\"])\n .join(\" \")\n .replace(TO_FIXED_PRECISION, \"$1\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQ3RCO1NBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNULE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3JlbmRlcmVyL3JlbmRlckVsZW1lbnQudHM/YTZkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFeGNhbGlkcmF3RWxlbWVudCxcbiAgRXhjYWxpZHJhd0xpbmVhckVsZW1lbnQsXG4gIEV4Y2FsaWRyYXdUZXh0RWxlbWVudCxcbiAgQXJyb3doZWFkLFxuICBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQsXG4gIEV4Y2FsaWRyYXdJbWFnZUVsZW1lbnQsXG59IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQge1xuICBpc1RleHRFbGVtZW50LFxuICBpc0xpbmVhckVsZW1lbnQsXG4gIGlzRnJlZURyYXdFbGVtZW50LFxuICBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50LFxufSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQge1xuICBnZXREaWFtb25kUG9pbnRzLFxuICBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMsXG4gIGdldEFycm93aGVhZFBvaW50cyxcbn0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyBSb3VnaENhbnZhcyB9IGZyb20gXCJyb3VnaGpzL2Jpbi9jYW52YXNcIjtcbmltcG9ydCB7IERyYXdhYmxlLCBPcHRpb25zIH0gZnJvbSBcInJvdWdoanMvYmluL2NvcmVcIjtcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSBcInJvdWdoanMvYmluL3N2Z1wiO1xuaW1wb3J0IHsgUm91Z2hHZW5lcmF0b3IgfSBmcm9tIFwicm91Z2hqcy9iaW4vZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCB7IFJlbmRlckNvbmZpZyB9IGZyb20gXCIuLi9zY2VuZS90eXBlc1wiO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGdldEZvbnRTdHJpbmcsIGdldEZvbnRGYW1pbHlTdHJpbmcsIGlzUlRMIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpc1BhdGhBTG9vcCB9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQmluYXJ5RmlsZXMsIFpvb20gfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHtcbiAgQk9VTkRfVEVYVF9QQURESU5HLFxuICBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQsXG4gIE1JTUVfVFlQRVMsXG4gIFNWR19OUyxcbiAgVkVSVElDQUxfQUxJR04sXG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldFN0cm9rZSwgU3Ryb2tlT3B0aW9ucyB9IGZyb20gXCJwZXJmZWN0LWZyZWVoYW5kXCI7XG5pbXBvcnQgeyBnZXRBcHByb3hMaW5lSGVpZ2h0IH0gZnJvbSBcIi4uL2VsZW1lbnQvdGV4dEVsZW1lbnRcIjtcblxuLy8gdXNpbmcgYSBzdHJvbmdlciBpbnZlcnQgKDEwMCUgdnMgb3VyIHJlZ3VsYXIgOTMlKSBhbmQgc2F0dXJhdGVcbi8vIGFzIGEgdGVtcCBoYWNrIHRvIG1ha2UgaW1hZ2VzIGluIGRhcmsgdGhlbWUgbG9vayBjbG9zZXIgdG8gb3JpZ2luYWxcbi8vIGNvbG9yIHNjaGVtZSAoaXQncyBzdGlsbCBub3QgcXVpdGUgdGhlcmUgYW5kIHRoZSBjb2xvcnMgbG9vayBzbGlnaHRseVxuLy8gZGVzYXR1cmVkLCBhbGFzLi4uKVxuY29uc3QgSU1BR0VfSU5WRVJUX0ZJTFRFUiA9IFwiaW52ZXJ0KDEwMCUpIGh1ZS1yb3RhdGUoMTgwZGVnKSBzYXR1cmF0ZSgxLjI1KVwiO1xuXG5jb25zdCBkZWZhdWx0QXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKTtcblxuY29uc3QgaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID0gKFxuICBlbGVtZW50OiBFeGNhbGlkcmF3RWxlbWVudCxcbiAgcmVuZGVyQ29uZmlnOiBSZW5kZXJDb25maWcsXG4pID0+XG4gIGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiZcbiAgIXJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmhhcyhlbGVtZW50LmZpbGVJZCk7XG5cbmNvbnN0IHNob3VsZFJlc2V0SW1hZ2VGaWx0ZXIgPSAoXG4gIGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50LFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIHJlbmRlckNvbmZpZy50aGVtZSA9PT0gXCJkYXJrXCIgJiZcbiAgICBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmXG4gICAgIWlzUGVuZGluZ0ltYWdlRWxlbWVudChlbGVtZW50LCByZW5kZXJDb25maWcpICYmXG4gICAgcmVuZGVyQ29uZmlnLmltYWdlQ2FjaGUuZ2V0KGVsZW1lbnQuZmlsZUlkKT8ubWltZVR5cGUgIT09IE1JTUVfVFlQRVMuc3ZnXG4gICk7XG59O1xuXG5jb25zdCBnZXREYXNoQXJyYXlEYXNoZWQgPSAoc3Ryb2tlV2lkdGg6IG51bWJlcikgPT4gWzgsIDggKyBzdHJva2VXaWR0aF07XG5cbmNvbnN0IGdldERhc2hBcnJheURvdHRlZCA9IChzdHJva2VXaWR0aDogbnVtYmVyKSA9PiBbMS41LCA2ICsgc3Ryb2tlV2lkdGhdO1xuXG5jb25zdCBnZXRDYW52YXNQYWRkaW5nID0gKGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50KSA9PlxuICBlbGVtZW50LnR5cGUgPT09IFwiZnJlZWRyYXdcIiA/IGVsZW1lbnQuc3Ryb2tlV2lkdGggKiAxMiA6IDIwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyB7XG4gIGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50IHwgRXhjYWxpZHJhd1RleHRFbGVtZW50O1xuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICB0aGVtZTogUmVuZGVyQ29uZmlnW1widGhlbWVcIl07XG4gIGNhbnZhc1pvb206IFpvb21bXCJ2YWx1ZVwiXTtcbiAgY2FudmFzT2Zmc2V0WDogbnVtYmVyO1xuICBjYW52YXNPZmZzZXRZOiBudW1iZXI7XG59XG5cbmNvbnN0IGdlbmVyYXRlRWxlbWVudENhbnZhcyA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICB6b29tOiBab29tLFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbik6IEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpITtcbiAgY29uc3QgcGFkZGluZyA9IGdldENhbnZhc1BhZGRpbmcoZWxlbWVudCk7XG5cbiAgbGV0IGNhbnZhc09mZnNldFggPSAwO1xuICBsZXQgY2FudmFzT2Zmc2V0WSA9IDA7XG5cbiAgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSB8fCBpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG5cbiAgICBjYW52YXMud2lkdGggPVxuICAgICAgZGlzdGFuY2UoeDEsIHgyKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSArXG4gICAgICBwYWRkaW5nICogem9vbS52YWx1ZSAqIDI7XG4gICAgY2FudmFzLmhlaWdodCA9XG4gICAgICBkaXN0YW5jZSh5MSwgeTIpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlICtcbiAgICAgIHBhZGRpbmcgKiB6b29tLnZhbHVlICogMjtcblxuICAgIGNhbnZhc09mZnNldFggPVxuICAgICAgZWxlbWVudC54ID4geDFcbiAgICAgICAgPyBkaXN0YW5jZShlbGVtZW50LngsIHgxKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZVxuICAgICAgICA6IDA7XG5cbiAgICBjYW52YXNPZmZzZXRZID1cbiAgICAgIGVsZW1lbnQueSA+IHkxXG4gICAgICAgID8gZGlzdGFuY2UoZWxlbWVudC55LCB5MSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWVcbiAgICAgICAgOiAwO1xuXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2FudmFzT2Zmc2V0WCwgY2FudmFzT2Zmc2V0WSk7XG4gIH0gZWxzZSB7XG4gICAgY2FudmFzLndpZHRoID1cbiAgICAgIGVsZW1lbnQud2lkdGggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgK1xuICAgICAgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICAgIGNhbnZhcy5oZWlnaHQgPVxuICAgICAgZWxlbWVudC5oZWlnaHQgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgK1xuICAgICAgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICB9XG5cbiAgY29udGV4dC5zYXZlKCk7XG4gIGNvbnRleHQudHJhbnNsYXRlKHBhZGRpbmcgKiB6b29tLnZhbHVlLCBwYWRkaW5nICogem9vbS52YWx1ZSk7XG4gIGNvbnRleHQuc2NhbGUoXG4gICAgd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlLFxuICAgIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSxcbiAgKTtcblxuICBjb25zdCByYyA9IHJvdWdoLmNhbnZhcyhjYW52YXMpO1xuXG4gIC8vIGluIGRhcmsgdGhlbWUsIHJldmVydCB0aGUgaW1hZ2UgY29sb3IgZmlsdGVyXG4gIGlmIChzaG91bGRSZXNldEltYWdlRmlsdGVyKGVsZW1lbnQsIHJlbmRlckNvbmZpZykpIHtcbiAgICBjb250ZXh0LmZpbHRlciA9IElNQUdFX0lOVkVSVF9GSUxURVI7XG4gIH1cblxuICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICBjb250ZXh0LnJlc3RvcmUoKTtcblxuICByZXR1cm4ge1xuICAgIGVsZW1lbnQsXG4gICAgY2FudmFzLFxuICAgIHRoZW1lOiByZW5kZXJDb25maWcudGhlbWUsXG4gICAgY2FudmFzWm9vbTogem9vbS52YWx1ZSxcbiAgICBjYW52YXNPZmZzZXRYLFxuICAgIGNhbnZhc09mZnNldFksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSU5LX1NJWkUgPSAxNDtcblxuY29uc3QgSU1BR0VfUExBQ0VIT0xERVJfSU1HID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbklNQUdFX1BMQUNFSE9MREVSX0lNRy5zcmMgPSBgZGF0YToke01JTUVfVFlQRVMuc3ZnfSwke2VuY29kZVVSSUNvbXBvbmVudChcbiAgYDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiBkYXRhLXByZWZpeD1cImZhc1wiIGRhdGEtaWNvbj1cImltYWdlXCIgY2xhc3M9XCJzdmctaW5saW5lLS1mYSBmYS1pbWFnZSBmYS13LTE2XCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj48cGF0aCBmaWxsPVwiIzg4OFwiIGQ9XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCI+PC9wYXRoPjwvc3ZnPmAsXG4pfWA7XG5cbmNvbnN0IElNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNRyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5JTUFHRV9FUlJPUl9QTEFDRUhPTERFUl9JTUcuc3JjID0gYGRhdGE6JHtNSU1FX1RZUEVTLnN2Z30sJHtlbmNvZGVVUklDb21wb25lbnQoXG4gIGA8c3ZnIHZpZXdCb3g9XCIwIDAgNjY4IDY2OFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjJcIj48cGF0aCBkPVwiTTQ2NCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhaTTExMiAxMjBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NlpNNjQgMzg0aDM4NFYyNzJsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwyMDggMzIwbC01NS41MTUtNTUuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNjQgMzM2djQ4WlwiIHN0eWxlPVwiZmlsbDojODg4O2ZpbGwtcnVsZTpub256ZXJvXCIgdHJhbnNmb3JtPVwibWF0cml4KC44MTcwOSAwIDAgLjgxNzA5IDEyNC44MjUgMTQ1LjgyNSlcIi8+PHBhdGggZD1cIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2YzAgMTM2Ljk2NyAxMTEuMDM0IDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4Wm0xMzAuMTA4IDExNy44OTJjNjUuNDQ4IDY1LjQ0OCA3MCAxNjUuNDgxIDIwLjY3NyAyMzUuNjM3TDE1MC40NyAxMDUuMjE2YzcwLjIwNC00OS4zNTYgMTcwLjIyNi00NC43MzUgMjM1LjYzOCAyMC42NzZaTTEyNS44OTIgMzg2LjEwOGMtNjUuNDQ4LTY1LjQ0OC03MC0xNjUuNDgxLTIwLjY3Ny0yMzUuNjM3TDM2MS41MyA0MDYuNzg0Yy03MC4yMDMgNDkuMzU2LTE3MC4yMjYgNDQuNzM2LTIzNS42MzgtMjAuNjc2WlwiIHN0eWxlPVwiZmlsbDojODg4O2ZpbGwtcnVsZTpub256ZXJvXCIgdHJhbnNmb3JtPVwibWF0cml4KC4zMDM2NiAwIDAgLjMwMzY2IDUwNi44MjIgNjAuMDY1KVwiLz48L3N2Zz5gLFxuKX1gO1xuXG5jb25zdCBkcmF3SW1hZ2VQbGFjZWhvbGRlciA9IChcbiAgZWxlbWVudDogRXhjYWxpZHJhd0ltYWdlRWxlbWVudCxcbiAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICB6b29tVmFsdWU6IEFwcFN0YXRlW1wiem9vbVwiXVtcInZhbHVlXCJdLFxuKSA9PiB7XG4gIGNvbnRleHQuZmlsbFN0eWxlID0gXCIjRTdFN0U3XCI7XG4gIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuXG4gIGNvbnN0IGltYWdlTWluV2lkdGhPckhlaWdodCA9IE1hdGgubWluKGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcblxuICBjb25zdCBzaXplID0gTWF0aC5taW4oXG4gICAgaW1hZ2VNaW5XaWR0aE9ySGVpZ2h0LFxuICAgIE1hdGgubWluKGltYWdlTWluV2lkdGhPckhlaWdodCAqIDAuNCwgMTAwKSxcbiAgKTtcblxuICBjb250ZXh0LmRyYXdJbWFnZShcbiAgICBlbGVtZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiXG4gICAgICA/IElNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNR1xuICAgICAgOiBJTUFHRV9QTEFDRUhPTERFUl9JTUcsXG4gICAgZWxlbWVudC53aWR0aCAvIDIgLSBzaXplIC8gMixcbiAgICBlbGVtZW50LmhlaWdodCAvIDIgLSBzaXplIC8gMixcbiAgICBzaXplLFxuICAgIHNpemUsXG4gICk7XG59O1xuXG5jb25zdCBkcmF3RWxlbWVudE9uQ2FudmFzID0gKFxuICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIHJjOiBSb3VnaENhbnZhcyxcbiAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICBjb250ZXh0Lmdsb2JhbEFscGhhID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6IHtcbiAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSBcInJvdW5kXCI7XG4gICAgICByYy5kcmF3KGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSEpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJhcnJvd1wiOlxuICAgIGNhc2UgXCJsaW5lXCI6IHtcbiAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSBcInJvdW5kXCI7XG5cbiAgICAgIGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSEuZm9yRWFjaCgoc2hhcGUpID0+IHtcbiAgICAgICAgcmMuZHJhdyhzaGFwZSk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZnJlZWRyYXdcIjoge1xuICAgICAgLy8gRHJhdyBkaXJlY3RseSB0byBjYW52YXNcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuXG4gICAgICBjb25zdCBwYXRoID0gZ2V0RnJlZURyYXdQYXRoMkQoZWxlbWVudCkgYXMgUGF0aDJEO1xuICAgICAgY29uc3QgZmlsbFNoYXBlID0gZ2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoZmlsbFNoYXBlKSB7XG4gICAgICAgIHJjLmRyYXcoZmlsbFNoYXBlKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuXG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiaW1hZ2VcIjoge1xuICAgICAgY29uc3QgaW1nID0gaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KVxuICAgICAgICA/IHJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmdldChlbGVtZW50LmZpbGVJZCk/LmltYWdlXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGltZyAhPSBudWxsICYmICEoaW1nIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgaW1nLFxuICAgICAgICAgIDAgLyogaGFyZGNvZGVkIGZvciB0aGUgc2VsZWN0aW9uIGJveCovLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgZWxlbWVudC53aWR0aCxcbiAgICAgICAgICBlbGVtZW50LmhlaWdodCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYXdJbWFnZVBsYWNlaG9sZGVyKGVsZW1lbnQsIGNvbnRleHQsIHJlbmRlckNvbmZpZy56b29tLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBydGwgPSBpc1JUTChlbGVtZW50LnRleHQpO1xuICAgICAgICBjb25zdCBzaG91bGRUZW1wb3JhcmlseUF0dGFjaCA9IHJ0bCAmJiAhY29udGV4dC5jYW52YXMuaXNDb25uZWN0ZWQ7XG4gICAgICAgIGlmIChzaG91bGRUZW1wb3JhcmlseUF0dGFjaCkge1xuICAgICAgICAgIC8vIHRvIGNvcnJlY3RseSByZW5kZXIgUlRMIHRleHQgbWl4ZWQgd2l0aCBMVFIsIHdlIGhhdmUgdG8gYXBwZW5kIGl0XG4gICAgICAgICAgLy8gdG8gdGhlIERPTVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGV4dC5jYW52YXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuY2FudmFzLnNldEF0dHJpYnV0ZShcImRpclwiLCBydGwgPyBcInJ0bFwiIDogXCJsdHJcIik7XG4gICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICBjb250ZXh0LmZvbnQgPSBnZXRGb250U3RyaW5nKGVsZW1lbnQpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGVsZW1lbnQuc3Ryb2tlQ29sb3I7XG4gICAgICAgIGNvbnRleHQudGV4dEFsaWduID0gZWxlbWVudC50ZXh0QWxpZ24gYXMgQ2FudmFzVGV4dEFsaWduO1xuXG4gICAgICAgIC8vIENhbnZhcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpbGluZSB0ZXh0IGJ5IGRlZmF1bHRcbiAgICAgICAgY29uc3QgbGluZXMgPSBlbGVtZW50LnRleHQucmVwbGFjZSgvXFxyXFxuPy9nLCBcIlxcblwiKS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGVsZW1lbnQuY29udGFpbmVySWRcbiAgICAgICAgICA/IGdldEFwcHJveExpbmVIZWlnaHQoZ2V0Rm9udFN0cmluZyhlbGVtZW50KSlcbiAgICAgICAgICA6IGVsZW1lbnQuaGVpZ2h0IC8gbGluZXMubGVuZ3RoO1xuICAgICAgICBsZXQgdmVydGljYWxPZmZzZXQgPSBlbGVtZW50LmhlaWdodCAtIGVsZW1lbnQuYmFzZWxpbmU7XG4gICAgICAgIGlmIChlbGVtZW50LnZlcnRpY2FsQWxpZ24gPT09IFZFUlRJQ0FMX0FMSUdOLkJPVFRPTSkge1xuICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gQk9VTkRfVEVYVF9QQURESU5HO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAgICAgZWxlbWVudC50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gZWxlbWVudC53aWR0aCAvIDJcbiAgICAgICAgICAgIDogZWxlbWVudC50ZXh0QWxpZ24gPT09IFwicmlnaHRcIlxuICAgICAgICAgICAgPyBlbGVtZW50LndpZHRoXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFxuICAgICAgICAgICAgbGluZXNbaW5kZXhdLFxuICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgICAgICAgIChpbmRleCArIDEpICogbGluZUhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIGlmIChzaG91bGRUZW1wb3JhcmlseUF0dGFjaCkge1xuICAgICAgICAgIGNvbnRleHQuY2FudmFzLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG59O1xuXG5jb25zdCBlbGVtZW50V2l0aENhbnZhc0NhY2hlID0gbmV3IFdlYWtNYXA8XG4gIEV4Y2FsaWRyYXdFbGVtZW50LFxuICBFeGNhbGlkcmF3RWxlbWVudFdpdGhDYW52YXNcbj4oKTtcblxuY29uc3Qgc2hhcGVDYWNoZSA9IG5ldyBXZWFrTWFwPEV4Y2FsaWRyYXdFbGVtZW50LCBFbGVtZW50U2hhcGU+KCk7XG5cbnR5cGUgRWxlbWVudFNoYXBlID0gRHJhd2FibGUgfCBEcmF3YWJsZVtdIHwgbnVsbDtcblxudHlwZSBFbGVtZW50U2hhcGVzID0ge1xuICBmcmVlZHJhdzogRHJhd2FibGUgfCBudWxsO1xuICBhcnJvdzogRHJhd2FibGVbXTtcbiAgbGluZTogRHJhd2FibGVbXTtcbiAgdGV4dDogbnVsbDtcbiAgaW1hZ2U6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2hhcGVGb3JFbGVtZW50ID0gPFQgZXh0ZW5kcyBFeGNhbGlkcmF3RWxlbWVudD4oZWxlbWVudDogVCkgPT5cbiAgc2hhcGVDYWNoZS5nZXQoZWxlbWVudCkgYXMgVFtcInR5cGVcIl0gZXh0ZW5kcyBrZXlvZiBFbGVtZW50U2hhcGVzXG4gICAgPyBFbGVtZW50U2hhcGVzW1RbXCJ0eXBlXCJdXSB8IHVuZGVmaW5lZFxuICAgIDogRHJhd2FibGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3Qgc2V0U2hhcGVGb3JFbGVtZW50ID0gPFQgZXh0ZW5kcyBFeGNhbGlkcmF3RWxlbWVudD4oXG4gIGVsZW1lbnQ6IFQsXG4gIHNoYXBlOiBUW1widHlwZVwiXSBleHRlbmRzIGtleW9mIEVsZW1lbnRTaGFwZXNcbiAgICA/IEVsZW1lbnRTaGFwZXNbVFtcInR5cGVcIl1dXG4gICAgOiBEcmF3YWJsZSxcbikgPT4gc2hhcGVDYWNoZS5zZXQoZWxlbWVudCwgc2hhcGUpO1xuXG5leHBvcnQgY29uc3QgaW52YWxpZGF0ZVNoYXBlRm9yRWxlbWVudCA9IChlbGVtZW50OiBFeGNhbGlkcmF3RWxlbWVudCkgPT5cbiAgc2hhcGVDYWNoZS5kZWxldGUoZWxlbWVudCk7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyA9IChcbiAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsXG4gIGNvbnRpbnVvdXNQYXRoID0gZmFsc2UsXG4pOiBPcHRpb25zID0+IHtcbiAgY29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHtcbiAgICBzZWVkOiBlbGVtZW50LnNlZWQsXG4gICAgc3Ryb2tlTGluZURhc2g6XG4gICAgICBlbGVtZW50LnN0cm9rZVN0eWxlID09PSBcImRhc2hlZFwiXG4gICAgICAgID8gZ2V0RGFzaEFycmF5RGFzaGVkKGVsZW1lbnQuc3Ryb2tlV2lkdGgpXG4gICAgICAgIDogZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gXCJkb3R0ZWRcIlxuICAgICAgICA/IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAvLyBmb3Igbm9uLXNvbGlkIHN0cm9rZXMsIGRpc2FibGUgbXVsdGlTdHJva2UgYmVjYXVzZSBpdCB0ZW5kcyB0byBtYWtlXG4gICAgLy8gZGFzaGVzL2RvdHMgb3ZlcmxheSBlYWNoIG90aGVyXG4gICAgZGlzYWJsZU11bHRpU3Ryb2tlOiBlbGVtZW50LnN0cm9rZVN0eWxlICE9PSBcInNvbGlkXCIsXG4gICAgLy8gZm9yIG5vbi1zb2xpZCBzdHJva2VzLCBpbmNyZWFzZSB0aGUgd2lkdGggYSBiaXQgdG8gbWFrZSBpdCB2aXN1YWxseVxuICAgIC8vIHNpbWlsYXIgdG8gc29saWQgc3Ryb2tlcywgYmVjYXVzZSB3ZSdyZSBhbHNvIGRpc2FibGluZyBtdWx0aVN0cm9rZVxuICAgIHN0cm9rZVdpZHRoOlxuICAgICAgZWxlbWVudC5zdHJva2VTdHlsZSAhPT0gXCJzb2xpZFwiXG4gICAgICAgID8gZWxlbWVudC5zdHJva2VXaWR0aCArIDAuNVxuICAgICAgICA6IGVsZW1lbnQuc3Ryb2tlV2lkdGgsXG4gICAgLy8gd2hlbiBpbmNyZWFzaW5nIHN0cm9rZVdpZHRoLCB3ZSBtdXN0IGV4cGxpY2l0bHkgc2V0IGZpbGxXZWlnaHQgYW5kXG4gICAgLy8gaGFjaHVyZUdhcCBiZWNhdXNlIGlmIG5vdCBzcGVjaWZpZWQsIHJvdWdoanMgdXNlcyBzdHJva2VXaWR0aCB0b1xuICAgIC8vIGNhbGN1bGF0ZSB0aGVtIChhbmQgd2UgZG9uJ3Qgd2FudCB0aGUgZmlsbHMgdG8gYmUgbW9kaWZpZWQpXG4gICAgZmlsbFdlaWdodDogZWxlbWVudC5zdHJva2VXaWR0aCAvIDIsXG4gICAgaGFjaHVyZUdhcDogZWxlbWVudC5zdHJva2VXaWR0aCAqIDQsXG4gICAgcm91Z2huZXNzOiBlbGVtZW50LnJvdWdobmVzcyxcbiAgICBzdHJva2U6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgcHJlc2VydmVWZXJ0aWNlczogY29udGludW91c1BhdGgsXG4gIH07XG5cbiAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIFwicmVjdGFuZ2xlXCI6XG4gICAgY2FzZSBcImRpYW1vbmRcIjpcbiAgICBjYXNlIFwiZWxsaXBzZVwiOiB7XG4gICAgICBvcHRpb25zLmZpbGxTdHlsZSA9IGVsZW1lbnQuZmlsbFN0eWxlO1xuICAgICAgb3B0aW9ucy5maWxsID1cbiAgICAgICAgZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBlbGVtZW50LmJhY2tncm91bmRDb2xvcjtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZWxsaXBzZVwiKSB7XG4gICAgICAgIG9wdGlvbnMuY3VydmVGaXR0aW5nID0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBjYXNlIFwibGluZVwiOlxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOiB7XG4gICAgICBpZiAoaXNQYXRoQUxvb3AoZWxlbWVudC5wb2ludHMpKSB7XG4gICAgICAgIG9wdGlvbnMuZmlsbFN0eWxlID0gZWxlbWVudC5maWxsU3R5bGU7XG4gICAgICAgIG9wdGlvbnMuZmlsbCA9XG4gICAgICAgICAgZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgY2FzZSBcImFycm93XCI6XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBlbGVtZW50J3Mgc2hhcGUgYW5kIHB1dHMgaXQgaW50byB0aGUgY2FjaGUuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHBhcmFtIGdlbmVyYXRvclxuICovXG5jb25zdCBnZW5lcmF0ZUVsZW1lbnRTaGFwZSA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICBnZW5lcmF0b3I6IFJvdWdoR2VuZXJhdG9yLFxuKSA9PiB7XG4gIGxldCBzaGFwZSA9IHNoYXBlQ2FjaGUuZ2V0KGVsZW1lbnQpO1xuXG4gIC8vIGBudWxsYCBpbmRpY2F0ZXMgbm8gcmMgc2hhcGUgYXBwbGljYWJsZSBmb3IgdGhpcyBlbGVtZW50IHR5cGVcbiAgLy8gKD0gZG8gbm90IGdlbmVyYXRlIGFueXRoaW5nKVxuICBpZiAoc2hhcGUgPT09IHVuZGVmaW5lZCkge1xuICAgIGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUuZGVsZXRlKGVsZW1lbnQpO1xuXG4gICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU2hhcnBuZXNzID09PSBcInJvdW5kXCIpIHtcbiAgICAgICAgICBjb25zdCB3ID0gZWxlbWVudC53aWR0aDtcbiAgICAgICAgICBjb25zdCBoID0gZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgY29uc3QgciA9IE1hdGgubWluKHcsIGgpICogMC4yNTtcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wYXRoKFxuICAgICAgICAgICAgYE0gJHtyfSAwIEwgJHt3IC0gcn0gMCBRICR7d30gMCwgJHt3fSAke3J9IEwgJHt3fSAke1xuICAgICAgICAgICAgICBoIC0gclxuICAgICAgICAgICAgfSBRICR7d30gJHtofSwgJHt3IC0gcn0gJHtofSBMICR7cn0gJHtofSBRIDAgJHtofSwgMCAke1xuICAgICAgICAgICAgICBoIC0gclxuICAgICAgICAgICAgfSBMIDAgJHtyfSBRIDAgMCwgJHtyfSAwYCxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQsIHRydWUpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucmVjdGFuZ2xlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBlbGVtZW50LndpZHRoLFxuICAgICAgICAgICAgZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgICBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNldFNoYXBlRm9yRWxlbWVudChlbGVtZW50LCBzaGFwZSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGlhbW9uZFwiOiB7XG4gICAgICAgIGNvbnN0IFt0b3BYLCB0b3BZLCByaWdodFgsIHJpZ2h0WSwgYm90dG9tWCwgYm90dG9tWSwgbGVmdFgsIGxlZnRZXSA9XG4gICAgICAgICAgZ2V0RGlhbW9uZFBvaW50cyhlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU2hhcnBuZXNzID09PSBcInJvdW5kXCIpIHtcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wYXRoKFxuICAgICAgICAgICAgYE0gJHt0b3BYICsgKHJpZ2h0WCAtIHRvcFgpICogMC4yNX0gJHtcbiAgICAgICAgICAgICAgdG9wWSArIChyaWdodFkgLSB0b3BZKSAqIDAuMjVcbiAgICAgICAgICAgIH0gTCAke3JpZ2h0WCAtIChyaWdodFggLSB0b3BYKSAqIDAuMjV9ICR7XG4gICAgICAgICAgICAgIHJpZ2h0WSAtIChyaWdodFkgLSB0b3BZKSAqIDAuMjVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEMgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtcbiAgICAgICAgICAgICAgcmlnaHRYIC0gKHJpZ2h0WCAtIGJvdHRvbVgpICogMC4yNVxuICAgICAgICAgICAgfSAke3JpZ2h0WSArIChib3R0b21ZIC0gcmlnaHRZKSAqIDAuMjV9XG4gICAgICAgICAgICBMICR7Ym90dG9tWCArIChyaWdodFggLSBib3R0b21YKSAqIDAuMjV9ICR7XG4gICAgICAgICAgICAgIGJvdHRvbVkgLSAoYm90dG9tWSAtIHJpZ2h0WSkgKiAwLjI1XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBDICR7Ym90dG9tWH0gJHtib3R0b21ZfSwgJHtib3R0b21YfSAke2JvdHRvbVl9LCAke1xuICAgICAgICAgICAgICBib3R0b21YIC0gKGJvdHRvbVggLSBsZWZ0WCkgKiAwLjI1XG4gICAgICAgICAgICB9ICR7Ym90dG9tWSAtIChib3R0b21ZIC0gbGVmdFkpICogMC4yNX1cbiAgICAgICAgICAgIEwgJHtsZWZ0WCArIChib3R0b21YIC0gbGVmdFgpICogMC4yNX0gJHtcbiAgICAgICAgICAgICAgbGVmdFkgKyAoYm90dG9tWSAtIGxlZnRZKSAqIDAuMjVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEMgJHtsZWZ0WH0gJHtsZWZ0WX0sICR7bGVmdFh9ICR7bGVmdFl9LCAke1xuICAgICAgICAgICAgICBsZWZ0WCArICh0b3BYIC0gbGVmdFgpICogMC4yNVxuICAgICAgICAgICAgfSAke2xlZnRZIC0gKGxlZnRZIC0gdG9wWSkgKiAwLjI1fVxuICAgICAgICAgICAgTCAke3RvcFggLSAodG9wWCAtIGxlZnRYKSAqIDAuMjV9ICR7dG9wWSArIChsZWZ0WSAtIHRvcFkpICogMC4yNX1cbiAgICAgICAgICAgIEMgJHt0b3BYfSAke3RvcFl9LCAke3RvcFh9ICR7dG9wWX0sICR7XG4gICAgICAgICAgICAgIHRvcFggKyAocmlnaHRYIC0gdG9wWCkgKiAwLjI1XG4gICAgICAgICAgICB9ICR7dG9wWSArIChyaWdodFkgLSB0b3BZKSAqIDAuMjV9YCxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQsIHRydWUpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucG9seWdvbihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgW3RvcFgsIHRvcFldLFxuICAgICAgICAgICAgICBbcmlnaHRYLCByaWdodFldLFxuICAgICAgICAgICAgICBbYm90dG9tWCwgYm90dG9tWV0sXG4gICAgICAgICAgICAgIFtsZWZ0WCwgbGVmdFldLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQsIHNoYXBlKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLmVsbGlwc2UoXG4gICAgICAgICAgZWxlbWVudC53aWR0aCAvIDIsXG4gICAgICAgICAgZWxlbWVudC5oZWlnaHQgLyAyLFxuICAgICAgICAgIGVsZW1lbnQud2lkdGgsXG4gICAgICAgICAgZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCksXG4gICAgICAgICk7XG4gICAgICAgIHNldFNoYXBlRm9yRWxlbWVudChlbGVtZW50LCBzaGFwZSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgY2FzZSBcImFycm93XCI6IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIHBvaW50cyBhcnJheSBjYW4gYmUgZW1wdHkgaW4gdGhlIGJlZ2lubmluZywgc28gaXQgaXMgaW1wb3J0YW50IHRvIGFkZFxuICAgICAgICAvLyBpbml0aWFsIHBvc2l0aW9uIHRvIGl0XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGVsZW1lbnQucG9pbnRzLmxlbmd0aCA/IGVsZW1lbnQucG9pbnRzIDogW1swLCAwXV07XG5cbiAgICAgICAgLy8gY3VydmUgaXMgYWx3YXlzIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICAgIC8vIHRoaXMgc2ltcGxpZmllcyBmaW5kaW5nIHRoZSBjdXJ2ZSBmb3IgYW4gZWxlbWVudFxuICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTaGFycG5lc3MgPT09IFwic2hhcnBcIikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmZpbGwpIHtcbiAgICAgICAgICAgIHNoYXBlID0gW2dlbmVyYXRvci5wb2x5Z29uKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBbXG4gICAgICAgICAgICAgIGdlbmVyYXRvci5saW5lYXJQYXRoKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBbZ2VuZXJhdG9yLmN1cnZlKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCBsaW5lcyBvbmx5IGluIGFycm93XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiYXJyb3dcIikge1xuICAgICAgICAgIGNvbnN0IHsgc3RhcnRBcnJvd2hlYWQgPSBudWxsLCBlbmRBcnJvd2hlYWQgPSBcImFycm93XCIgfSA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICBjb25zdCBnZXRBcnJvd2hlYWRTaGFwZXMgPSAoXG4gICAgICAgICAgICBlbGVtZW50OiBFeGNhbGlkcmF3TGluZWFyRWxlbWVudCxcbiAgICAgICAgICAgIHNoYXBlOiBEcmF3YWJsZVtdLFxuICAgICAgICAgICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiZW5kXCIsXG4gICAgICAgICAgICBhcnJvd2hlYWQ6IEFycm93aGVhZCxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycm93aGVhZFBvaW50cyA9IGdldEFycm93aGVhZFBvaW50cyhcbiAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICBhcnJvd2hlYWQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoYXJyb3doZWFkUG9pbnRzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT3RoZXIgYXJyb3doZWFkcyBoZXJlLi4uXG4gICAgICAgICAgICBpZiAoYXJyb3doZWFkID09PSBcImRvdFwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFt4LCB5LCByXSA9IGFycm93aGVhZFBvaW50cztcblxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGdlbmVyYXRvci5jaXJjbGUoeCwgeSwgciwge1xuICAgICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpbGw6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhcnJvd2hlYWQgPT09IFwidHJpYW5nbGVcIikge1xuICAgICAgICAgICAgICBjb25zdCBbeCwgeSwgeDIsIHkyLCB4MywgeTNdID0gYXJyb3doZWFkUG9pbnRzO1xuXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyB1c2Ugc29saWQgc3Ryb2tlIGZvciB0cmlhbmdsZSBhcnJvd2hlYWRcbiAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuc3Ryb2tlTGluZURhc2g7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3IucG9seWdvbihcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgW3gsIHldLFxuICAgICAgICAgICAgICAgICAgICBbeDIsIHkyXSxcbiAgICAgICAgICAgICAgICAgICAgW3gzLCB5M10sXG4gICAgICAgICAgICAgICAgICAgIFt4LCB5XSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcnJvdyBhcnJvd2hlYWRzXG4gICAgICAgICAgICBjb25zdCBbeDIsIHkyLCB4MywgeTMsIHg0LCB5NF0gPSBhcnJvd2hlYWRQb2ludHM7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnN0cm9rZVN0eWxlID09PSBcImRvdHRlZFwiKSB7XG4gICAgICAgICAgICAgIC8vIGZvciBkb3R0ZWQgYXJyb3dzIGNhcHMsIHJlZHVjZSBnYXAgdG8gbWFrZSBpdCBtb3JlIGxlZ2libGVcbiAgICAgICAgICAgICAgY29uc3QgZGFzaCA9IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoIC0gMSk7XG4gICAgICAgICAgICAgIG9wdGlvbnMuc3Ryb2tlTGluZURhc2ggPSBbZGFzaFswXSwgZGFzaFsxXSAtIDFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZm9yIHNvbGlkL2Rhc2hlZCwga2VlcCBzb2xpZCBhcnJvdyBjYXBcbiAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuc3Ryb2tlTGluZURhc2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBnZW5lcmF0b3IubGluZSh4MywgeTMsIHgyLCB5Miwgb3B0aW9ucyksXG4gICAgICAgICAgICAgIGdlbmVyYXRvci5saW5lKHg0LCB5NCwgeDIsIHkyLCBvcHRpb25zKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChzdGFydEFycm93aGVhZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXJyb3doZWFkU2hhcGVzKFxuICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICAgICAgXCJzdGFydFwiLFxuICAgICAgICAgICAgICBzdGFydEFycm93aGVhZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzaGFwZS5wdXNoKC4uLnNoYXBlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGVuZEFycm93aGVhZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGVuZEFycm93aGVhZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIEhleSwgd2UgaGF2ZSBhbiBvbGQgYXJyb3cgaGVyZSFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXJyb3doZWFkU2hhcGVzKFxuICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICAgICAgXCJlbmRcIixcbiAgICAgICAgICAgICAgZW5kQXJyb3doZWFkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNoYXBlLnB1c2goLi4uc2hhcGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgc2hhcGUpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImZyZWVkcmF3XCI6IHtcbiAgICAgICAgZ2VuZXJhdGVGcmVlRHJhd1NoYXBlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChpc1BhdGhBTG9vcChlbGVtZW50LnBvaW50cykpIHtcbiAgICAgICAgICAvLyBnZW5lcmF0ZSByb3VnaCBwb2x5Z29uIHRvIGZpbGwgZnJlZWRyYXcgc2hhcGVcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wb2x5Z29uKGVsZW1lbnQucG9pbnRzIGFzIFtudW1iZXIsIG51bWJlcl1bXSwge1xuICAgICAgICAgICAgLi4uZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCksXG4gICAgICAgICAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNoYXBlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgc2hhcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICBjYXNlIFwiaW1hZ2VcIjoge1xuICAgICAgICAvLyBqdXN0IHRvIGVuc3VyZSB3ZSBkb24ndCByZWdlbmVyYXRlIGVsZW1lbnQuY2FudmFzIG9uIHJlcmVuZGVyc1xuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICBjb25zdCB6b29tOiBab29tID0gcmVuZGVyQ29uZmlnID8gcmVuZGVyQ29uZmlnLnpvb20gOiBkZWZhdWx0QXBwU3RhdGUuem9vbTtcbiAgY29uc3QgcHJldkVsZW1lbnRXaXRoQ2FudmFzID0gZWxlbWVudFdpdGhDYW52YXNDYWNoZS5nZXQoZWxlbWVudCk7XG4gIGNvbnN0IHNob3VsZFJlZ2VuZXJhdGVCZWNhdXNlWm9vbSA9XG4gICAgcHJldkVsZW1lbnRXaXRoQ2FudmFzICYmXG4gICAgcHJldkVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20gIT09IHpvb20udmFsdWUgJiZcbiAgICAhcmVuZGVyQ29uZmlnPy5zaG91bGRDYWNoZUlnbm9yZVpvb207XG5cbiAgaWYgKFxuICAgICFwcmV2RWxlbWVudFdpdGhDYW52YXMgfHxcbiAgICBzaG91bGRSZWdlbmVyYXRlQmVjYXVzZVpvb20gfHxcbiAgICBwcmV2RWxlbWVudFdpdGhDYW52YXMudGhlbWUgIT09IHJlbmRlckNvbmZpZy50aGVtZVxuICApIHtcbiAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudENhbnZhcyhcbiAgICAgIGVsZW1lbnQsXG4gICAgICB6b29tLFxuICAgICAgcmVuZGVyQ29uZmlnLFxuICAgICk7XG5cbiAgICBlbGVtZW50V2l0aENhbnZhc0NhY2hlLnNldChlbGVtZW50LCBlbGVtZW50V2l0aENhbnZhcyk7XG5cbiAgICByZXR1cm4gZWxlbWVudFdpdGhDYW52YXM7XG4gIH1cbiAgcmV0dXJuIHByZXZFbGVtZW50V2l0aENhbnZhcztcbn07XG5cbmNvbnN0IGRyYXdFbGVtZW50RnJvbUNhbnZhcyA9IChcbiAgZWxlbWVudFdpdGhDYW52YXM6IEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyxcbiAgcmM6IFJvdWdoQ2FudmFzLFxuICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gIHJlbmRlckNvbmZpZzogUmVuZGVyQ29uZmlnLFxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50O1xuICBjb25zdCBwYWRkaW5nID0gZ2V0Q2FudmFzUGFkZGluZyhlbGVtZW50KTtcbiAgbGV0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG5cbiAgLy8gRnJlZSBkcmF3IGVsZW1lbnRzIHdpbGwgb3RoZXJ3aXNlIFwic2h1ZmZsZVwiIGFzIHRoZSBtaW4geCBhbmQgeSBjaGFuZ2VcbiAgaWYgKGlzRnJlZURyYXdFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgeDEgPSBNYXRoLmZsb29yKHgxKTtcbiAgICB4MiA9IE1hdGguY2VpbCh4Mik7XG4gICAgeTEgPSBNYXRoLmZsb29yKHkxKTtcbiAgICB5MiA9IE1hdGguY2VpbCh5Mik7XG4gIH1cblxuICBjb25zdCBjeCA9ICgoeDEgKyB4MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFgpICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gIGNvbnN0IGN5ID0gKCh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcblxuICBjb25zdCBfaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID0gaXNQZW5kaW5nSW1hZ2VFbGVtZW50KGVsZW1lbnQsIHJlbmRlckNvbmZpZyk7XG5cbiAgY29uc3Qgc2NhbGVYRmFjdG9yID1cbiAgICBcInNjYWxlXCIgaW4gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudCAmJiAhX2lzUGVuZGluZ0ltYWdlRWxlbWVudFxuICAgICAgPyBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50LnNjYWxlWzBdXG4gICAgICA6IDE7XG4gIGNvbnN0IHNjYWxlWUZhY3RvciA9XG4gICAgXCJzY2FsZVwiIGluIGVsZW1lbnRXaXRoQ2FudmFzLmVsZW1lbnQgJiYgIV9pc1BlbmRpbmdJbWFnZUVsZW1lbnRcbiAgICAgID8gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudC5zY2FsZVsxXVxuICAgICAgOiAxO1xuXG4gIGNvbnRleHQuc2F2ZSgpO1xuICBjb250ZXh0LnNjYWxlKFxuICAgICgxIC8gd2luZG93LmRldmljZVBpeGVsUmF0aW8pICogc2NhbGVYRmFjdG9yLFxuICAgICgxIC8gd2luZG93LmRldmljZVBpeGVsUmF0aW8pICogc2NhbGVZRmFjdG9yLFxuICApO1xuICBjb250ZXh0LnRyYW5zbGF0ZShjeCAqIHNjYWxlWEZhY3RvciwgY3kgKiBzY2FsZVlGYWN0b3IpO1xuICBjb250ZXh0LnJvdGF0ZShlbGVtZW50LmFuZ2xlICogc2NhbGVYRmFjdG9yICogc2NhbGVZRmFjdG9yKTtcblxuICBjb250ZXh0LmRyYXdJbWFnZShcbiAgICBlbGVtZW50V2l0aENhbnZhcy5jYW52YXMhLFxuICAgICgtKHgyIC0geDEpIC8gMikgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAtXG4gICAgICAocGFkZGluZyAqIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20pIC8gZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSxcbiAgICAoLSh5MiAtIHkxKSAvIDIpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gLVxuICAgICAgKHBhZGRpbmcgKiBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tKSAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sXG4gICAgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzIS53aWR0aCAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sXG4gICAgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzIS5oZWlnaHQgLyBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tLFxuICApO1xuICBjb250ZXh0LnJlc3RvcmUoKTtcblxuICAvLyBDbGVhciB0aGUgbmVzdGVkIGVsZW1lbnQgd2UgYXBwZW5kZWQgdG8gdGhlIERPTVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlckVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCxcbiAgcmM6IFJvdWdoQ2FudmFzLFxuICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gIHJlbmRlckNvbmZpZzogUmVuZGVyQ29uZmlnLFxuKSA9PiB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHJjLmdlbmVyYXRvcjtcbiAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIFwic2VsZWN0aW9uXCI6IHtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoXG4gICAgICAgIGVsZW1lbnQueCArIHJlbmRlckNvbmZpZy5zY3JvbGxYLFxuICAgICAgICBlbGVtZW50LnkgKyByZW5kZXJDb25maWcuc2Nyb2xsWSxcbiAgICAgICk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IFwicmdiYSgwLCAwLCAyNTUsIDAuMTApXCI7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuXG4gICAgICBpZiAocmVuZGVyQ29uZmlnLmlzRXhwb3J0aW5nKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzID0gZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyhcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHJlbmRlckNvbmZpZyxcbiAgICAgICAgKTtcbiAgICAgICAgZHJhd0VsZW1lbnRGcm9tQ2FudmFzKGVsZW1lbnRXaXRoQ2FudmFzLCByYywgY29udGV4dCwgcmVuZGVyQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGN4ID0gKHgxICsgeDIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxYO1xuICAgICAgICBjb25zdCBjeSA9ICh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWTtcbiAgICAgICAgY29uc3Qgc2hpZnRYID0gKHgyIC0geDEpIC8gMiAtIChlbGVtZW50LnggLSB4MSk7XG4gICAgICAgIGNvbnN0IHNoaWZ0WSA9ICh5MiAtIHkxKSAvIDIgLSAoZWxlbWVudC55IC0geTEpO1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoY3gsIGN5KTtcbiAgICAgICAgY29udGV4dC5yb3RhdGUoZWxlbWVudC5hbmdsZSk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zaGlmdFgsIC1zaGlmdFkpO1xuICAgICAgICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwidGV4dFwiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuICAgICAgaWYgKHJlbmRlckNvbmZpZy5pc0V4cG9ydGluZykge1xuICAgICAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWDtcbiAgICAgICAgY29uc3QgY3kgPSAoeTEgKyB5MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFk7XG4gICAgICAgIGNvbnN0IHNoaWZ0WCA9ICh4MiAtIHgxKSAvIDIgLSAoZWxlbWVudC54IC0geDEpO1xuICAgICAgICBjb25zdCBzaGlmdFkgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGN4LCBjeSk7XG4gICAgICAgIGNvbnRleHQucm90YXRlKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2hpZnRYLCAtc2hpZnRZKTtcblxuICAgICAgICBpZiAoc2hvdWxkUmVzZXRJbWFnZUZpbHRlcihlbGVtZW50LCByZW5kZXJDb25maWcpKSB7XG4gICAgICAgICAgY29udGV4dC5maWx0ZXIgPSBcIm5vbmVcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRyYXdFbGVtZW50T25DYW52YXMoZWxlbWVudCwgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAvLyBub3QgZXhwb3J0aW5nIOKGkiBvcHRpbWl6ZWQgcmVuZGVyaW5nIChjYWNoZSAmIHJlbmRlciBmcm9tIGVsZW1lbnRcbiAgICAgICAgLy8gY2FudmFzZXMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudFdpdGhDYW52YXMoXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICByZW5kZXJDb25maWcsXG4gICAgICAgICk7XG4gICAgICAgIGRyYXdFbGVtZW50RnJvbUNhbnZhcyhlbGVtZW50V2l0aENhbnZhcywgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHR5cGUgJHtlbGVtZW50LnR5cGV9YCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uID0gKFxuICByc3ZnOiBSb3VnaFNWRyxcbiAgZHJhd2FibGU6IERyYXdhYmxlLFxuICBwcmVjaXNpb24/OiBudW1iZXIsXG4pID0+IHtcbiAgaWYgKHR5cGVvZiBwcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gcnN2Zy5kcmF3KGRyYXdhYmxlKTtcbiAgfVxuICBjb25zdCBwc2hhcGU6IERyYXdhYmxlID0ge1xuICAgIHNldHM6IGRyYXdhYmxlLnNldHMsXG4gICAgc2hhcGU6IGRyYXdhYmxlLnNoYXBlLFxuICAgIG9wdGlvbnM6IHsgLi4uZHJhd2FibGUub3B0aW9ucywgZml4ZWREZWNpbWFsUGxhY2VEaWdpdHM6IHByZWNpc2lvbiB9LFxuICB9O1xuICByZXR1cm4gcnN2Zy5kcmF3KHBzaGFwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyRWxlbWVudFRvU3ZnID0gKFxuICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIHJzdmc6IFJvdWdoU1ZHLFxuICBzdmdSb290OiBTVkdFbGVtZW50LFxuICBmaWxlczogQmluYXJ5RmlsZXMsXG4gIG9mZnNldFg/OiBudW1iZXIsXG4gIG9mZnNldFk/OiBudW1iZXIsXG4gIGV4cG9ydFdpdGhEYXJrTW9kZT86IGJvb2xlYW4sXG4pID0+IHtcbiAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgY29uc3QgY3ggPSAoeDIgLSB4MSkgLyAyIC0gKGVsZW1lbnQueCAtIHgxKTtcbiAgY29uc3QgY3kgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgY29uc3QgZGVncmVlID0gKDE4MCAqIGVsZW1lbnQuYW5nbGUpIC8gTWF0aC5QSTtcbiAgY29uc3QgZ2VuZXJhdG9yID0gcnN2Zy5nZW5lcmF0b3I7XG5cbiAgLy8gZWxlbWVudCB0byBhcHBlbmQgbm9kZSB0bywgbW9zdCBvZiB0aGUgdGltZSBzdmdSb290XG4gIGxldCByb290ID0gc3ZnUm9vdDtcblxuICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYSBsaW5rLCBjcmVhdGUgYW4gYW5jaG9yIHRhZyBhbmQgbWFrZSB0aGF0IHRoZSBuZXcgcm9vdFxuICBpZiAoZWxlbWVudC5saW5rKSB7XG4gICAgY29uc3QgYW5jaG9yVGFnID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImFcIik7XG4gICAgYW5jaG9yVGFnLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgZWxlbWVudC5saW5rKTtcbiAgICByb290LmFwcGVuZENoaWxkKGFuY2hvclRhZyk7XG4gICAgcm9vdCA9IGFuY2hvclRhZztcbiAgfVxuXG4gIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBcInNlbGVjdGlvblwiOiB7XG4gICAgICAvLyBTaW5jZSB0aGlzIGlzIHVzZWQgb25seSBkdXJpbmcgZWRpdGluZyBleHBlcmllbmNlLCB3aGljaCBpcyBjYW52YXMgYmFzZWQsXG4gICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWxlY3Rpb24gcmVuZGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFNWR1wiKTtcbiAgICB9XG4gICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgY2FzZSBcImVsbGlwc2VcIjoge1xuICAgICAgZ2VuZXJhdGVFbGVtZW50U2hhcGUoZWxlbWVudCwgZ2VuZXJhdG9yKTtcbiAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKFxuICAgICAgICByc3ZnLFxuICAgICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkhLFxuICAgICAgICBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQsXG4gICAgICApO1xuICAgICAgY29uc3Qgb3BhY2l0eSA9IGVsZW1lbnQub3BhY2l0eSAvIDEwMDtcbiAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWxpbmVjYXBcIiwgXCJyb3VuZFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgIG9mZnNldFkgfHwgMFxuICAgICAgICB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWAsXG4gICAgICApO1xuICAgICAgcm9vdC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwibGluZVwiOlxuICAgIGNhc2UgXCJhcnJvd1wiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuICAgICAgY29uc3QgZ3JvdXAgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiZ1wiKTtcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBlbGVtZW50Lm9wYWNpdHkgLyAxMDA7XG4gICAgICBncm91cC5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWNhcFwiLCBcInJvdW5kXCIpO1xuXG4gICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkhLmZvckVhY2goKHNoYXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKFxuICAgICAgICAgIHJzdmcsXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgTUFYX0RFQ0lNQUxTX0ZPUl9TVkdfRVhQT1JULFxuICAgICAgICApO1xuICAgICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICAgICAgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtcbiAgICAgICAgICAgIG9mZnNldFkgfHwgMFxuICAgICAgICAgIH0pIHJvdGF0ZSgke2RlZ3JlZX0gJHtjeH0gJHtjeX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVsZW1lbnQudHlwZSA9PT0gXCJsaW5lXCIgJiZcbiAgICAgICAgICBpc1BhdGhBTG9vcChlbGVtZW50LnBvaW50cykgJiZcbiAgICAgICAgICBlbGVtZW50LmJhY2tncm91bmRDb2xvciAhPT0gXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1ydWxlXCIsIFwiZXZlbm9kZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBncm91cC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIH0pO1xuICAgICAgcm9vdC5hcHBlbmRDaGlsZChncm91cCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcImZyZWVkcmF3XCI6IHtcbiAgICAgIGdlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIGdlbmVyYXRvcik7XG4gICAgICBnZW5lcmF0ZUZyZWVEcmF3U2hhcGUoZWxlbWVudCk7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCk7XG4gICAgICBjb25zdCBub2RlID0gc2hhcGVcbiAgICAgICAgPyByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKHJzdmcsIHNoYXBlLCBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQpXG4gICAgICAgIDogc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImdcIik7XG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICB9XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtcbiAgICAgICAgICBvZmZzZXRZIHx8IDBcbiAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlXCIsIFwibm9uZVwiKTtcbiAgICAgIGNvbnN0IHBhdGggPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwicGF0aFwiKTtcbiAgICAgIHBhdGguc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBlbGVtZW50LnN0cm9rZUNvbG9yKTtcbiAgICAgIHBhdGguc2V0QXR0cmlidXRlKFwiZFwiLCBnZXRGcmVlRHJhd1N2Z1BhdGgoZWxlbWVudCkpO1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZChwYXRoKTtcbiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcImltYWdlXCI6IHtcbiAgICAgIGNvbnN0IGZpbGVEYXRhID1cbiAgICAgICAgaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBmaWxlc1tlbGVtZW50LmZpbGVJZF07XG4gICAgICBpZiAoZmlsZURhdGEpIHtcbiAgICAgICAgY29uc3Qgc3ltYm9sSWQgPSBgaW1hZ2UtJHtmaWxlRGF0YS5pZH1gO1xuICAgICAgICBsZXQgc3ltYm9sID0gc3ZnUm9vdC5xdWVyeVNlbGVjdG9yKGAjJHtzeW1ib2xJZH1gKTtcbiAgICAgICAgaWYgKCFzeW1ib2wpIHtcbiAgICAgICAgICBzeW1ib2wgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwic3ltYm9sXCIpO1xuICAgICAgICAgIHN5bWJvbC5pZCA9IHN5bWJvbElkO1xuXG4gICAgICAgICAgY29uc3QgaW1hZ2UgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiaW1hZ2VcIik7XG5cbiAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVEYXRhLmRhdGFVUkwpO1xuXG4gICAgICAgICAgc3ltYm9sLmFwcGVuZENoaWxkKGltYWdlKTtcblxuICAgICAgICAgIHJvb3QucHJlcGVuZChzeW1ib2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInVzZVwiKTtcbiAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgYCMke3N5bWJvbElkfWApO1xuXG4gICAgICAgIC8vIGluIGRhcmsgdGhlbWUsIHJldmVydCB0aGUgaW1hZ2UgY29sb3IgZmlsdGVyXG4gICAgICAgIGlmIChleHBvcnRXaXRoRGFya01vZGUgJiYgZmlsZURhdGEubWltZVR5cGUgIT09IE1JTUVfVFlQRVMuc3ZnKSB7XG4gICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImZpbHRlclwiLCBJTUFHRV9JTlZFUlRfRklMVEVSKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHtNYXRoLnJvdW5kKGVsZW1lbnQud2lkdGgpfWApO1xuICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke01hdGgucm91bmQoZWxlbWVudC5oZWlnaHQpfWApO1xuXG4gICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgICAgb2Zmc2V0WSB8fCAwXG4gICAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgICApO1xuXG4gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQodXNlKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCBub2RlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImdcIik7XG4gICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgICAgb2Zmc2V0WSB8fCAwXG4gICAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsaW5lcyA9IGVsZW1lbnQudGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gZWxlbWVudC5oZWlnaHQgLyBsaW5lcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gZWxlbWVudC5oZWlnaHQgLSBlbGVtZW50LmJhc2VsaW5lO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID1cbiAgICAgICAgICBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgPyBlbGVtZW50LndpZHRoIC8gMlxuICAgICAgICAgICAgOiBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJyaWdodFwiXG4gICAgICAgICAgICA/IGVsZW1lbnQud2lkdGhcbiAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaXNSVEwoZWxlbWVudC50ZXh0KSA/IFwicnRsXCIgOiBcImx0clwiO1xuICAgICAgICBjb25zdCB0ZXh0QW5jaG9yID1cbiAgICAgICAgICBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgPyBcIm1pZGRsZVwiXG4gICAgICAgICAgICA6IGVsZW1lbnQudGV4dEFsaWduID09PSBcInJpZ2h0XCIgfHwgZGlyZWN0aW9uID09PSBcInJ0bFwiXG4gICAgICAgICAgICA/IFwiZW5kXCJcbiAgICAgICAgICAgIDogXCJzdGFydFwiO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudCEuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJ0ZXh0XCIpO1xuICAgICAgICAgIHRleHQudGV4dENvbnRlbnQgPSBsaW5lc1tpXTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInhcIiwgYCR7aG9yaXpvbnRhbE9mZnNldH1gKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInlcIiwgYCR7KGkgKyAxKSAqIGxpbmVIZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldH1gKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZvbnQtZmFtaWx5XCIsIGdldEZvbnRGYW1pbHlTdHJpbmcoZWxlbWVudCkpO1xuICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwiZm9udC1zaXplXCIsIGAke2VsZW1lbnQuZm9udFNpemV9cHhgKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgZWxlbWVudC5zdHJva2VDb2xvcik7XG4gICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLCB0ZXh0QW5jaG9yKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwid2hpdGUtc3BhY2U6IHByZTtcIik7XG4gICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uKTtcbiAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCB0eXBlICR7ZWxlbWVudC50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhdGhzQ2FjaGUgPSBuZXcgV2Vha01hcDxFeGNhbGlkcmF3RnJlZURyYXdFbGVtZW50LCBQYXRoMkQ+KFtdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnJlZURyYXdTaGFwZShlbGVtZW50OiBFeGNhbGlkcmF3RnJlZURyYXdFbGVtZW50KSB7XG4gIGNvbnN0IHN2Z1BhdGhEYXRhID0gZ2V0RnJlZURyYXdTdmdQYXRoKGVsZW1lbnQpO1xuICBjb25zdCBwYXRoID0gbmV3IFBhdGgyRChzdmdQYXRoRGF0YSk7XG4gIHBhdGhzQ2FjaGUuc2V0KGVsZW1lbnQsIHBhdGgpO1xuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWVEcmF3UGF0aDJEKGVsZW1lbnQ6IEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQpIHtcbiAgcmV0dXJuIHBhdGhzQ2FjaGUuZ2V0KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnJlZURyYXdTdmdQYXRoKGVsZW1lbnQ6IEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQpIHtcbiAgLy8gSWYgaW5wdXQgcG9pbnRzIGFyZSBlbXB0eSAoc2hvdWxkIHRoZXkgZXZlciBiZT8pIHJldHVybiBhIGRvdFxuICBjb25zdCBpbnB1dFBvaW50cyA9IGVsZW1lbnQuc2ltdWxhdGVQcmVzc3VyZVxuICAgID8gZWxlbWVudC5wb2ludHNcbiAgICA6IGVsZW1lbnQucG9pbnRzLmxlbmd0aFxuICAgID8gZWxlbWVudC5wb2ludHMubWFwKChbeCwgeV0sIGkpID0+IFt4LCB5LCBlbGVtZW50LnByZXNzdXJlc1tpXV0pXG4gICAgOiBbWzAsIDAsIDAuNV1dO1xuXG4gIC8vIENvbnNpZGVyIGNoYW5naW5nIHRoZSBvcHRpb25zIGZvciBzaW11bGF0ZWQgcHJlc3N1cmUgdnMgcmVhbCBwcmVzc3VyZVxuICBjb25zdCBvcHRpb25zOiBTdHJva2VPcHRpb25zID0ge1xuICAgIHNpbXVsYXRlUHJlc3N1cmU6IGVsZW1lbnQuc2ltdWxhdGVQcmVzc3VyZSxcbiAgICBzaXplOiBlbGVtZW50LnN0cm9rZVdpZHRoICogNC4yNSxcbiAgICB0aGlubmluZzogMC42LFxuICAgIHNtb290aGluZzogMC41LFxuICAgIHN0cmVhbWxpbmU6IDAuNSxcbiAgICBlYXNpbmc6ICh0KSA9PiBNYXRoLnNpbigodCAqIE1hdGguUEkpIC8gMiksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VPdXRTaW5lXG4gICAgbGFzdDogISFlbGVtZW50Lmxhc3RDb21taXR0ZWRQb2ludCwgLy8gTGFzdENvbW1pdHRlZFBvaW50IGlzIGFkZGVkIG9uIHBvaW50ZXJ1cFxuICB9O1xuXG4gIHJldHVybiBnZXRTdmdQYXRoRnJvbVN0cm9rZShnZXRTdHJva2UoaW5wdXRQb2ludHMgYXMgbnVtYmVyW11bXSwgb3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBtZWQoQTogbnVtYmVyW10sIEI6IG51bWJlcltdKSB7XG4gIHJldHVybiBbKEFbMF0gKyBCWzBdKSAvIDIsIChBWzFdICsgQlsxXSkgLyAyXTtcbn1cblxuLy8gVHJpbSBTVkcgcGF0aCBkYXRhIHNvIG51bWJlciBhcmUgZWFjaCB0d28gZGVjaW1hbCBwb2ludHMuIFRoaXNcbi8vIGltcHJvdmVzIFNWRyBleHBvcnRzLCBhbmQgcHJldmVudHMgcmVuZGVyaW5nIGVycm9ycyBvbiBwb2ludHNcbi8vIHdpdGggbG9uZyBkZWNpbWFscy5cbmNvbnN0IFRPX0ZJWEVEX1BSRUNJU0lPTiA9IC8oXFxzP1tBLVpdPyw/LT9bMC05XSpcXC5bMC05XXswLDJ9KSgoWzAtOV18ZXwtKSopL2c7XG5cbmZ1bmN0aW9uIGdldFN2Z1BhdGhGcm9tU3Ryb2tlKHBvaW50czogbnVtYmVyW11bXSk6IHN0cmluZyB7XG4gIGlmICghcG9pbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWF4ID0gcG9pbnRzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHBvaW50c1xuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBwb2ludCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBtYXgpIHtcbiAgICAgICAgICBhY2MucHVzaChwb2ludCwgbWVkKHBvaW50LCBhcnJbMF0pLCBcIkxcIiwgYXJyWzBdLCBcIlpcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjLnB1c2gocG9pbnQsIG1lZChwb2ludCwgYXJyW2kgKyAxXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgW1wiTVwiLCBwb2ludHNbMF0sIFwiUVwiXSxcbiAgICApXG4gICAgLmpvaW4oXCIgXCIpXG4gICAgLnJlcGxhY2UoVE9fRklYRURfUFJFQ0lTSU9OLCBcIiQxXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\n");
3198
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULT_LINK_SIZE\": () => (/* binding */ DEFAULT_LINK_SIZE),\n/* harmony export */ \"generateFreeDrawShape\": () => (/* binding */ generateFreeDrawShape),\n/* harmony export */ \"generateRoughOptions\": () => (/* binding */ generateRoughOptions),\n/* harmony export */ \"getFreeDrawPath2D\": () => (/* binding */ getFreeDrawPath2D),\n/* harmony export */ \"getFreeDrawSvgPath\": () => (/* binding */ getFreeDrawSvgPath),\n/* harmony export */ \"getShapeForElement\": () => (/* binding */ getShapeForElement),\n/* harmony export */ \"invalidateShapeForElement\": () => (/* binding */ invalidateShapeForElement),\n/* harmony export */ \"pathsCache\": () => (/* binding */ pathsCache),\n/* harmony export */ \"renderElement\": () => (/* binding */ renderElement),\n/* harmony export */ \"renderElementToSvg\": () => (/* binding */ renderElementToSvg),\n/* harmony export */ \"setShapeForElement\": () => (/* binding */ setShapeForElement)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../math */ \"../../math.ts\");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! perfect-freehand */ \"../../../node_modules/perfect-freehand/dist/esm/index.js\");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ \"../../element/textElement.ts\");\n\n\n\n\n\n\n\n\n\n// using a stronger invert (100% vs our regular 93%) and saturate\n// as a temp hack to make images in dark theme look closer to original\n// color scheme (it's still not quite there and the colors look slightly\n// desatured, alas...)\nconst IMAGE_INVERT_FILTER = \"invert(100%) hue-rotate(180deg) saturate(1.25)\";\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\nconst isPendingImageElement = (element, renderConfig) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) &&\n !renderConfig.imageCache.has(element.fileId);\nconst shouldResetImageFilter = (element, renderConfig) => {\n var _a;\n return (renderConfig.theme === \"dark\" &&\n (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) &&\n !isPendingImageElement(element, renderConfig) &&\n ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg);\n};\nconst getDashArrayDashed = (strokeWidth) => [8, 8 + strokeWidth];\nconst getDashArrayDotted = (strokeWidth) => [1.5, 6 + strokeWidth];\nconst getCanvasPadding = (element) => element.type === \"freedraw\" ? element.strokeWidth * 12 : 20;\nconst generateElementCanvas = (element, zoom, renderConfig) => {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n const padding = getCanvasPadding(element);\n let canvasOffsetX = 0;\n let canvasOffsetY = 0;\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n canvas.width =\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2) * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvas.height =\n (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2) * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvasOffsetX =\n element.x > x1\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.x, x1) * window.devicePixelRatio * zoom.value\n : 0;\n canvasOffsetY =\n element.y > y1\n ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.y, y1) * window.devicePixelRatio * zoom.value\n : 0;\n context.translate(canvasOffsetX, canvasOffsetY);\n }\n else {\n canvas.width =\n element.width * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n canvas.height =\n element.height * window.devicePixelRatio * zoom.value +\n padding * zoom.value * 2;\n }\n context.save();\n context.translate(padding * zoom.value, padding * zoom.value);\n context.scale(window.devicePixelRatio * zoom.value, window.devicePixelRatio * zoom.value);\n const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__[\"default\"].canvas(canvas);\n // in dark theme, revert the image color filter\n if (shouldResetImageFilter(element, renderConfig)) {\n context.filter = IMAGE_INVERT_FILTER;\n }\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n return {\n element,\n canvas,\n theme: renderConfig.theme,\n canvasZoom: zoom.value,\n canvasOffsetX,\n canvasOffsetY,\n };\n};\nconst DEFAULT_LINK_SIZE = 14;\nconst IMAGE_PLACEHOLDER_IMG = document.createElement(\"img\");\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"image\" class=\"svg-inline--fa fa-image fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"#888\" d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>`)}`;\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement(\"img\");\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox=\"0 0 668 668\" xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z\" style=\"fill:#888;fill-rule:nonzero\" transform=\"matrix(.81709 0 0 .81709 124.825 145.825)\"/><path d=\"M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z\" style=\"fill:#888;fill-rule:nonzero\" transform=\"matrix(.30366 0 0 .30366 506.822 60.065)\"/></svg>`)}`;\nconst drawImagePlaceholder = (element, context, zoomValue) => {\n context.fillStyle = \"#E7E7E7\";\n context.fillRect(0, 0, element.width, element.height);\n const imageMinWidthOrHeight = Math.min(element.width, element.height);\n const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\n context.drawImage(element.status === \"error\"\n ? IMAGE_ERROR_PLACEHOLDER_IMG\n : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\n};\nconst drawElementOnCanvas = (element, rc, context, renderConfig) => {\n var _a;\n context.globalAlpha = element.opacity / 100;\n switch (element.type) {\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n context.lineJoin = \"round\";\n context.lineCap = \"round\";\n rc.draw(getShapeForElement(element));\n break;\n }\n case \"arrow\":\n case \"line\": {\n context.lineJoin = \"round\";\n context.lineCap = \"round\";\n getShapeForElement(element).forEach((shape) => {\n rc.draw(shape);\n });\n break;\n }\n case \"freedraw\": {\n // Draw directly to canvas\n context.save();\n context.fillStyle = element.strokeColor;\n const path = getFreeDrawPath2D(element);\n const fillShape = getShapeForElement(element);\n if (fillShape) {\n rc.draw(fillShape);\n }\n context.fillStyle = element.strokeColor;\n context.fill(path);\n context.restore();\n break;\n }\n case \"image\": {\n const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element)\n ? (_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.image\n : undefined;\n if (img != null && !(img instanceof Promise)) {\n context.drawImage(img, 0 /* hardcoded for the selection box*/, 0, element.width, element.height);\n }\n else {\n drawImagePlaceholder(element, context, renderConfig.zoom.value);\n }\n break;\n }\n default: {\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text);\n const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\n if (shouldTemporarilyAttach) {\n // to correctly render RTL text mixed with LTR, we have to append it\n // to the DOM\n document.body.appendChild(context.canvas);\n }\n context.canvas.setAttribute(\"dir\", rtl ? \"rtl\" : \"ltr\");\n context.save();\n context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element);\n context.fillStyle = element.strokeColor;\n context.textAlign = element.textAlign;\n // Canvas does not support multiline text by default\n const lines = element.text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const lineHeight = element.containerId\n ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getApproxLineHeight)((0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element))\n : element.height / lines.length;\n let verticalOffset = element.height - element.baseline;\n if (element.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_6__.VERTICAL_ALIGN.BOTTOM) {\n verticalOffset = _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING;\n }\n const horizontalOffset = element.textAlign === \"center\"\n ? element.width / 2\n : element.textAlign === \"right\"\n ? element.width\n : 0;\n for (let index = 0; index < lines.length; index++) {\n context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeight - verticalOffset);\n }\n context.restore();\n if (shouldTemporarilyAttach) {\n context.canvas.remove();\n }\n }\n else {\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n }\n context.globalAlpha = 1;\n};\nconst elementWithCanvasCache = new WeakMap();\nconst shapeCache = new WeakMap();\nconst getShapeForElement = (element) => shapeCache.get(element);\nconst setShapeForElement = (element, shape) => shapeCache.set(element, shape);\nconst invalidateShapeForElement = (element) => shapeCache.delete(element);\nconst generateRoughOptions = (element, continuousPath = false) => {\n const options = {\n seed: element.seed,\n strokeLineDash: element.strokeStyle === \"dashed\"\n ? getDashArrayDashed(element.strokeWidth)\n : element.strokeStyle === \"dotted\"\n ? getDashArrayDotted(element.strokeWidth)\n : undefined,\n // for non-solid strokes, disable multiStroke because it tends to make\n // dashes/dots overlay each other\n disableMultiStroke: element.strokeStyle !== \"solid\",\n // for non-solid strokes, increase the width a bit to make it visually\n // similar to solid strokes, because we're also disabling multiStroke\n strokeWidth: element.strokeStyle !== \"solid\"\n ? element.strokeWidth + 0.5\n : element.strokeWidth,\n // when increasing strokeWidth, we must explicitly set fillWeight and\n // hachureGap because if not specified, roughjs uses strokeWidth to\n // calculate them (and we don't want the fills to be modified)\n fillWeight: element.strokeWidth / 2,\n hachureGap: element.strokeWidth * 4,\n roughness: element.roughness,\n stroke: element.strokeColor,\n preserveVertices: continuousPath,\n };\n switch (element.type) {\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n options.fillStyle = element.fillStyle;\n options.fill =\n element.backgroundColor === \"transparent\"\n ? undefined\n : element.backgroundColor;\n if (element.type === \"ellipse\") {\n options.curveFitting = 1;\n }\n return options;\n }\n case \"line\":\n case \"freedraw\": {\n if ((0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points)) {\n options.fillStyle = element.fillStyle;\n options.fill =\n element.backgroundColor === \"transparent\"\n ? undefined\n : element.backgroundColor;\n }\n return options;\n }\n case \"arrow\":\n return options;\n default: {\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n};\n/**\n * Generates the element's shape and puts it into the cache.\n * @param element\n * @param generator\n */\nconst generateElementShape = (element, generator) => {\n let shape = shapeCache.get(element);\n // `null` indicates no rc shape applicable for this element type\n // (= do not generate anything)\n if (shape === undefined) {\n elementWithCanvasCache.delete(element);\n switch (element.type) {\n case \"rectangle\":\n if (element.strokeSharpness === \"round\") {\n const w = element.width;\n const h = element.height;\n const r = Math.min(w, h) * 0.25;\n shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(element, true));\n }\n else {\n shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(element));\n }\n setShapeForElement(element, shape);\n break;\n case \"diamond\": {\n const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getDiamondPoints)(element);\n if (element.strokeSharpness === \"round\") {\n shape = generator.path(`M ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25} L ${rightX - (rightX - topX) * 0.25} ${rightY - (rightY - topY) * 0.25}\n C ${rightX} ${rightY}, ${rightX} ${rightY}, ${rightX - (rightX - bottomX) * 0.25} ${rightY + (bottomY - rightY) * 0.25}\n L ${bottomX + (rightX - bottomX) * 0.25} ${bottomY - (bottomY - rightY) * 0.25}\n C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${bottomX - (bottomX - leftX) * 0.25} ${bottomY - (bottomY - leftY) * 0.25}\n L ${leftX + (bottomX - leftX) * 0.25} ${leftY + (bottomY - leftY) * 0.25}\n C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + (topX - leftX) * 0.25} ${leftY - (leftY - topY) * 0.25}\n L ${topX - (topX - leftX) * 0.25} ${topY + (leftY - topY) * 0.25}\n C ${topX} ${topY}, ${topX} ${topY}, ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25}`, generateRoughOptions(element, true));\n }\n else {\n shape = generator.polygon([\n [topX, topY],\n [rightX, rightY],\n [bottomX, bottomY],\n [leftX, leftY],\n ], generateRoughOptions(element));\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"ellipse\":\n shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\n setShapeForElement(element, shape);\n break;\n case \"line\":\n case \"arrow\": {\n const options = generateRoughOptions(element);\n // points array can be empty in the beginning, so it is important to add\n // initial position to it\n const points = element.points.length ? element.points : [[0, 0]];\n // curve is always the first element\n // this simplifies finding the curve for an element\n if (element.strokeSharpness === \"sharp\") {\n if (options.fill) {\n shape = [generator.polygon(points, options)];\n }\n else {\n shape = [\n generator.linearPath(points, options),\n ];\n }\n }\n else {\n shape = [generator.curve(points, options)];\n }\n // add lines only in arrow\n if (element.type === \"arrow\") {\n const { startArrowhead = null, endArrowhead = \"arrow\" } = element;\n const getArrowheadShapes = (element, shape, position, arrowhead) => {\n const arrowheadPoints = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getArrowheadPoints)(element, shape, position, arrowhead);\n if (arrowheadPoints === null) {\n return [];\n }\n // Other arrowheads here...\n if (arrowhead === \"dot\") {\n const [x, y, r] = arrowheadPoints;\n return [\n generator.circle(x, y, r, Object.assign(Object.assign({}, options), { fill: element.strokeColor, fillStyle: \"solid\", stroke: \"none\" })),\n ];\n }\n if (arrowhead === \"triangle\") {\n const [x, y, x2, y2, x3, y3] = arrowheadPoints;\n // always use solid stroke for triangle arrowhead\n delete options.strokeLineDash;\n return [\n generator.polygon([\n [x, y],\n [x2, y2],\n [x3, y3],\n [x, y],\n ], Object.assign(Object.assign({}, options), { fill: element.strokeColor, fillStyle: \"solid\" })),\n ];\n }\n // Arrow arrowheads\n const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\n if (element.strokeStyle === \"dotted\") {\n // for dotted arrows caps, reduce gap to make it more legible\n const dash = getDashArrayDotted(element.strokeWidth - 1);\n options.strokeLineDash = [dash[0], dash[1] - 1];\n }\n else {\n // for solid/dashed, keep solid arrow cap\n delete options.strokeLineDash;\n }\n return [\n generator.line(x3, y3, x2, y2, options),\n generator.line(x4, y4, x2, y2, options),\n ];\n };\n if (startArrowhead !== null) {\n const shapes = getArrowheadShapes(element, shape, \"start\", startArrowhead);\n shape.push(...shapes);\n }\n if (endArrowhead !== null) {\n if (endArrowhead === undefined) {\n // Hey, we have an old arrow here!\n }\n const shapes = getArrowheadShapes(element, shape, \"end\", endArrowhead);\n shape.push(...shapes);\n }\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"freedraw\": {\n generateFreeDrawShape(element);\n if ((0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points)) {\n // generate rough polygon to fill freedraw shape\n shape = generator.polygon(element.points, Object.assign(Object.assign({}, generateRoughOptions(element)), { stroke: \"none\" }));\n }\n else {\n shape = null;\n }\n setShapeForElement(element, shape);\n break;\n }\n case \"text\":\n case \"image\": {\n // just to ensure we don't regenerate element.canvas on rerenders\n setShapeForElement(element, null);\n break;\n }\n }\n }\n};\nconst generateElementWithCanvas = (element, renderConfig) => {\n const zoom = renderConfig ? renderConfig.zoom : defaultAppState.zoom;\n const prevElementWithCanvas = elementWithCanvasCache.get(element);\n const shouldRegenerateBecauseZoom = prevElementWithCanvas &&\n prevElementWithCanvas.canvasZoom !== zoom.value &&\n !(renderConfig === null || renderConfig === void 0 ? void 0 : renderConfig.shouldCacheIgnoreZoom);\n if (!prevElementWithCanvas ||\n shouldRegenerateBecauseZoom ||\n prevElementWithCanvas.theme !== renderConfig.theme) {\n const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig);\n elementWithCanvasCache.set(element, elementWithCanvas);\n return elementWithCanvas;\n }\n return prevElementWithCanvas;\n};\nconst drawElementFromCanvas = (elementWithCanvas, rc, context, renderConfig) => {\n const element = elementWithCanvas.element;\n const padding = getCanvasPadding(element);\n let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n // Free draw elements will otherwise \"shuffle\" as the min x and y change\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n x1 = Math.floor(x1);\n x2 = Math.ceil(x2);\n y1 = Math.floor(y1);\n y2 = Math.ceil(y2);\n }\n const cx = ((x1 + x2) / 2 + renderConfig.scrollX) * window.devicePixelRatio;\n const cy = ((y1 + y2) / 2 + renderConfig.scrollY) * window.devicePixelRatio;\n const _isPendingImageElement = isPendingImageElement(element, renderConfig);\n const scaleXFactor = \"scale\" in elementWithCanvas.element && !_isPendingImageElement\n ? elementWithCanvas.element.scale[0]\n : 1;\n const scaleYFactor = \"scale\" in elementWithCanvas.element && !_isPendingImageElement\n ? elementWithCanvas.element.scale[1]\n : 1;\n context.save();\n context.scale((1 / window.devicePixelRatio) * scaleXFactor, (1 / window.devicePixelRatio) * scaleYFactor);\n context.translate(cx * scaleXFactor, cy * scaleYFactor);\n context.rotate(element.angle * scaleXFactor * scaleYFactor);\n context.drawImage(elementWithCanvas.canvas, (-(x2 - x1) / 2) * window.devicePixelRatio -\n (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom, (-(y2 - y1) / 2) * window.devicePixelRatio -\n (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.width / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.height / elementWithCanvas.canvasZoom);\n context.restore();\n // Clear the nested element we appended to the DOM\n};\nconst renderElement = (element, rc, context, renderConfig) => {\n const generator = rc.generator;\n switch (element.type) {\n case \"selection\": {\n context.save();\n context.translate(element.x + renderConfig.scrollX, element.y + renderConfig.scrollY);\n context.fillStyle = \"rgba(0, 0, 255, 0.10)\";\n context.fillRect(0, 0, element.width, element.height);\n context.restore();\n break;\n }\n case \"freedraw\": {\n generateElementShape(element, generator);\n if (renderConfig.isExporting) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\n context.save();\n context.translate(cx, cy);\n context.rotate(element.angle);\n context.translate(-shiftX, -shiftY);\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n }\n else {\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\n }\n break;\n }\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\":\n case \"line\":\n case \"arrow\":\n case \"image\":\n case \"text\": {\n generateElementShape(element, generator);\n if (renderConfig.isExporting) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\n context.save();\n context.translate(cx, cy);\n context.rotate(element.angle);\n context.translate(-shiftX, -shiftY);\n if (shouldResetImageFilter(element, renderConfig)) {\n context.filter = \"none\";\n }\n drawElementOnCanvas(element, rc, context, renderConfig);\n context.restore();\n // not exporting → optimized rendering (cache & render from element\n // canvases)\n }\n else {\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\n }\n break;\n }\n default: {\n // @ts-ignore\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n};\nconst roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {\n if (typeof precision === \"undefined\") {\n return rsvg.draw(drawable);\n }\n const pshape = {\n sets: drawable.sets,\n shape: drawable.shape,\n options: Object.assign(Object.assign({}, drawable.options), { fixedDecimalPlaceDigits: precision }),\n };\n return rsvg.draw(pshape);\n};\nconst renderElementToSvg = (element, rsvg, svgRoot, files, offsetX, offsetY, exportWithDarkMode) => {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n const cx = (x2 - x1) / 2 - (element.x - x1);\n const cy = (y2 - y1) / 2 - (element.y - y1);\n const degree = (180 * element.angle) / Math.PI;\n const generator = rsvg.generator;\n // element to append node to, most of the time svgRoot\n let root = svgRoot;\n // if the element has a link, create an anchor tag and make that the new root\n if (element.link) {\n const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"a\");\n anchorTag.setAttribute(\"href\", element.link);\n root.appendChild(anchorTag);\n root = anchorTag;\n }\n switch (element.type) {\n case \"selection\": {\n // Since this is used only during editing experience, which is canvas based,\n // this should not happen\n throw new Error(\"Selection rendering is not supported for SVG\");\n }\n case \"rectangle\":\n case \"diamond\":\n case \"ellipse\": {\n generateElementShape(element, generator);\n const node = roughSVGDrawWithPrecision(rsvg, getShapeForElement(element), _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n const opacity = element.opacity / 100;\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"stroke-linecap\", \"round\");\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n root.appendChild(node);\n break;\n }\n case \"line\":\n case \"arrow\": {\n generateElementShape(element, generator);\n const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n const opacity = element.opacity / 100;\n group.setAttribute(\"stroke-linecap\", \"round\");\n getShapeForElement(element).forEach((shape) => {\n const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n if (element.type === \"line\" &&\n (0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points) &&\n element.backgroundColor !== \"transparent\") {\n node.setAttribute(\"fill-rule\", \"evenodd\");\n }\n group.appendChild(node);\n });\n root.appendChild(group);\n break;\n }\n case \"freedraw\": {\n generateElementShape(element, generator);\n generateFreeDrawShape(element);\n const opacity = element.opacity / 100;\n const shape = getShapeForElement(element);\n const node = shape\n ? roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT)\n : svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n node.setAttribute(\"stroke\", \"none\");\n const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"path\");\n path.setAttribute(\"fill\", element.strokeColor);\n path.setAttribute(\"d\", getFreeDrawSvgPath(element));\n node.appendChild(path);\n root.appendChild(node);\n break;\n }\n case \"image\": {\n const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && files[element.fileId];\n if (fileData) {\n const symbolId = `image-${fileData.id}`;\n let symbol = svgRoot.querySelector(`#${symbolId}`);\n if (!symbol) {\n symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"symbol\");\n symbol.id = symbolId;\n const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"image\");\n image.setAttribute(\"width\", \"100%\");\n image.setAttribute(\"height\", \"100%\");\n image.setAttribute(\"href\", fileData.dataURL);\n symbol.appendChild(image);\n root.prepend(symbol);\n }\n const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"use\");\n use.setAttribute(\"href\", `#${symbolId}`);\n // in dark theme, revert the image color filter\n if (exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg) {\n use.setAttribute(\"filter\", IMAGE_INVERT_FILTER);\n }\n use.setAttribute(\"width\", `${Math.round(element.width)}`);\n use.setAttribute(\"height\", `${Math.round(element.height)}`);\n use.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n root.appendChild(use);\n }\n break;\n }\n default: {\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n const opacity = element.opacity / 100;\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"g\");\n if (opacity !== 1) {\n node.setAttribute(\"stroke-opacity\", `${opacity}`);\n node.setAttribute(\"fill-opacity\", `${opacity}`);\n }\n node.setAttribute(\"transform\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n const lines = element.text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const lineHeight = element.height / lines.length;\n const verticalOffset = element.height - element.baseline;\n const horizontalOffset = element.textAlign === \"center\"\n ? element.width / 2\n : element.textAlign === \"right\"\n ? element.width\n : 0;\n const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text) ? \"rtl\" : \"ltr\";\n const textAnchor = element.textAlign === \"center\"\n ? \"middle\"\n : element.textAlign === \"right\" || direction === \"rtl\"\n ? \"end\"\n : \"start\";\n for (let i = 0; i < lines.length; i++) {\n const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, \"text\");\n text.textContent = lines[i];\n text.setAttribute(\"x\", `${horizontalOffset}`);\n text.setAttribute(\"y\", `${(i + 1) * lineHeight - verticalOffset}`);\n text.setAttribute(\"font-family\", (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontFamilyString)(element));\n text.setAttribute(\"font-size\", `${element.fontSize}px`);\n text.setAttribute(\"fill\", element.strokeColor);\n text.setAttribute(\"text-anchor\", textAnchor);\n text.setAttribute(\"style\", \"white-space: pre;\");\n text.setAttribute(\"direction\", direction);\n node.appendChild(text);\n }\n root.appendChild(node);\n }\n else {\n // @ts-ignore\n throw new Error(`Unimplemented type ${element.type}`);\n }\n }\n }\n};\nconst pathsCache = new WeakMap([]);\nfunction generateFreeDrawShape(element) {\n const svgPathData = getFreeDrawSvgPath(element);\n const path = new Path2D(svgPathData);\n pathsCache.set(element, path);\n return path;\n}\nfunction getFreeDrawPath2D(element) {\n return pathsCache.get(element);\n}\nfunction getFreeDrawSvgPath(element) {\n // If input points are empty (should they ever be?) return a dot\n const inputPoints = element.simulatePressure\n ? element.points\n : element.points.length\n ? element.points.map(([x, y], i) => [x, y, element.pressures[i]])\n : [[0, 0, 0.5]];\n // Consider changing the options for simulated pressure vs real pressure\n const options = {\n simulatePressure: element.simulatePressure,\n size: element.strokeWidth * 4.25,\n thinning: 0.6,\n smoothing: 0.5,\n streamline: 0.5,\n easing: (t) => Math.sin((t * Math.PI) / 2),\n last: !!element.lastCommittedPoint, // LastCommittedPoint is added on pointerup\n };\n return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_7__.getStroke)(inputPoints, options));\n}\nfunction med(A, B) {\n return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\n}\n// Trim SVG path data so number are each two decimal points. This\n// improves SVG exports, and prevents rendering errors on points\n// with long decimals.\nconst TO_FIXED_PRECISION = /(\\s?[A-Z]?,?-?[0-9]*\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\nfunction getSvgPathFromStroke(points) {\n if (!points.length) {\n return \"\";\n }\n const max = points.length - 1;\n return points\n .reduce((acc, point, i, arr) => {\n if (i === max) {\n acc.push(point, med(point, arr[0]), \"L\", arr[0], \"Z\");\n }\n else {\n acc.push(point, med(point, arr[i + 1]));\n }\n return acc;\n }, [\"M\", points[0], \"Q\"])\n .join(\" \")\n .replace(TO_FIXED_PRECISION, \"$1\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQ3RCO1NBQ0EsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNULE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3JlbmRlcmVyL3JlbmRlckVsZW1lbnQudHM/YTZkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFeGNhbGlkcmF3RWxlbWVudCxcbiAgRXhjYWxpZHJhd0xpbmVhckVsZW1lbnQsXG4gIEV4Y2FsaWRyYXdUZXh0RWxlbWVudCxcbiAgQXJyb3doZWFkLFxuICBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQsXG4gIEV4Y2FsaWRyYXdJbWFnZUVsZW1lbnQsXG59IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQge1xuICBpc1RleHRFbGVtZW50LFxuICBpc0xpbmVhckVsZW1lbnQsXG4gIGlzRnJlZURyYXdFbGVtZW50LFxuICBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50LFxufSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQge1xuICBnZXREaWFtb25kUG9pbnRzLFxuICBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMsXG4gIGdldEFycm93aGVhZFBvaW50cyxcbn0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyBSb3VnaENhbnZhcyB9IGZyb20gXCJyb3VnaGpzL2Jpbi9jYW52YXNcIjtcbmltcG9ydCB7IERyYXdhYmxlLCBPcHRpb25zIH0gZnJvbSBcInJvdWdoanMvYmluL2NvcmVcIjtcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSBcInJvdWdoanMvYmluL3N2Z1wiO1xuaW1wb3J0IHsgUm91Z2hHZW5lcmF0b3IgfSBmcm9tIFwicm91Z2hqcy9iaW4vZ2VuZXJhdG9yXCI7XG5cbmltcG9ydCB7IFJlbmRlckNvbmZpZyB9IGZyb20gXCIuLi9zY2VuZS90eXBlc1wiO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGdldEZvbnRTdHJpbmcsIGdldEZvbnRGYW1pbHlTdHJpbmcsIGlzUlRMIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpc1BhdGhBTG9vcCB9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQmluYXJ5RmlsZXMsIFpvb20gfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHtcbiAgQk9VTkRfVEVYVF9QQURESU5HLFxuICBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQsXG4gIE1JTUVfVFlQRVMsXG4gIFNWR19OUyxcbiAgVkVSVElDQUxfQUxJR04sXG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldFN0cm9rZSwgU3Ryb2tlT3B0aW9ucyB9IGZyb20gXCJwZXJmZWN0LWZyZWVoYW5kXCI7XG5pbXBvcnQgeyBnZXRBcHByb3hMaW5lSGVpZ2h0IH0gZnJvbSBcIi4uL2VsZW1lbnQvdGV4dEVsZW1lbnRcIjtcblxuLy8gdXNpbmcgYSBzdHJvbmdlciBpbnZlcnQgKDEwMCUgdnMgb3VyIHJlZ3VsYXIgOTMlKSBhbmQgc2F0dXJhdGVcbi8vIGFzIGEgdGVtcCBoYWNrIHRvIG1ha2UgaW1hZ2VzIGluIGRhcmsgdGhlbWUgbG9vayBjbG9zZXIgdG8gb3JpZ2luYWxcbi8vIGNvbG9yIHNjaGVtZSAoaXQncyBzdGlsbCBub3QgcXVpdGUgdGhlcmUgYW5kIHRoZSBjb2xvcnMgbG9vayBzbGlnaHRseVxuLy8gZGVzYXR1cmVkLCBhbGFzLi4uKVxuY29uc3QgSU1BR0VfSU5WRVJUX0ZJTFRFUiA9IFwiaW52ZXJ0KDEwMCUpIGh1ZS1yb3RhdGUoMTgwZGVnKSBzYXR1cmF0ZSgxLjI1KVwiO1xuXG5jb25zdCBkZWZhdWx0QXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKTtcblxuY29uc3QgaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID0gKFxuICBlbGVtZW50OiBFeGNhbGlkcmF3RWxlbWVudCxcbiAgcmVuZGVyQ29uZmlnOiBSZW5kZXJDb25maWcsXG4pID0+XG4gIGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiZcbiAgIXJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmhhcyhlbGVtZW50LmZpbGVJZCk7XG5cbmNvbnN0IHNob3VsZFJlc2V0SW1hZ2VGaWx0ZXIgPSAoXG4gIGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50LFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIHJlbmRlckNvbmZpZy50aGVtZSA9PT0gXCJkYXJrXCIgJiZcbiAgICBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmXG4gICAgIWlzUGVuZGluZ0ltYWdlRWxlbWVudChlbGVtZW50LCByZW5kZXJDb25maWcpICYmXG4gICAgcmVuZGVyQ29uZmlnLmltYWdlQ2FjaGUuZ2V0KGVsZW1lbnQuZmlsZUlkKT8ubWltZVR5cGUgIT09IE1JTUVfVFlQRVMuc3ZnXG4gICk7XG59O1xuXG5jb25zdCBnZXREYXNoQXJyYXlEYXNoZWQgPSAoc3Ryb2tlV2lkdGg6IG51bWJlcikgPT4gWzgsIDggKyBzdHJva2VXaWR0aF07XG5cbmNvbnN0IGdldERhc2hBcnJheURvdHRlZCA9IChzdHJva2VXaWR0aDogbnVtYmVyKSA9PiBbMS41LCA2ICsgc3Ryb2tlV2lkdGhdO1xuXG5jb25zdCBnZXRDYW52YXNQYWRkaW5nID0gKGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50KSA9PlxuICBlbGVtZW50LnR5cGUgPT09IFwiZnJlZWRyYXdcIiA/IGVsZW1lbnQuc3Ryb2tlV2lkdGggKiAxMiA6IDIwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyB7XG4gIGVsZW1lbnQ6IEV4Y2FsaWRyYXdFbGVtZW50IHwgRXhjYWxpZHJhd1RleHRFbGVtZW50O1xuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICB0aGVtZTogUmVuZGVyQ29uZmlnW1widGhlbWVcIl07XG4gIGNhbnZhc1pvb206IFpvb21bXCJ2YWx1ZVwiXTtcbiAgY2FudmFzT2Zmc2V0WDogbnVtYmVyO1xuICBjYW52YXNPZmZzZXRZOiBudW1iZXI7XG59XG5cbmNvbnN0IGdlbmVyYXRlRWxlbWVudENhbnZhcyA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICB6b29tOiBab29tLFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbik6IEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpITtcbiAgY29uc3QgcGFkZGluZyA9IGdldENhbnZhc1BhZGRpbmcoZWxlbWVudCk7XG5cbiAgbGV0IGNhbnZhc09mZnNldFggPSAwO1xuICBsZXQgY2FudmFzT2Zmc2V0WSA9IDA7XG5cbiAgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSB8fCBpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG5cbiAgICBjYW52YXMud2lkdGggPVxuICAgICAgZGlzdGFuY2UoeDEsIHgyKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSArXG4gICAgICBwYWRkaW5nICogem9vbS52YWx1ZSAqIDI7XG4gICAgY2FudmFzLmhlaWdodCA9XG4gICAgICBkaXN0YW5jZSh5MSwgeTIpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlICtcbiAgICAgIHBhZGRpbmcgKiB6b29tLnZhbHVlICogMjtcblxuICAgIGNhbnZhc09mZnNldFggPVxuICAgICAgZWxlbWVudC54ID4geDFcbiAgICAgICAgPyBkaXN0YW5jZShlbGVtZW50LngsIHgxKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZVxuICAgICAgICA6IDA7XG5cbiAgICBjYW52YXNPZmZzZXRZID1cbiAgICAgIGVsZW1lbnQueSA+IHkxXG4gICAgICAgID8gZGlzdGFuY2UoZWxlbWVudC55LCB5MSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWVcbiAgICAgICAgOiAwO1xuXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2FudmFzT2Zmc2V0WCwgY2FudmFzT2Zmc2V0WSk7XG4gIH0gZWxzZSB7XG4gICAgY2FudmFzLndpZHRoID1cbiAgICAgIGVsZW1lbnQud2lkdGggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgK1xuICAgICAgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICAgIGNhbnZhcy5oZWlnaHQgPVxuICAgICAgZWxlbWVudC5oZWlnaHQgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgK1xuICAgICAgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICB9XG5cbiAgY29udGV4dC5zYXZlKCk7XG4gIGNvbnRleHQudHJhbnNsYXRlKHBhZGRpbmcgKiB6b29tLnZhbHVlLCBwYWRkaW5nICogem9vbS52YWx1ZSk7XG4gIGNvbnRleHQuc2NhbGUoXG4gICAgd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlLFxuICAgIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSxcbiAgKTtcblxuICBjb25zdCByYyA9IHJvdWdoLmNhbnZhcyhjYW52YXMpO1xuXG4gIC8vIGluIGRhcmsgdGhlbWUsIHJldmVydCB0aGUgaW1hZ2UgY29sb3IgZmlsdGVyXG4gIGlmIChzaG91bGRSZXNldEltYWdlRmlsdGVyKGVsZW1lbnQsIHJlbmRlckNvbmZpZykpIHtcbiAgICBjb250ZXh0LmZpbHRlciA9IElNQUdFX0lOVkVSVF9GSUxURVI7XG4gIH1cblxuICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICBjb250ZXh0LnJlc3RvcmUoKTtcblxuICByZXR1cm4ge1xuICAgIGVsZW1lbnQsXG4gICAgY2FudmFzLFxuICAgIHRoZW1lOiByZW5kZXJDb25maWcudGhlbWUsXG4gICAgY2FudmFzWm9vbTogem9vbS52YWx1ZSxcbiAgICBjYW52YXNPZmZzZXRYLFxuICAgIGNhbnZhc09mZnNldFksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSU5LX1NJWkUgPSAxNDtcblxuY29uc3QgSU1BR0VfUExBQ0VIT0xERVJfSU1HID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbklNQUdFX1BMQUNFSE9MREVSX0lNRy5zcmMgPSBgZGF0YToke01JTUVfVFlQRVMuc3ZnfSwke2VuY29kZVVSSUNvbXBvbmVudChcbiAgYDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiBkYXRhLXByZWZpeD1cImZhc1wiIGRhdGEtaWNvbj1cImltYWdlXCIgY2xhc3M9XCJzdmctaW5saW5lLS1mYSBmYS1pbWFnZSBmYS13LTE2XCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIj48cGF0aCBmaWxsPVwiIzg4OFwiIGQ9XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCI+PC9wYXRoPjwvc3ZnPmAsXG4pfWA7XG5cbmNvbnN0IElNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNRyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5JTUFHRV9FUlJPUl9QTEFDRUhPTERFUl9JTUcuc3JjID0gYGRhdGE6JHtNSU1FX1RZUEVTLnN2Z30sJHtlbmNvZGVVUklDb21wb25lbnQoXG4gIGA8c3ZnIHZpZXdCb3g9XCIwIDAgNjY4IDY2OFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjJcIj48cGF0aCBkPVwiTTQ2NCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhaTTExMiAxMjBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NlpNNjQgMzg0aDM4NFYyNzJsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwyMDggMzIwbC01NS41MTUtNTUuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNjQgMzM2djQ4WlwiIHN0eWxlPVwiZmlsbDojODg4O2ZpbGwtcnVsZTpub256ZXJvXCIgdHJhbnNmb3JtPVwibWF0cml4KC44MTcwOSAwIDAgLjgxNzA5IDEyNC44MjUgMTQ1LjgyNSlcIi8+PHBhdGggZD1cIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2YzAgMTM2Ljk2NyAxMTEuMDM0IDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4Wm0xMzAuMTA4IDExNy44OTJjNjUuNDQ4IDY1LjQ0OCA3MCAxNjUuNDgxIDIwLjY3NyAyMzUuNjM3TDE1MC40NyAxMDUuMjE2YzcwLjIwNC00OS4zNTYgMTcwLjIyNi00NC43MzUgMjM1LjYzOCAyMC42NzZaTTEyNS44OTIgMzg2LjEwOGMtNjUuNDQ4LTY1LjQ0OC03MC0xNjUuNDgxLTIwLjY3Ny0yMzUuNjM3TDM2MS41MyA0MDYuNzg0Yy03MC4yMDMgNDkuMzU2LTE3MC4yMjYgNDQuNzM2LTIzNS42MzgtMjAuNjc2WlwiIHN0eWxlPVwiZmlsbDojODg4O2ZpbGwtcnVsZTpub256ZXJvXCIgdHJhbnNmb3JtPVwibWF0cml4KC4zMDM2NiAwIDAgLjMwMzY2IDUwNi44MjIgNjAuMDY1KVwiLz48L3N2Zz5gLFxuKX1gO1xuXG5jb25zdCBkcmF3SW1hZ2VQbGFjZWhvbGRlciA9IChcbiAgZWxlbWVudDogRXhjYWxpZHJhd0ltYWdlRWxlbWVudCxcbiAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICB6b29tVmFsdWU6IEFwcFN0YXRlW1wiem9vbVwiXVtcInZhbHVlXCJdLFxuKSA9PiB7XG4gIGNvbnRleHQuZmlsbFN0eWxlID0gXCIjRTdFN0U3XCI7XG4gIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuXG4gIGNvbnN0IGltYWdlTWluV2lkdGhPckhlaWdodCA9IE1hdGgubWluKGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcblxuICBjb25zdCBzaXplID0gTWF0aC5taW4oXG4gICAgaW1hZ2VNaW5XaWR0aE9ySGVpZ2h0LFxuICAgIE1hdGgubWluKGltYWdlTWluV2lkdGhPckhlaWdodCAqIDAuNCwgMTAwKSxcbiAgKTtcblxuICBjb250ZXh0LmRyYXdJbWFnZShcbiAgICBlbGVtZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiXG4gICAgICA/IElNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNR1xuICAgICAgOiBJTUFHRV9QTEFDRUhPTERFUl9JTUcsXG4gICAgZWxlbWVudC53aWR0aCAvIDIgLSBzaXplIC8gMixcbiAgICBlbGVtZW50LmhlaWdodCAvIDIgLSBzaXplIC8gMixcbiAgICBzaXplLFxuICAgIHNpemUsXG4gICk7XG59O1xuXG5jb25zdCBkcmF3RWxlbWVudE9uQ2FudmFzID0gKFxuICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIHJjOiBSb3VnaENhbnZhcyxcbiAgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICBjb250ZXh0Lmdsb2JhbEFscGhhID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6IHtcbiAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSBcInJvdW5kXCI7XG4gICAgICByYy5kcmF3KGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSEpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJhcnJvd1wiOlxuICAgIGNhc2UgXCJsaW5lXCI6IHtcbiAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICBjb250ZXh0LmxpbmVDYXAgPSBcInJvdW5kXCI7XG5cbiAgICAgIGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSEuZm9yRWFjaCgoc2hhcGUpID0+IHtcbiAgICAgICAgcmMuZHJhdyhzaGFwZSk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZnJlZWRyYXdcIjoge1xuICAgICAgLy8gRHJhdyBkaXJlY3RseSB0byBjYW52YXNcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuXG4gICAgICBjb25zdCBwYXRoID0gZ2V0RnJlZURyYXdQYXRoMkQoZWxlbWVudCkgYXMgUGF0aDJEO1xuICAgICAgY29uc3QgZmlsbFNoYXBlID0gZ2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICBpZiAoZmlsbFNoYXBlKSB7XG4gICAgICAgIHJjLmRyYXcoZmlsbFNoYXBlKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuXG4gICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiaW1hZ2VcIjoge1xuICAgICAgY29uc3QgaW1nID0gaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KVxuICAgICAgICA/IHJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmdldChlbGVtZW50LmZpbGVJZCk/LmltYWdlXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGltZyAhPSBudWxsICYmICEoaW1nIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgaW1nLFxuICAgICAgICAgIDAgLyogaGFyZGNvZGVkIGZvciB0aGUgc2VsZWN0aW9uIGJveCovLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgZWxlbWVudC53aWR0aCxcbiAgICAgICAgICBlbGVtZW50LmhlaWdodCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYXdJbWFnZVBsYWNlaG9sZGVyKGVsZW1lbnQsIGNvbnRleHQsIHJlbmRlckNvbmZpZy56b29tLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBydGwgPSBpc1JUTChlbGVtZW50LnRleHQpO1xuICAgICAgICBjb25zdCBzaG91bGRUZW1wb3JhcmlseUF0dGFjaCA9IHJ0bCAmJiAhY29udGV4dC5jYW52YXMuaXNDb25uZWN0ZWQ7XG4gICAgICAgIGlmIChzaG91bGRUZW1wb3JhcmlseUF0dGFjaCkge1xuICAgICAgICAgIC8vIHRvIGNvcnJlY3RseSByZW5kZXIgUlRMIHRleHQgbWl4ZWQgd2l0aCBMVFIsIHdlIGhhdmUgdG8gYXBwZW5kIGl0XG4gICAgICAgICAgLy8gdG8gdGhlIERPTVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGV4dC5jYW52YXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuY2FudmFzLnNldEF0dHJpYnV0ZShcImRpclwiLCBydGwgPyBcInJ0bFwiIDogXCJsdHJcIik7XG4gICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICBjb250ZXh0LmZvbnQgPSBnZXRGb250U3RyaW5nKGVsZW1lbnQpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGVsZW1lbnQuc3Ryb2tlQ29sb3I7XG4gICAgICAgIGNvbnRleHQudGV4dEFsaWduID0gZWxlbWVudC50ZXh0QWxpZ24gYXMgQ2FudmFzVGV4dEFsaWduO1xuXG4gICAgICAgIC8vIENhbnZhcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpbGluZSB0ZXh0IGJ5IGRlZmF1bHRcbiAgICAgICAgY29uc3QgbGluZXMgPSBlbGVtZW50LnRleHQucmVwbGFjZSgvXFxyXFxuPy9nLCBcIlxcblwiKS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGVsZW1lbnQuY29udGFpbmVySWRcbiAgICAgICAgICA/IGdldEFwcHJveExpbmVIZWlnaHQoZ2V0Rm9udFN0cmluZyhlbGVtZW50KSlcbiAgICAgICAgICA6IGVsZW1lbnQuaGVpZ2h0IC8gbGluZXMubGVuZ3RoO1xuICAgICAgICBsZXQgdmVydGljYWxPZmZzZXQgPSBlbGVtZW50LmhlaWdodCAtIGVsZW1lbnQuYmFzZWxpbmU7XG4gICAgICAgIGlmIChlbGVtZW50LnZlcnRpY2FsQWxpZ24gPT09IFZFUlRJQ0FMX0FMSUdOLkJPVFRPTSkge1xuICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gQk9VTkRfVEVYVF9QQURESU5HO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAgICAgZWxlbWVudC50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCJcbiAgICAgICAgICAgID8gZWxlbWVudC53aWR0aCAvIDJcbiAgICAgICAgICAgIDogZWxlbWVudC50ZXh0QWxpZ24gPT09IFwicmlnaHRcIlxuICAgICAgICAgICAgPyBlbGVtZW50LndpZHRoXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFxuICAgICAgICAgICAgbGluZXNbaW5kZXhdLFxuICAgICAgICAgICAgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgICAgICAgIChpbmRleCArIDEpICogbGluZUhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIGlmIChzaG91bGRUZW1wb3JhcmlseUF0dGFjaCkge1xuICAgICAgICAgIGNvbnRleHQuY2FudmFzLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG59O1xuXG5jb25zdCBlbGVtZW50V2l0aENhbnZhc0NhY2hlID0gbmV3IFdlYWtNYXA8XG4gIEV4Y2FsaWRyYXdFbGVtZW50LFxuICBFeGNhbGlkcmF3RWxlbWVudFdpdGhDYW52YXNcbj4oKTtcblxuY29uc3Qgc2hhcGVDYWNoZSA9IG5ldyBXZWFrTWFwPEV4Y2FsaWRyYXdFbGVtZW50LCBFbGVtZW50U2hhcGU+KCk7XG5cbnR5cGUgRWxlbWVudFNoYXBlID0gRHJhd2FibGUgfCBEcmF3YWJsZVtdIHwgbnVsbDtcblxudHlwZSBFbGVtZW50U2hhcGVzID0ge1xuICBmcmVlZHJhdzogRHJhd2FibGUgfCBudWxsO1xuICBhcnJvdzogRHJhd2FibGVbXTtcbiAgbGluZTogRHJhd2FibGVbXTtcbiAgdGV4dDogbnVsbDtcbiAgaW1hZ2U6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2hhcGVGb3JFbGVtZW50ID0gPFQgZXh0ZW5kcyBFeGNhbGlkcmF3RWxlbWVudD4oZWxlbWVudDogVCkgPT5cbiAgc2hhcGVDYWNoZS5nZXQoZWxlbWVudCkgYXMgVFtcInR5cGVcIl0gZXh0ZW5kcyBrZXlvZiBFbGVtZW50U2hhcGVzXG4gICAgPyBFbGVtZW50U2hhcGVzW1RbXCJ0eXBlXCJdXSB8IHVuZGVmaW5lZFxuICAgIDogRHJhd2FibGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3Qgc2V0U2hhcGVGb3JFbGVtZW50ID0gPFQgZXh0ZW5kcyBFeGNhbGlkcmF3RWxlbWVudD4oXG4gIGVsZW1lbnQ6IFQsXG4gIHNoYXBlOiBUW1widHlwZVwiXSBleHRlbmRzIGtleW9mIEVsZW1lbnRTaGFwZXNcbiAgICA/IEVsZW1lbnRTaGFwZXNbVFtcInR5cGVcIl1dXG4gICAgOiBEcmF3YWJsZSxcbikgPT4gc2hhcGVDYWNoZS5zZXQoZWxlbWVudCwgc2hhcGUpO1xuXG5leHBvcnQgY29uc3QgaW52YWxpZGF0ZVNoYXBlRm9yRWxlbWVudCA9IChlbGVtZW50OiBFeGNhbGlkcmF3RWxlbWVudCkgPT5cbiAgc2hhcGVDYWNoZS5kZWxldGUoZWxlbWVudCk7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyA9IChcbiAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsXG4gIGNvbnRpbnVvdXNQYXRoID0gZmFsc2UsXG4pOiBPcHRpb25zID0+IHtcbiAgY29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHtcbiAgICBzZWVkOiBlbGVtZW50LnNlZWQsXG4gICAgc3Ryb2tlTGluZURhc2g6XG4gICAgICBlbGVtZW50LnN0cm9rZVN0eWxlID09PSBcImRhc2hlZFwiXG4gICAgICAgID8gZ2V0RGFzaEFycmF5RGFzaGVkKGVsZW1lbnQuc3Ryb2tlV2lkdGgpXG4gICAgICAgIDogZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gXCJkb3R0ZWRcIlxuICAgICAgICA/IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAvLyBmb3Igbm9uLXNvbGlkIHN0cm9rZXMsIGRpc2FibGUgbXVsdGlTdHJva2UgYmVjYXVzZSBpdCB0ZW5kcyB0byBtYWtlXG4gICAgLy8gZGFzaGVzL2RvdHMgb3ZlcmxheSBlYWNoIG90aGVyXG4gICAgZGlzYWJsZU11bHRpU3Ryb2tlOiBlbGVtZW50LnN0cm9rZVN0eWxlICE9PSBcInNvbGlkXCIsXG4gICAgLy8gZm9yIG5vbi1zb2xpZCBzdHJva2VzLCBpbmNyZWFzZSB0aGUgd2lkdGggYSBiaXQgdG8gbWFrZSBpdCB2aXN1YWxseVxuICAgIC8vIHNpbWlsYXIgdG8gc29saWQgc3Ryb2tlcywgYmVjYXVzZSB3ZSdyZSBhbHNvIGRpc2FibGluZyBtdWx0aVN0cm9rZVxuICAgIHN0cm9rZVdpZHRoOlxuICAgICAgZWxlbWVudC5zdHJva2VTdHlsZSAhPT0gXCJzb2xpZFwiXG4gICAgICAgID8gZWxlbWVudC5zdHJva2VXaWR0aCArIDAuNVxuICAgICAgICA6IGVsZW1lbnQuc3Ryb2tlV2lkdGgsXG4gICAgLy8gd2hlbiBpbmNyZWFzaW5nIHN0cm9rZVdpZHRoLCB3ZSBtdXN0IGV4cGxpY2l0bHkgc2V0IGZpbGxXZWlnaHQgYW5kXG4gICAgLy8gaGFjaHVyZUdhcCBiZWNhdXNlIGlmIG5vdCBzcGVjaWZpZWQsIHJvdWdoanMgdXNlcyBzdHJva2VXaWR0aCB0b1xuICAgIC8vIGNhbGN1bGF0ZSB0aGVtIChhbmQgd2UgZG9uJ3Qgd2FudCB0aGUgZmlsbHMgdG8gYmUgbW9kaWZpZWQpXG4gICAgZmlsbFdlaWdodDogZWxlbWVudC5zdHJva2VXaWR0aCAvIDIsXG4gICAgaGFjaHVyZUdhcDogZWxlbWVudC5zdHJva2VXaWR0aCAqIDQsXG4gICAgcm91Z2huZXNzOiBlbGVtZW50LnJvdWdobmVzcyxcbiAgICBzdHJva2U6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgcHJlc2VydmVWZXJ0aWNlczogY29udGludW91c1BhdGgsXG4gIH07XG5cbiAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIFwicmVjdGFuZ2xlXCI6XG4gICAgY2FzZSBcImRpYW1vbmRcIjpcbiAgICBjYXNlIFwiZWxsaXBzZVwiOiB7XG4gICAgICBvcHRpb25zLmZpbGxTdHlsZSA9IGVsZW1lbnQuZmlsbFN0eWxlO1xuICAgICAgb3B0aW9ucy5maWxsID1cbiAgICAgICAgZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiBlbGVtZW50LmJhY2tncm91bmRDb2xvcjtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZWxsaXBzZVwiKSB7XG4gICAgICAgIG9wdGlvbnMuY3VydmVGaXR0aW5nID0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbiAgICBjYXNlIFwibGluZVwiOlxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOiB7XG4gICAgICBpZiAoaXNQYXRoQUxvb3AoZWxlbWVudC5wb2ludHMpKSB7XG4gICAgICAgIG9wdGlvbnMuZmlsbFN0eWxlID0gZWxlbWVudC5maWxsU3R5bGU7XG4gICAgICAgIG9wdGlvbnMuZmlsbCA9XG4gICAgICAgICAgZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gICAgY2FzZSBcImFycm93XCI6XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBlbGVtZW50J3Mgc2hhcGUgYW5kIHB1dHMgaXQgaW50byB0aGUgY2FjaGUuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHBhcmFtIGdlbmVyYXRvclxuICovXG5jb25zdCBnZW5lcmF0ZUVsZW1lbnRTaGFwZSA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICBnZW5lcmF0b3I6IFJvdWdoR2VuZXJhdG9yLFxuKSA9PiB7XG4gIGxldCBzaGFwZSA9IHNoYXBlQ2FjaGUuZ2V0KGVsZW1lbnQpO1xuXG4gIC8vIGBudWxsYCBpbmRpY2F0ZXMgbm8gcmMgc2hhcGUgYXBwbGljYWJsZSBmb3IgdGhpcyBlbGVtZW50IHR5cGVcbiAgLy8gKD0gZG8gbm90IGdlbmVyYXRlIGFueXRoaW5nKVxuICBpZiAoc2hhcGUgPT09IHVuZGVmaW5lZCkge1xuICAgIGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUuZGVsZXRlKGVsZW1lbnQpO1xuXG4gICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU2hhcnBuZXNzID09PSBcInJvdW5kXCIpIHtcbiAgICAgICAgICBjb25zdCB3ID0gZWxlbWVudC53aWR0aDtcbiAgICAgICAgICBjb25zdCBoID0gZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgY29uc3QgciA9IE1hdGgubWluKHcsIGgpICogMC4yNTtcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wYXRoKFxuICAgICAgICAgICAgYE0gJHtyfSAwIEwgJHt3IC0gcn0gMCBRICR7d30gMCwgJHt3fSAke3J9IEwgJHt3fSAke1xuICAgICAgICAgICAgICBoIC0gclxuICAgICAgICAgICAgfSBRICR7d30gJHtofSwgJHt3IC0gcn0gJHtofSBMICR7cn0gJHtofSBRIDAgJHtofSwgMCAke1xuICAgICAgICAgICAgICBoIC0gclxuICAgICAgICAgICAgfSBMIDAgJHtyfSBRIDAgMCwgJHtyfSAwYCxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQsIHRydWUpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucmVjdGFuZ2xlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBlbGVtZW50LndpZHRoLFxuICAgICAgICAgICAgZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgICBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNldFNoYXBlRm9yRWxlbWVudChlbGVtZW50LCBzaGFwZSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGlhbW9uZFwiOiB7XG4gICAgICAgIGNvbnN0IFt0b3BYLCB0b3BZLCByaWdodFgsIHJpZ2h0WSwgYm90dG9tWCwgYm90dG9tWSwgbGVmdFgsIGxlZnRZXSA9XG4gICAgICAgICAgZ2V0RGlhbW9uZFBvaW50cyhlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU2hhcnBuZXNzID09PSBcInJvdW5kXCIpIHtcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wYXRoKFxuICAgICAgICAgICAgYE0gJHt0b3BYICsgKHJpZ2h0WCAtIHRvcFgpICogMC4yNX0gJHtcbiAgICAgICAgICAgICAgdG9wWSArIChyaWdodFkgLSB0b3BZKSAqIDAuMjVcbiAgICAgICAgICAgIH0gTCAke3JpZ2h0WCAtIChyaWdodFggLSB0b3BYKSAqIDAuMjV9ICR7XG4gICAgICAgICAgICAgIHJpZ2h0WSAtIChyaWdodFkgLSB0b3BZKSAqIDAuMjVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEMgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtcbiAgICAgICAgICAgICAgcmlnaHRYIC0gKHJpZ2h0WCAtIGJvdHRvbVgpICogMC4yNVxuICAgICAgICAgICAgfSAke3JpZ2h0WSArIChib3R0b21ZIC0gcmlnaHRZKSAqIDAuMjV9XG4gICAgICAgICAgICBMICR7Ym90dG9tWCArIChyaWdodFggLSBib3R0b21YKSAqIDAuMjV9ICR7XG4gICAgICAgICAgICAgIGJvdHRvbVkgLSAoYm90dG9tWSAtIHJpZ2h0WSkgKiAwLjI1XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBDICR7Ym90dG9tWH0gJHtib3R0b21ZfSwgJHtib3R0b21YfSAke2JvdHRvbVl9LCAke1xuICAgICAgICAgICAgICBib3R0b21YIC0gKGJvdHRvbVggLSBsZWZ0WCkgKiAwLjI1XG4gICAgICAgICAgICB9ICR7Ym90dG9tWSAtIChib3R0b21ZIC0gbGVmdFkpICogMC4yNX1cbiAgICAgICAgICAgIEwgJHtsZWZ0WCArIChib3R0b21YIC0gbGVmdFgpICogMC4yNX0gJHtcbiAgICAgICAgICAgICAgbGVmdFkgKyAoYm90dG9tWSAtIGxlZnRZKSAqIDAuMjVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEMgJHtsZWZ0WH0gJHtsZWZ0WX0sICR7bGVmdFh9ICR7bGVmdFl9LCAke1xuICAgICAgICAgICAgICBsZWZ0WCArICh0b3BYIC0gbGVmdFgpICogMC4yNVxuICAgICAgICAgICAgfSAke2xlZnRZIC0gKGxlZnRZIC0gdG9wWSkgKiAwLjI1fVxuICAgICAgICAgICAgTCAke3RvcFggLSAodG9wWCAtIGxlZnRYKSAqIDAuMjV9ICR7dG9wWSArIChsZWZ0WSAtIHRvcFkpICogMC4yNX1cbiAgICAgICAgICAgIEMgJHt0b3BYfSAke3RvcFl9LCAke3RvcFh9ICR7dG9wWX0sICR7XG4gICAgICAgICAgICAgIHRvcFggKyAocmlnaHRYIC0gdG9wWCkgKiAwLjI1XG4gICAgICAgICAgICB9ICR7dG9wWSArIChyaWdodFkgLSB0b3BZKSAqIDAuMjV9YCxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQsIHRydWUpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucG9seWdvbihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgW3RvcFgsIHRvcFldLFxuICAgICAgICAgICAgICBbcmlnaHRYLCByaWdodFldLFxuICAgICAgICAgICAgICBbYm90dG9tWCwgYm90dG9tWV0sXG4gICAgICAgICAgICAgIFtsZWZ0WCwgbGVmdFldLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQsIHNoYXBlKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLmVsbGlwc2UoXG4gICAgICAgICAgZWxlbWVudC53aWR0aCAvIDIsXG4gICAgICAgICAgZWxlbWVudC5oZWlnaHQgLyAyLFxuICAgICAgICAgIGVsZW1lbnQud2lkdGgsXG4gICAgICAgICAgZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCksXG4gICAgICAgICk7XG4gICAgICAgIHNldFNoYXBlRm9yRWxlbWVudChlbGVtZW50LCBzaGFwZSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgY2FzZSBcImFycm93XCI6IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIHBvaW50cyBhcnJheSBjYW4gYmUgZW1wdHkgaW4gdGhlIGJlZ2lubmluZywgc28gaXQgaXMgaW1wb3J0YW50IHRvIGFkZFxuICAgICAgICAvLyBpbml0aWFsIHBvc2l0aW9uIHRvIGl0XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IGVsZW1lbnQucG9pbnRzLmxlbmd0aCA/IGVsZW1lbnQucG9pbnRzIDogW1swLCAwXV07XG5cbiAgICAgICAgLy8gY3VydmUgaXMgYWx3YXlzIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICAgIC8vIHRoaXMgc2ltcGxpZmllcyBmaW5kaW5nIHRoZSBjdXJ2ZSBmb3IgYW4gZWxlbWVudFxuICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTaGFycG5lc3MgPT09IFwic2hhcnBcIikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmZpbGwpIHtcbiAgICAgICAgICAgIHNoYXBlID0gW2dlbmVyYXRvci5wb2x5Z29uKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBbXG4gICAgICAgICAgICAgIGdlbmVyYXRvci5saW5lYXJQYXRoKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBbZ2VuZXJhdG9yLmN1cnZlKHBvaW50cyBhcyBbbnVtYmVyLCBudW1iZXJdW10sIG9wdGlvbnMpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZCBsaW5lcyBvbmx5IGluIGFycm93XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiYXJyb3dcIikge1xuICAgICAgICAgIGNvbnN0IHsgc3RhcnRBcnJvd2hlYWQgPSBudWxsLCBlbmRBcnJvd2hlYWQgPSBcImFycm93XCIgfSA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICBjb25zdCBnZXRBcnJvd2hlYWRTaGFwZXMgPSAoXG4gICAgICAgICAgICBlbGVtZW50OiBFeGNhbGlkcmF3TGluZWFyRWxlbWVudCxcbiAgICAgICAgICAgIHNoYXBlOiBEcmF3YWJsZVtdLFxuICAgICAgICAgICAgcG9zaXRpb246IFwic3RhcnRcIiB8IFwiZW5kXCIsXG4gICAgICAgICAgICBhcnJvd2hlYWQ6IEFycm93aGVhZCxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycm93aGVhZFBvaW50cyA9IGdldEFycm93aGVhZFBvaW50cyhcbiAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICBhcnJvd2hlYWQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoYXJyb3doZWFkUG9pbnRzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT3RoZXIgYXJyb3doZWFkcyBoZXJlLi4uXG4gICAgICAgICAgICBpZiAoYXJyb3doZWFkID09PSBcImRvdFwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFt4LCB5LCByXSA9IGFycm93aGVhZFBvaW50cztcblxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGdlbmVyYXRvci5jaXJjbGUoeCwgeSwgciwge1xuICAgICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpbGw6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhcnJvd2hlYWQgPT09IFwidHJpYW5nbGVcIikge1xuICAgICAgICAgICAgICBjb25zdCBbeCwgeSwgeDIsIHkyLCB4MywgeTNdID0gYXJyb3doZWFkUG9pbnRzO1xuXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyB1c2Ugc29saWQgc3Ryb2tlIGZvciB0cmlhbmdsZSBhcnJvd2hlYWRcbiAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuc3Ryb2tlTGluZURhc2g7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3IucG9seWdvbihcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgW3gsIHldLFxuICAgICAgICAgICAgICAgICAgICBbeDIsIHkyXSxcbiAgICAgICAgICAgICAgICAgICAgW3gzLCB5M10sXG4gICAgICAgICAgICAgICAgICAgIFt4LCB5XSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcnJvdyBhcnJvd2hlYWRzXG4gICAgICAgICAgICBjb25zdCBbeDIsIHkyLCB4MywgeTMsIHg0LCB5NF0gPSBhcnJvd2hlYWRQb2ludHM7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnN0cm9rZVN0eWxlID09PSBcImRvdHRlZFwiKSB7XG4gICAgICAgICAgICAgIC8vIGZvciBkb3R0ZWQgYXJyb3dzIGNhcHMsIHJlZHVjZSBnYXAgdG8gbWFrZSBpdCBtb3JlIGxlZ2libGVcbiAgICAgICAgICAgICAgY29uc3QgZGFzaCA9IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoIC0gMSk7XG4gICAgICAgICAgICAgIG9wdGlvbnMuc3Ryb2tlTGluZURhc2ggPSBbZGFzaFswXSwgZGFzaFsxXSAtIDFdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZm9yIHNvbGlkL2Rhc2hlZCwga2VlcCBzb2xpZCBhcnJvdyBjYXBcbiAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuc3Ryb2tlTGluZURhc2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBnZW5lcmF0b3IubGluZSh4MywgeTMsIHgyLCB5Miwgb3B0aW9ucyksXG4gICAgICAgICAgICAgIGdlbmVyYXRvci5saW5lKHg0LCB5NCwgeDIsIHkyLCBvcHRpb25zKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChzdGFydEFycm93aGVhZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXJyb3doZWFkU2hhcGVzKFxuICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICAgICAgXCJzdGFydFwiLFxuICAgICAgICAgICAgICBzdGFydEFycm93aGVhZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzaGFwZS5wdXNoKC4uLnNoYXBlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGVuZEFycm93aGVhZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGVuZEFycm93aGVhZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIEhleSwgd2UgaGF2ZSBhbiBvbGQgYXJyb3cgaGVyZSFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXJyb3doZWFkU2hhcGVzKFxuICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICBzaGFwZSxcbiAgICAgICAgICAgICAgXCJlbmRcIixcbiAgICAgICAgICAgICAgZW5kQXJyb3doZWFkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNoYXBlLnB1c2goLi4uc2hhcGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgc2hhcGUpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImZyZWVkcmF3XCI6IHtcbiAgICAgICAgZ2VuZXJhdGVGcmVlRHJhd1NoYXBlKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChpc1BhdGhBTG9vcChlbGVtZW50LnBvaW50cykpIHtcbiAgICAgICAgICAvLyBnZW5lcmF0ZSByb3VnaCBwb2x5Z29uIHRvIGZpbGwgZnJlZWRyYXcgc2hhcGVcbiAgICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5wb2x5Z29uKGVsZW1lbnQucG9pbnRzIGFzIFtudW1iZXIsIG51bWJlcl1bXSwge1xuICAgICAgICAgICAgLi4uZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCksXG4gICAgICAgICAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNoYXBlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgc2hhcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICBjYXNlIFwiaW1hZ2VcIjoge1xuICAgICAgICAvLyBqdXN0IHRvIGVuc3VyZSB3ZSBkb24ndCByZWdlbmVyYXRlIGVsZW1lbnQuY2FudmFzIG9uIHJlcmVuZGVyc1xuICAgICAgICBzZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCwgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyA9IChcbiAgZWxlbWVudDogTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50LFxuICByZW5kZXJDb25maWc6IFJlbmRlckNvbmZpZyxcbikgPT4ge1xuICBjb25zdCB6b29tOiBab29tID0gcmVuZGVyQ29uZmlnID8gcmVuZGVyQ29uZmlnLnpvb20gOiBkZWZhdWx0QXBwU3RhdGUuem9vbTtcbiAgY29uc3QgcHJldkVsZW1lbnRXaXRoQ2FudmFzID0gZWxlbWVudFdpdGhDYW52YXNDYWNoZS5nZXQoZWxlbWVudCk7XG4gIGNvbnN0IHNob3VsZFJlZ2VuZXJhdGVCZWNhdXNlWm9vbSA9XG4gICAgcHJldkVsZW1lbnRXaXRoQ2FudmFzICYmXG4gICAgcHJldkVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20gIT09IHpvb20udmFsdWUgJiZcbiAgICAhcmVuZGVyQ29uZmlnPy5zaG91bGRDYWNoZUlnbm9yZVpvb207XG5cbiAgaWYgKFxuICAgICFwcmV2RWxlbWVudFdpdGhDYW52YXMgfHxcbiAgICBzaG91bGRSZWdlbmVyYXRlQmVjYXVzZVpvb20gfHxcbiAgICBwcmV2RWxlbWVudFdpdGhDYW52YXMudGhlbWUgIT09IHJlbmRlckNvbmZpZy50aGVtZVxuICApIHtcbiAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudENhbnZhcyhcbiAgICAgIGVsZW1lbnQsXG4gICAgICB6b29tLFxuICAgICAgcmVuZGVyQ29uZmlnLFxuICAgICk7XG5cbiAgICBlbGVtZW50V2l0aENhbnZhc0NhY2hlLnNldChlbGVtZW50LCBlbGVtZW50V2l0aENhbnZhcyk7XG5cbiAgICByZXR1cm4gZWxlbWVudFdpdGhDYW52YXM7XG4gIH1cbiAgcmV0dXJuIHByZXZFbGVtZW50V2l0aENhbnZhcztcbn07XG5cbmNvbnN0IGRyYXdFbGVtZW50RnJvbUNhbnZhcyA9IChcbiAgZWxlbWVudFdpdGhDYW52YXM6IEV4Y2FsaWRyYXdFbGVtZW50V2l0aENhbnZhcyxcbiAgcmM6IFJvdWdoQ2FudmFzLFxuICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gIHJlbmRlckNvbmZpZzogUmVuZGVyQ29uZmlnLFxuKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50O1xuICBjb25zdCBwYWRkaW5nID0gZ2V0Q2FudmFzUGFkZGluZyhlbGVtZW50KTtcbiAgbGV0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG5cbiAgLy8gRnJlZSBkcmF3IGVsZW1lbnRzIHdpbGwgb3RoZXJ3aXNlIFwic2h1ZmZsZVwiIGFzIHRoZSBtaW4geCBhbmQgeSBjaGFuZ2VcbiAgaWYgKGlzRnJlZURyYXdFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgeDEgPSBNYXRoLmZsb29yKHgxKTtcbiAgICB4MiA9IE1hdGguY2VpbCh4Mik7XG4gICAgeTEgPSBNYXRoLmZsb29yKHkxKTtcbiAgICB5MiA9IE1hdGguY2VpbCh5Mik7XG4gIH1cblxuICBjb25zdCBjeCA9ICgoeDEgKyB4MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFgpICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gIGNvbnN0IGN5ID0gKCh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcblxuICBjb25zdCBfaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID0gaXNQZW5kaW5nSW1hZ2VFbGVtZW50KGVsZW1lbnQsIHJlbmRlckNvbmZpZyk7XG5cbiAgY29uc3Qgc2NhbGVYRmFjdG9yID1cbiAgICBcInNjYWxlXCIgaW4gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudCAmJiAhX2lzUGVuZGluZ0ltYWdlRWxlbWVudFxuICAgICAgPyBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50LnNjYWxlWzBdXG4gICAgICA6IDE7XG4gIGNvbnN0IHNjYWxlWUZhY3RvciA9XG4gICAgXCJzY2FsZVwiIGluIGVsZW1lbnRXaXRoQ2FudmFzLmVsZW1lbnQgJiYgIV9pc1BlbmRpbmdJbWFnZUVsZW1lbnRcbiAgICAgID8gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudC5zY2FsZVsxXVxuICAgICAgOiAxO1xuXG4gIGNvbnRleHQuc2F2ZSgpO1xuICBjb250ZXh0LnNjYWxlKFxuICAgICgxIC8gd2luZG93LmRldmljZVBpeGVsUmF0aW8pICogc2NhbGVYRmFjdG9yLFxuICAgICgxIC8gd2luZG93LmRldmljZVBpeGVsUmF0aW8pICogc2NhbGVZRmFjdG9yLFxuICApO1xuICBjb250ZXh0LnRyYW5zbGF0ZShjeCAqIHNjYWxlWEZhY3RvciwgY3kgKiBzY2FsZVlGYWN0b3IpO1xuICBjb250ZXh0LnJvdGF0ZShlbGVtZW50LmFuZ2xlICogc2NhbGVYRmFjdG9yICogc2NhbGVZRmFjdG9yKTtcblxuICBjb250ZXh0LmRyYXdJbWFnZShcbiAgICBlbGVtZW50V2l0aENhbnZhcy5jYW52YXMhLFxuICAgICgtKHgyIC0geDEpIC8gMikgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAtXG4gICAgICAocGFkZGluZyAqIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20pIC8gZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSxcbiAgICAoLSh5MiAtIHkxKSAvIDIpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gLVxuICAgICAgKHBhZGRpbmcgKiBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tKSAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sXG4gICAgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzIS53aWR0aCAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sXG4gICAgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzIS5oZWlnaHQgLyBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tLFxuICApO1xuICBjb250ZXh0LnJlc3RvcmUoKTtcblxuICAvLyBDbGVhciB0aGUgbmVzdGVkIGVsZW1lbnQgd2UgYXBwZW5kZWQgdG8gdGhlIERPTVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlckVsZW1lbnQgPSAoXG4gIGVsZW1lbnQ6IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCxcbiAgcmM6IFJvdWdoQ2FudmFzLFxuICBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gIHJlbmRlckNvbmZpZzogUmVuZGVyQ29uZmlnLFxuKSA9PiB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHJjLmdlbmVyYXRvcjtcbiAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIFwic2VsZWN0aW9uXCI6IHtcbiAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoXG4gICAgICAgIGVsZW1lbnQueCArIHJlbmRlckNvbmZpZy5zY3JvbGxYLFxuICAgICAgICBlbGVtZW50LnkgKyByZW5kZXJDb25maWcuc2Nyb2xsWSxcbiAgICAgICk7XG4gICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IFwicmdiYSgwLCAwLCAyNTUsIDAuMTApXCI7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuXG4gICAgICBpZiAocmVuZGVyQ29uZmlnLmlzRXhwb3J0aW5nKSB7XG4gICAgICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGN4ID0gKHgxICsgeDIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxYO1xuICAgICAgICBjb25zdCBjeSA9ICh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWTtcbiAgICAgICAgY29uc3Qgc2hpZnRYID0gKHgyIC0geDEpIC8gMiAtIChlbGVtZW50LnggLSB4MSk7XG4gICAgICAgIGNvbnN0IHNoaWZ0WSA9ICh5MiAtIHkxKSAvIDIgLSAoZWxlbWVudC55IC0geTEpO1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoY3gsIGN5KTtcbiAgICAgICAgY29udGV4dC5yb3RhdGUoZWxlbWVudC5hbmdsZSk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zaGlmdFgsIC1zaGlmdFkpO1xuICAgICAgICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzID0gZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyhcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHJlbmRlckNvbmZpZyxcbiAgICAgICAgKTtcbiAgICAgICAgZHJhd0VsZW1lbnRGcm9tQ2FudmFzKGVsZW1lbnRXaXRoQ2FudmFzLCByYywgY29udGV4dCwgcmVuZGVyQ29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwidGV4dFwiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuICAgICAgaWYgKHJlbmRlckNvbmZpZy5pc0V4cG9ydGluZykge1xuICAgICAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWDtcbiAgICAgICAgY29uc3QgY3kgPSAoeTEgKyB5MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFk7XG4gICAgICAgIGNvbnN0IHNoaWZ0WCA9ICh4MiAtIHgxKSAvIDIgLSAoZWxlbWVudC54IC0geDEpO1xuICAgICAgICBjb25zdCBzaGlmdFkgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGN4LCBjeSk7XG4gICAgICAgIGNvbnRleHQucm90YXRlKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2hpZnRYLCAtc2hpZnRZKTtcblxuICAgICAgICBpZiAoc2hvdWxkUmVzZXRJbWFnZUZpbHRlcihlbGVtZW50LCByZW5kZXJDb25maWcpKSB7XG4gICAgICAgICAgY29udGV4dC5maWx0ZXIgPSBcIm5vbmVcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRyYXdFbGVtZW50T25DYW52YXMoZWxlbWVudCwgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAvLyBub3QgZXhwb3J0aW5nIOKGkiBvcHRpbWl6ZWQgcmVuZGVyaW5nIChjYWNoZSAmIHJlbmRlciBmcm9tIGVsZW1lbnRcbiAgICAgICAgLy8gY2FudmFzZXMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudFdpdGhDYW52YXMoXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICByZW5kZXJDb25maWcsXG4gICAgICAgICk7XG4gICAgICAgIGRyYXdFbGVtZW50RnJvbUNhbnZhcyhlbGVtZW50V2l0aENhbnZhcywgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHR5cGUgJHtlbGVtZW50LnR5cGV9YCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uID0gKFxuICByc3ZnOiBSb3VnaFNWRyxcbiAgZHJhd2FibGU6IERyYXdhYmxlLFxuICBwcmVjaXNpb24/OiBudW1iZXIsXG4pID0+IHtcbiAgaWYgKHR5cGVvZiBwcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gcnN2Zy5kcmF3KGRyYXdhYmxlKTtcbiAgfVxuICBjb25zdCBwc2hhcGU6IERyYXdhYmxlID0ge1xuICAgIHNldHM6IGRyYXdhYmxlLnNldHMsXG4gICAgc2hhcGU6IGRyYXdhYmxlLnNoYXBlLFxuICAgIG9wdGlvbnM6IHsgLi4uZHJhd2FibGUub3B0aW9ucywgZml4ZWREZWNpbWFsUGxhY2VEaWdpdHM6IHByZWNpc2lvbiB9LFxuICB9O1xuICByZXR1cm4gcnN2Zy5kcmF3KHBzaGFwZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyRWxlbWVudFRvU3ZnID0gKFxuICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsXG4gIHJzdmc6IFJvdWdoU1ZHLFxuICBzdmdSb290OiBTVkdFbGVtZW50LFxuICBmaWxlczogQmluYXJ5RmlsZXMsXG4gIG9mZnNldFg/OiBudW1iZXIsXG4gIG9mZnNldFk/OiBudW1iZXIsXG4gIGV4cG9ydFdpdGhEYXJrTW9kZT86IGJvb2xlYW4sXG4pID0+IHtcbiAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgY29uc3QgY3ggPSAoeDIgLSB4MSkgLyAyIC0gKGVsZW1lbnQueCAtIHgxKTtcbiAgY29uc3QgY3kgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgY29uc3QgZGVncmVlID0gKDE4MCAqIGVsZW1lbnQuYW5nbGUpIC8gTWF0aC5QSTtcbiAgY29uc3QgZ2VuZXJhdG9yID0gcnN2Zy5nZW5lcmF0b3I7XG5cbiAgLy8gZWxlbWVudCB0byBhcHBlbmQgbm9kZSB0bywgbW9zdCBvZiB0aGUgdGltZSBzdmdSb290XG4gIGxldCByb290ID0gc3ZnUm9vdDtcblxuICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgYSBsaW5rLCBjcmVhdGUgYW4gYW5jaG9yIHRhZyBhbmQgbWFrZSB0aGF0IHRoZSBuZXcgcm9vdFxuICBpZiAoZWxlbWVudC5saW5rKSB7XG4gICAgY29uc3QgYW5jaG9yVGFnID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImFcIik7XG4gICAgYW5jaG9yVGFnLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgZWxlbWVudC5saW5rKTtcbiAgICByb290LmFwcGVuZENoaWxkKGFuY2hvclRhZyk7XG4gICAgcm9vdCA9IGFuY2hvclRhZztcbiAgfVxuXG4gIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBcInNlbGVjdGlvblwiOiB7XG4gICAgICAvLyBTaW5jZSB0aGlzIGlzIHVzZWQgb25seSBkdXJpbmcgZWRpdGluZyBleHBlcmllbmNlLCB3aGljaCBpcyBjYW52YXMgYmFzZWQsXG4gICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWxlY3Rpb24gcmVuZGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFNWR1wiKTtcbiAgICB9XG4gICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgY2FzZSBcImVsbGlwc2VcIjoge1xuICAgICAgZ2VuZXJhdGVFbGVtZW50U2hhcGUoZWxlbWVudCwgZ2VuZXJhdG9yKTtcbiAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKFxuICAgICAgICByc3ZnLFxuICAgICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkhLFxuICAgICAgICBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQsXG4gICAgICApO1xuICAgICAgY29uc3Qgb3BhY2l0eSA9IGVsZW1lbnQub3BhY2l0eSAvIDEwMDtcbiAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJmaWxsLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLWxpbmVjYXBcIiwgXCJyb3VuZFwiKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgIG9mZnNldFkgfHwgMFxuICAgICAgICB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWAsXG4gICAgICApO1xuICAgICAgcm9vdC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwibGluZVwiOlxuICAgIGNhc2UgXCJhcnJvd1wiOiB7XG4gICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuICAgICAgY29uc3QgZ3JvdXAgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiZ1wiKTtcbiAgICAgIGNvbnN0IG9wYWNpdHkgPSBlbGVtZW50Lm9wYWNpdHkgLyAxMDA7XG4gICAgICBncm91cC5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWNhcFwiLCBcInJvdW5kXCIpO1xuXG4gICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkhLmZvckVhY2goKHNoYXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKFxuICAgICAgICAgIHJzdmcsXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgTUFYX0RFQ0lNQUxTX0ZPUl9TVkdfRVhQT1JULFxuICAgICAgICApO1xuICAgICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICAgICAgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtcbiAgICAgICAgICAgIG9mZnNldFkgfHwgMFxuICAgICAgICAgIH0pIHJvdGF0ZSgke2RlZ3JlZX0gJHtjeH0gJHtjeX0pYCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVsZW1lbnQudHlwZSA9PT0gXCJsaW5lXCIgJiZcbiAgICAgICAgICBpc1BhdGhBTG9vcChlbGVtZW50LnBvaW50cykgJiZcbiAgICAgICAgICBlbGVtZW50LmJhY2tncm91bmRDb2xvciAhPT0gXCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1ydWxlXCIsIFwiZXZlbm9kZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBncm91cC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIH0pO1xuICAgICAgcm9vdC5hcHBlbmRDaGlsZChncm91cCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcImZyZWVkcmF3XCI6IHtcbiAgICAgIGdlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIGdlbmVyYXRvcik7XG4gICAgICBnZW5lcmF0ZUZyZWVEcmF3U2hhcGUoZWxlbWVudCk7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgY29uc3Qgc2hhcGUgPSBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCk7XG4gICAgICBjb25zdCBub2RlID0gc2hhcGVcbiAgICAgICAgPyByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKHJzdmcsIHNoYXBlLCBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQpXG4gICAgICAgIDogc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImdcIik7XG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICB9XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtcbiAgICAgICAgICBvZmZzZXRZIHx8IDBcbiAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlXCIsIFwibm9uZVwiKTtcbiAgICAgIGNvbnN0IHBhdGggPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwicGF0aFwiKTtcbiAgICAgIHBhdGguc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBlbGVtZW50LnN0cm9rZUNvbG9yKTtcbiAgICAgIHBhdGguc2V0QXR0cmlidXRlKFwiZFwiLCBnZXRGcmVlRHJhd1N2Z1BhdGgoZWxlbWVudCkpO1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZChwYXRoKTtcbiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBcImltYWdlXCI6IHtcbiAgICAgIGNvbnN0IGZpbGVEYXRhID1cbiAgICAgICAgaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBmaWxlc1tlbGVtZW50LmZpbGVJZF07XG4gICAgICBpZiAoZmlsZURhdGEpIHtcbiAgICAgICAgY29uc3Qgc3ltYm9sSWQgPSBgaW1hZ2UtJHtmaWxlRGF0YS5pZH1gO1xuICAgICAgICBsZXQgc3ltYm9sID0gc3ZnUm9vdC5xdWVyeVNlbGVjdG9yKGAjJHtzeW1ib2xJZH1gKTtcbiAgICAgICAgaWYgKCFzeW1ib2wpIHtcbiAgICAgICAgICBzeW1ib2wgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwic3ltYm9sXCIpO1xuICAgICAgICAgIHN5bWJvbC5pZCA9IHN5bWJvbElkO1xuXG4gICAgICAgICAgY29uc3QgaW1hZ2UgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiaW1hZ2VcIik7XG5cbiAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIFwiMTAwJVwiKTtcbiAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVEYXRhLmRhdGFVUkwpO1xuXG4gICAgICAgICAgc3ltYm9sLmFwcGVuZENoaWxkKGltYWdlKTtcblxuICAgICAgICAgIHJvb3QucHJlcGVuZChzeW1ib2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInVzZVwiKTtcbiAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgYCMke3N5bWJvbElkfWApO1xuXG4gICAgICAgIC8vIGluIGRhcmsgdGhlbWUsIHJldmVydCB0aGUgaW1hZ2UgY29sb3IgZmlsdGVyXG4gICAgICAgIGlmIChleHBvcnRXaXRoRGFya01vZGUgJiYgZmlsZURhdGEubWltZVR5cGUgIT09IE1JTUVfVFlQRVMuc3ZnKSB7XG4gICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImZpbHRlclwiLCBJTUFHRV9JTlZFUlRfRklMVEVSKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHtNYXRoLnJvdW5kKGVsZW1lbnQud2lkdGgpfWApO1xuICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke01hdGgucm91bmQoZWxlbWVudC5oZWlnaHQpfWApO1xuXG4gICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgICAgb2Zmc2V0WSB8fCAwXG4gICAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgICApO1xuXG4gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQodXNlKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCBub2RlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50IS5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImdcIik7XG4gICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke1xuICAgICAgICAgICAgb2Zmc2V0WSB8fCAwXG4gICAgICAgICAgfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBsaW5lcyA9IGVsZW1lbnQudGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gZWxlbWVudC5oZWlnaHQgLyBsaW5lcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gZWxlbWVudC5oZWlnaHQgLSBlbGVtZW50LmJhc2VsaW5lO1xuICAgICAgICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID1cbiAgICAgICAgICBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgPyBlbGVtZW50LndpZHRoIC8gMlxuICAgICAgICAgICAgOiBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJyaWdodFwiXG4gICAgICAgICAgICA/IGVsZW1lbnQud2lkdGhcbiAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gaXNSVEwoZWxlbWVudC50ZXh0KSA/IFwicnRsXCIgOiBcImx0clwiO1xuICAgICAgICBjb25zdCB0ZXh0QW5jaG9yID1cbiAgICAgICAgICBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIlxuICAgICAgICAgICAgPyBcIm1pZGRsZVwiXG4gICAgICAgICAgICA6IGVsZW1lbnQudGV4dEFsaWduID09PSBcInJpZ2h0XCIgfHwgZGlyZWN0aW9uID09PSBcInJ0bFwiXG4gICAgICAgICAgICA/IFwiZW5kXCJcbiAgICAgICAgICAgIDogXCJzdGFydFwiO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudCEuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJ0ZXh0XCIpO1xuICAgICAgICAgIHRleHQudGV4dENvbnRlbnQgPSBsaW5lc1tpXTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInhcIiwgYCR7aG9yaXpvbnRhbE9mZnNldH1gKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInlcIiwgYCR7KGkgKyAxKSAqIGxpbmVIZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldH1gKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZvbnQtZmFtaWx5XCIsIGdldEZvbnRGYW1pbHlTdHJpbmcoZWxlbWVudCkpO1xuICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwiZm9udC1zaXplXCIsIGAke2VsZW1lbnQuZm9udFNpemV9cHhgKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgZWxlbWVudC5zdHJva2VDb2xvcik7XG4gICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJ0ZXh0LWFuY2hvclwiLCB0ZXh0QW5jaG9yKTtcbiAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwid2hpdGUtc3BhY2U6IHByZTtcIik7XG4gICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uKTtcbiAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCB0eXBlICR7ZWxlbWVudC50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhdGhzQ2FjaGUgPSBuZXcgV2Vha01hcDxFeGNhbGlkcmF3RnJlZURyYXdFbGVtZW50LCBQYXRoMkQ+KFtdKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnJlZURyYXdTaGFwZShlbGVtZW50OiBFeGNhbGlkcmF3RnJlZURyYXdFbGVtZW50KSB7XG4gIGNvbnN0IHN2Z1BhdGhEYXRhID0gZ2V0RnJlZURyYXdTdmdQYXRoKGVsZW1lbnQpO1xuICBjb25zdCBwYXRoID0gbmV3IFBhdGgyRChzdmdQYXRoRGF0YSk7XG4gIHBhdGhzQ2FjaGUuc2V0KGVsZW1lbnQsIHBhdGgpO1xuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWVEcmF3UGF0aDJEKGVsZW1lbnQ6IEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQpIHtcbiAgcmV0dXJuIHBhdGhzQ2FjaGUuZ2V0KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnJlZURyYXdTdmdQYXRoKGVsZW1lbnQ6IEV4Y2FsaWRyYXdGcmVlRHJhd0VsZW1lbnQpIHtcbiAgLy8gSWYgaW5wdXQgcG9pbnRzIGFyZSBlbXB0eSAoc2hvdWxkIHRoZXkgZXZlciBiZT8pIHJldHVybiBhIGRvdFxuICBjb25zdCBpbnB1dFBvaW50cyA9IGVsZW1lbnQuc2ltdWxhdGVQcmVzc3VyZVxuICAgID8gZWxlbWVudC5wb2ludHNcbiAgICA6IGVsZW1lbnQucG9pbnRzLmxlbmd0aFxuICAgID8gZWxlbWVudC5wb2ludHMubWFwKChbeCwgeV0sIGkpID0+IFt4LCB5LCBlbGVtZW50LnByZXNzdXJlc1tpXV0pXG4gICAgOiBbWzAsIDAsIDAuNV1dO1xuXG4gIC8vIENvbnNpZGVyIGNoYW5naW5nIHRoZSBvcHRpb25zIGZvciBzaW11bGF0ZWQgcHJlc3N1cmUgdnMgcmVhbCBwcmVzc3VyZVxuICBjb25zdCBvcHRpb25zOiBTdHJva2VPcHRpb25zID0ge1xuICAgIHNpbXVsYXRlUHJlc3N1cmU6IGVsZW1lbnQuc2ltdWxhdGVQcmVzc3VyZSxcbiAgICBzaXplOiBlbGVtZW50LnN0cm9rZVdpZHRoICogNC4yNSxcbiAgICB0aGlubmluZzogMC42LFxuICAgIHNtb290aGluZzogMC41LFxuICAgIHN0cmVhbWxpbmU6IDAuNSxcbiAgICBlYXNpbmc6ICh0KSA9PiBNYXRoLnNpbigodCAqIE1hdGguUEkpIC8gMiksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VPdXRTaW5lXG4gICAgbGFzdDogISFlbGVtZW50Lmxhc3RDb21taXR0ZWRQb2ludCwgLy8gTGFzdENvbW1pdHRlZFBvaW50IGlzIGFkZGVkIG9uIHBvaW50ZXJ1cFxuICB9O1xuXG4gIHJldHVybiBnZXRTdmdQYXRoRnJvbVN0cm9rZShnZXRTdHJva2UoaW5wdXRQb2ludHMgYXMgbnVtYmVyW11bXSwgb3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBtZWQoQTogbnVtYmVyW10sIEI6IG51bWJlcltdKSB7XG4gIHJldHVybiBbKEFbMF0gKyBCWzBdKSAvIDIsIChBWzFdICsgQlsxXSkgLyAyXTtcbn1cblxuLy8gVHJpbSBTVkcgcGF0aCBkYXRhIHNvIG51bWJlciBhcmUgZWFjaCB0d28gZGVjaW1hbCBwb2ludHMuIFRoaXNcbi8vIGltcHJvdmVzIFNWRyBleHBvcnRzLCBhbmQgcHJldmVudHMgcmVuZGVyaW5nIGVycm9ycyBvbiBwb2ludHNcbi8vIHdpdGggbG9uZyBkZWNpbWFscy5cbmNvbnN0IFRPX0ZJWEVEX1BSRUNJU0lPTiA9IC8oXFxzP1tBLVpdPyw/LT9bMC05XSpcXC5bMC05XXswLDJ9KSgoWzAtOV18ZXwtKSopL2c7XG5cbmZ1bmN0aW9uIGdldFN2Z1BhdGhGcm9tU3Ryb2tlKHBvaW50czogbnVtYmVyW11bXSk6IHN0cmluZyB7XG4gIGlmICghcG9pbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWF4ID0gcG9pbnRzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIHBvaW50c1xuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBwb2ludCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBtYXgpIHtcbiAgICAgICAgICBhY2MucHVzaChwb2ludCwgbWVkKHBvaW50LCBhcnJbMF0pLCBcIkxcIiwgYXJyWzBdLCBcIlpcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjLnB1c2gocG9pbnQsIG1lZChwb2ludCwgYXJyW2kgKyAxXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgW1wiTVwiLCBwb2ludHNbMF0sIFwiUVwiXSxcbiAgICApXG4gICAgLmpvaW4oXCIgXCIpXG4gICAgLnJlcGxhY2UoVE9fRklYRURfUFJFQ0lTSU9OLCBcIiQxXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\n");
3210
3199
 
3211
3200
  /***/ }),
3212
3201
 
@@ -3261,7 +3250,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3261
3250
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3262
3251
 
3263
3252
  "use strict";
3264
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SVG_EXPORT_TAG\": () => (/* binding */ SVG_EXPORT_TAG),\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, }, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return { canvas, scale: appState.exportScale };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const { canvas, scale = 1 } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const { imageCache } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elements).map((element) => element.fileId),\n files,\n });\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderScene)(elements, appState, null, scale, roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas), canvas, {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n remotePointerViewportCoords: {},\n remoteSelectedElementIds: {},\n shouldCacheIgnoreZoom: false,\n remotePointerUsernames: {},\n remotePointerUserStates: {},\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\",\n imageCache,\n renderScrollbars: false,\n renderSelection: false,\n renderGrid: false,\n isExporting: true,\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene, } = appState;\n let metadata = \"\";\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\"),\n });\n }\n catch (error) {\n console.error(error);\n }\n }\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n // initialize SVG root\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n let assetPath = \"https://excalidraw.com/\";\n // Asset path needs to be determined only when using package\n if (true) {\n assetPath =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.12.0-f1fd295\"}`;\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n }\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style>\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n </style>\n </defs>\n `;\n // render background rect\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\n offsetX: -minX + exportPadding,\n offsetY: -minY + exportPadding,\n exportWithDarkMode: appState.exportWithDarkMode,\n });\n return svgRoot;\n});\n// calculate smallest area to fit the contents in\nconst getCanvasSize = (elements, exportPadding) => {\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding + exportPadding;\n return [minX, minY, width, height];\n};\nconst getExportSize = (elements, exportPadding, scale) => {\n const [, , width, height] = getCanvasSize(elements, exportPadding).map((dimension) => Math.trunc(dimension * scale));\n return [width, height];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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azovLy8uLi8uLi9zY2VuZS9leHBvcnQudHM/OWJmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRzIH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyByZW5kZXJTY2VuZSwgcmVuZGVyU2NlbmVUb1N2ZyB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJTY2VuZVwiO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEFwcFN0YXRlLCBCaW5hcnlGaWxlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9FWFBPUlRfUEFERElORywgU1ZHX05TLCBUSEVNRV9GSUxURVIgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0QXBwU3RhdGUgfSBmcm9tIFwiLi4vYXBwU3RhdGVcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUFzSlNPTiB9IGZyb20gXCIuLi9kYXRhL2pzb25cIjtcbmltcG9ydCB7XG4gIGdldEluaXRpYWxpemVkSW1hZ2VFbGVtZW50cyxcbiAgdXBkYXRlSW1hZ2VDYWNoZSxcbn0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcblxuZXhwb3J0IGNvbnN0IFNWR19FWFBPUlRfVEFHID0gYDwhLS0gc3ZnLXNvdXJjZTpleGNhbGlkcmF3IC0tPmA7XG5cbmV4cG9ydCBjb25zdCBleHBvcnRUb0NhbnZhcyA9IGFzeW5jIChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4gIGZpbGVzOiBCaW5hcnlGaWxlcyxcbiAge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgfToge1xuICAgIGV4cG9ydEJhY2tncm91bmQ6IGJvb2xlYW47XG4gICAgZXhwb3J0UGFkZGluZz86IG51bWJlcjtcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIH0sXG4gIGNyZWF0ZUNhbnZhczogKFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICkgPT4geyBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50OyBzY2FsZTogbnVtYmVyIH0gPSAod2lkdGgsIGhlaWdodCkgPT4ge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gd2lkdGggKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogYXBwU3RhdGUuZXhwb3J0U2NhbGU7XG4gICAgcmV0dXJuIHsgY2FudmFzLCBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGUgfTtcbiAgfSxcbikgPT4ge1xuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICBjb25zdCB7IGNhbnZhcywgc2NhbGUgPSAxIH0gPSBjcmVhdGVDYW52YXMod2lkdGgsIGhlaWdodCk7XG5cbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG5cbiAgY29uc3QgeyBpbWFnZUNhY2hlIH0gPSBhd2FpdCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzKS5tYXAoXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5maWxlSWQsXG4gICAgKSxcbiAgICBmaWxlcyxcbiAgfSk7XG5cbiAgcmVuZGVyU2NlbmUoZWxlbWVudHMsIGFwcFN0YXRlLCBudWxsLCBzY2FsZSwgcm91Z2guY2FudmFzKGNhbnZhcyksIGNhbnZhcywge1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICBzY3JvbGxYOiAtbWluWCArIGV4cG9ydFBhZGRpbmcsXG4gICAgc2Nyb2xsWTogLW1pblkgKyBleHBvcnRQYWRkaW5nLFxuICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgIHJlbW90ZVBvaW50ZXJWaWV3cG9ydENvb3Jkczoge30sXG4gICAgcmVtb3RlU2VsZWN0ZWRFbGVtZW50SWRzOiB7fSxcbiAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgIHJlbW90ZVBvaW50ZXJVc2VybmFtZXM6IHt9LFxuICAgIHJlbW90ZVBvaW50ZXJVc2VyU3RhdGVzOiB7fSxcbiAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgaW1hZ2VDYWNoZSxcbiAgICByZW5kZXJTY3JvbGxiYXJzOiBmYWxzZSxcbiAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgIHJlbmRlckdyaWQ6IGZhbHNlLFxuICAgIGlzRXhwb3J0aW5nOiB0cnVlLFxuICB9KTtcblxuICByZXR1cm4gY2FudmFzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIGV4cG9ydFNjYWxlPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBleHBvcnRXaXRoRGFya01vZGU/OiBib29sZWFuO1xuICAgIGV4cG9ydEVtYmVkU2NlbmU/OiBib29sZWFuO1xuICB9LFxuICBmaWxlczogQmluYXJ5RmlsZXMgfCBudWxsLFxuKTogUHJvbWlzZTxTVkdTVkdFbGVtZW50PiA9PiB7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lLFxuICB9ID0gYXBwU3RhdGU7XG4gIGxldCBtZXRhZGF0YSA9IFwiXCI7XG4gIGlmIChleHBvcnRFbWJlZFNjZW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1ldGFkYXRhID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIilcbiAgICAgICkuZW5jb2RlU3ZnTWV0YWRhdGEoe1xuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICAvLyBpbml0aWFsaXplIFNWRyByb290XG4gIGNvbnN0IHN2Z1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInN2Z1wiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInhtbG5zXCIsIFNWR19OUyk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmlld0JveFwiLCBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodCAqIGV4cG9ydFNjYWxlfWApO1xuICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7XG5cbiAgLy8gQXNzZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkIG9ubHkgd2hlbiB1c2luZyBwYWNrYWdlXG4gIGlmIChwcm9jZXNzLmVudi5JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID1cbiAgICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICAgIGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlBLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoPy5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgIH1cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlPlxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlZpcmdpbFwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofVZpcmdpbC53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJDYXNjYWRpYVwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofUNhc2NhZGlhLndvZmYyXCIpO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvZGVmcz5cbiAgYDtcbiAgLy8gcmVuZGVyIGJhY2tncm91bmQgcmVjdFxuICBpZiAoYXBwU3RhdGUuZXhwb3J0QmFja2dyb3VuZCAmJiB2aWV3QmFja2dyb3VuZENvbG9yKSB7XG4gICAgY29uc3QgcmVjdCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudCEuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHMsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WDogLW1pblggKyBleHBvcnRQYWRkaW5nLFxuICAgIG9mZnNldFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICBleHBvcnRXaXRoRGFya01vZGU6IGFwcFN0YXRlLmV4cG9ydFdpdGhEYXJrTW9kZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59O1xuXG4vLyBjYWxjdWxhdGUgc21hbGxlc3QgYXJlYSB0byBmaXQgdGhlIGNvbnRlbnRzIGluXG5jb25zdCBnZXRDYW52YXNTaXplID0gKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGV4cG9ydFBhZGRpbmc6IG51bWJlcixcbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcbiAgY29uc3Qgd2lkdGggPSBkaXN0YW5jZShtaW5YLCBtYXhYKSArIGV4cG9ydFBhZGRpbmcgKiAyO1xuICBjb25zdCBoZWlnaHQgPSBkaXN0YW5jZShtaW5ZLCBtYXhZKSArIGV4cG9ydFBhZGRpbmcgKyBleHBvcnRQYWRkaW5nO1xuXG4gIHJldHVybiBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXhwb3J0U2l6ZSA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBleHBvcnRQYWRkaW5nOiBudW1iZXIsXG4gIHNjYWxlOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgY29uc3QgWywgLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpLm1hcChcbiAgICAoZGltZW5zaW9uKSA9PiBNYXRoLnRydW5jKGRpbWVuc2lvbiAqIHNjYWxlKSxcbiAgKTtcblxuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
3253
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SVG_EXPORT_TAG\": () => (/* binding */ SVG_EXPORT_TAG),\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, }, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return { canvas, scale: appState.exportScale };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const { canvas, scale = 1 } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const { imageCache } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elements).map((element) => element.fileId),\n files,\n });\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderScene)(elements, appState, null, scale, roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas), canvas, {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n remotePointerViewportCoords: {},\n remoteSelectedElementIds: {},\n shouldCacheIgnoreZoom: false,\n remotePointerUsernames: {},\n remotePointerUserStates: {},\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\",\n imageCache,\n renderScrollbars: false,\n renderSelection: false,\n renderGrid: false,\n isExporting: true,\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene, } = appState;\n let metadata = \"\";\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\"),\n });\n }\n catch (error) {\n console.error(error);\n }\n }\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n // initialize SVG root\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n let assetPath = \"https://excalidraw.com/\";\n // Asset path needs to be determined only when using package\n if (true) {\n assetPath =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.12.0-f8b4bb6\"}`;\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n }\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style>\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n </style>\n </defs>\n `;\n // render background rect\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\n offsetX: -minX + exportPadding,\n offsetY: -minY + exportPadding,\n exportWithDarkMode: appState.exportWithDarkMode,\n });\n return svgRoot;\n});\n// calculate smallest area to fit the contents in\nconst getCanvasSize = (elements, exportPadding) => {\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding + exportPadding;\n return [minX, minY, width, height];\n};\nconst getExportSize = (elements, exportPadding, scale) => {\n const [, , width, height] = getCanvasSize(elements, exportPadding).map((dimension) => Math.trunc(dimension * scale));\n return [width, height];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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azovLy8uLi8uLi9zY2VuZS9leHBvcnQudHM/OWJmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRzIH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyByZW5kZXJTY2VuZSwgcmVuZGVyU2NlbmVUb1N2ZyB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJTY2VuZVwiO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IEFwcFN0YXRlLCBCaW5hcnlGaWxlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgREVGQVVMVF9FWFBPUlRfUEFERElORywgU1ZHX05TLCBUSEVNRV9GSUxURVIgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0QXBwU3RhdGUgfSBmcm9tIFwiLi4vYXBwU3RhdGVcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUFzSlNPTiB9IGZyb20gXCIuLi9kYXRhL2pzb25cIjtcbmltcG9ydCB7XG4gIGdldEluaXRpYWxpemVkSW1hZ2VFbGVtZW50cyxcbiAgdXBkYXRlSW1hZ2VDYWNoZSxcbn0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcblxuZXhwb3J0IGNvbnN0IFNWR19FWFBPUlRfVEFHID0gYDwhLS0gc3ZnLXNvdXJjZTpleGNhbGlkcmF3IC0tPmA7XG5cbmV4cG9ydCBjb25zdCBleHBvcnRUb0NhbnZhcyA9IGFzeW5jIChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4gIGZpbGVzOiBCaW5hcnlGaWxlcyxcbiAge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgZXhwb3J0UGFkZGluZyA9IERFRkFVTFRfRVhQT1JUX1BBRERJTkcsXG4gICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgfToge1xuICAgIGV4cG9ydEJhY2tncm91bmQ6IGJvb2xlYW47XG4gICAgZXhwb3J0UGFkZGluZz86IG51bWJlcjtcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIH0sXG4gIGNyZWF0ZUNhbnZhczogKFxuICAgIHdpZHRoOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICkgPT4geyBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50OyBzY2FsZTogbnVtYmVyIH0gPSAod2lkdGgsIGhlaWdodCkgPT4ge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gd2lkdGggKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogYXBwU3RhdGUuZXhwb3J0U2NhbGU7XG4gICAgcmV0dXJuIHsgY2FudmFzLCBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGUgfTtcbiAgfSxcbikgPT4ge1xuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICBjb25zdCB7IGNhbnZhcywgc2NhbGUgPSAxIH0gPSBjcmVhdGVDYW52YXMod2lkdGgsIGhlaWdodCk7XG5cbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG5cbiAgY29uc3QgeyBpbWFnZUNhY2hlIH0gPSBhd2FpdCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzKS5tYXAoXG4gICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5maWxlSWQsXG4gICAgKSxcbiAgICBmaWxlcyxcbiAgfSk7XG5cbiAgcmVuZGVyU2NlbmUoZWxlbWVudHMsIGFwcFN0YXRlLCBudWxsLCBzY2FsZSwgcm91Z2guY2FudmFzKGNhbnZhcyksIGNhbnZhcywge1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICBzY3JvbGxYOiAtbWluWCArIGV4cG9ydFBhZGRpbmcsXG4gICAgc2Nyb2xsWTogLW1pblkgKyBleHBvcnRQYWRkaW5nLFxuICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgIHJlbW90ZVBvaW50ZXJWaWV3cG9ydENvb3Jkczoge30sXG4gICAgcmVtb3RlU2VsZWN0ZWRFbGVtZW50SWRzOiB7fSxcbiAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgIHJlbW90ZVBvaW50ZXJVc2VybmFtZXM6IHt9LFxuICAgIHJlbW90ZVBvaW50ZXJVc2VyU3RhdGVzOiB7fSxcbiAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgaW1hZ2VDYWNoZSxcbiAgICByZW5kZXJTY3JvbGxiYXJzOiBmYWxzZSxcbiAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgIHJlbmRlckdyaWQ6IGZhbHNlLFxuICAgIGlzRXhwb3J0aW5nOiB0cnVlLFxuICB9KTtcblxuICByZXR1cm4gY2FudmFzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIGV4cG9ydFNjYWxlPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBleHBvcnRXaXRoRGFya01vZGU/OiBib29sZWFuO1xuICAgIGV4cG9ydEVtYmVkU2NlbmU/OiBib29sZWFuO1xuICB9LFxuICBmaWxlczogQmluYXJ5RmlsZXMgfCBudWxsLFxuKTogUHJvbWlzZTxTVkdTVkdFbGVtZW50PiA9PiB7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lLFxuICB9ID0gYXBwU3RhdGU7XG4gIGxldCBtZXRhZGF0YSA9IFwiXCI7XG4gIGlmIChleHBvcnRFbWJlZFNjZW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1ldGFkYXRhID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIilcbiAgICAgICkuZW5jb2RlU3ZnTWV0YWRhdGEoe1xuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICAvLyBpbml0aWFsaXplIFNWRyByb290XG4gIGNvbnN0IHN2Z1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInN2Z1wiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInhtbG5zXCIsIFNWR19OUyk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmlld0JveFwiLCBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodCAqIGV4cG9ydFNjYWxlfWApO1xuICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7XG5cbiAgLy8gQXNzZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkIG9ubHkgd2hlbiB1c2luZyBwYWNrYWdlXG4gIGlmIChwcm9jZXNzLmVudi5JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID1cbiAgICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICAgIGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlBLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoPy5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgIH1cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlPlxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlZpcmdpbFwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofVZpcmdpbC53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJDYXNjYWRpYVwiO1xuICAgICAgICBzcmM6IHVybChcIiR7YXNzZXRQYXRofUNhc2NhZGlhLndvZmYyXCIpO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvZGVmcz5cbiAgYDtcbiAgLy8gcmVuZGVyIGJhY2tncm91bmQgcmVjdFxuICBpZiAoYXBwU3RhdGUuZXhwb3J0QmFja2dyb3VuZCAmJiB2aWV3QmFja2dyb3VuZENvbG9yKSB7XG4gICAgY29uc3QgcmVjdCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudCEuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHMsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WDogLW1pblggKyBleHBvcnRQYWRkaW5nLFxuICAgIG9mZnNldFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICBleHBvcnRXaXRoRGFya01vZGU6IGFwcFN0YXRlLmV4cG9ydFdpdGhEYXJrTW9kZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59O1xuXG4vLyBjYWxjdWxhdGUgc21hbGxlc3QgYXJlYSB0byBmaXQgdGhlIGNvbnRlbnRzIGluXG5jb25zdCBnZXRDYW52YXNTaXplID0gKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGV4cG9ydFBhZGRpbmc6IG51bWJlcixcbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcbiAgY29uc3Qgd2lkdGggPSBkaXN0YW5jZShtaW5YLCBtYXhYKSArIGV4cG9ydFBhZGRpbmcgKiAyO1xuICBjb25zdCBoZWlnaHQgPSBkaXN0YW5jZShtaW5ZLCBtYXhZKSArIGV4cG9ydFBhZGRpbmcgKyBleHBvcnRQYWRkaW5nO1xuXG4gIHJldHVybiBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXhwb3J0U2l6ZSA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBleHBvcnRQYWRkaW5nOiBudW1iZXIsXG4gIHNjYWxlOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgY29uc3QgWywgLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpLm1hcChcbiAgICAoZGltZW5zaW9uKSA9PiBNYXRoLnRydW5jKGRpbWVuc2lvbiAqIHNjYWxlKSxcbiAgKTtcblxuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
3265
3254
 
3266
3255
  /***/ }),
3267
3256
 
@@ -3349,7 +3338,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3349
3338
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3350
3339
 
3351
3340
  "use strict";
3352
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"allowFullScreen\": () => (/* binding */ allowFullScreen),\n/* harmony export */ \"arrayToMap\": () => (/* binding */ arrayToMap),\n/* harmony export */ \"bytesToHexString\": () => (/* binding */ bytesToHexString),\n/* harmony export */ \"capitalizeString\": () => (/* binding */ capitalizeString),\n/* harmony export */ \"chunk\": () => (/* binding */ chunk),\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"distance\": () => (/* binding */ distance),\n/* harmony export */ \"exitFullScreen\": () => (/* binding */ exitFullScreen),\n/* harmony export */ \"findIndex\": () => (/* binding */ findIndex),\n/* harmony export */ \"findLastIndex\": () => (/* binding */ findLastIndex),\n/* harmony export */ \"focusNearestParent\": () => (/* binding */ focusNearestParent),\n/* harmony export */ \"getDateTime\": () => (/* binding */ getDateTime),\n/* harmony export */ \"getFontFamilyString\": () => (/* binding */ getFontFamilyString),\n/* harmony export */ \"getFontString\": () => (/* binding */ getFontString),\n/* harmony export */ \"getFrame\": () => (/* binding */ getFrame),\n/* harmony export */ \"getGlobalCSSVariable\": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */ \"getNearestScrollableContainer\": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */ \"getShortcutKey\": () => (/* binding */ getShortcutKey),\n/* harmony export */ \"getUpdatedTimestamp\": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */ \"getVersion\": () => (/* binding */ getVersion),\n/* harmony export */ \"isFullScreen\": () => (/* binding */ isFullScreen),\n/* harmony export */ \"isInputLike\": () => (/* binding */ isInputLike),\n/* harmony export */ \"isPrimitive\": () => (/* binding */ isPrimitive),\n/* harmony export */ \"isProdEnv\": () => (/* binding */ isProdEnv),\n/* harmony export */ \"isPromiseLike\": () => (/* binding */ isPromiseLike),\n/* harmony export */ \"isRTL\": () => (/* binding */ isRTL),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isToolIcon\": () => (/* binding */ isToolIcon),\n/* harmony export */ \"isTransparent\": () => (/* binding */ isTransparent),\n/* harmony export */ \"isWritableElement\": () => (/* binding */ isWritableElement),\n/* harmony export */ \"muteFSAbortError\": () => (/* binding */ muteFSAbortError),\n/* harmony export */ \"nFormatter\": () => (/* binding */ nFormatter),\n/* harmony export */ \"preventUnload\": () => (/* binding */ preventUnload),\n/* harmony export */ \"queryFocusableElements\": () => (/* binding */ queryFocusableElements),\n/* harmony export */ \"removeSelection\": () => (/* binding */ removeSelection),\n/* harmony export */ \"resetCursor\": () => (/* binding */ resetCursor),\n/* harmony export */ \"resolvablePromise\": () => (/* binding */ resolvablePromise),\n/* harmony export */ \"sceneCoordsToViewportCoords\": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */ \"selectNode\": () => (/* binding */ selectNode),\n/* harmony export */ \"setCursor\": () => (/* binding */ setCursor),\n/* harmony export */ \"setCursorForShape\": () => (/* binding */ setCursorForShape),\n/* harmony export */ \"setDateTimeForTests\": () => (/* binding */ setDateTimeForTests),\n/* harmony export */ \"setEraserCursor\": () => (/* binding */ setEraserCursor),\n/* harmony export */ \"supportsEmoji\": () => (/* binding */ supportsEmoji),\n/* harmony export */ \"throttleRAF\": () => (/* binding */ throttleRAF),\n/* harmony export */ \"tupleToCoors\": () => (/* binding */ tupleToCoors),\n/* harmony export */ \"updateActiveTool\": () => (/* binding */ updateActiveTool),\n/* harmony export */ \"updateObject\": () => (/* binding */ updateObject),\n/* harmony export */ \"viewportCoordsToSceneCoords\": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */ \"withBatchedUpdates\": () => (/* binding */ withBatchedUpdates),\n/* harmony export */ \"withBatchedUpdatesThrottled\": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */ \"wrapEvent\": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ \"../../colors.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./keys */ \"../../keys.ts\");\n\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = (dateTime) => {\n mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n if (mockDateTime) {\n return mockDateTime;\n }\n const date = new Date();\n const year = date.getFullYear();\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const hr = `${date.getHours()}`.padStart(2, \"0\");\n const min = `${date.getMinutes()}`.padStart(2, \"0\");\n return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = (target) => target instanceof HTMLElement && target.className.includes(\"ToolIcon\");\nconst isInputLike = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement;\nconst isWritableElement = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLTextAreaElement ||\n (target instanceof HTMLInputElement &&\n (target.type === \"text\" || target.type === \"number\"));\nconst getFontFamilyString = ({ fontFamily, }) => {\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY)) {\n if (id === fontFamily) {\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n }\n }\n return _constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\nconst getFontString = ({ fontSize, fontFamily, }) => {\n return `${fontSize}px ${getFontFamilyString({ fontFamily })}`;\n};\nconst debounce = (fn, timeout) => {\n let handle = 0;\n let lastArgs = null;\n const ret = (...args) => {\n lastArgs = args;\n clearTimeout(handle);\n handle = window.setTimeout(() => {\n lastArgs = null;\n fn(...args);\n }, timeout);\n };\n ret.flush = () => {\n clearTimeout(handle);\n if (lastArgs) {\n const _lastArgs = lastArgs;\n lastArgs = null;\n fn(..._lastArgs);\n }\n };\n ret.cancel = () => {\n lastArgs = null;\n clearTimeout(handle);\n };\n return ret;\n};\n// throttle callback to execute once per animation frame\nconst throttleRAF = (fn, opts) => {\n let timerId = null;\n let lastArgs = null;\n let lastArgsTrailing = null;\n const scheduleFunc = (args) => {\n timerId = window.requestAnimationFrame(() => {\n timerId = null;\n fn(...args);\n lastArgs = null;\n if (lastArgsTrailing) {\n lastArgs = lastArgsTrailing;\n lastArgsTrailing = null;\n scheduleFunc(lastArgs);\n }\n });\n };\n const ret = (...args) => {\n if (false) {}\n lastArgs = args;\n if (timerId === null) {\n scheduleFunc(lastArgs);\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n lastArgsTrailing = args;\n }\n };\n ret.flush = () => {\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n if (lastArgs) {\n fn(...(lastArgsTrailing || lastArgs));\n lastArgs = lastArgsTrailing = null;\n }\n };\n ret.cancel = () => {\n lastArgs = lastArgsTrailing = null;\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n };\n return ret;\n};\n// https://github.com/lodash/lodash/blob/es/chunk.js\nconst chunk = (array, size) => {\n if (!array.length || size < 1) {\n return [];\n }\n let index = 0;\n let resIndex = 0;\n const result = Array(Math.ceil(array.length / size));\n while (index < array.length) {\n result[resIndex++] = array.slice(index, (index += size));\n }\n return result;\n};\nconst selectNode = (node) => {\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n};\nconst removeSelection = () => {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n if (data.type === \"custom\") {\n return Object.assign(Object.assign({}, appState.activeTool), { type: \"custom\", customType: data.customType });\n }\n return Object.assign(Object.assign({}, appState.activeTool), { lastActiveToolBeforeEraser: data.lastActiveToolBeforeEraser === undefined\n ? appState.activeTool.lastActiveToolBeforeEraser\n : data.lastActiveToolBeforeEraser, type: data.type, customType: null });\n};\nconst resetCursor = (canvas) => {\n if (canvas) {\n canvas.style.cursor = \"\";\n }\n};\nconst setCursor = (canvas, cursor) => {\n if (canvas) {\n canvas.style.cursor = cursor;\n }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (canvas, theme) => {\n const cursorImageSizePx = 20;\n const drawCanvas = () => {\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_2__.THEME.DARK;\n eraserCanvasCache = document.createElement(\"canvas\");\n eraserCanvasCache.theme = theme;\n eraserCanvasCache.height = cursorImageSizePx;\n eraserCanvasCache.width = cursorImageSizePx;\n const context = eraserCanvasCache.getContext(\"2d\");\n context.lineWidth = 1;\n context.beginPath();\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.black : open_color__WEBPACK_IMPORTED_MODULE_0__.white;\n context.fill();\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.white : open_color__WEBPACK_IMPORTED_MODULE_0__.black;\n context.stroke();\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.svg);\n };\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n drawCanvas();\n }\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (canvas, appState) => {\n if (!canvas) {\n return;\n }\n if (appState.activeTool.type === \"selection\") {\n resetCursor(canvas);\n }\n else if (appState.activeTool.type === \"eraser\") {\n setEraserCursor(canvas, appState.theme);\n // do nothing if image tool is selected which suggests there's\n // a image-preview set as the cursor\n // Ignore custom type as well and let host decide\n }\n else if (![\"image\", \"custom\"].includes(appState.activeTool.type)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.CROSSHAIR;\n }\n};\nconst isFullScreen = () => { var _a; return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \"HTML\"; };\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = (shortcut) => {\n shortcut = shortcut\n .replace(/\\bAlt\\b/i, \"Alt\")\n .replace(/\\bShift\\b/i, \"Shift\")\n .replace(/\\b(Enter|Return)\\b/i, \"Enter\")\n .replace(/\\bDel\\b/i, \"Delete\");\n if (_keys__WEBPACK_IMPORTED_MODULE_4__.isDarwin) {\n return shortcut\n .replace(/\\bCtrlOrCmd\\b/i, \"Cmd\")\n .replace(/\\bAlt\\b/i, \"Option\");\n }\n return shortcut.replace(/\\bCtrlOrCmd\\b/i, \"Ctrl\");\n};\nconst viewportCoordsToSceneCoords = ({ clientX, clientY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const invScale = 1 / zoom.value;\n const x = (clientX - offsetLeft) * invScale - scrollX;\n const y = (clientY - offsetTop) * invScale - scrollY;\n return { x, y };\n};\nconst sceneCoordsToViewportCoords = ({ sceneX, sceneY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\n return { x, y };\n};\nconst getGlobalCSSVariable = (name) => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = \"A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\" +\n \"\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF\";\nconst RS_RTL_CHARS = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\n * RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\nconst isRTL = (text) => RE_RTL_CHECK.test(text);\nconst tupleToCoors = (xyTuple) => {\n const [x, y] = xyTuple;\n return { x, y };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\nconst muteFSAbortError = (error) => {\n if ((error === null || error === void 0 ? void 0 : error.name) === \"AbortError\") {\n console.warn(error);\n return;\n }\n throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n let index = fromIndex - 1;\n while (++index < array.length) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n let index = fromIndex + 1;\n while (--index > -1) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst isTransparent = (color) => {\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \"0\";\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \"00\";\n return (isRGBTransparent ||\n isRRGGBBTransparent ||\n color === _colors__WEBPACK_IMPORTED_MODULE_1__[\"default\"].elementBackground[0]);\n};\nconst resolvablePromise = () => {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n promise.resolve = resolve;\n promise.reject = reject;\n return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\nconst withBatchedUpdates = (func) => ((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n});\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\nconst withBatchedUpdatesThrottled = (func) => {\n // @ts-ignore\n return throttleRAF(((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n }));\n};\n//https://stackoverflow.com/a/9462382/8418\nconst nFormatter = (num, digits) => {\n const si = [\n { value: 1, symbol: \"b\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"M\" },\n { value: 1e9, symbol: \"G\" },\n ];\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n let index;\n for (index = si.length - 1; index > 0; index--) {\n if (num >= si[index].value) {\n break;\n }\n }\n return ((num / si[index].value).toFixed(digits).replace(rx, \"$1\") + si[index].symbol);\n};\nconst getVersion = () => {\n var _a;\n return (((_a = document.querySelector('meta[name=\"version\"]')) === null || _a === void 0 ? void 0 : _a.content) ||\n _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_VERSION);\n};\n// Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\nconst supportsEmoji = () => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return false;\n }\n const offset = 12;\n ctx.fillStyle = \"#f00\";\n ctx.textBaseline = \"top\";\n ctx.font = \"32px Arial\";\n // Modernizr used 🐨, but it is sort of supported on Windows 7.\n // Luckily 😀 isn't supported.\n ctx.fillText(\"😀\", 0, 0);\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent === document.body) {\n return document;\n }\n const { overflowY } = window.getComputedStyle(parent);\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n if (hasScrollableContent &&\n (overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"overlay\")) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return document;\n};\nconst focusNearestParent = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent.tabIndex > -1) {\n parent.focus();\n return;\n }\n parent = parent.parentElement;\n }\n};\nconst preventUnload = (event) => {\n event.preventDefault();\n // NOTE: modern browsers no longer allow showing a custom message here\n event.returnValue = \"\";\n};\nconst bytesToHexString = (bytes) => {\n return Array.from(bytes)\n .map((byte) => `0${byte.toString(16)}`.slice(-2))\n .join(\"\");\n};\nconst getUpdatedTimestamp = () => (isTestEnv() ? 1 : Date.now());\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\nconst arrayToMap = (items) => {\n return items.reduce((acc, element) => {\n acc.set(typeof element === \"string\" ? element : element.id, element);\n return acc;\n }, new Map());\n};\nconst isTestEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f1fd295\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"test\"; };\nconst isProdEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f1fd295\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"production\"; };\nconst wrapEvent = (name, nativeEvent) => {\n return new CustomEvent(name, {\n detail: {\n nativeEvent,\n },\n cancelable: true,\n });\n};\nconst updateObject = (obj, updates) => {\n let didChange = false;\n for (const key in updates) {\n const value = updates[key];\n if (typeof value !== \"undefined\") {\n if (obj[key] === value &&\n // if object, always update because its attrs could have changed\n (typeof value !== \"object\" || value === null)) {\n continue;\n }\n didChange = true;\n }\n }\n if (!didChange) {\n return obj;\n }\n return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = (val) => {\n const type = typeof val;\n return val == null || (type !== \"object\" && type !== \"function\");\n};\nconst getFrame = () => {\n try {\n return window.self === window.top ? \"top\" : \"iframe\";\n }\n catch (error) {\n return \"iframe\";\n }\n};\nconst isPromiseLike = (value) => {\n return (!!value &&\n typeof value === \"object\" &&\n \"then\" in value &&\n \"catch\" in value &&\n \"finally\" in value);\n};\nconst queryFocusableElements = (container) => {\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\"button, a, input, select, textarea, div[tabindex], label[tabindex]\");\n return focusableElements\n ? Array.from(focusableElements).filter((element) => element.tabIndex > -1 && !element.disabled)\n : [];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFFBQVEsSUFBSSxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDO0FBRUssTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLElBQUk7UUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7S0FDdEQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSxhQUFhLEdBQUcsQ0FDM0IsS0FBVSxFQUNzQyxFQUFFO0lBQ2xELE9BQU8sQ0FDTCxDQUFDLENBQUMsS0FBSztRQUNQLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsTUFBTSxJQUFJLEtBQUs7UUFDZixPQUFPLElBQUksS0FBSztRQUNoQixTQUFTLElBQUksS0FBSyxDQUNuQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUssTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFNBQTZCLEVBQUUsRUFBRTtJQUN0RSxNQUFNLGlCQUFpQixHQUFHLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxnQkFBZ0IsQ0FDbkQsb0VBQW9FLENBQ3JFLENBQUM7SUFFRixPQUFPLGlCQUFpQjtRQUN0QixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBRSxPQUE0QixDQUFDLFFBQVEsQ0FDbkU7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ1QsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3V0aWxzLnRzPzc2M2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcIi4vY29sb3JzXCI7XG5pbXBvcnQge1xuICBDVVJTT1JfVFlQRSxcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBFVkVOVCxcbiAgRk9OVF9GQU1JTFksXG4gIE1JTUVfVFlQRVMsXG4gIFRIRU1FLFxuICBXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlQsXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRm9udEZhbWlseVZhbHVlcywgRm9udFN0cmluZyB9IGZyb20gXCIuL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IEFwcFN0YXRlLCBEYXRhVVJMLCBMYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciwgWm9vbSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4va2V5c1wiO1xuaW1wb3J0IHsgU0hBUEVTIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5cbmxldCBtb2NrRGF0ZVRpbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgY29uc3Qgc2V0RGF0ZVRpbWVGb3JUZXN0cyA9IChkYXRlVGltZTogc3RyaW5nKSA9PiB7XG4gIG1vY2tEYXRlVGltZSA9IGRhdGVUaW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGVUaW1lID0gKCkgPT4ge1xuICBpZiAobW9ja0RhdGVUaW1lKSB7XG4gICAgcmV0dXJuIG1vY2tEYXRlVGltZTtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGAke2RhdGUuZ2V0TW9udGgoKSArIDF9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGRheSA9IGAke2RhdGUuZ2V0RGF0ZSgpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBociA9IGAke2RhdGUuZ2V0SG91cnMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgbWluID0gYCR7ZGF0ZS5nZXRNaW51dGVzKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG5cbiAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fS0ke2hyfSR7bWlufWA7XG59O1xuXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZVN0cmluZyA9IChzdHI6IHN0cmluZykgPT5cbiAgc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xuXG5leHBvcnQgY29uc3QgaXNUb29sSWNvbiA9IChcbiAgdGFyZ2V0OiBFbGVtZW50IHwgRXZlbnRUYXJnZXQgfCBudWxsLFxuKTogdGFyZ2V0IGlzIEhUTUxFbGVtZW50ID0+XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoXCJUb29sSWNvblwiKTtcblxuZXhwb3J0IGNvbnN0IGlzSW5wdXRMaWtlID0gKFxuICB0YXJnZXQ6IEVsZW1lbnQgfCBFdmVudFRhcmdldCB8IG51bGwsXG4pOiB0YXJnZXQgaXNcbiAgfCBIVE1MSW5wdXRFbGVtZW50XG4gIHwgSFRNTFRleHRBcmVhRWxlbWVudFxuICB8IEhUTUxTZWxlY3RFbGVtZW50XG4gIHwgSFRNTEJSRWxlbWVudFxuICB8IEhUTUxEaXZFbGVtZW50ID0+XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuZGF0YXNldC50eXBlID09PSBcInd5c2l3eWdcIikgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50O1xuXG5leHBvcnQgY29uc3QgaXNXcml0YWJsZUVsZW1lbnQgPSAoXG4gIHRhcmdldDogRWxlbWVudCB8IEV2ZW50VGFyZ2V0IHwgbnVsbCxcbik6IHRhcmdldCBpc1xuICB8IEhUTUxJbnB1dEVsZW1lbnRcbiAgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gIHwgSFRNTEJSRWxlbWVudFxuICB8IEhUTUxEaXZFbGVtZW50ID0+XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuZGF0YXNldC50eXBlID09PSBcInd5c2l3eWdcIikgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCB8fFxuICAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICh0YXJnZXQudHlwZSA9PT0gXCJ0ZXh0XCIgfHwgdGFyZ2V0LnR5cGUgPT09IFwibnVtYmVyXCIpKTtcblxuZXhwb3J0IGNvbnN0IGdldEZvbnRGYW1pbHlTdHJpbmcgPSAoe1xuICBmb250RmFtaWx5LFxufToge1xuICBmb250RmFtaWx5OiBGb250RmFtaWx5VmFsdWVzO1xufSkgPT4ge1xuICBmb3IgKGNvbnN0IFtmb250RmFtaWx5U3RyaW5nLCBpZF0gb2YgT2JqZWN0LmVudHJpZXMoRk9OVF9GQU1JTFkpKSB7XG4gICAgaWYgKGlkID09PSBmb250RmFtaWx5KSB7XG4gICAgICByZXR1cm4gYCR7Zm9udEZhbWlseVN0cmluZ30sICR7V0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UfWA7XG4gICAgfVxuICB9XG4gIHJldHVybiBXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlQ7XG59O1xuXG4vKiogcmV0dXJucyBmb250U2l6ZStmb250RmFtaWx5IHN0cmluZyBmb3IgYXNzaWdubWVudCB0byBET00gZWxlbWVudHMgKi9cbmV4cG9ydCBjb25zdCBnZXRGb250U3RyaW5nID0gKHtcbiAgZm9udFNpemUsXG4gIGZvbnRGYW1pbHksXG59OiB7XG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIGZvbnRGYW1pbHk6IEZvbnRGYW1pbHlWYWx1ZXM7XG59KSA9PiB7XG4gIHJldHVybiBgJHtmb250U2l6ZX1weCAke2dldEZvbnRGYW1pbHlTdHJpbmcoeyBmb250RmFtaWx5IH0pfWAgYXMgRm9udFN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IDxUIGV4dGVuZHMgYW55W10+KFxuICBmbjogKC4uLmFyZ3M6IFQpID0+IHZvaWQsXG4gIHRpbWVvdXQ6IG51bWJlcixcbikgPT4ge1xuICBsZXQgaGFuZGxlID0gMDtcbiAgbGV0IGxhc3RBcmdzOiBUIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0IHJldCA9ICguLi5hcmdzOiBUKSA9PiB7XG4gICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICAgIGhhbmRsZSA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgIH0sIHRpbWVvdXQpO1xuICB9O1xuICByZXQuZmx1c2ggPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgaWYgKGxhc3RBcmdzKSB7XG4gICAgICBjb25zdCBfbGFzdEFyZ3MgPSBsYXN0QXJncztcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGZuKC4uLl9sYXN0QXJncyk7XG4gICAgfVxuICB9O1xuICByZXQuY2FuY2VsID0gKCkgPT4ge1xuICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbi8vIHRocm90dGxlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgb25jZSBwZXIgYW5pbWF0aW9uIGZyYW1lXG5leHBvcnQgY29uc3QgdGhyb3R0bGVSQUYgPSA8VCBleHRlbmRzIGFueVtdPihcbiAgZm46ICguLi5hcmdzOiBUKSA9PiB2b2lkLFxuICBvcHRzPzogeyB0cmFpbGluZz86IGJvb2xlYW4gfSxcbikgPT4ge1xuICBsZXQgdGltZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGxldCBsYXN0QXJnczogVCB8IG51bGwgPSBudWxsO1xuICBsZXQgbGFzdEFyZ3NUcmFpbGluZzogVCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IHNjaGVkdWxlRnVuYyA9IChhcmdzOiBUKSA9PiB7XG4gICAgdGltZXJJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGlmIChsYXN0QXJnc1RyYWlsaW5nKSB7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZztcbiAgICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmV0ID0gKC4uLmFyZ3M6IFQpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgIGlmICh0aW1lcklkID09PSBudWxsKSB7XG4gICAgICBzY2hlZHVsZUZ1bmMobGFzdEFyZ3MpO1xuICAgIH0gZWxzZSBpZiAob3B0cz8udHJhaWxpbmcpIHtcbiAgICAgIGxhc3RBcmdzVHJhaWxpbmcgPSBhcmdzO1xuICAgIH1cbiAgfTtcbiAgcmV0LmZsdXNoID0gKCkgPT4ge1xuICAgIGlmICh0aW1lcklkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGZuKC4uLihsYXN0QXJnc1RyYWlsaW5nIHx8IGxhc3RBcmdzKSk7XG4gICAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgcmV0LmNhbmNlbCA9ICgpID0+IHtcbiAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuICAgIGlmICh0aW1lcklkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvZXMvY2h1bmsuanNcbmV4cG9ydCBjb25zdCBjaHVuayA9IDxUIGV4dGVuZHMgYW55PihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgc2l6ZTogbnVtYmVyLFxuKTogVFtdW10gPT4ge1xuICBpZiAoIWFycmF5Lmxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgcmVzSW5kZXggPSAwO1xuICBjb25zdCByZXN1bHQgPSBBcnJheShNYXRoLmNlaWwoYXJyYXkubGVuZ3RoIC8gc2l6ZSkpO1xuICB3aGlsZSAoaW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBhcnJheS5zbGljZShpbmRleCwgKGluZGV4ICs9IHNpemUpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdE5vZGUgPSAobm9kZTogRWxlbWVudCkgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmIChzZWxlY3Rpb24pIHtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmIChzZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkaXN0YW5jZSA9ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gTWF0aC5hYnMoeCAtIHkpO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQWN0aXZlVG9vbCA9IChcbiAgYXBwU3RhdGU6IFBpY2s8QXBwU3RhdGUsIFwiYWN0aXZlVG9vbFwiPixcbiAgZGF0YTogKFxuICAgIHwgeyB0eXBlOiB0eXBlb2YgU0hBUEVTW251bWJlcl1bXCJ2YWx1ZVwiXSB8IFwiZXJhc2VyXCIgfVxuICAgIHwgeyB0eXBlOiBcImN1c3RvbVwiOyBjdXN0b21UeXBlOiBzdHJpbmcgfVxuICApICYgeyBsYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcj86IExhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyIH0sXG4pOiBBcHBTdGF0ZVtcImFjdGl2ZVRvb2xcIl0gPT4ge1xuICBpZiAoZGF0YS50eXBlID09PSBcImN1c3RvbVwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFwcFN0YXRlLmFjdGl2ZVRvb2wsXG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgY3VzdG9tVHlwZTogZGF0YS5jdXN0b21UeXBlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmFwcFN0YXRlLmFjdGl2ZVRvb2wsXG4gICAgbGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXI6XG4gICAgICBkYXRhLmxhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBhcHBTdGF0ZS5hY3RpdmVUb29sLmxhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyXG4gICAgICAgIDogZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcixcbiAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgY3VzdG9tVHlwZTogbnVsbCxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEN1cnNvciA9IChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDdXJzb3IgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwsIGN1cnNvcjogc3RyaW5nKSA9PiB7XG4gIGlmIChjYW52YXMpIHtcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICB9XG59O1xuXG5sZXQgZXJhc2VyQ2FudmFzQ2FjaGU6IGFueTtcbmxldCBwcmV2aWV3RGF0YVVSTDogc3RyaW5nO1xuZXhwb3J0IGNvbnN0IHNldEVyYXNlckN1cnNvciA9IChcbiAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwsXG4gIHRoZW1lOiBBcHBTdGF0ZVtcInRoZW1lXCJdLFxuKSA9PiB7XG4gIGNvbnN0IGN1cnNvckltYWdlU2l6ZVB4ID0gMjA7XG5cbiAgY29uc3QgZHJhd0NhbnZhcyA9ICgpID0+IHtcbiAgICBjb25zdCBpc0RhcmtUaGVtZSA9IHRoZW1lID09PSBUSEVNRS5EQVJLO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSA9IHRoZW1lO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLndpZHRoID0gY3Vyc29ySW1hZ2VTaXplUHg7XG4gICAgY29uc3QgY29udGV4dCA9IGVyYXNlckNhbnZhc0NhY2hlLmdldENvbnRleHQoXCIyZFwiKSE7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSAxO1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dC5hcmMoXG4gICAgICBlcmFzZXJDYW52YXNDYWNoZS53aWR0aCAvIDIsXG4gICAgICBlcmFzZXJDYW52YXNDYWNoZS5oZWlnaHQgLyAyLFxuICAgICAgNSxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSSxcbiAgICApO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy5ibGFjayA6IG9jLndoaXRlO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBpc0RhcmtUaGVtZSA/IG9jLndoaXRlIDogb2MuYmxhY2s7XG4gICAgY29udGV4dC5zdHJva2UoKTtcbiAgICBwcmV2aWV3RGF0YVVSTCA9IGVyYXNlckNhbnZhc0NhY2hlLnRvRGF0YVVSTChNSU1FX1RZUEVTLnN2ZykgYXMgRGF0YVVSTDtcbiAgfTtcbiAgaWYgKCFlcmFzZXJDYW52YXNDYWNoZSB8fCBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICBkcmF3Q2FudmFzKCk7XG4gIH1cblxuICBzZXRDdXJzb3IoXG4gICAgY2FudmFzLFxuICAgIGB1cmwoJHtwcmV2aWV3RGF0YVVSTH0pICR7Y3Vyc29ySW1hZ2VTaXplUHggLyAyfSAke1xuICAgICAgY3Vyc29ySW1hZ2VTaXplUHggLyAyXG4gICAgfSwgYXV0b2AsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yRm9yU2hhcGUgPSAoXG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLFxuICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4pID0+IHtcbiAgaWYgKCFjYW52YXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSA9PT0gXCJzZWxlY3Rpb25cIikge1xuICAgIHJlc2V0Q3Vyc29yKGNhbnZhcyk7XG4gIH0gZWxzZSBpZiAoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlID09PSBcImVyYXNlclwiKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpO1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgaW1hZ2UgdG9vbCBpcyBzZWxlY3RlZCB3aGljaCBzdWdnZXN0cyB0aGVyZSdzXG4gICAgLy8gYSBpbWFnZS1wcmV2aWV3IHNldCBhcyB0aGUgY3Vyc29yXG4gICAgLy8gSWdub3JlIGN1c3RvbSB0eXBlIGFzIHdlbGwgYW5kIGxldCBob3N0IGRlY2lkZVxuICB9IGVsc2UgaWYgKCFbXCJpbWFnZVwiLCBcImN1c3RvbVwiXS5pbmNsdWRlcyhhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkNST1NTSEFJUjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRnVsbFNjcmVlbiA9ICgpID0+XG4gIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50Py5ub2RlTmFtZSA9PT0gXCJIVE1MXCI7XG5cbmV4cG9ydCBjb25zdCBhbGxvd0Z1bGxTY3JlZW4gPSAoKSA9PlxuICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gKCkgPT4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0S2V5ID0gKHNob3J0Y3V0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzaG9ydGN1dCA9IHNob3J0Y3V0XG4gICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIkFsdFwiKVxuICAgIC5yZXBsYWNlKC9cXGJTaGlmdFxcYi9pLCBcIlNoaWZ0XCIpXG4gICAgLnJlcGxhY2UoL1xcYihFbnRlcnxSZXR1cm4pXFxiL2ksIFwiRW50ZXJcIilcbiAgICAucmVwbGFjZSgvXFxiRGVsXFxiL2ksIFwiRGVsZXRlXCIpO1xuXG4gIGlmIChpc0Rhcndpbikge1xuICAgIHJldHVybiBzaG9ydGN1dFxuICAgICAgLnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9pLCBcIkNtZFwiKVxuICAgICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIk9wdGlvblwiKTtcbiAgfVxuICByZXR1cm4gc2hvcnRjdXQucmVwbGFjZSgvXFxiQ3RybE9yQ21kXFxiL2ksIFwiQ3RybFwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgPSAoXG4gIHsgY2xpZW50WCwgY2xpZW50WSB9OiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sXG4gIHtcbiAgICB6b29tLFxuICAgIG9mZnNldExlZnQsXG4gICAgb2Zmc2V0VG9wLFxuICAgIHNjcm9sbFgsXG4gICAgc2Nyb2xsWSxcbiAgfToge1xuICAgIHpvb206IFpvb207XG4gICAgb2Zmc2V0TGVmdDogbnVtYmVyO1xuICAgIG9mZnNldFRvcDogbnVtYmVyO1xuICAgIHNjcm9sbFg6IG51bWJlcjtcbiAgICBzY3JvbGxZOiBudW1iZXI7XG4gIH0sXG4pID0+IHtcbiAgY29uc3QgaW52U2NhbGUgPSAxIC8gem9vbS52YWx1ZTtcbiAgY29uc3QgeCA9IChjbGllbnRYIC0gb2Zmc2V0TGVmdCkgKiBpbnZTY2FsZSAtIHNjcm9sbFg7XG4gIGNvbnN0IHkgPSAoY2xpZW50WSAtIG9mZnNldFRvcCkgKiBpbnZTY2FsZSAtIHNjcm9sbFk7XG5cbiAgcmV0dXJuIHsgeCwgeSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNjZW5lQ29vcmRzVG9WaWV3cG9ydENvb3JkcyA9IChcbiAgeyBzY2VuZVgsIHNjZW5lWSB9OiB7IHNjZW5lWDogbnVtYmVyOyBzY2VuZVk6IG51bWJlciB9LFxuICB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFksXG4gIH06IHtcbiAgICB6b29tOiBab29tO1xuICAgIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgICBzY3JvbGxYOiBudW1iZXI7XG4gICAgc2Nyb2xsWTogbnVtYmVyO1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHggPSAoc2NlbmVYICsgc2Nyb2xsWCkgKiB6b29tLnZhbHVlICsgb2Zmc2V0TGVmdDtcbiAgY29uc3QgeSA9IChzY2VuZVkgKyBzY3JvbGxZKSAqIHpvb20udmFsdWUgKyBvZmZzZXRUb3A7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IChuYW1lOiBzdHJpbmcpID0+XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLSR7bmFtZX1gKTtcblxuY29uc3QgUlNfTFRSX0NIQVJTID1cbiAgXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArXG4gIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5leHBvcnQgY29uc3QgaXNSVEwgPSAodGV4dDogc3RyaW5nKSA9PiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHR1cGxlVG9Db29ycyA9IChcbiAgeHlUdXBsZTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSxcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IFt4LCB5XSA9IHh5VHVwbGU7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbi8qKiB1c2UgYXMgYSByZWplY3Rpb25IYW5kbGVyIHRvIG11dGUgZmlsZXN5c3RlbSBBYm9ydCBlcnJvcnMgKi9cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gKGVycm9yPzogRXJyb3IpID0+IHtcbiAgaWYgKGVycm9yPy5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRJbmRleCA9IDxUPihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgY2I6IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogcmVhZG9ubHkgVFtdKSA9PiBib29sZWFuLFxuICBmcm9tSW5kZXg6IG51bWJlciA9IDAsXG4pID0+IHtcbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cbiAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4IC0gMTtcbiAgd2hpbGUgKCsraW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGFzdEluZGV4ID0gPFQ+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBjYjogKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiByZWFkb25seSBUW10pID0+IGJvb2xlYW4sXG4gIGZyb21JbmRleDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMSxcbikgPT4ge1xuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGggLSAxLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgd2hpbGUgKC0taW5kZXggPiAtMSkge1xuICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBjb25zdCBpc1JHQlRyYW5zcGFyZW50ID0gY29sb3IubGVuZ3RoID09PSA1ICYmIGNvbG9yLnN1YnN0cig0LCAxKSA9PT0gXCIwXCI7XG4gIGNvbnN0IGlzUlJHR0JCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDkgJiYgY29sb3Iuc3Vic3RyKDcsIDIpID09PSBcIjAwXCI7XG4gIHJldHVybiAoXG4gICAgaXNSR0JUcmFuc3BhcmVudCB8fFxuICAgIGlzUlJHR0JCVHJhbnNwYXJlbnQgfHxcbiAgICBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdXG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZhYmxlUHJvbWlzZTxUPiA9IFByb21pc2U8VD4gJiB7XG4gIHJlc29sdmU6IFtUXSBleHRlbmRzIFt1bmRlZmluZWRdID8gKHZhbHVlPzogVCkgPT4gdm9pZCA6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IDxUPigpID0+IHtcbiAgbGV0IHJlc29sdmUhOiBhbnk7XG4gIGxldCByZWplY3QhOiBhbnk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIChwcm9taXNlIGFzIGFueSkucmVzb2x2ZSA9IHJlc29sdmU7XG4gIChwcm9taXNlIGFzIGFueSkucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZSBhcyBSZXNvbHZhYmxlUHJvbWlzZTxUPjtcbn07XG5cbi8qKlxuICogQHBhcmFtIGZ1bmMgaGFuZGxlciB0YWtpbmcgYXQgbW9zdCBzaW5nbGUgcGFyYW1ldGVyIChldmVudCkuXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PlxuICAoKGV2ZW50KSA9PiB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYyBhcyBURnVuY3Rpb24sIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uO1xuXG4vKipcbiAqIGJhcmNoZXMgUmVhY3Qgc3RhdGUgdXBkYXRlcyBhbmQgdGhyb3R0bGVzIHRoZSBjYWxscyB0byBhIHNpbmdsZSBjYWxsIHBlclxuICogYW5pbWF0aW9uIGZyYW1lXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXNUaHJvdHRsZWQgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHRocm90dGxlUkFGPFBhcmFtZXRlcnM8VEZ1bmN0aW9uPj4oKChldmVudCkgPT4ge1xuICAgIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKGZ1bmMsIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uKTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuZXhwb3J0IGNvbnN0IG5Gb3JtYXR0ZXIgPSAobnVtOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2kgPSBbXG4gICAgeyB2YWx1ZTogMSwgc3ltYm9sOiBcImJcIiB9LFxuICAgIHsgdmFsdWU6IDFlMywgc3ltYm9sOiBcImtcIiB9LFxuICAgIHsgdmFsdWU6IDFlNiwgc3ltYm9sOiBcIk1cIiB9LFxuICAgIHsgdmFsdWU6IDFlOSwgc3ltYm9sOiBcIkdcIiB9LFxuICBdO1xuICBjb25zdCByeCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gIGxldCBpbmRleDtcbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChcbiAgICAobnVtIC8gc2lbaW5kZXhdLnZhbHVlKS50b0ZpeGVkKGRpZ2l0cykucmVwbGFjZShyeCwgXCIkMVwiKSArIHNpW2luZGV4XS5zeW1ib2xcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8XG4gICAgREVGQVVMVF9WRVJTSU9OXG4gICk7XG59O1xuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL01vZGVybml6ci9Nb2Rlcm5penIvYmxvYi9tYXN0ZXIvZmVhdHVyZS1kZXRlY3RzL2Vtb2ppLmpzXG5leHBvcnQgY29uc3Qgc3VwcG9ydHNFbW9qaSA9ICgpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0ID0gMTI7XG4gIGN0eC5maWxsU3R5bGUgPSBcIiNmMDBcIjtcbiAgY3R4LnRleHRCYXNlbGluZSA9IFwidG9wXCI7XG4gIGN0eC5mb250ID0gXCIzMnB4IEFyaWFsXCI7XG4gIC8vIE1vZGVybml6ciB1c2VkIPCfkKgsIGJ1dCBpdCBpcyBzb3J0IG9mIHN1cHBvcnRlZCBvbiBXaW5kb3dzIDcuXG4gIC8vIEx1Y2tpbHkg8J+YgCBpc24ndCBzdXBwb3J0ZWQuXG4gIGN0eC5maWxsVGV4dChcIvCfmIBcIiwgMCwgMCk7XG4gIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldCwgb2Zmc2V0LCAxLCAxKS5kYXRhWzBdICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RTY3JvbGxhYmxlQ29udGFpbmVyID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cbiAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBjb25zdCBoYXNTY3JvbGxhYmxlQ29udGVudCA9IHBhcmVudC5zY3JvbGxIZWlnaHQgPiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGlmIChcbiAgICAgIGhhc1Njcm9sbGFibGVDb250ZW50ICYmXG4gICAgICAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fFxuICAgICAgICBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHxcbiAgICAgICAgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBkb2N1bWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb2N1c05lYXJlc3RQYXJlbnQgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC50YWJJbmRleCA+IC0xKSB7XG4gICAgICBwYXJlbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcmV2ZW50VW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG4gIGV2ZW50LnJldHVyblZhbHVlID0gXCJcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gKGJ5dGVzOiBVaW50OEFycmF5KSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKVxuICAgIC5tYXAoKGJ5dGUpID0+IGAwJHtieXRlLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcbiAgICAuam9pbihcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gKCkgPT4gKGlzVGVzdEVudigpID8gMSA6IERhdGUubm93KCkpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5leHBvcnQgY29uc3QgYXJyYXlUb01hcCA9IDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmc+KFxuICBpdGVtczogcmVhZG9ubHkgVFtdLFxuKSA9PiB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogTWFwPHN0cmluZywgVD4sIGVsZW1lbnQpID0+IHtcbiAgICBhY2Muc2V0KHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiID8gZWxlbWVudCA6IGVsZW1lbnQuaWQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIG5ldyBNYXAoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gKCkgPT5cbiAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcblxuZXhwb3J0IGNvbnN0IGlzUHJvZEVudiA9ICgpID0+XG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCI7XG5cbmV4cG9ydCBjb25zdCB3cmFwRXZlbnQgPSA8VCBleHRlbmRzIEV2ZW50PihuYW1lOiBFVkVOVCwgbmF0aXZlRXZlbnQ6IFQpID0+IHtcbiAgcmV0dXJuIG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgZGV0YWlsOiB7XG4gICAgICBuYXRpdmVFdmVudCxcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIG9iajogVCxcbiAgdXBkYXRlczogUGFydGlhbDxUPixcbik6IFQgPT4ge1xuICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh1cGRhdGVzIGFzIGFueSlba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChvYmogYXMgYW55KVtrZXldID09PSB2YWx1ZSAmJlxuICAgICAgICAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ub2JqLFxuICAgIC4uLnVwZGF0ZXMsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsOiBhbnkpID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCAodHlwZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlICE9PSBcImZ1bmN0aW9uXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyYW1lID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCA/IFwidG9wXCIgOiBcImlmcmFtZVwiO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBcImlmcmFtZVwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IChcbiAgdmFsdWU6IGFueSxcbik6IHZhbHVlIGlzIFByb21pc2U8UmVzb2x1dGlvblR5cGU8dHlwZW9mIHZhbHVlPj4gPT4ge1xuICByZXR1cm4gKFxuICAgICEhdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIFwiY2F0Y2hcIiBpbiB2YWx1ZSAmJlxuICAgIFwiZmluYWxseVwiIGluIHZhbHVlXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcXVlcnlGb2N1c2FibGVFbGVtZW50cyA9IChjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgXCJidXR0b24sIGEsIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBkaXZbdGFiaW5kZXhdLCBsYWJlbFt0YWJpbmRleF1cIixcbiAgKTtcblxuICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudHNcbiAgICA/IEFycmF5LmZyb20oZm9jdXNhYmxlRWxlbWVudHMpLmZpbHRlcihcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgZWxlbWVudC50YWJJbmRleCA+IC0xICYmICEoZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5kaXNhYmxlZCxcbiAgICAgIClcbiAgICA6IFtdO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../utils.ts\n");
3341
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"allowFullScreen\": () => (/* binding */ allowFullScreen),\n/* harmony export */ \"arrayToMap\": () => (/* binding */ arrayToMap),\n/* harmony export */ \"bytesToHexString\": () => (/* binding */ bytesToHexString),\n/* harmony export */ \"capitalizeString\": () => (/* binding */ capitalizeString),\n/* harmony export */ \"chunk\": () => (/* binding */ chunk),\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"distance\": () => (/* binding */ distance),\n/* harmony export */ \"exitFullScreen\": () => (/* binding */ exitFullScreen),\n/* harmony export */ \"findIndex\": () => (/* binding */ findIndex),\n/* harmony export */ \"findLastIndex\": () => (/* binding */ findLastIndex),\n/* harmony export */ \"focusNearestParent\": () => (/* binding */ focusNearestParent),\n/* harmony export */ \"getDateTime\": () => (/* binding */ getDateTime),\n/* harmony export */ \"getFontFamilyString\": () => (/* binding */ getFontFamilyString),\n/* harmony export */ \"getFontString\": () => (/* binding */ getFontString),\n/* harmony export */ \"getFrame\": () => (/* binding */ getFrame),\n/* harmony export */ \"getGlobalCSSVariable\": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */ \"getNearestScrollableContainer\": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */ \"getShortcutKey\": () => (/* binding */ getShortcutKey),\n/* harmony export */ \"getUpdatedTimestamp\": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */ \"getVersion\": () => (/* binding */ getVersion),\n/* harmony export */ \"isFullScreen\": () => (/* binding */ isFullScreen),\n/* harmony export */ \"isInputLike\": () => (/* binding */ isInputLike),\n/* harmony export */ \"isPrimitive\": () => (/* binding */ isPrimitive),\n/* harmony export */ \"isProdEnv\": () => (/* binding */ isProdEnv),\n/* harmony export */ \"isPromiseLike\": () => (/* binding */ isPromiseLike),\n/* harmony export */ \"isRTL\": () => (/* binding */ isRTL),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isToolIcon\": () => (/* binding */ isToolIcon),\n/* harmony export */ \"isTransparent\": () => (/* binding */ isTransparent),\n/* harmony export */ \"isWritableElement\": () => (/* binding */ isWritableElement),\n/* harmony export */ \"muteFSAbortError\": () => (/* binding */ muteFSAbortError),\n/* harmony export */ \"nFormatter\": () => (/* binding */ nFormatter),\n/* harmony export */ \"preventUnload\": () => (/* binding */ preventUnload),\n/* harmony export */ \"queryFocusableElements\": () => (/* binding */ queryFocusableElements),\n/* harmony export */ \"removeSelection\": () => (/* binding */ removeSelection),\n/* harmony export */ \"resetCursor\": () => (/* binding */ resetCursor),\n/* harmony export */ \"resolvablePromise\": () => (/* binding */ resolvablePromise),\n/* harmony export */ \"sceneCoordsToViewportCoords\": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */ \"selectNode\": () => (/* binding */ selectNode),\n/* harmony export */ \"setCursor\": () => (/* binding */ setCursor),\n/* harmony export */ \"setCursorForShape\": () => (/* binding */ setCursorForShape),\n/* harmony export */ \"setDateTimeForTests\": () => (/* binding */ setDateTimeForTests),\n/* harmony export */ \"setEraserCursor\": () => (/* binding */ setEraserCursor),\n/* harmony export */ \"supportsEmoji\": () => (/* binding */ supportsEmoji),\n/* harmony export */ \"throttleRAF\": () => (/* binding */ throttleRAF),\n/* harmony export */ \"tupleToCoors\": () => (/* binding */ tupleToCoors),\n/* harmony export */ \"updateActiveTool\": () => (/* binding */ updateActiveTool),\n/* harmony export */ \"updateObject\": () => (/* binding */ updateObject),\n/* harmony export */ \"viewportCoordsToSceneCoords\": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */ \"withBatchedUpdates\": () => (/* binding */ withBatchedUpdates),\n/* harmony export */ \"withBatchedUpdatesThrottled\": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */ \"wrapEvent\": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ \"../../colors.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./keys */ \"../../keys.ts\");\n\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = (dateTime) => {\n mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n if (mockDateTime) {\n return mockDateTime;\n }\n const date = new Date();\n const year = date.getFullYear();\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const hr = `${date.getHours()}`.padStart(2, \"0\");\n const min = `${date.getMinutes()}`.padStart(2, \"0\");\n return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = (target) => target instanceof HTMLElement && target.className.includes(\"ToolIcon\");\nconst isInputLike = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement;\nconst isWritableElement = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLTextAreaElement ||\n (target instanceof HTMLInputElement &&\n (target.type === \"text\" || target.type === \"number\"));\nconst getFontFamilyString = ({ fontFamily, }) => {\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY)) {\n if (id === fontFamily) {\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n }\n }\n return _constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\nconst getFontString = ({ fontSize, fontFamily, }) => {\n return `${fontSize}px ${getFontFamilyString({ fontFamily })}`;\n};\nconst debounce = (fn, timeout) => {\n let handle = 0;\n let lastArgs = null;\n const ret = (...args) => {\n lastArgs = args;\n clearTimeout(handle);\n handle = window.setTimeout(() => {\n lastArgs = null;\n fn(...args);\n }, timeout);\n };\n ret.flush = () => {\n clearTimeout(handle);\n if (lastArgs) {\n const _lastArgs = lastArgs;\n lastArgs = null;\n fn(..._lastArgs);\n }\n };\n ret.cancel = () => {\n lastArgs = null;\n clearTimeout(handle);\n };\n return ret;\n};\n// throttle callback to execute once per animation frame\nconst throttleRAF = (fn, opts) => {\n let timerId = null;\n let lastArgs = null;\n let lastArgsTrailing = null;\n const scheduleFunc = (args) => {\n timerId = window.requestAnimationFrame(() => {\n timerId = null;\n fn(...args);\n lastArgs = null;\n if (lastArgsTrailing) {\n lastArgs = lastArgsTrailing;\n lastArgsTrailing = null;\n scheduleFunc(lastArgs);\n }\n });\n };\n const ret = (...args) => {\n if (false) {}\n lastArgs = args;\n if (timerId === null) {\n scheduleFunc(lastArgs);\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n lastArgsTrailing = args;\n }\n };\n ret.flush = () => {\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n if (lastArgs) {\n fn(...(lastArgsTrailing || lastArgs));\n lastArgs = lastArgsTrailing = null;\n }\n };\n ret.cancel = () => {\n lastArgs = lastArgsTrailing = null;\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n };\n return ret;\n};\n// https://github.com/lodash/lodash/blob/es/chunk.js\nconst chunk = (array, size) => {\n if (!array.length || size < 1) {\n return [];\n }\n let index = 0;\n let resIndex = 0;\n const result = Array(Math.ceil(array.length / size));\n while (index < array.length) {\n result[resIndex++] = array.slice(index, (index += size));\n }\n return result;\n};\nconst selectNode = (node) => {\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n};\nconst removeSelection = () => {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n if (data.type === \"custom\") {\n return Object.assign(Object.assign({}, appState.activeTool), { type: \"custom\", customType: data.customType });\n }\n return Object.assign(Object.assign({}, appState.activeTool), { lastActiveToolBeforeEraser: data.lastActiveToolBeforeEraser === undefined\n ? appState.activeTool.lastActiveToolBeforeEraser\n : data.lastActiveToolBeforeEraser, type: data.type, customType: null });\n};\nconst resetCursor = (canvas) => {\n if (canvas) {\n canvas.style.cursor = \"\";\n }\n};\nconst setCursor = (canvas, cursor) => {\n if (canvas) {\n canvas.style.cursor = cursor;\n }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (canvas, theme) => {\n const cursorImageSizePx = 20;\n const drawCanvas = () => {\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_2__.THEME.DARK;\n eraserCanvasCache = document.createElement(\"canvas\");\n eraserCanvasCache.theme = theme;\n eraserCanvasCache.height = cursorImageSizePx;\n eraserCanvasCache.width = cursorImageSizePx;\n const context = eraserCanvasCache.getContext(\"2d\");\n context.lineWidth = 1;\n context.beginPath();\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.black : open_color__WEBPACK_IMPORTED_MODULE_0__.white;\n context.fill();\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.white : open_color__WEBPACK_IMPORTED_MODULE_0__.black;\n context.stroke();\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.svg);\n };\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n drawCanvas();\n }\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (canvas, appState) => {\n if (!canvas) {\n return;\n }\n if (appState.activeTool.type === \"selection\") {\n resetCursor(canvas);\n }\n else if (appState.activeTool.type === \"eraser\") {\n setEraserCursor(canvas, appState.theme);\n // do nothing if image tool is selected which suggests there's\n // a image-preview set as the cursor\n // Ignore custom type as well and let host decide\n }\n else if (![\"image\", \"custom\"].includes(appState.activeTool.type)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.CROSSHAIR;\n }\n};\nconst isFullScreen = () => { var _a; return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \"HTML\"; };\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = (shortcut) => {\n shortcut = shortcut\n .replace(/\\bAlt\\b/i, \"Alt\")\n .replace(/\\bShift\\b/i, \"Shift\")\n .replace(/\\b(Enter|Return)\\b/i, \"Enter\")\n .replace(/\\bDel\\b/i, \"Delete\");\n if (_keys__WEBPACK_IMPORTED_MODULE_4__.isDarwin) {\n return shortcut\n .replace(/\\bCtrlOrCmd\\b/i, \"Cmd\")\n .replace(/\\bAlt\\b/i, \"Option\");\n }\n return shortcut.replace(/\\bCtrlOrCmd\\b/i, \"Ctrl\");\n};\nconst viewportCoordsToSceneCoords = ({ clientX, clientY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const invScale = 1 / zoom.value;\n const x = (clientX - offsetLeft) * invScale - scrollX;\n const y = (clientY - offsetTop) * invScale - scrollY;\n return { x, y };\n};\nconst sceneCoordsToViewportCoords = ({ sceneX, sceneY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\n return { x, y };\n};\nconst getGlobalCSSVariable = (name) => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = \"A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\" +\n \"\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF\";\nconst RS_RTL_CHARS = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\n * RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\nconst isRTL = (text) => RE_RTL_CHECK.test(text);\nconst tupleToCoors = (xyTuple) => {\n const [x, y] = xyTuple;\n return { x, y };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\nconst muteFSAbortError = (error) => {\n if ((error === null || error === void 0 ? void 0 : error.name) === \"AbortError\") {\n console.warn(error);\n return;\n }\n throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n let index = fromIndex - 1;\n while (++index < array.length) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n let index = fromIndex + 1;\n while (--index > -1) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst isTransparent = (color) => {\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \"0\";\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \"00\";\n return (isRGBTransparent ||\n isRRGGBBTransparent ||\n color === _colors__WEBPACK_IMPORTED_MODULE_1__[\"default\"].elementBackground[0]);\n};\nconst resolvablePromise = () => {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n promise.resolve = resolve;\n promise.reject = reject;\n return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\nconst withBatchedUpdates = (func) => ((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n});\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\nconst withBatchedUpdatesThrottled = (func) => {\n // @ts-ignore\n return throttleRAF(((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n }));\n};\n//https://stackoverflow.com/a/9462382/8418\nconst nFormatter = (num, digits) => {\n const si = [\n { value: 1, symbol: \"b\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"M\" },\n { value: 1e9, symbol: \"G\" },\n ];\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n let index;\n for (index = si.length - 1; index > 0; index--) {\n if (num >= si[index].value) {\n break;\n }\n }\n return ((num / si[index].value).toFixed(digits).replace(rx, \"$1\") + si[index].symbol);\n};\nconst getVersion = () => {\n var _a;\n return (((_a = document.querySelector('meta[name=\"version\"]')) === null || _a === void 0 ? void 0 : _a.content) ||\n _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_VERSION);\n};\n// Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\nconst supportsEmoji = () => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return false;\n }\n const offset = 12;\n ctx.fillStyle = \"#f00\";\n ctx.textBaseline = \"top\";\n ctx.font = \"32px Arial\";\n // Modernizr used 🐨, but it is sort of supported on Windows 7.\n // Luckily 😀 isn't supported.\n ctx.fillText(\"😀\", 0, 0);\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent === document.body) {\n return document;\n }\n const { overflowY } = window.getComputedStyle(parent);\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n if (hasScrollableContent &&\n (overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"overlay\")) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return document;\n};\nconst focusNearestParent = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent.tabIndex > -1) {\n parent.focus();\n return;\n }\n parent = parent.parentElement;\n }\n};\nconst preventUnload = (event) => {\n event.preventDefault();\n // NOTE: modern browsers no longer allow showing a custom message here\n event.returnValue = \"\";\n};\nconst bytesToHexString = (bytes) => {\n return Array.from(bytes)\n .map((byte) => `0${byte.toString(16)}`.slice(-2))\n .join(\"\");\n};\nconst getUpdatedTimestamp = () => (isTestEnv() ? 1 : Date.now());\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\nconst arrayToMap = (items) => {\n return items.reduce((acc, element) => {\n acc.set(typeof element === \"string\" ? element : element.id, element);\n return acc;\n }, new Map());\n};\nconst isTestEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f8b4bb6\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"test\"; };\nconst isProdEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.12.0-f8b4bb6\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"production\"; };\nconst wrapEvent = (name, nativeEvent) => {\n return new CustomEvent(name, {\n detail: {\n nativeEvent,\n },\n cancelable: true,\n });\n};\nconst updateObject = (obj, updates) => {\n let didChange = false;\n for (const key in updates) {\n const value = updates[key];\n if (typeof value !== \"undefined\") {\n if (obj[key] === value &&\n // if object, always update because its attrs could have changed\n (typeof value !== \"object\" || value === null)) {\n continue;\n }\n didChange = true;\n }\n }\n if (!didChange) {\n return obj;\n }\n return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = (val) => {\n const type = typeof val;\n return val == null || (type !== \"object\" && type !== \"function\");\n};\nconst getFrame = () => {\n try {\n return window.self === window.top ? \"top\" : \"iframe\";\n }\n catch (error) {\n return \"iframe\";\n }\n};\nconst isPromiseLike = (value) => {\n return (!!value &&\n typeof value === \"object\" &&\n \"then\" in value &&\n \"catch\" in value &&\n \"finally\" in value);\n};\nconst queryFocusableElements = (container) => {\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\"button, a, input, select, textarea, div[tabindex], label[tabindex]\");\n return focusableElements\n ? Array.from(focusableElements).filter((element) => element.tabIndex > -1 && !element.disabled)\n : [];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFFBQVEsSUFBSSxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDO0FBRUssTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLElBQUk7UUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7S0FDdEQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSxhQUFhLEdBQUcsQ0FDM0IsS0FBVSxFQUNzQyxFQUFFO0lBQ2xELE9BQU8sQ0FDTCxDQUFDLENBQUMsS0FBSztRQUNQLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsTUFBTSxJQUFJLEtBQUs7UUFDZixPQUFPLElBQUksS0FBSztRQUNoQixTQUFTLElBQUksS0FBSyxDQUNuQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUssTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFNBQTZCLEVBQUUsRUFBRTtJQUN0RSxNQUFNLGlCQUFpQixHQUFHLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxnQkFBZ0IsQ0FDbkQsb0VBQW9FLENBQ3JFLENBQUM7SUFFRixPQUFPLGlCQUFpQjtRQUN0QixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBRSxPQUE0QixDQUFDLFFBQVEsQ0FDbkU7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ1QsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3V0aWxzLnRzPzc2M2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcIi4vY29sb3JzXCI7XG5pbXBvcnQge1xuICBDVVJTT1JfVFlQRSxcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBFVkVOVCxcbiAgRk9OVF9GQU1JTFksXG4gIE1JTUVfVFlQRVMsXG4gIFRIRU1FLFxuICBXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlQsXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRm9udEZhbWlseVZhbHVlcywgRm9udFN0cmluZyB9IGZyb20gXCIuL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IEFwcFN0YXRlLCBEYXRhVVJMLCBMYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciwgWm9vbSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4va2V5c1wiO1xuaW1wb3J0IHsgU0hBUEVTIH0gZnJvbSBcIi4vc2hhcGVzXCI7XG5cbmxldCBtb2NrRGF0ZVRpbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgY29uc3Qgc2V0RGF0ZVRpbWVGb3JUZXN0cyA9IChkYXRlVGltZTogc3RyaW5nKSA9PiB7XG4gIG1vY2tEYXRlVGltZSA9IGRhdGVUaW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGVUaW1lID0gKCkgPT4ge1xuICBpZiAobW9ja0RhdGVUaW1lKSB7XG4gICAgcmV0dXJuIG1vY2tEYXRlVGltZTtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGAke2RhdGUuZ2V0TW9udGgoKSArIDF9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGRheSA9IGAke2RhdGUuZ2V0RGF0ZSgpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBociA9IGAke2RhdGUuZ2V0SG91cnMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgbWluID0gYCR7ZGF0ZS5nZXRNaW51dGVzKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG5cbiAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fS0ke2hyfSR7bWlufWA7XG59O1xuXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZVN0cmluZyA9IChzdHI6IHN0cmluZykgPT5cbiAgc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xuXG5leHBvcnQgY29uc3QgaXNUb29sSWNvbiA9IChcbiAgdGFyZ2V0OiBFbGVtZW50IHwgRXZlbnRUYXJnZXQgfCBudWxsLFxuKTogdGFyZ2V0IGlzIEhUTUxFbGVtZW50ID0+XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5jbGFzc05hbWUuaW5jbHVkZXMoXCJUb29sSWNvblwiKTtcblxuZXhwb3J0IGNvbnN0IGlzSW5wdXRMaWtlID0gKFxuICB0YXJnZXQ6IEVsZW1lbnQgfCBFdmVudFRhcmdldCB8IG51bGwsXG4pOiB0YXJnZXQgaXNcbiAgfCBIVE1MSW5wdXRFbGVtZW50XG4gIHwgSFRNTFRleHRBcmVhRWxlbWVudFxuICB8IEhUTUxTZWxlY3RFbGVtZW50XG4gIHwgSFRNTEJSRWxlbWVudFxuICB8IEhUTUxEaXZFbGVtZW50ID0+XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuZGF0YXNldC50eXBlID09PSBcInd5c2l3eWdcIikgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50O1xuXG5leHBvcnQgY29uc3QgaXNXcml0YWJsZUVsZW1lbnQgPSAoXG4gIHRhcmdldDogRWxlbWVudCB8IEV2ZW50VGFyZ2V0IHwgbnVsbCxcbik6IHRhcmdldCBpc1xuICB8IEhUTUxJbnB1dEVsZW1lbnRcbiAgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gIHwgSFRNTEJSRWxlbWVudFxuICB8IEhUTUxEaXZFbGVtZW50ID0+XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuZGF0YXNldC50eXBlID09PSBcInd5c2l3eWdcIikgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJSRWxlbWVudCB8fCAvLyBuZXdsaW5lIGluIHd5c2l3eWdcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCB8fFxuICAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICh0YXJnZXQudHlwZSA9PT0gXCJ0ZXh0XCIgfHwgdGFyZ2V0LnR5cGUgPT09IFwibnVtYmVyXCIpKTtcblxuZXhwb3J0IGNvbnN0IGdldEZvbnRGYW1pbHlTdHJpbmcgPSAoe1xuICBmb250RmFtaWx5LFxufToge1xuICBmb250RmFtaWx5OiBGb250RmFtaWx5VmFsdWVzO1xufSkgPT4ge1xuICBmb3IgKGNvbnN0IFtmb250RmFtaWx5U3RyaW5nLCBpZF0gb2YgT2JqZWN0LmVudHJpZXMoRk9OVF9GQU1JTFkpKSB7XG4gICAgaWYgKGlkID09PSBmb250RmFtaWx5KSB7XG4gICAgICByZXR1cm4gYCR7Zm9udEZhbWlseVN0cmluZ30sICR7V0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05UfWA7XG4gICAgfVxuICB9XG4gIHJldHVybiBXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlQ7XG59O1xuXG4vKiogcmV0dXJucyBmb250U2l6ZStmb250RmFtaWx5IHN0cmluZyBmb3IgYXNzaWdubWVudCB0byBET00gZWxlbWVudHMgKi9cbmV4cG9ydCBjb25zdCBnZXRGb250U3RyaW5nID0gKHtcbiAgZm9udFNpemUsXG4gIGZvbnRGYW1pbHksXG59OiB7XG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIGZvbnRGYW1pbHk6IEZvbnRGYW1pbHlWYWx1ZXM7XG59KSA9PiB7XG4gIHJldHVybiBgJHtmb250U2l6ZX1weCAke2dldEZvbnRGYW1pbHlTdHJpbmcoeyBmb250RmFtaWx5IH0pfWAgYXMgRm9udFN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBkZWJvdW5jZSA9IDxUIGV4dGVuZHMgYW55W10+KFxuICBmbjogKC4uLmFyZ3M6IFQpID0+IHZvaWQsXG4gIHRpbWVvdXQ6IG51bWJlcixcbikgPT4ge1xuICBsZXQgaGFuZGxlID0gMDtcbiAgbGV0IGxhc3RBcmdzOiBUIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0IHJldCA9ICguLi5hcmdzOiBUKSA9PiB7XG4gICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICAgIGhhbmRsZSA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgIH0sIHRpbWVvdXQpO1xuICB9O1xuICByZXQuZmx1c2ggPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgaWYgKGxhc3RBcmdzKSB7XG4gICAgICBjb25zdCBfbGFzdEFyZ3MgPSBsYXN0QXJncztcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGZuKC4uLl9sYXN0QXJncyk7XG4gICAgfVxuICB9O1xuICByZXQuY2FuY2VsID0gKCkgPT4ge1xuICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbi8vIHRocm90dGxlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgb25jZSBwZXIgYW5pbWF0aW9uIGZyYW1lXG5leHBvcnQgY29uc3QgdGhyb3R0bGVSQUYgPSA8VCBleHRlbmRzIGFueVtdPihcbiAgZm46ICguLi5hcmdzOiBUKSA9PiB2b2lkLFxuICBvcHRzPzogeyB0cmFpbGluZz86IGJvb2xlYW4gfSxcbikgPT4ge1xuICBsZXQgdGltZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGxldCBsYXN0QXJnczogVCB8IG51bGwgPSBudWxsO1xuICBsZXQgbGFzdEFyZ3NUcmFpbGluZzogVCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IHNjaGVkdWxlRnVuYyA9IChhcmdzOiBUKSA9PiB7XG4gICAgdGltZXJJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICAgIGlmIChsYXN0QXJnc1RyYWlsaW5nKSB7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZztcbiAgICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmV0ID0gKC4uLmFyZ3M6IFQpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBhcmdzO1xuICAgIGlmICh0aW1lcklkID09PSBudWxsKSB7XG4gICAgICBzY2hlZHVsZUZ1bmMobGFzdEFyZ3MpO1xuICAgIH0gZWxzZSBpZiAob3B0cz8udHJhaWxpbmcpIHtcbiAgICAgIGxhc3RBcmdzVHJhaWxpbmcgPSBhcmdzO1xuICAgIH1cbiAgfTtcbiAgcmV0LmZsdXNoID0gKCkgPT4ge1xuICAgIGlmICh0aW1lcklkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGZuKC4uLihsYXN0QXJnc1RyYWlsaW5nIHx8IGxhc3RBcmdzKSk7XG4gICAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgcmV0LmNhbmNlbCA9ICgpID0+IHtcbiAgICBsYXN0QXJncyA9IGxhc3RBcmdzVHJhaWxpbmcgPSBudWxsO1xuICAgIGlmICh0aW1lcklkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvZXMvY2h1bmsuanNcbmV4cG9ydCBjb25zdCBjaHVuayA9IDxUIGV4dGVuZHMgYW55PihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgc2l6ZTogbnVtYmVyLFxuKTogVFtdW10gPT4ge1xuICBpZiAoIWFycmF5Lmxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgcmVzSW5kZXggPSAwO1xuICBjb25zdCByZXN1bHQgPSBBcnJheShNYXRoLmNlaWwoYXJyYXkubGVuZ3RoIC8gc2l6ZSkpO1xuICB3aGlsZSAoaW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICByZXN1bHRbcmVzSW5kZXgrK10gPSBhcnJheS5zbGljZShpbmRleCwgKGluZGV4ICs9IHNpemUpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdE5vZGUgPSAobm9kZTogRWxlbWVudCkgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmIChzZWxlY3Rpb24pIHtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmIChzZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkaXN0YW5jZSA9ICh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gTWF0aC5hYnMoeCAtIHkpO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQWN0aXZlVG9vbCA9IChcbiAgYXBwU3RhdGU6IFBpY2s8QXBwU3RhdGUsIFwiYWN0aXZlVG9vbFwiPixcbiAgZGF0YTogKFxuICAgIHwgeyB0eXBlOiB0eXBlb2YgU0hBUEVTW251bWJlcl1bXCJ2YWx1ZVwiXSB8IFwiZXJhc2VyXCIgfVxuICAgIHwgeyB0eXBlOiBcImN1c3RvbVwiOyBjdXN0b21UeXBlOiBzdHJpbmcgfVxuICApICYgeyBsYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcj86IExhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyIH0sXG4pOiBBcHBTdGF0ZVtcImFjdGl2ZVRvb2xcIl0gPT4ge1xuICBpZiAoZGF0YS50eXBlID09PSBcImN1c3RvbVwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFwcFN0YXRlLmFjdGl2ZVRvb2wsXG4gICAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgICAgY3VzdG9tVHlwZTogZGF0YS5jdXN0b21UeXBlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmFwcFN0YXRlLmFjdGl2ZVRvb2wsXG4gICAgbGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXI6XG4gICAgICBkYXRhLmxhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBhcHBTdGF0ZS5hY3RpdmVUb29sLmxhc3RBY3RpdmVUb29sQmVmb3JlRXJhc2VyXG4gICAgICAgIDogZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlcixcbiAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgY3VzdG9tVHlwZTogbnVsbCxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEN1cnNvciA9IChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDdXJzb3IgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwsIGN1cnNvcjogc3RyaW5nKSA9PiB7XG4gIGlmIChjYW52YXMpIHtcbiAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gY3Vyc29yO1xuICB9XG59O1xuXG5sZXQgZXJhc2VyQ2FudmFzQ2FjaGU6IGFueTtcbmxldCBwcmV2aWV3RGF0YVVSTDogc3RyaW5nO1xuZXhwb3J0IGNvbnN0IHNldEVyYXNlckN1cnNvciA9IChcbiAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwsXG4gIHRoZW1lOiBBcHBTdGF0ZVtcInRoZW1lXCJdLFxuKSA9PiB7XG4gIGNvbnN0IGN1cnNvckltYWdlU2l6ZVB4ID0gMjA7XG5cbiAgY29uc3QgZHJhd0NhbnZhcyA9ICgpID0+IHtcbiAgICBjb25zdCBpc0RhcmtUaGVtZSA9IHRoZW1lID09PSBUSEVNRS5EQVJLO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSA9IHRoZW1lO1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLmhlaWdodCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGVyYXNlckNhbnZhc0NhY2hlLndpZHRoID0gY3Vyc29ySW1hZ2VTaXplUHg7XG4gICAgY29uc3QgY29udGV4dCA9IGVyYXNlckNhbnZhc0NhY2hlLmdldENvbnRleHQoXCIyZFwiKSE7XG4gICAgY29udGV4dC5saW5lV2lkdGggPSAxO1xuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgY29udGV4dC5hcmMoXG4gICAgICBlcmFzZXJDYW52YXNDYWNoZS53aWR0aCAvIDIsXG4gICAgICBlcmFzZXJDYW52YXNDYWNoZS5oZWlnaHQgLyAyLFxuICAgICAgNSxcbiAgICAgIDAsXG4gICAgICAyICogTWF0aC5QSSxcbiAgICApO1xuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy5ibGFjayA6IG9jLndoaXRlO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBpc0RhcmtUaGVtZSA/IG9jLndoaXRlIDogb2MuYmxhY2s7XG4gICAgY29udGV4dC5zdHJva2UoKTtcbiAgICBwcmV2aWV3RGF0YVVSTCA9IGVyYXNlckNhbnZhc0NhY2hlLnRvRGF0YVVSTChNSU1FX1RZUEVTLnN2ZykgYXMgRGF0YVVSTDtcbiAgfTtcbiAgaWYgKCFlcmFzZXJDYW52YXNDYWNoZSB8fCBlcmFzZXJDYW52YXNDYWNoZS50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICBkcmF3Q2FudmFzKCk7XG4gIH1cblxuICBzZXRDdXJzb3IoXG4gICAgY2FudmFzLFxuICAgIGB1cmwoJHtwcmV2aWV3RGF0YVVSTH0pICR7Y3Vyc29ySW1hZ2VTaXplUHggLyAyfSAke1xuICAgICAgY3Vyc29ySW1hZ2VTaXplUHggLyAyXG4gICAgfSwgYXV0b2AsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yRm9yU2hhcGUgPSAoXG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLFxuICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4pID0+IHtcbiAgaWYgKCFjYW52YXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSA9PT0gXCJzZWxlY3Rpb25cIikge1xuICAgIHJlc2V0Q3Vyc29yKGNhbnZhcyk7XG4gIH0gZWxzZSBpZiAoYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlID09PSBcImVyYXNlclwiKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpO1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgaW1hZ2UgdG9vbCBpcyBzZWxlY3RlZCB3aGljaCBzdWdnZXN0cyB0aGVyZSdzXG4gICAgLy8gYSBpbWFnZS1wcmV2aWV3IHNldCBhcyB0aGUgY3Vyc29yXG4gICAgLy8gSWdub3JlIGN1c3RvbSB0eXBlIGFzIHdlbGwgYW5kIGxldCBob3N0IGRlY2lkZVxuICB9IGVsc2UgaWYgKCFbXCJpbWFnZVwiLCBcImN1c3RvbVwiXS5pbmNsdWRlcyhhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkNST1NTSEFJUjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRnVsbFNjcmVlbiA9ICgpID0+XG4gIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50Py5ub2RlTmFtZSA9PT0gXCJIVE1MXCI7XG5cbmV4cG9ydCBjb25zdCBhbGxvd0Z1bGxTY3JlZW4gPSAoKSA9PlxuICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gKCkgPT4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0S2V5ID0gKHNob3J0Y3V0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzaG9ydGN1dCA9IHNob3J0Y3V0XG4gICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIkFsdFwiKVxuICAgIC5yZXBsYWNlKC9cXGJTaGlmdFxcYi9pLCBcIlNoaWZ0XCIpXG4gICAgLnJlcGxhY2UoL1xcYihFbnRlcnxSZXR1cm4pXFxiL2ksIFwiRW50ZXJcIilcbiAgICAucmVwbGFjZSgvXFxiRGVsXFxiL2ksIFwiRGVsZXRlXCIpO1xuXG4gIGlmIChpc0Rhcndpbikge1xuICAgIHJldHVybiBzaG9ydGN1dFxuICAgICAgLnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9pLCBcIkNtZFwiKVxuICAgICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIk9wdGlvblwiKTtcbiAgfVxuICByZXR1cm4gc2hvcnRjdXQucmVwbGFjZSgvXFxiQ3RybE9yQ21kXFxiL2ksIFwiQ3RybFwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgPSAoXG4gIHsgY2xpZW50WCwgY2xpZW50WSB9OiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sXG4gIHtcbiAgICB6b29tLFxuICAgIG9mZnNldExlZnQsXG4gICAgb2Zmc2V0VG9wLFxuICAgIHNjcm9sbFgsXG4gICAgc2Nyb2xsWSxcbiAgfToge1xuICAgIHpvb206IFpvb207XG4gICAgb2Zmc2V0TGVmdDogbnVtYmVyO1xuICAgIG9mZnNldFRvcDogbnVtYmVyO1xuICAgIHNjcm9sbFg6IG51bWJlcjtcbiAgICBzY3JvbGxZOiBudW1iZXI7XG4gIH0sXG4pID0+IHtcbiAgY29uc3QgaW52U2NhbGUgPSAxIC8gem9vbS52YWx1ZTtcbiAgY29uc3QgeCA9IChjbGllbnRYIC0gb2Zmc2V0TGVmdCkgKiBpbnZTY2FsZSAtIHNjcm9sbFg7XG4gIGNvbnN0IHkgPSAoY2xpZW50WSAtIG9mZnNldFRvcCkgKiBpbnZTY2FsZSAtIHNjcm9sbFk7XG5cbiAgcmV0dXJuIHsgeCwgeSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNjZW5lQ29vcmRzVG9WaWV3cG9ydENvb3JkcyA9IChcbiAgeyBzY2VuZVgsIHNjZW5lWSB9OiB7IHNjZW5lWDogbnVtYmVyOyBzY2VuZVk6IG51bWJlciB9LFxuICB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFksXG4gIH06IHtcbiAgICB6b29tOiBab29tO1xuICAgIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgICBzY3JvbGxYOiBudW1iZXI7XG4gICAgc2Nyb2xsWTogbnVtYmVyO1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHggPSAoc2NlbmVYICsgc2Nyb2xsWCkgKiB6b29tLnZhbHVlICsgb2Zmc2V0TGVmdDtcbiAgY29uc3QgeSA9IChzY2VuZVkgKyBzY3JvbGxZKSAqIHpvb20udmFsdWUgKyBvZmZzZXRUb3A7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IChuYW1lOiBzdHJpbmcpID0+XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLSR7bmFtZX1gKTtcblxuY29uc3QgUlNfTFRSX0NIQVJTID1cbiAgXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArXG4gIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5leHBvcnQgY29uc3QgaXNSVEwgPSAodGV4dDogc3RyaW5nKSA9PiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHR1cGxlVG9Db29ycyA9IChcbiAgeHlUdXBsZTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSxcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IFt4LCB5XSA9IHh5VHVwbGU7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbi8qKiB1c2UgYXMgYSByZWplY3Rpb25IYW5kbGVyIHRvIG11dGUgZmlsZXN5c3RlbSBBYm9ydCBlcnJvcnMgKi9cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gKGVycm9yPzogRXJyb3IpID0+IHtcbiAgaWYgKGVycm9yPy5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRJbmRleCA9IDxUPihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgY2I6IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogcmVhZG9ubHkgVFtdKSA9PiBib29sZWFuLFxuICBmcm9tSW5kZXg6IG51bWJlciA9IDAsXG4pID0+IHtcbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cbiAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4IC0gMTtcbiAgd2hpbGUgKCsraW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGFzdEluZGV4ID0gPFQ+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBjYjogKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiByZWFkb25seSBUW10pID0+IGJvb2xlYW4sXG4gIGZyb21JbmRleDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMSxcbikgPT4ge1xuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGggLSAxLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgd2hpbGUgKC0taW5kZXggPiAtMSkge1xuICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBjb25zdCBpc1JHQlRyYW5zcGFyZW50ID0gY29sb3IubGVuZ3RoID09PSA1ICYmIGNvbG9yLnN1YnN0cig0LCAxKSA9PT0gXCIwXCI7XG4gIGNvbnN0IGlzUlJHR0JCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDkgJiYgY29sb3Iuc3Vic3RyKDcsIDIpID09PSBcIjAwXCI7XG4gIHJldHVybiAoXG4gICAgaXNSR0JUcmFuc3BhcmVudCB8fFxuICAgIGlzUlJHR0JCVHJhbnNwYXJlbnQgfHxcbiAgICBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdXG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZhYmxlUHJvbWlzZTxUPiA9IFByb21pc2U8VD4gJiB7XG4gIHJlc29sdmU6IFtUXSBleHRlbmRzIFt1bmRlZmluZWRdID8gKHZhbHVlPzogVCkgPT4gdm9pZCA6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IDxUPigpID0+IHtcbiAgbGV0IHJlc29sdmUhOiBhbnk7XG4gIGxldCByZWplY3QhOiBhbnk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIChwcm9taXNlIGFzIGFueSkucmVzb2x2ZSA9IHJlc29sdmU7XG4gIChwcm9taXNlIGFzIGFueSkucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZSBhcyBSZXNvbHZhYmxlUHJvbWlzZTxUPjtcbn07XG5cbi8qKlxuICogQHBhcmFtIGZ1bmMgaGFuZGxlciB0YWtpbmcgYXQgbW9zdCBzaW5nbGUgcGFyYW1ldGVyIChldmVudCkuXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PlxuICAoKGV2ZW50KSA9PiB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYyBhcyBURnVuY3Rpb24sIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uO1xuXG4vKipcbiAqIGJhcmNoZXMgUmVhY3Qgc3RhdGUgdXBkYXRlcyBhbmQgdGhyb3R0bGVzIHRoZSBjYWxscyB0byBhIHNpbmdsZSBjYWxsIHBlclxuICogYW5pbWF0aW9uIGZyYW1lXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXNUaHJvdHRsZWQgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHRocm90dGxlUkFGPFBhcmFtZXRlcnM8VEZ1bmN0aW9uPj4oKChldmVudCkgPT4ge1xuICAgIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKGZ1bmMsIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uKTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuZXhwb3J0IGNvbnN0IG5Gb3JtYXR0ZXIgPSAobnVtOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2kgPSBbXG4gICAgeyB2YWx1ZTogMSwgc3ltYm9sOiBcImJcIiB9LFxuICAgIHsgdmFsdWU6IDFlMywgc3ltYm9sOiBcImtcIiB9LFxuICAgIHsgdmFsdWU6IDFlNiwgc3ltYm9sOiBcIk1cIiB9LFxuICAgIHsgdmFsdWU6IDFlOSwgc3ltYm9sOiBcIkdcIiB9LFxuICBdO1xuICBjb25zdCByeCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gIGxldCBpbmRleDtcbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChcbiAgICAobnVtIC8gc2lbaW5kZXhdLnZhbHVlKS50b0ZpeGVkKGRpZ2l0cykucmVwbGFjZShyeCwgXCIkMVwiKSArIHNpW2luZGV4XS5zeW1ib2xcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8XG4gICAgREVGQVVMVF9WRVJTSU9OXG4gICk7XG59O1xuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL01vZGVybml6ci9Nb2Rlcm5penIvYmxvYi9tYXN0ZXIvZmVhdHVyZS1kZXRlY3RzL2Vtb2ppLmpzXG5leHBvcnQgY29uc3Qgc3VwcG9ydHNFbW9qaSA9ICgpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0ID0gMTI7XG4gIGN0eC5maWxsU3R5bGUgPSBcIiNmMDBcIjtcbiAgY3R4LnRleHRCYXNlbGluZSA9IFwidG9wXCI7XG4gIGN0eC5mb250ID0gXCIzMnB4IEFyaWFsXCI7XG4gIC8vIE1vZGVybml6ciB1c2VkIPCfkKgsIGJ1dCBpdCBpcyBzb3J0IG9mIHN1cHBvcnRlZCBvbiBXaW5kb3dzIDcuXG4gIC8vIEx1Y2tpbHkg8J+YgCBpc24ndCBzdXBwb3J0ZWQuXG4gIGN0eC5maWxsVGV4dChcIvCfmIBcIiwgMCwgMCk7XG4gIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldCwgb2Zmc2V0LCAxLCAxKS5kYXRhWzBdICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RTY3JvbGxhYmxlQ29udGFpbmVyID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cbiAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBjb25zdCBoYXNTY3JvbGxhYmxlQ29udGVudCA9IHBhcmVudC5zY3JvbGxIZWlnaHQgPiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGlmIChcbiAgICAgIGhhc1Njcm9sbGFibGVDb250ZW50ICYmXG4gICAgICAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fFxuICAgICAgICBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHxcbiAgICAgICAgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBkb2N1bWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb2N1c05lYXJlc3RQYXJlbnQgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC50YWJJbmRleCA+IC0xKSB7XG4gICAgICBwYXJlbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcmV2ZW50VW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG4gIGV2ZW50LnJldHVyblZhbHVlID0gXCJcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gKGJ5dGVzOiBVaW50OEFycmF5KSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKVxuICAgIC5tYXAoKGJ5dGUpID0+IGAwJHtieXRlLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcbiAgICAuam9pbihcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gKCkgPT4gKGlzVGVzdEVudigpID8gMSA6IERhdGUubm93KCkpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5leHBvcnQgY29uc3QgYXJyYXlUb01hcCA9IDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmc+KFxuICBpdGVtczogcmVhZG9ubHkgVFtdLFxuKSA9PiB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogTWFwPHN0cmluZywgVD4sIGVsZW1lbnQpID0+IHtcbiAgICBhY2Muc2V0KHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiID8gZWxlbWVudCA6IGVsZW1lbnQuaWQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIG5ldyBNYXAoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gKCkgPT5cbiAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcblxuZXhwb3J0IGNvbnN0IGlzUHJvZEVudiA9ICgpID0+XG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCI7XG5cbmV4cG9ydCBjb25zdCB3cmFwRXZlbnQgPSA8VCBleHRlbmRzIEV2ZW50PihuYW1lOiBFVkVOVCwgbmF0aXZlRXZlbnQ6IFQpID0+IHtcbiAgcmV0dXJuIG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgZGV0YWlsOiB7XG4gICAgICBuYXRpdmVFdmVudCxcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIG9iajogVCxcbiAgdXBkYXRlczogUGFydGlhbDxUPixcbik6IFQgPT4ge1xuICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh1cGRhdGVzIGFzIGFueSlba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChvYmogYXMgYW55KVtrZXldID09PSB2YWx1ZSAmJlxuICAgICAgICAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ub2JqLFxuICAgIC4uLnVwZGF0ZXMsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsOiBhbnkpID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCAodHlwZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlICE9PSBcImZ1bmN0aW9uXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyYW1lID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCA/IFwidG9wXCIgOiBcImlmcmFtZVwiO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBcImlmcmFtZVwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IChcbiAgdmFsdWU6IGFueSxcbik6IHZhbHVlIGlzIFByb21pc2U8UmVzb2x1dGlvblR5cGU8dHlwZW9mIHZhbHVlPj4gPT4ge1xuICByZXR1cm4gKFxuICAgICEhdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIFwiY2F0Y2hcIiBpbiB2YWx1ZSAmJlxuICAgIFwiZmluYWxseVwiIGluIHZhbHVlXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcXVlcnlGb2N1c2FibGVFbGVtZW50cyA9IChjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgXCJidXR0b24sIGEsIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBkaXZbdGFiaW5kZXhdLCBsYWJlbFt0YWJpbmRleF1cIixcbiAgKTtcblxuICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudHNcbiAgICA/IEFycmF5LmZyb20oZm9jdXNhYmxlRWxlbWVudHMpLmZpbHRlcihcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgZWxlbWVudC50YWJJbmRleCA+IC0xICYmICEoZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5kaXNhYmxlZCxcbiAgICAgIClcbiAgICA6IFtdO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../utils.ts\n");
3353
3342
 
3354
3343
  /***/ }),
3355
3344
 
@@ -3503,7 +3492,7 @@ module.exports = JSON.parse('{"labels":{"paste":"Paste","pasteCharts":"Paste cha
3503
3492
  /***/ ((module) => {
3504
3493
 
3505
3494
  "use strict";
3506
- module.exports = JSON.parse('{"ar-SA":91,"bg-BG":58,"bn-BD":0,"ca-ES":97,"cs-CZ":24,"da-DK":34,"de-DE":99,"el-GR":82,"en":100,"es-ES":99,"eu-ES":98,"fa-IR":98,"fi-FI":98,"fr-FR":99,"gl-ES":40,"he-IL":94,"hi-IN":61,"hu-HU":94,"id-ID":99,"it-IT":100,"ja-JP":98,"kab-KAB":95,"kk-KZ":22,"ko-KR":98,"lt-LT":22,"lv-LV":100,"mr-IN":99,"my-MM":44,"nb-NO":100,"nl-NL":86,"nn-NO":95,"oc-FR":98,"pa-IN":87,"pl-PL":88,"pt-BR":95,"pt-PT":80,"ro-RO":99,"ru-RU":100,"si-LK":8,"sk-SK":99,"sl-SI":100,"sv-SE":100,"ta-IN":98,"tr-TR":98,"uk-UA":99,"vi-VN":13,"zh-CN":100,"zh-HK":27,"zh-TW":100}');
3495
+ module.exports = JSON.parse('{"ar-SA":91,"bg-BG":58,"bn-BD":0,"ca-ES":97,"cs-CZ":24,"da-DK":34,"de-DE":100,"el-GR":82,"en":100,"es-ES":99,"eu-ES":98,"fa-IR":98,"fi-FI":98,"fr-FR":100,"gl-ES":45,"he-IL":94,"hi-IN":62,"hu-HU":94,"id-ID":100,"it-IT":100,"ja-JP":98,"kab-KAB":95,"kk-KZ":22,"ko-KR":98,"lt-LT":22,"lv-LV":100,"mr-IN":100,"my-MM":44,"nb-NO":100,"nl-NL":86,"nn-NO":95,"oc-FR":98,"pa-IN":87,"pl-PL":88,"pt-BR":95,"pt-PT":80,"ro-RO":100,"ru-RU":100,"si-LK":8,"sk-SK":100,"sl-SI":100,"sv-SE":100,"ta-IN":98,"tr-TR":99,"uk-UA":99,"vi-VN":13,"zh-CN":100,"zh-HK":27,"zh-TW":100}');
3507
3496
 
3508
3497
  /***/ })
3509
3498
 
@@ -3612,7 +3601,7 @@ module.exports = JSON.parse('{"ar-SA":91,"bg-BG":58,"bn-BD":0,"ca-ES":97,"cs-CZ"
3612
3601
  /******/ // This function allow to reference async chunks
3613
3602
  /******/ __webpack_require__.u = (chunkId) => {
3614
3603
  /******/ // return url for filenames based on template
3615
- /******/ return "excalidraw-assets-dev/" + chunkId + "-" + {"locales/ar-SA-json":"c230e7084374b2a41a5b","locales/bg-BG-json":"c614a9570a5645a02248","locales/bn-BD-json":"8ceebdfe33ab020afaa0","locales/ca-ES-json":"1445dbb39c48a3e6a371","locales/cs-CZ-json":"f47d18ecc1f65315b35a","locales/da-DK-json":"860cc67d853e3b8d65fb","locales/de-DE-json":"38c6281e5996a25e0532","locales/el-GR-json":"5043ba824b7d40e33579","locales/es-ES-json":"0259da0aba04e914d3ae","locales/eu-ES-json":"5e5f045db763d09dac8c","locales/fa-IR-json":"76469efd2a2855b83656","locales/fi-FI-json":"7bfb6fb5ff49d25e6692","locales/fr-FR-json":"755f3217b0c1ba6edf90","locales/gl-ES-json":"51493bc81f745b4a743d","locales/he-IL-json":"145e68d77fae81830f53","locales/hi-IN-json":"d9809d98b7e8e1b23f05","locales/hu-HU-json":"cd76402ea4ecf45ea692","locales/id-ID-json":"d550c42896ff472b0c4f","locales/it-IT-json":"eb7fdff37b7733ae8cd7","locales/ja-JP-json":"0113c0db4a8f5b5f9a7b","locales/kab-KAB-json":"dfcf62fb52965e9aa2c7","locales/kk-KZ-json":"7a4892d59641d2ef3093","locales/ko-KR-json":"07979d139ac9282d46ac","locales/lt-LT-json":"bbc547741668f4c7bfa8","locales/lv-LV-json":"bf6a2c9c2c9e3fd2e5ae","locales/mr-IN-json":"835b75c48fb9b293fd3b","locales/my-MM-json":"5a741cf753187bf88c6e","locales/nb-NO-json":"ed181c3bde7d5506165b","locales/nl-NL-json":"3cec6a3df67de4e36492","locales/nn-NO-json":"978d2360c9917fe5ace4","locales/oc-FR-json":"dba541cce24594311efe","locales/pa-IN-json":"53d2ca9ffab894ae06e9","locales/pl-PL-json":"6ffcc5a7948b93810d64","locales/pt-BR-json":"130cbd2a33eefa100464","locales/pt-PT-json":"d07c4ddb6743a274353a","locales/ro-RO-json":"830062069119ae401881","locales/ru-RU-json":"ee0313c97368bdcbcc6c","locales/si-LK-json":"08eaf06707815d54bd83","locales/sk-SK-json":"31330b8a93883aface3f","locales/sl-SI-json":"b2109a51c6d289b9a2f3","locales/sv-SE-json":"9061dbee004bf0cd4442","locales/ta-IN-json":"4929b09611bb9ba59e33","locales/tr-TR-json":"5bd3f01bdb04c4fb7d15","locales/uk-UA-json":"e0fc6a2ca2ab976d7a77","locales/vi-VN-json":"d932f036c6fd3aa33693","locales/zh-CN-json":"10b698060bcb2b869f8f","locales/zh-HK-json":"773b06196888e2afa093","locales/zh-TW-json":"4924be6bf8478fda873c","vendor":"c0592035c3911af79359"}[chunkId] + ".js";
3604
+ /******/ return "excalidraw-assets-dev/" + chunkId + "-" + {"locales/ar-SA-json":"684b5e25f971902bd933","locales/bg-BG-json":"d78c84e8962f5d754019","locales/bn-BD-json":"79007d6cd3d09b6c1e82","locales/ca-ES-json":"84b33ecd3096b99533c1","locales/cs-CZ-json":"1d48380fd54bd715a21c","locales/da-DK-json":"9dc062ac2b2aee3ad4ec","locales/de-DE-json":"2d48c0ec0901cee81272","locales/el-GR-json":"8ec22bd0cbf376e3ba5d","locales/es-ES-json":"5dd577ba17baf0f4382c","locales/eu-ES-json":"9ba2e12372db6b5be813","locales/fa-IR-json":"9866fde07b07d55f2cb9","locales/fi-FI-json":"2dcf087c4ff34b8a8ad7","locales/fr-FR-json":"e4bbc872fed09a689b27","locales/gl-ES-json":"4ab7103bd7905741cf7e","locales/he-IL-json":"abac6b158c54984aecba","locales/hi-IN-json":"3aba9d37f6dae9ca2445","locales/hu-HU-json":"8d604fcc349f93bc4440","locales/id-ID-json":"6d9b771568900ad6f055","locales/it-IT-json":"7086cd6c6f1f61016ba1","locales/ja-JP-json":"d864fb849b2a3874b290","locales/kab-KAB-json":"c69f8a1079a411de837c","locales/kk-KZ-json":"8c7f34edcdac22c11c72","locales/ko-KR-json":"c80065dfa01e02f28695","locales/lt-LT-json":"edaae0abc84fb205ee70","locales/lv-LV-json":"21cc252dcf4524c98e55","locales/mr-IN-json":"d28b9664c21ee08d79eb","locales/my-MM-json":"56d51a30e815283e7260","locales/nb-NO-json":"827603cac737fb4bb00f","locales/nl-NL-json":"9c5c4b7bfbfe3328e561","locales/nn-NO-json":"cb21e50c1afeb6a8f01d","locales/oc-FR-json":"bec2ee705e7d3980fd61","locales/pa-IN-json":"189c7e5cad9e781f0ce5","locales/pl-PL-json":"9cc770276a511a05e638","locales/pt-BR-json":"788b2c323ae4afd36853","locales/pt-PT-json":"4f16b87e256eb838c91a","locales/ro-RO-json":"9ac079b4af3b20377160","locales/ru-RU-json":"eda247a0b10c11a51eec","locales/si-LK-json":"ee3083905b0cf879022d","locales/sk-SK-json":"03a80aeb3e09f77b1be6","locales/sl-SI-json":"55f372eebf814a422031","locales/sv-SE-json":"ca85dde4f9c34d5ee346","locales/ta-IN-json":"f9d1822384bc4ce086b6","locales/tr-TR-json":"30a4d84bda3152292dbe","locales/uk-UA-json":"b271ae2bf2e210aa582b","locales/vi-VN-json":"9a1f8e4ce0b77e05baa7","locales/zh-CN-json":"29856d6541bf2cbd6aea","locales/zh-HK-json":"8bb0f0928ccbce98f995","locales/zh-TW-json":"517b39d1a3184844b4d7","vendor":"c0592035c3911af79359"}[chunkId] + ".js";
3616
3605
  /******/ };
3617
3606
  /******/ })();
3618
3607
  /******/
@@ -3794,6 +3783,11 @@ module.exports = JSON.parse('{"ar-SA":91,"bg-BG":58,"bn-BD":0,"ca-ES":97,"cs-CZ"
3794
3783
  /******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
3795
3784
  /******/ })();
3796
3785
  /******/
3786
+ /******/ /* webpack/runtime/nonce */
3787
+ /******/ (() => {
3788
+ /******/ __webpack_require__.nc = undefined;
3789
+ /******/ })();
3790
+ /******/
3797
3791
  /************************************************************************/
3798
3792
  /******/
3799
3793
  /******/ // startup